# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1268401447 -7200 # Node ID a47de9135b21c689d9d997f9775b4fb1a53838e8 # Parent f5a1e66df9797a01c871f4a5f9a0100eba98a95f Revision: 201007 Kit: 201008 diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepAvkonCandidatePopup.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepAvkonCandidatePopup.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepAvkonCandidatePopup.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -131,6 +131,7 @@ } // Destroy the CBA constructed in base class, and new its own CBA delete iPopoutCba; + iPopoutCba = NULL; iPopoutCba = CEikButtonGroupContainer::NewL( CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -728,12 +728,9 @@ const TDesC* appTitle = iTitlePane->Text(); iLastTitle = appTitle->AllocL(); - CleanupStack::PushL(iLastTitle); - iStatusTitle = StringLoader::LoadLC( iTitlePaneResId,coeEnv); + iStatusTitle = StringLoader::LoadL( iTitlePaneResId,coeEnv); SetTitlePaneL(); - CleanupStack::Pop(iStatusTitle); - CleanupStack::Pop(iLastTitle); iNaviPane = static_cast(statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/conf/aknfep.confml Binary file fep/aknfep/conf/aknfep.confml has changed diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/conf/aknfep_101F876D.crml Binary file fep/aknfep/conf/aknfep_101F876D.crml has changed diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/inc/AknFepKeyCatcher.h --- a/fep/aknfep/inc/AknFepKeyCatcher.h Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/inc/AknFepKeyCatcher.h Fri Mar 12 15:44:07 2010 +0200 @@ -53,11 +53,11 @@ * of all key presses. ` */ class CAknFepKeyCatcher : - + public CAknFepKeyCatcherInterface #ifdef RD_SCALABLE_UI_V2 - public MCoeMessageMonitorObserver, + ,public MCoeMessageMonitorObserver #endif //RD_SCALABLE_UI_V2 - public CAknFepKeyCatcherInterface + { private: diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/inc/AknFepManager.h --- a/fep/aknfep/inc/AknFepManager.h Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/inc/AknFepManager.h Fri Mar 12 15:44:07 2010 +0200 @@ -1801,6 +1801,8 @@ void LaunchLanguagesPopupListL(TBool aLaunchedByTouchWin = EFalse); void LaunchRecognitionWithDictionaryPopupListL(); + void LaunchWritingSpeedPopupListL(); + void LaunchGuidingLinePopupListL(); TBool IsInputModeAvailable(TInt aMode) const; TInt NewInputModeAfterLanguageChange() const; diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/inc/AknFepPluginManager.h --- a/fep/aknfep/inc/AknFepPluginManager.h Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/inc/AknFepPluginManager.h Fri Mar 12 15:44:07 2010 +0200 @@ -81,7 +81,10 @@ EPluginPromptChanged, EPluginShowCandidate, EPluginShowTooltip, - EPluginHideTooltip + EPluginHideTooltip, + EPluginSwitchToPortrait, + EPluginSwitchToLandscape, + EPluginSwitchMode }; /** @@ -327,6 +330,7 @@ void ResetCandidateList(); + void UpdateFSQIndicator(); void UpdateITUTIndicator(); void SetITUTSpellingStateL(TBool aState); @@ -493,6 +497,8 @@ inline void SetInEditWordQueryFlag(TBool aIsEditWordQueryDlg ); void LaunchPenInputLanguageSelectionL( TBool aLaunchedByTouchWin = EFalse ); void LaunchPenInputRecognitionWithDictionarySelectionL(); + void LaunchPenInputWritingSpeedSelectionL(); + void LaunchPenInputGuidingLineSelectionL(); inline TBool IsInGlobleNoteEditor(); void SetMenuState(TBool aUpdateEditor = ETrue); void ResetMenuState(TBool aUnDim = ETrue); @@ -818,7 +824,7 @@ * @param aParam * @return None */ - void NotifyAppUiImeTouchWndState( const TBool aTouchState ); + void NotifyAppUiImeTouchWndStateL( const TBool aTouchState ); /** * Check if current editor support partial screen IMEs diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/inc/AknFepSharedDataInterface.h --- a/fep/aknfep/inc/AknFepSharedDataInterface.h Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/inc/AknFepSharedDataInterface.h Fri Mar 12 15:44:07 2010 +0200 @@ -525,6 +525,25 @@ TInt DefaultOnScreenVKB(); #endif + /** + * Returns a value of default arabic finger hwr orientation. + * + * @since 5.2 + * @return 0 is portrait. + * 1 is landscape. + */ + TInt DefaultArabicFingerHwrOrientation() const; + + /** + * Set a value of default arabic finger hwr orientation. + * + * @since 5.2 + * @param aValue new value set to default arabic finger hwr orientation shared data item which + * represents the default orientation. + * 0 is portrait. + * 1 is landscape. + */ + void SetDefaultArabicFingerHwrOrientation(TInt aValue); private: /** * C++ Constructor diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/inc/aknfepuispellcontainer.h --- a/fep/aknfep/inc/aknfepuispellcontainer.h Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/inc/aknfepuispellcontainer.h Fri Mar 12 15:44:07 2010 +0200 @@ -54,7 +54,7 @@ * @return A Pointer to new dictionary container. */ static CAknFepUiSpellContainer* NewL(const TInt aEditorFlag, const TInt aEditorCase, - const TInt aEditorSCTResID); + const TInt aEditorSCTResID, const TBool aSplitEditor ); /** * Destructor. @@ -77,7 +77,8 @@ * @param aRect Frame rectangle for container. * @param aModel Data model of the application. */ - void ConstructL(const TInt aEditorFlag, const TInt aEditorCase, const TInt aEditorSCTResID); + void ConstructL(const TInt aEditorFlag, const TInt aEditorCase, + const TInt aEditorSCTResID, const TBool aIsSplitEditor ); private: // Functions from base classes diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/inc/aknfepuispellinputpane.h --- a/fep/aknfep/inc/aknfepuispellinputpane.h Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/inc/aknfepuispellinputpane.h Fri Mar 12 15:44:07 2010 +0200 @@ -51,7 +51,8 @@ static CAknFepUiSpellInputPane* NewL( CCoeControl* aParent, const TInt aEditorFlag, const TInt aEditorCase, - const TInt aEditorSCTResID ); + const TInt aEditorSCTResID, + const TBool aIsSplitEditor ); /** * Destructor. @@ -119,7 +120,7 @@ * @param aRect Frame rectangle for container. */ void ConstructL( CCoeControl* aParent, const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID ); + const TInt aEditorCase, const TInt aEditorSCTResID, const TBool aIsSplitEditor ); private: // Functions from base classes diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/inc/aknfepuserdbdlg.h --- a/fep/aknfep/inc/aknfepuserdbdlg.h Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/inc/aknfepuserdbdlg.h Fri Mar 12 15:44:07 2010 +0200 @@ -101,6 +101,15 @@ * @return none */ void SizeChanged(); + /** + * Refresh user db view when the screen size was changed, will + * be called by SizeChanged. + * + * @since S60 vTB9.1 + * @param none + * @return none + */ + void SizeChangedL(); /** * Return control to application framework. diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.inl --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.inl Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.inl Fri Mar 12 15:44:07 2010 +0200 @@ -33,13 +33,14 @@ const TInt KVkbUiId = 0x10282359; const TInt KFsqUiId = 0x2001114D; const TInt KSsqUiId = 0x2001E2BB; - +const TInt KFingerHwrUiId = 0x2001E2C4; inline CPluginFepManagerBase* CPenInputImePluginGeneric::GetCurrentUi() { switch ( iPenInputMode ) { case EPluginInputModeHwr: case EPluginInputModeVkb: + case EPluginInputModeFingerHwr: case EPluginInputModeFSQ: return iPluginUiManager; default: diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingeneric.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingeneric.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingeneric.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -50,7 +50,7 @@ _LIT(KVkbImeName, "Generic VKB"); _LIT(KFSQImeName, "Generic FSQ"); _LIT(KSSQImeName, "Split View Qwerty"); - +_LIT(KFingerHwrImeName, "Generic Fingerhwr"); _LIT(KHwrResourceFormatPattern, "peninputhwrwindowconfiginfo_*.rsc"); _LIT(KVkbResourceFormatPattern, "peninputvkbwindowconfiginfo_*.rsc"); _LIT(KSsqResourceFormatPattern, "peninputssqwinconfiginfo_*.rsc"); @@ -207,6 +207,11 @@ } } break; + case EPluginInputModeFingerHwr: + { + layoutId.iUid = KFingerHwrUiId; + } + break; default: return NULL; } @@ -266,6 +271,10 @@ { mode = EPluginInputModeFSQ; } + else if( aLayoutId == KFingerHwrUiId ) + { + mode = EPluginInputModeFingerHwr; + } else { return NULL; @@ -356,6 +365,11 @@ id = KFsqUiId; } break; + case EPluginInputModeFingerHwr: + { + id = KFingerHwrUiId; + } + break; default: { id = KInvalidImplId; @@ -452,7 +466,7 @@ TBool vkb = EFalse; TBool fsq = EFalse; TBool ssq = EFalse; - + TBool fingerhwr = EFalse; CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); REComSession::ListImplementationsL(id, infoArray); @@ -480,6 +494,10 @@ { ssq = ETrue; } + if (infoArray[i]->ImplementationUid().iUid == KFingerHwrUiId ) + { + fingerhwr = ETrue; + } } TImePlguinImplDetail detail; @@ -592,6 +610,14 @@ } delete dir; } + if( fingerhwr ) + { + detail.iMode = EPluginInputModeFingerHwr; + detail.iMeritValue = EImeMerit_Preferred; + detail.iDisplayName.Copy(KFingerHwrImeName()); + detail.iLanguage = ELangArabic; + aSupportList.Append(detail); + } CleanupStack::PopAndDestroy(&infoArray); // infoArray @@ -735,6 +761,7 @@ switch ( aMode ) { + case EPluginInputModeFingerHwr: case EPluginInputModeHwr: { return iPluginUiManager = CPluginFepManagerHwr::NewL(*this, iPenInputServer); diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -308,6 +308,31 @@ } break; } + case ECmdPenInputFingerMatchIndicator: + { + TFepIndicatorInfo* pIndicatorData = + reinterpret_cast( aParam ); + + HBufC8* buf = HBufC8::NewLC(4 * sizeof(TInt)); + TPtr8 bufPtr = buf->Des(); + + RDesWriteStream writeStream; + writeStream.Open(bufPtr); + CleanupClosePushL(writeStream); + + writeStream.WriteInt32L(pIndicatorData->iIndicatorImgID); + writeStream.WriteInt32L(pIndicatorData->iIndicatorMaskID); + writeStream.WriteInt32L(pIndicatorData->iIndicatorTextImgID); + writeStream.WriteInt32L(pIndicatorData->iIndicatorTextMaskID); + + writeStream.CommitL(); + + SendCommandToServer( aCommandId, bufPtr ); + + CleanupStack::PopAndDestroy(&writeStream); + CleanupStack::PopAndDestroy(buf); + } + break; default: SendCommandToServer( aCommandId, aParam ); break; diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitut.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitut.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitut.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -95,7 +95,8 @@ _LIT(KDevanagiriResFileSplit, "peninputsplititutconfig_devanagari.rsc"); const TScriptPair KSupportScripts[] = { - {LatinLangs, 50, CPenInputImePluginItut::ELatinLang}, + {LatinLangs, sizeof(LatinLangs)/sizeof(TInt), + CPenInputImePluginItut::ELatinLang}, {CyrillicLangs, 3, CPenInputImePluginItut::ECyrillicLang}, {GreekLangs, 2, CPenInputImePluginItut::EGreekLang}, {HebrewLangs, 1, CPenInputImePluginItut::EHebrewLang}, diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/AknFepLanguageManager.cpp --- a/fep/aknfep/src/AknFepLanguageManager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/AknFepLanguageManager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -414,9 +414,10 @@ TUid dtor_ID_Key; CAknFepPenInputImePlugin* pIme = NULL; - TRAP_IGNORE(pIme = REINTERPRET_CAST(CAknFepPenInputImePlugin*, - REComSession::CreateImplementationL(TUid::Uid(aImeImplId), dtor_ID_Key, aPenServer))); - + TRAP_IGNORE( + TAny* obj = REComSession::CreateImplementationL(TUid::Uid(aImeImplId), dtor_ID_Key, aPenServer); + pIme = REINTERPRET_CAST(CAknFepPenInputImePlugin*, obj ); + ); if( pIme ) { pIme->iDtor_ID_Key = dtor_ID_Key; diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/AknFepManager.cpp --- a/fep/aknfep/src/AknFepManager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/AknFepManager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -180,7 +180,7 @@ const TKeyEvent KAknCcpuCopyEvent = {EKeyF18, EEikCmdEditCopy, EModifierCtrl, 1}; // Copy event for AknCcpuSupport const TKeyEvent KAknCcpuCutEvent = {EKeyF18, EEikCmdEditCut, EModifierCtrl, 1}; // Cut event for AknCcpuSupport -const TInt KMaxMenuSize = 25; +const TInt KMaxMenuSize = 28; const TInt KEditorMenuPermitedSend[KMaxMenuSize] = { EJapanFepCmdModeHiragana, @@ -192,6 +192,9 @@ EChinFepCmdModePinyin, EChinFepCmdModeZhuyin, EChinFepCmdModeStroke, + EChinFepCmdModePinyinPhrase, + EChinFepCmdModeZhuyinPhrase, + EChinFepCmdModeStrokePhrase, EAknCmdT9PredictiveT9Off, EAknCmdMultitapPredictiveT9On, EJapanFepCmdMultitapPredictiveT9On, @@ -1487,18 +1490,7 @@ #ifdef RD_INTELLIGENT_TEXT_INPUT else if (IsAutoCompleteOn()) { - TInt tailLength = 0; - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - TryRemoveNoMatchesIndicatorL(); - RemoveSuggestedAdvanceCompletionL(); - SimulateKeyEventL(EKeyF19); - UpdateCbaL(NULL); - response=EKeyWasConsumed; - } - else if(FepUI()->HandleKeyL(aCode, aLength)) + if(FepUI()->HandleKeyL(aCode, aLength)) { if( EPtiKeyboardHalfQwerty == KeyboardLayout() && iWesternPredictive @@ -1506,6 +1498,7 @@ { ClearFlag(CAknFepManager::EFlagChangeInputMode); } + TInt tailLength = 0; iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); if(tailLength > 0) { @@ -3817,8 +3810,7 @@ { TBool JavaNumericEditor = EFalse; TUint ConstraintValue = MIDPConstraint(); - if((ConstraintValue & ESplConstraintMask) == ESplNumeric || - (ConstraintValue & ESplConstraintMask) == ESplDecimal) + if((ConstraintValue & ESplConstraintMask) == ESplNumeric ) JavaNumericEditor = ETrue; return JavaNumericEditor; @@ -4005,6 +3997,8 @@ RPointerArray editorMenuItemList; CEikMenuPane* editorMenuPane = new (ELeave) CEikMenuPane((MEikMenuObserver*)(this)); + CleanupDeletePushL( editorMenuPane ); + editorMenuPane->SetItemArrayOwnedExternally(EFalse); TResourceReader reader; CCoeEnv::Static()->CreateResourceReaderLC(reader, R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU);// @@ -4069,12 +4063,11 @@ iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL( ECmdPenInputSendEditMenuData, reinterpret_cast(iEditorCommandList)); } - - editorMenuItemList.ResetAndDestroy(); - delete editorMenuPane; - editorMenuPane = NULL; - } - + } + + editorMenuItemList.ResetAndDestroy(); + CleanupStack::PopAndDestroy(editorMenuPane); + return count; } #endif // RD_SCALABLE_UI_V2 @@ -4407,16 +4400,19 @@ // --- commands for Chinese --- case EChinFepCmdModePinyin: + case EChinFepCmdModePinyinPhrase: SendEventsToPluginManL( EPluginCloseMode, EFalse ); HandleChangeInFocus(); TryChangeModeL(EPinyin); break; case EChinFepCmdModeZhuyin: + case EChinFepCmdModeZhuyinPhrase: SendEventsToPluginManL( EPluginCloseMode, EFalse ); HandleChangeInFocus(); TryChangeModeL(EZhuyin); break; case EChinFepCmdModeStroke: + case EChinFepCmdModeStrokePhrase: SendEventsToPluginManL( EPluginCloseMode, EFalse ); HandleChangeInFocus(); TryChangeModeL(EStroke); @@ -4642,7 +4638,7 @@ LaunchEditWordQueryL(); break; case EAknCmdT9PredictiveInsertWord: - SetStopProcessFocus(ETrue); + SetStopProcessFocus(ETrue, EFalse); HandleChangeInFocus(); LaunchInsertWordQueryL(KNullDesC, TCursorSelection(0,0)); SetStopProcessFocus(EFalse); @@ -4955,7 +4951,46 @@ HandleChangeInFocus(); iStopProcessFocus = EFalse; } - break; + break; + case EPenInputCmdHwrInputToPortrait: + { + SendEventsToPluginManL( EPluginCloseMode, EFalse ); + HandleChangeInFocus(); + SendEventsToPluginManL( EPluginSwitchToPortrait); + } + break; + case EPenInputCmdHwrInputToLandscape: + { + SendEventsToPluginManL( EPluginCloseMode, EFalse ); + HandleChangeInFocus(); + SendEventsToPluginManL( EPluginSwitchToLandscape); + } + break; + case EPenInputCmdSwitchToVkeyBasedInput: + { + SendEventsToPluginManL( EPluginCloseMode, EFalse ); + HandleChangeInFocus(); + SendEventsToPluginManL( EPluginSwitchMode); + } + break; + case EPenInputCmdWritingSpeed: + { + SetStopProcessFocus(ETrue); + HandleChangeInFocus(); + LaunchWritingSpeedPopupListL(); + HandleChangeInFocus(); + iStopProcessFocus = EFalse; + } + break; + case EPenInputCmdGuidingLine: + { + SetStopProcessFocus(ETrue); + HandleChangeInFocus(); + LaunchGuidingLinePopupListL(); + HandleChangeInFocus(); + iStopProcessFocus = EFalse; + } + break; default: break; } @@ -5453,6 +5488,11 @@ posToInsertItem = numOfMenuItems; } } + TInt inputOptionsPos = 0; + if ( aMenuPane->MenuItemExists( EEikCmdEditPaste, inputOptionsPos ) ) + { + inputOptionsPos++; + } //Now we have the position at which we need to insert the menu item. if ( #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ @@ -5460,7 +5500,7 @@ #endif IsLanguageSupportPrediction() && !(iAknEditorFlags & EAknEditorFlagNoT9)) { - AddPredictiveModeOptionsL(aMenuPane, posToInsertItem); + AddPredictiveModeOptionsL( aMenuPane, inputOptionsPos ); } else { @@ -7277,6 +7317,7 @@ SendEventsToPluginManL( EPluginFocusChanged, iGainForeground && focusCtrl!=0 && focusCtrl->IsFocused()); } + iNotifyPlugin = ETrue; } #endif // RD_SCALABLE_UI_V2 if( PtiEngine() && FepAwareTextEditor() ) @@ -8730,8 +8771,9 @@ } #ifdef RD_SCALABLE_UI_V2 if (iFepFullyConstructed && - iFepPluginManager->PluginInputMode() == EPluginInputModeItut && - !(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen)) + iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) + // if ( iFepFullyConstructed && + // (( iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) && IsChineseInputLanguage())) { iFepPluginManager->SpellText(textBuf); iFepPluginManager->DisplaySpellEditor(textQueryEditorFlag, aInitialText, @@ -9161,6 +9203,39 @@ } } + // Switch menu whether input language is supported related chinese phrase + MPtiLanguage* ptilang = iPtiEngine->GetLanguage( + iLanguageCapabilities.iInputLanguageCode ); + if ( ptilang ) + { + if( iMode != EPinyin && IsModePermitted( EPinyin ) ) + { + if( ptilang->HasInputMode( EPtiEnginePinyinByPhrase ) ) + { + aMenuPane->SetItemDimmed( EChinFepCmdModePinyin, ETrue ); + aMenuPane->SetItemDimmed( EChinFepCmdModePinyinPhrase, EFalse ); + } + } + + if( iMode != EZhuyin && IsModePermitted( EZhuyin ) ) + { + if( ptilang->HasInputMode( EPtiEngineZhuyinByPhrase ) ) + { + aMenuPane->SetItemDimmed( EChinFepCmdModeZhuyin, ETrue ); + aMenuPane->SetItemDimmed( EChinFepCmdModeZhuyinPhrase, EFalse ); + } + } + + if( iMode != EStroke && IsModePermitted( EStroke ) ) + { + if( ptilang->HasInputMode( EPtiEngineStrokeByPhrase ) ) + { + aMenuPane->SetItemDimmed( EChinFepCmdModeStroke, ETrue ); + aMenuPane->SetItemDimmed( EChinFepCmdModeStrokePhrase, EFalse ); + } + } + } + if (IsAbleToLaunchSmiley()) { TInt index; @@ -12596,16 +12671,21 @@ #ifdef RD_SCALABLE_UI_V2 TBool fingerItutIndicator = ( iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeItut ); + TBool fingerFSQIndicator = ( iFepPluginManager && + iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ); #else TBool fingerItutIndicator = EFalse; + TBool fingerFSQIndicator = EFalse; #endif if ( IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric ) { newState = EHybridModeLatin; } + //else if (!(iAknEditorFlags & EAknEditorFlagNoEditIndicators) + // || findPaneIndicator || fingerItutIndicator) else if (!(iAknEditorFlags & EAknEditorFlagNoEditIndicators) - || findPaneIndicator || fingerItutIndicator) + || findPaneIndicator || fingerItutIndicator || fingerFSQIndicator) { #ifdef RD_SCALABLE_UI_V2 @@ -15664,7 +15744,26 @@ } #endif //RD_SCALABLE_UI_V2 } - +void CAknFepManager::LaunchWritingSpeedPopupListL() + { +#ifdef RD_SCALABLE_UI_V2 + if( iFepPluginManager && (iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) ) + { + iFepPluginManager->LaunchPenInputWritingSpeedSelectionL(); + return; + } +#endif //RD_SCALABLE_UI_V2 + } +void CAknFepManager::LaunchGuidingLinePopupListL() + { +#ifdef RD_SCALABLE_UI_V2 + if( iFepPluginManager && (iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) ) + { + iFepPluginManager->LaunchPenInputGuidingLineSelectionL(); + return; + } +#endif //RD_SCALABLE_UI_V2 + } void CAknFepManager::LoadIconL( CArrayPtr* aIcons, TInt aBitmapId, TInt aMaskId ) diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/AknFepPluginManager.cpp --- a/fep/aknfep/src/AknFepPluginManager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/AknFepPluginManager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -105,6 +105,8 @@ const TInt KDefaultCandidateArraySize = 16; const TInt KNumberOfCases = 6; + _LIT_SECURE_ID(KPhoneSecureId, 0x100058b3); + #define iAvkonAppUi ((CAknAppUi*)CEikonEnv::Static()->EikAppUi()) TUid AppUidFromWndGroupIdL(TInt aWndGrpId) { @@ -581,6 +583,10 @@ subrange); } SyncIndicatorWithPluginRangeL(); + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } break; case ESignalLayoutUIChanged: @@ -782,7 +788,10 @@ if( iPluginInputMode == EPluginInputModeNone && aEventType != EPluginEditorActivate && aEventType != EPluginActivate && - aEventType != EPluginResourceChanged ) + aEventType != EPluginResourceChanged && + aEventType != EPluginSwitchMode && + aEventType != EPluginSwitchToPortrait && + aEventType != EPluginSwitchToLandscape) { return; } @@ -888,6 +897,10 @@ case EPluginUpdateIndicator: { UpdateITUTIndicator(); + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } break; case EPluginPreview: @@ -919,6 +932,50 @@ HideTooltipOnFSQL(); } break; + case EPluginSwitchToPortrait: + { + iSharedData.SetDefaultArabicFingerHwrOrientation(0); + TryChangePluginInputModeByModeL(EPluginInputModeFingerHwr, + EPenInputOpenManually, + ERangeInvalid); + } + break; + case EPluginSwitchToLandscape: + { + iSharedData.SetDefaultArabicFingerHwrOrientation(1); + TryChangePluginInputModeByModeL(EPluginInputModeFingerHwr, + EPenInputOpenManually, + ERangeInvalid); + } + break; + case EPluginSwitchMode: + { + iPreferredUiMode = EFalse; + TPluginInputMode defaultMode = EPluginInputModeNone; + TPixelsTwipsAndRotation size; + CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); + + TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight; + if(iSharedData.AutoRotateEnabled()) + { + if(landscape) + { + defaultMode = EPluginInputModeVkb; + } + else + { + defaultMode = EPluginInputModeItut; + } + } + else + { + defaultMode = EPluginInputModeItut; + } + TryChangePluginInputModeByModeL(defaultMode, + EPenInputOpenManually, + ERangeInvalid); + } + break; default: break; } @@ -1008,19 +1065,23 @@ iPenInputServer.SetDisabledLayout( EPluginInputModeFSQ ); } - if ( aSuggestMode == EPluginInputModeFSQ ) + if ( aSuggestMode == EPluginInputModeFSQ || (aSuggestMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic + && iSharedData.AutoRotateEnabled())) { TPluginInputMode tempInputMode = iPluginInputMode; - iPluginInputMode = EPluginInputModeFSQ; + iPluginInputMode = aSuggestMode; - if (disableFSQ ) + if (disableFSQ && (aSuggestMode != EPluginInputModeFingerHwr)) { iPluginInputMode = tempInputMode; aSuggestMode = EPluginInputModeItut; } else { - if ( !iSharedData.AutoRotateEnabled() ) + if ( (!iSharedData.AutoRotateEnabled() + && aSuggestMode == EPluginInputModeFSQ) || + (aSuggestMode == EPluginInputModeFingerHwr)) { iFepMan.SetNotifyPlugin( EFalse ); iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape ); @@ -1037,6 +1098,28 @@ } } } + else if(aSuggestMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic + && !iSharedData.AutoRotateEnabled()) + { + TInt hOrient = iSharedData.DefaultArabicFingerHwrOrientation(); + if(landscape) + { + if(!hOrient) + { + iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait ); + iOrientationChanged = ETrue; + } + } + else + { + if(hOrient) + { + iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape ); + iOrientationChanged = ETrue; + } + } + } else if ( iOrientationChanged ) { iFepMan.SetNotifyPlugin( EFalse ); @@ -1114,7 +1197,7 @@ } // Notify application touch window state - NotifyAppUiImeTouchWndState( ETrue ); + NotifyAppUiImeTouchWndStateL( ETrue ); rtn = ETrue; } @@ -1174,19 +1257,21 @@ if( aRestore && !iSharedData.QwertyInputMode() && iFepMan.InputMode() == ELatin) { RestorePredictStateL(); - if ( iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor ) - { - if( AknTextUtils::NumericEditorDigitType() == EDigitTypeEasternArabicIndic || - AknTextUtils::NumericEditorDigitType() == EDigitTypeDevanagari || - AknTextUtils::NumericEditorDigitType() == EDigitTypeArabicIndic ) - { - iFepMan.TryChangeModeL( ENativeNumber ); - } - else - { - iFepMan.TryChangeModeL( ENumber ); - } - } + + // Fix bug EAHN-82C9M7, comment out the following code + //if ( iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor ) + // { + // if( AknTextUtils::NumericEditorDigitType() == EDigitTypeEasternArabicIndic || + // AknTextUtils::NumericEditorDigitType() == EDigitTypeDevanagari || + // AknTextUtils::NumericEditorDigitType() == EDigitTypeArabicIndic ) + // { + // iFepMan.TryChangeModeL( ENativeNumber ); + // } + // else + // { + // iFepMan.TryChangeModeL( ENumber ); + // } + // } } //iFepMan.UpdateCbaL( NULL ); //pls refer to bug ESZG-7G7CGF @@ -1236,7 +1321,8 @@ } } - if ( iPluginInputMode == EPluginInputModeFSQ && iOrientationChanged + if ( (iPluginInputMode == EPluginInputModeFSQ || (iPluginInputMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic)) && iOrientationChanged && !iITISettingDialogOpen ) { // This TRAP_IGNORE is essential to fix bug ECJA-7JDCKR, never delete it @@ -1245,7 +1331,7 @@ } // Notify editor the touch window has been closed - NotifyAppUiImeTouchWndState( EFalse ); + NotifyAppUiImeTouchWndStateL( EFalse ); iCharStartPostion = KInvalidValue; } @@ -1264,7 +1350,8 @@ } if ( iPluginInputMode == EPluginInputModeFSQ && - !iSharedData.AutoRotateEnabled()) + !iSharedData.AutoRotateEnabled() || (iPluginInputMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic)) { return; } @@ -1615,7 +1702,8 @@ break; case EKeyEscape: { - ClosePluginInputUiL( ETrue ); + ClosePluginInputUiL( ETrue ); + iFepMan.SetNotifyPlugin( EFalse ); DestroySpellEditor(); } break; @@ -1759,21 +1847,84 @@ } // add some input mode in option menu - TBool isSplitView = IsEditorSupportSplitIme(); - if(isSplitView) + + TInt disabledInputMode = iPenInputServer.DisabledLayout(); + TInt curInputMode = iLangMan.CurrentImePlugin()->CurrentMode(); + TBool isChinese = iFepMan.IsChineseInputLanguage(); + + if ( !isChinese && ( curInputMode == EPluginInputModeItut ) && + !( disabledInputMode & EPluginInputModeFSQ )) + { + aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse ); + } + + if ( !isChinese && ( curInputMode == EPluginInputModeFSQ ) && + !( disabledInputMode & EPluginInputModeItut )) { - TInt disabledMode = iPenInputServer.DisabledLayout(); - TInt curMode = iLangMan.CurrentImePlugin()->CurrentMode(); - if(!(disabledMode & EPluginInputModeFSQ) && curMode != EPluginInputModeFSQ ) - { - aMenuPane->SetItemDimmed(EPeninputCmdFSQ, EFalse); - } - if(!(disabledMode & EPluginInputModeItut) && curMode != EPluginInputModeItut) - { - aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse); - } - + aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse); } + //For arabic finger hwr input orientation. + TInt index = 0; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage()) + && (!iSharedData.AutoRotateEnabled())) + { + TBool disableMenu = ETrue; + TPixelsTwipsAndRotation size; + CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); + TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight; + if(landscape && aMenuPane->MenuItemExists(EPenInputCmdHwrInputToPortrait, index)) + { + disableMenu = EFalse; + aMenuPane->SetItemDimmed(EPenInputCmdHwrInputToPortrait,disableMenu); + } + index = 0; + if(!landscape && aMenuPane->MenuItemExists(EPenInputCmdHwrInputToLandscape, index)) + { + disableMenu = EFalse; + aMenuPane->SetItemDimmed(EPenInputCmdHwrInputToLandscape,disableMenu); + } + } + + //For arabic finger hwr switch to key based input. + index = 0; + if(aMenuPane->MenuItemExists( + EPenInputCmdSwitchToVkeyBasedInput, index)) + { + TBool disableMenu = ETrue; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage())) + { + disableMenu = EFalse; + } + aMenuPane->SetItemDimmed(EPenInputCmdSwitchToVkeyBasedInput,disableMenu); + } + //For arabic finger hwr writing speed. + index = 0; + if(aMenuPane->MenuItemExists( + EPenInputCmdWritingSpeed, index)) + { + TBool disableMenu = ETrue; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage())) + { + disableMenu = EFalse; + } + aMenuPane->SetItemDimmed(EPenInputCmdWritingSpeed,disableMenu); + } + //For arabic finger hwr guide line. + index = 0; + if(aMenuPane->MenuItemExists( + EPenInputCmdGuidingLine, index)) + { + TBool disableMenu = ETrue; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage())) + { + disableMenu = EFalse; + } + aMenuPane->SetItemDimmed(EPenInputCmdGuidingLine,disableMenu); + } iLangMan.CurrentImePlugin()->DynInitMenuPaneL(aMenuPane); } @@ -2702,6 +2853,35 @@ } // --------------------------------------------------------------------------- +// CAknFepPluginManager::LaunchPenInputWritingSpeedSelectionL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CAknFepPluginManager::LaunchPenInputWritingSpeedSelectionL() + { + //record langauge + CPenInputGSInterface* setting = CPenInputGSInterface::NewL(); + CleanupStack::PushL(setting); + setting->ShowWritingSpeedPageL(); + CleanupStack::PopAndDestroy(setting); + TInt inputLanguage = iSharedData.InputTextLanguage(); + } + +// --------------------------------------------------------------------------- +// CAknFepPluginManager::LaunchPenInputGuideLineSelectionL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CAknFepPluginManager::LaunchPenInputGuidingLineSelectionL() + { + //record langauge + CPenInputGSInterface* setting = CPenInputGSInterface::NewL(); + CleanupStack::PushL(setting); + setting->ShowGuideLinePageL(); + CleanupStack::PopAndDestroy(setting); + TInt inputLanguage = iSharedData.InputTextLanguage(); + } +// --------------------------------------------------------------------------- // CAknFepPluginManager::LaunchPenInputSettingL // (other items were commented in a header) // --------------------------------------------------------------------------- @@ -3291,11 +3471,13 @@ case EPluginInputModeHwr: { if( iFepMan.IsSupportsSecretText() || - ( ( aSuggestMode == EPluginInputModeFSc || + (( ( aSuggestMode == EPluginInputModeFSc || aSuggestMode == EPluginInputModeFingerHwr) && - iSharedData.InputTextLanguage() != ELangPrcChinese && - iSharedData.InputTextLanguage() != ELangTaiwanChinese && - iSharedData.InputTextLanguage() != ELangHongKongChinese )) + !(iSharedData.InputTextLanguage() == ELangPrcChinese || + iSharedData.InputTextLanguage() == ELangTaiwanChinese || + iSharedData.InputTextLanguage() == ELangHongKongChinese)) && + ((aSuggestMode == EPluginInputModeFingerHwr && + iSharedData.InputTextLanguage() != ELangArabic)))) { aSuggestMode = EPluginInputModeItut; if ((disableLayouts & aSuggestMode)) @@ -3366,11 +3548,13 @@ testMode<<=1; } - if ((testMode == EPluginInputModeFSc || - testMode == EPluginInputModeFingerHwr ) && - iSharedData.InputTextLanguage() != ELangPrcChinese && - iSharedData.InputTextLanguage() != ELangTaiwanChinese && - iSharedData.InputTextLanguage() != ELangHongKongChinese ) + if (((testMode == EPluginInputModeFSc || + testMode == EPluginInputModeFingerHwr) && + !(iSharedData.InputTextLanguage() == ELangPrcChinese || + iSharedData.InputTextLanguage() == ELangTaiwanChinese || + iSharedData.InputTextLanguage() == ELangHongKongChinese)) && + ((testMode == EPluginInputModeFingerHwr && + iSharedData.InputTextLanguage() != ELangArabic))) { return EFalse; } @@ -3617,6 +3801,10 @@ { iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputInEditWordQueryDlg, iIsInEditWordQueryDlg); } + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } @@ -4120,6 +4308,49 @@ return ret; } +void CAknFepPluginManager::UpdateFSQIndicator() + { + if ( EPluginInputModeFSQ != PluginInputMode() ) + { + return; + } + + TInt indicatorImgID; + TInt indicatorTextID; + + if (iFepMan.GetIndicatorImgID(indicatorImgID, indicatorTextID)) + { + iIndicatorImgID = indicatorImgID; + iIndicatorTextID = indicatorTextID; + } + TInt indImgid = 0; + TInt indMaskid = 0; + + TInt textImgid = 0; + TInt textMaskid = 0; + + if (iIndicatorImgID > 0) + { + GetIndicatorImgID(iIndicatorImgID ,indImgid, indMaskid); + } + + if (iIndicatorTextID > 0) + { + GetIndicatorImgID(iIndicatorTextID ,textImgid, textMaskid); + } + + if (iIndicatorImgID != 0 || iIndicatorTextID != 0) + { + TFepIndicatorInfo indicator; + + indicator.iIndicatorImgID = indImgid; + indicator.iIndicatorMaskID = indMaskid; + indicator.iIndicatorTextImgID = textImgid; + indicator.iIndicatorTextMaskID = textMaskid; + TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchIndicator, + reinterpret_cast(&indicator))); + } + } void CAknFepPluginManager::UpdateITUTIndicator() { if ( EPluginInputModeItut != PluginInputMode() ) @@ -4249,7 +4480,7 @@ iSpell = NULL; iSpellCba = ESpellCBACancelEmpty; iSpellOn = ETrue; - iSpell = CAknFepUiSpellContainer::NewL(editorFlag, editorCase, editorSCTResId); + iSpell = CAknFepUiSpellContainer::NewL(editorFlag, editorCase, editorSCTResId, IsEditorSupportSplitIme()); iSpell->SetInputWinObserver(this); @@ -4536,6 +4767,10 @@ TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, iCaseMan.CurrentCase())); UpdateITUTIndicator(); + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } } @@ -4574,6 +4809,9 @@ aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue); + aMenuPane->SetItemDimmed(EChinFepCmdModeStrokePhrase, ETrue); + aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinPhrase, ETrue); + aMenuPane->SetItemDimmed(EChinFepCmdModePinyinPhrase, ETrue); aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); @@ -5087,7 +5325,9 @@ // default range couldn't be accent. || !iPluginPrimaryRange ) && iFepMan.InputLanguageCapabilities().iSupportsWesternQwertyPredictive - && !iSharedData.QwertyInputMode() ) + && !iSharedData.QwertyInputMode() + // No need to support in dialer application. + && RProcess().SecureId().iId != KPhoneSecureId ) { return ETrue; } @@ -5366,7 +5606,7 @@ // Notify app touch input window closed or open. // ----------------------------------------------------------------------------- // -void CAknFepPluginManager::NotifyAppUiImeTouchWndState( const TBool aTouchState ) +void CAknFepPluginManager::NotifyAppUiImeTouchWndStateL( const TBool aTouchState ) { if ( iLangMan.IsSplitView() ) { @@ -5415,7 +5655,7 @@ TRAP_IGNORE(iPenInputServer.AddPeninputServerObserverL(this)); //always add the handler iPenInputSvrConnected = ETrue; - ActivatePenInputL(); + TRAP_IGNORE(ActivatePenInputL()); } CConnectAo::CConnectAo(CAknFepPluginManager* aClient) diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/AknFepSharedDataInterface.cpp --- a/fep/aknfep/src/AknFepSharedDataInterface.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/AknFepSharedDataInterface.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1723,6 +1723,37 @@ } return value; }; + +/** + * Returns a value of default arabic finger hwr orientation. + * + * @since 5.2 + * @return Value of default arabic finger hwr orientation. + */ +TInt CAknFepSharedDataInterface::DefaultArabicFingerHwrOrientation() const + { + TInt value = 0; + if (iAknFepRepository) + { + iAknFepRepository->Get(KAknFepDefaultArabicFingerHwrOrientation, value); + } + return value; + } + +/** + * Set a value of default arabic finger hwr orientation. + * + * @since 5.2 + * @param aValue new value set to default arabic finger hwr orientation shared data item + */ +void CAknFepSharedDataInterface::SetDefaultArabicFingerHwrOrientation(TInt aValue) + { + if (iAknFepRepository) + { + iAknFepRepository->Set(KAknFepDefaultArabicFingerHwrOrientation, aValue); + } + } + #endif // End of File diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/aknfepuispellcontainer.cpp --- a/fep/aknfep/src/aknfepuispellcontainer.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/aknfepuispellcontainer.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -89,11 +89,12 @@ // --------------------------------------------------------------------------- // void CAknFepUiSpellContainer::ConstructL(const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID) + const TInt aEditorCase, const TInt aEditorSCTResID, const TBool aIsSplitEditor ) { CreateWindowL(); - iInputPane = CAknFepUiSpellInputPane::NewL( this, aEditorFlag, aEditorCase,aEditorSCTResID); + iInputPane = CAknFepUiSpellInputPane::NewL( this, aEditorFlag, aEditorCase, + aEditorSCTResID, aIsSplitEditor ); iInputPane->SetMopParent(this); @@ -110,13 +111,13 @@ // --------------------------------------------------------------------------- // CAknFepUiSpellContainer* CAknFepUiSpellContainer::NewL(const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID) + const TInt aEditorCase, const TInt aEditorSCTResID, const TBool aSplitEditor ) { CAknFepUiSpellContainer* self = new ( ELeave ) CAknFepUiSpellContainer(); CleanupStack::PushL( self ); self->SetMopParent(CEikonEnv::Static()->EikAppUi()); - self->ConstructL(aEditorFlag, aEditorCase, aEditorSCTResID); + self->ConstructL(aEditorFlag, aEditorCase, aEditorSCTResID, aSplitEditor ); CleanupStack::Pop(); diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/aknfepuispellinputpane.cpp --- a/fep/aknfep/src/aknfepuispellinputpane.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/aknfepuispellinputpane.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -68,7 +68,8 @@ // void CAknFepUiSpellInputPane::ConstructL( CCoeControl* aParent, const TInt aEditorFlag, const TInt aEditorCase, - const TInt aEditorSCTResID ) + const TInt aEditorSCTResID, + const TBool aIsSplitEditor ) { // Create as a child window of the specified parent control's window. CreateWindowL( aParent ); @@ -83,8 +84,17 @@ iInputWin->SetAknEditorInputMode(EAknEditorTextInputMode); iInputWin->SetAknEditorSpecialCharacterTable(aEditorSCTResID); - iInputWin->SetAknEditorFlags(iInputWin->AknEdwinFlags() | - aEditorFlag | EAknEditorFlagNoT9); + if ( aIsSplitEditor ) + { + iInputWin->SetAknEditorFlags( iInputWin->AknEdwinFlags() | + aEditorFlag | EAknEditorFlagNoT9 | + EAknEditorFlagEnablePartialScreen ); + } + else + { + iInputWin->SetAknEditorFlags( iInputWin->AknEdwinFlags() | + aEditorFlag | EAknEditorFlagNoT9 ); + } iInputWin->SetAknEditorCase(aEditorCase); iInputWin->SetMaxLength(KSpellMaxLength); iInputWin->SetMopParent(this); @@ -102,12 +112,13 @@ // CAknFepUiSpellInputPane* CAknFepUiSpellInputPane::NewL( CCoeControl* aParent, const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID) + const TInt aEditorCase, const TInt aEditorSCTResID, + const TBool aIsSplitEditor ) { CAknFepUiSpellInputPane* self = new ( ELeave ) CAknFepUiSpellInputPane; CleanupStack::PushL( self ); - self->ConstructL( aParent, aEditorFlag, aEditorCase, aEditorSCTResID ); + self->ConstructL( aParent, aEditorFlag, aEditorCase, aEditorSCTResID, aIsSplitEditor ); CleanupStack::Pop(); return self; diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/aknfepuserdbdlg.cpp --- a/fep/aknfep/src/aknfepuserdbdlg.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/aknfepuserdbdlg.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1074,16 +1074,20 @@ void CAknFepUserdbDlg::SizeChanged() { + TRAP_IGNORE(SizeChangedL()); + } +void CAknFepUserdbDlg::SizeChangedL() + { //Change title text CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane(); CAknTitlePane* title = NULL; - TRAP_IGNORE( title = static_cast< CAknTitlePane* >( - statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle) ) ) ); + title = static_cast< CAknTitlePane* >( + statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle) ) ); //Load the new title text HBufC* titletext = StringLoader::LoadLC( R_AKNFEP_USER_DB_MANAGEMENT_TITLE ); //Set title to the new text - TRAP_IGNORE( title->SetTextL( *titletext )); + title->SetTextL( *titletext ); CleanupStack::PopAndDestroy( titletext ); } // End of file diff -r f5a1e66df979 -r a47de9135b21 inputmethods_plat/aknfep_settings_api/inc/AknFepInternalCRKeys.h --- a/inputmethods_plat/aknfep_settings_api/inc/AknFepInternalCRKeys.h Fri Feb 19 23:09:27 2010 +0200 +++ b/inputmethods_plat/aknfep_settings_api/inc/AknFepInternalCRKeys.h Fri Mar 12 15:44:07 2010 +0200 @@ -339,6 +339,11 @@ */ const TUint32 KAknFepShiftCopyPasteOnQwerty = 0x00000022; +/* + * This key is used for arabic finger hwr to set or get the default arabic finger hwr orientation. + * 0 is for portrait and 1 is for landscape. + */ +const TUint32 KAknFepDefaultArabicFingerHwrOrientation = 0x00000023; #endif // End of file diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF --- a/textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF Fri Mar 12 15:44:07 2010 +0200 @@ -406,7 +406,7 @@ ?SetTextAlignmentL@CFepLayoutMultiLineIcf@@UAEXHH@Z @ 405 NONAME ; void CFepLayoutMultiLineIcf::SetTextAlignmentL(int, int) ?NewL@CFepLayoutMultiLineIcf@@SAPAV1@VTRect@@PAVCFepUiLayout@@HHHPBVCFont@@@Z @ 406 NONAME ; class CFepLayoutMultiLineIcf * CFepLayoutMultiLineIcf::NewL(class TRect, class CFepUiLayout *, int, int, int, class CFont const *) ?SetFontL@CFepLayoutMultiLineIcf@@UAEXHHPBVCFont@@@Z @ 407 NONAME ; void CFepLayoutMultiLineIcf::SetFontL(int, int, class CFont const *) - ?SetPromptTextL@CFepLayoutMultiLineIcf@@UAEXABVTDesC16@@H@Z @ 408 NONAME ; void CFepLayoutMultiLineIcf::SetPromptTextL(class TDesC16 const &, int) + ?SetPromptTextL@CFepLayoutMultiLineIcf@@UAEXABVTDesC16@@H@Z @ 408 NONAME ; void CFepLayoutMultiLineIcf::SetPromptTextL(class TDesC16 const &, int) ?SizeChangedL@CFepLayoutMultiLineIcf@@UAEXABVTRect@@HHPBVCFont@@@Z @ 409 NONAME ; void CFepLayoutMultiLineIcf::SizeChangedL(class TRect const &, int, int, class CFont const *) ?AddOverLapState@CFepLayoutMultiLineIcf@@UAEXVTRect@@@Z @ 410 NONAME ; void CFepLayoutMultiLineIcf::AddOverLapState(class TRect) ?IsEmpty@CFepLayoutMultiLineIcf@@UAEHXZ @ 411 NONAME ; int CFepLayoutMultiLineIcf::IsEmpty(void) @@ -583,3 +583,6 @@ ?HideInfoBubble@CFepLayoutMultiLineIcf@@UAEXXZ @ 582 NONAME ; void CFepLayoutMultiLineIcf::HideInfoBubble(void) ?SetInfoBubbleCtrlSize@CFepLayoutMultiLineIcf@@UAEXABVTSize@@@Z @ 583 NONAME ; void CFepLayoutMultiLineIcf::SetInfoBubbleCtrlSize(class TSize const &) ?ShowByteWarningBubble@CFepLayoutMultiLineIcfEditor@@QAEXABVTDesC16@@@Z @ 584 NONAME ; void CFepLayoutMultiLineIcfEditor::ShowByteWarningBubble(class TDesC16 const &) + ?SetPreviewBubbleRenderer@CVirtualKeyboard@@QAEXPAVMPeninputVkbPreviewBubbleRenderer@@@Z @ 585 NONAME ; void CVirtualKeyboard::SetPreviewBubbleRenderer(class MPeninputVkbPreviewBubbleRenderer *) + ?NewL@CPeninputAknVkbPreviewBubbleRenderer@@SAPAV1@XZ @ 586 NONAME ; class CPeninputAknVkbPreviewBubbleRenderer * CPeninputAknVkbPreviewBubbleRenderer::NewL(void) + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF --- a/textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF Fri Mar 12 15:44:07 2010 +0200 @@ -701,9 +701,9 @@ _ZN18CTransparentHwrWnd27PenTraceDecorationActivatedEv @ 700 NONAME _ZTI26CPeninputPenTraceDecorator @ 701 NONAME ; ## _ZTV26CPeninputPenTraceDecorator @ 702 NONAME ; ## - _ZN22CFepLayoutMultiLineIcf17TooltipBubbleCtrlEv @ 703 NONAME - _ZN22CFepLayoutMultiLineIcf12ShowTooltipLERK7TDesC16RK5TRect @ 704 NONAME - _ZN22CFepLayoutMultiLineIcf11HideTooltipEv @ 705 NONAME + _ZN22CFepLayoutMultiLineIcf17TooltipBubbleCtrlEv @ 703 NONAME + _ZN22CFepLayoutMultiLineIcf12ShowTooltipLERK7TDesC16RK5TRect @ 704 NONAME + _ZN22CFepLayoutMultiLineIcf11HideTooltipEv @ 705 NONAME _ZTI18CTooltipBubbleCtrl @ 706 NONAME _ZTV18CTooltipBubbleCtrl @ 707 NONAME _ZN12CFepUiLayout20RegisterFeedbackAreaEiRK5TRecti @ 708 NONAME @@ -715,4 +715,8 @@ _ZN22CFepLayoutMultiLineIcf14InfoBubbleCtrlEv @ 714 NONAME _ZN22CFepLayoutMultiLineIcf21SetInfoBubbleCtrlSizeERK5TSize @ 715 NONAME _ZN22CFepLayoutMultiLineIcf21ShowByteWarningBubbleERK7TDesC16 @ 716 NONAME + _ZN16CVirtualKeyboard24SetPreviewBubbleRendererEP33MPeninputVkbPreviewBubbleRenderer @ 717 NONAME + _ZN36CPeninputAknVkbPreviewBubbleRenderer4NewLEv @ 718 NONAME + _ZTI36CPeninputAknVkbPreviewBubbleRenderer @ 719 NONAME + _ZTV36CPeninputAknVkbPreviewBubbleRenderer @ 720 NONAME diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/group/bld.inf --- a/textinput/peninputarc/group/bld.inf Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/group/bld.inf Fri Mar 12 15:44:07 2010 +0200 @@ -90,6 +90,8 @@ //bubble ctrl ../inc/peninputlayoutcontrolinc/peninputlayoutbubblectrl.h |../../../inc/peninputlayoutbubblectrl.h +../inc/peninputlayoutcontrolinc/peninputaknvkbpreviewbubblerenderer.h |../../../inc/peninputaknvkbpreviewbubblerenderer.h +../inc/peninputlayoutcontrolinc/peninputvkbpreviewbubblerenderer.h |../../../inc/peninputvkbpreviewbubblerenderer.h //inline file ../inc/peninputlayoutcontrolinc/peninputlayout.inl |../../../inc/peninputlayout.inl ../inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.inl |../../../inc/peninputlayoutbasecontrol.inl diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputaknvkbpreviewbubblerenderer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputaknvkbpreviewbubblerenderer.h Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,169 @@ +/* +* Copyright (c) 2005-2006 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: header file of virtual keyboard control +* +*/ + +#ifndef C_PENINPUTVKBPREVIEWBUBBLERENDERER_H +#define C_PENINPUTVKBPREVIEWBUBBLERENDERER_H + +// User includes +#include "peninputvkbpreviewbubblerenderer.h" + +// Forward declarations +class CPeninputFloatingBubble; + +// CLASS DECLARATION + +/** + * CPeninputAknVkbPreviewBubbleRenderer + * CCoeControl-based preview bubble extension + * + */ +class CPeninputAknVkbPreviewBubbleRenderer : public CBase, + public MPeninputVkbPreviewBubbleRenderer +{ +public: + /** + * Symbian constructor + * + * @since S60 v5.0 + * @return The pointer to created object + */ + IMPORT_C static CPeninputAknVkbPreviewBubbleRenderer* NewL(); + + /** + * C++ destructor + * + * @since S60 v5.0 + * @return None + */ + virtual ~CPeninputAknVkbPreviewBubbleRenderer(); + +protected: //from base class MPeninputVkbPreviewBubbleRenderer + /** + * Attach this extension to a virtual keyboard object. + * Increase reference count + * + * @since S60 S60 v5.0 + * @return None. + */ + virtual void Attach(); + + /** + * Detach this extension from a virtual keyboard object. + * decrease reference count + * + * @since S60 S60 v5.0 + * @return None. + */ + virtual void Detach(); + + /** + * Enable preview bubble. + * + * @since S60 S60 v5.0 + * @param aFlag ETrue to enable preview bubble. + * @return None. + */ + virtual void ShowBubble( TBool aFlag ); + + /** + * Draw preview bubble. + * + * @since S60 S60 v5.0 + * @param aKey Virtual key. + * @param aVkbPos Position of virtual keyboard. + * @param aLayoutPos Position of layout, in screen coord-sys. + * @param aSize Size of bubble. + * @return None. + */ + virtual void DrawBubble( CVirtualKey* aKey, const TPoint& aVkbPos, + const TPoint& aLayoutPos, const TSize& aSize ); + + /** + * Clear preview bubble. + * + * @since S60 S60 v5.0 + * @return None. + */ + virtual void ClearBubble(); + + /** + * Set icon and background of bubble. + * + * @since S60 S60 v5.0 + * @param aBmpId Bitmap of icon. + * @param aMaskBmpId Bitmap of mask. + * @param aBgSkinId Skin id of background. + * @return None. + */ + virtual void SetBubbleBitmapParam( CFbsBitmap* aBmpId, CFbsBitmap* aMaskBmpId, + TAknsItemID aBgSkinId ); + + /** + * Set text format + * + * @since S60 S60 v5.0 + * @param aTextFormat Text format. + * @return None. + */ + virtual void SetTextFormat( TAknTextLineLayout aTextFormat ); + + + /** + * Set margin of bubble + * + * @since S60 S60 v5.0 + * @param aLeftDiff Left margin. + * @param aTopDiff Top margin. + * @param aRightDiff Right margin. + * @param aBottomDiff Bottom margin. + * @return None. + */ + virtual void SetFrameDiff( TInt aLeftDiff, TInt aTopDiff, + TInt aRightDiff,TInt aBottomDiff ); + +private: + /** + * C++ constructor + * + * @since S60 v5.0 + * @return None + */ + CPeninputAknVkbPreviewBubbleRenderer(); + + /** + * Symbian constructor + * + * @since S60 v5.0 + * @return None + */ + void ConstructL(); + +private: + /** + * reference count + */ + TInt iRefCount; + + /** + * Bubble control + * Own + */ + CPeninputFloatingBubble* iBubbleCtrlEx; + +}; + +#endif //C_PENINPUTVKBPREVIEWBUBBLERENDERER_H diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputfloatbubble.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputfloatbubble.h Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,155 @@ +/* +* Copyright (c) 2006-2006 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: header file of Floating bubble +* +*/ + + +#ifndef C_PENINPUTFLOATINGBUBBLE_H +#define C_PENINPUTFLOATINGBUBBLE_H + +// INCLUDES +#include +#include +#include + +#include "peninputfloatctrl.h" + +// CLASS DECLARATION + +/** + * CPeninputFloatingBubble + * + */ +NONSHARABLE_CLASS(CPeninputFloatingBubble) : public CPeninputFloatingCtrl + { +public: // Constructors + /** + * Symbian constructor. + * + * @since S60 v5.0 + * @return Pointer to created object + */ + static CPeninputFloatingBubble* NewL(); + /** + * Symbian constructor. + * + * @since S60 v5.0 + * @return Pointer to created object + */ + static CPeninputFloatingBubble* NewLC(); + + /** + * standard c++ destructor. + * + * @since S60 v5.0 + * @return None + */ + ~CPeninputFloatingBubble(); + +public: //from base class CCoeControl + /** + * From CCoeControl + * Draw this control + * + * @since S60 v5.0 + * @param aRect the rectangle of this view that needs updating + * @return None + */ + virtual void Draw( const TRect& aRect ) const; + +public: + /** + * Set background image + * + * @since S60 v5.0 + * @param aBkgndImage skin item id of background image + * @return None + */ + void SetBackgroundImage( TAknsItemID aBkgndImage ); + + /** + * Set text + * + * @since S60 v5.0 + * @param aText new text to be shown in this control + * @return None + */ + void SetText( const TDesC& aText ); + + /** + * + * @since S60 v5.0 + * @param aTextFormat text layout + * @return None + */ + void SetTextFormat( TAknTextLineLayout aTextFormat ); + + /** + * + * @since S60 v5.0 + * @param aIconImage icon to be shown in this control + * @param aIconMask mask of icon + * @return None + */ + void SetIcon( CFbsBitmap* aIconImage, CFbsBitmap* aIconMask ); + +private: + /** + * C++ default constructor. + * + * @since S60 v5.0 + * @return None + */ + CPeninputFloatingBubble(); + + /** + * Symbian constructor + * + * @since S60 v5.0 + * @return None + */ + void ConstructL(); + +private: + /** + * the text to be shown + * Own + */ + HBufC* iText; + + /** + * text format + */ + TAknTextLineLayout iTextFormat; + + /** + * the icon to be shown + * not own + */ + CFbsBitmap* iIconImage; + + /** + * mask of icon + * not own + */ + CFbsBitmap* iIconMask; + + /** + * skin item id of background + */ + TAknsItemID iBkgndSkinId; + }; + +#endif // C_PENINPUTFLOATINGBUBBLE_H diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputfloatctrl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputfloatctrl.h Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,103 @@ +/* +* Copyright (c) 2006-2006 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: header file of Floating window +* +*/ + + +#ifndef C_PENINPUTFLOATINGCTRL_H +#define C_PENINPUTFLOATINGCTRL_H + +// INCLUDES +#include +#include +#include + +// CLASS DECLARATION + +/** + * CPeninputFloatingCtrl + * + */ +NONSHARABLE_CLASS(CPeninputFloatingCtrl): public CCoeControl + { +public: // Constructors + /** + * C++ default constructor. + * + * @since S60 v5.0 + * @return None + */ + CPeninputFloatingCtrl(); + + /** + * C++ destructor + * + * @since S60 v5.0 + * @return None + */ + ~CPeninputFloatingCtrl(); + +public: // from base class CCoeControl + /** + * From CCoeControl + * Draw this control + * + * @since S60 v5.0 + * @param aRect the rectangle of this view that needs updating + * @return None + */ + virtual void Draw( const TRect& aRect ) const; + +public: + /** + * Show this floating control + * + * @since S60 v5.0 + * @param aRect rect of control, in screen coord-sys + * @return None + */ + void Show( const TRect& aRect ); + + /** + * Show this floating control + * + * @since S60 v5.0 + * @param aRect rect of control, in screen coord-sys + * @param aOrdinalPos Ordinal position + * @param aOrdinalPriority Ordinal priority + * @return None + */ + void Show( const TRect& aRect, TInt aOrdinalPos, TInt aOrdinalPriority ); + + /** + * Hide this floating control + * + * @since S60 v5.0 + * @return None + */ + void Hide(); + +protected: + /** + * Symbian constructor + * + * @since S60 v5.0 + * @return None + */ + void BaseConstructL(); + + }; + +#endif // C_PENINPUTFLOATINGCTRL_H diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbubblectrl.h --- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbubblectrl.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbubblectrl.h Fri Mar 12 15:44:07 2010 +0200 @@ -47,6 +47,8 @@ CFepUiLayout* aUiLayout, TInt aCtrlId); + inline void SetIconOffsetAndSize( + const TSize& aOffset, const TSize& aSize ); IMPORT_C virtual void Draw(); IMPORT_C virtual void Hide(TBool aShowFlag); @@ -84,6 +86,7 @@ IMPORT_C TBool IsShowing(); IMPORT_C void SetFrameDiff(TInt aLeftDiff,TInt aTopDiff,TInt aRightDiff,TInt aBottomDiff); + inline void GetText( TDes& aText ); void Freeze(); @@ -122,6 +125,8 @@ TBool iNeedRedraw; // redraw flag after text changed. TInt iTextColorIndex; + TSize iIconOffset; + TSize iIconSize; }; inline void CBubbleCtrl::SetTextColorIndex( TInt aTxtClrIndex ) @@ -133,6 +138,17 @@ { return iTextColorIndex; } +inline void CBubbleCtrl::SetIconOffsetAndSize( + const TSize& aOffset, const TSize& aSize ) + { + iIconOffset = aOffset; + iIconSize = aSize; + } + +inline void CBubbleCtrl::GetText( TDes& aText ) + { + aText.Copy( *iText ); + } class CTooltipBubbleCtrl: public CBubbleCtrl { diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h --- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h Fri Mar 12 15:44:07 2010 +0200 @@ -29,6 +29,7 @@ class CBubbleCtrl; class CPenInputColorIcon; +class MPeninputVkbPreviewBubbleRenderer; #define INVALID_COLOR_GROUP -1 typedef struct TVirtualKeyEventData_Tag @@ -560,6 +561,15 @@ IMPORT_C void SetShiftIcon( CPenInputColorIcon* aIcon ); inline CPenInputColorIcon* ShiftIcon(); + /** + * Install preview bubble renderer + * + * @param aRenderer Preview bubble renderer. + * Ownership transfered(shared by all targets of aRenderer) + * @return None. + */ + IMPORT_C void SetPreviewBubbleRenderer( MPeninputVkbPreviewBubbleRenderer* aRenderer ); + protected: /** @@ -854,6 +864,7 @@ * The shift icon showing on the key */ CPenInputColorIcon* iShiftIcon; + MPeninputVkbPreviewBubbleRenderer* iPreviewBubbleRenderer; friend class CVirtualKeyCtrl; friend class CVirtualRawKeyCtrl; //friend class CVirtualKey; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputvkbpreviewbubblerenderer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputvkbpreviewbubblerenderer.h Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2005-2006 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: header file of virtual keyboard control +* +*/ + +#ifndef M_PENINPUTVKBPREVIEWBUBBLERENDERER_H +#define M_PENINPUTVKBPREVIEWBUBBLERENDERER_H + +// System includes +#include +#include + +// User includes +#include "peninputlayoutvkb.h" + +// CLASS DECLARATION + +/** + * MPeninputVkbPreviewBubbleRenderer + * Interface for preview bubble extension. + * + */ +class MPeninputVkbPreviewBubbleRenderer +{ +public: + /** + * Attach this extension to a virtual keyboard object. + * + * @since S60 S60 v5.0 + * @return None. + */ + virtual void Attach() = 0; + + /** + * Detach this extension from a virtual keyboard object. + * + * @since S60 S60 v5.0 + * @return None. + */ + virtual void Detach() = 0; + + /** + * Enable preview bubble + * + * @since S60 S60 v5.0 + * @param aFlag ETrue to enable preview bubble. + * @return None. + */ + virtual void ShowBubble( TBool aFlag ) = 0; + + /** + * Draw preview bubble. + * + * @since S60 S60 v5.0 + * @param aKey Virtual key. + * @param aVkbPos Position of virtual keyboard. + * @param aLayoutPos Position of layout, in screen coord-sys. + * @param aSize Size of bubble. + * @return None. + */ + virtual void DrawBubble( CVirtualKey* aKey, const TPoint& aVkbPos, + const TPoint& aLayoutPos, const TSize& aSize ) = 0; + + /** + * Clear preview bubble. + * + * @since S60 S60 v5.0 + * @return None. + */ + virtual void ClearBubble() = 0; + + /** + * Set icon and background of bubble. + * + * @since S60 S60 v5.0 + * @param aBmpId Bitmap of icon. + * @param aMaskBmpId Bitmap of mask. + * @param aBgSkinId Skin id of background. + * @return None. + */ + virtual void SetBubbleBitmapParam( CFbsBitmap* aBmpId, CFbsBitmap* aMaskBmpId, + TAknsItemID aBgSkinId )=0; + + /** + * Set text format + * + * @since S60 S60 v5.0 + * @param aTextFormat Text format. + * @return None. + */ + virtual void SetTextFormat( TAknTextLineLayout aTextFormat ) = 0; + + /** + * Set margin of bubble + * + * @since S60 S60 v5.0 + * @param aLeftDiff Left margin. + * @param aTopDiff Top margin. + * @param aRightDiff Right margin. + * @param aBottomDiff Bottom margin. + * @return None. + */ + virtual void SetFrameDiff( TInt aLeftDiff, TInt aTopDiff, TInt aRightDiff, + TInt aBottomDiff )=0; +}; + +#endif //M_PENINPUTVKBPREVIEWBUBBLERENDERER_H diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/inc/pensrvcliinc/peninputanim.h --- a/textinput/peninputarc/inc/pensrvcliinc/peninputanim.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/inc/pensrvcliinc/peninputanim.h Fri Mar 12 15:44:07 2010 +0200 @@ -407,6 +407,12 @@ TRect iDiscreetPopArea; RAknUiServer iAknUiSrv; TBool iDirty; + + /** + * Fix bug HMNN-82CDU5 + */ + TPoint iPointerDown; // record pointer that button is pressing in + TBool iIsMove; // Is key moving event happened. }; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputanim/peninputanim.cpp --- a/textinput/peninputarc/src/peninputanim/peninputanim.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputanim/peninputanim.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -810,6 +810,15 @@ DoTactileFeedBack(aRawEvent.Pos() - rect.iTl); #endif // RD_TACTILE_FEEDBACK iIsPenDown = ETrue; + + // Fix bug HMNN-82CDU5 + // When button downing event is happened, iIsMove is reset to EFalse + iIsMove = EFalse; + + // Recording pointer that button is pressing down in at this time + iPointerDown = aRawEvent.Pos(); + // + PostRawEvent(aRawEvent); return ETrue; } @@ -841,6 +850,19 @@ } if(iIsPenDown) { + + // Fix bug HMNN-82CDU5 + // When the control key pressing down in is different with the control key pressing up + // and pointer moving event isn¡¯t happened, + // pointer moving event will is supplied + if(iPointerDown != aRawEvent.Pos() && !iIsMove) + { + TRawEvent rawEvent = aRawEvent; + rawEvent.Set( TRawEvent::EPointerMove ); + OnRawPointerMove(rawEvent); + } + // + iIsPenDown = EFalse; TRect rect(iSpritePosition, iSpriteSize); @@ -848,6 +870,12 @@ { //send pen up event immediately SendRawEvent(aRawEvent); + + // Fix bug HMNN-82CDU5 + // When key pressing up event is completed, iIsMove is reset to EFalse. + iIsMove = EFalse; + // + return ETrue; } } @@ -880,6 +908,11 @@ { //give tactile feedback + // Fix bug HMNN-82CDU5 + // When pointer moving event is happened, iIsMove is set to ETrue + iIsMove = ETrue; + // + PostRawEvent(aRawEvent); return ETrue; } @@ -887,6 +920,12 @@ if(iIsPointerCaptured || iIsPenDown) { + + // Fix bug HMNN-82CDU5 + // When pointer moving event is happened, iIsMove is set to ETrue + iIsMove = ETrue; + // + PostRawEvent(aRawEvent); return ETrue; } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputclient/penclientimpl.cpp --- a/textinput/peninputarc/src/peninputclient/penclientimpl.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputclient/penclientimpl.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -279,11 +279,11 @@ iServerExit = EFalse; if(iObserver) { - iObserver->ReConstructL(srvThreadId); + TRAP_IGNORE(iObserver->ReConstructL(srvThreadId)); } else { - iObserver = CPeninputServerObserver::NewL(this,srvThreadId); + TRAP_IGNORE(iObserver = CPeninputServerObserver::NewL(this,srvThreadId)); } } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputaknvkbpreviewbubblerenderer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputaknvkbpreviewbubblerenderer.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,184 @@ +/* +* 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: Implementation of vkb window class +* +*/ + +// System includes + +// User includes +#include "peninputaknvkbpreviewbubblerenderer.h" +#include "peninputfloatbubble.h" + +// Constants +// Modify warning +//const TInt KDefaultBubbleSize = 50; + +// Member functions + +// --------------------------------------------------------------------------- +// Symbian constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CPeninputAknVkbPreviewBubbleRenderer* CPeninputAknVkbPreviewBubbleRenderer::NewL() + { + CPeninputAknVkbPreviewBubbleRenderer* self = new( ELeave) CPeninputAknVkbPreviewBubbleRenderer; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// C++ destructor +// --------------------------------------------------------------------------- +// +CPeninputAknVkbPreviewBubbleRenderer::~CPeninputAknVkbPreviewBubbleRenderer() + { + delete iBubbleCtrlEx; + + iBubbleCtrlEx = NULL; + } + +// --------------------------------------------------------------------------- +// Attach this extension to a virtual keyboard object. +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::Attach() + { + iRefCount++; + } + +// --------------------------------------------------------------------------- +// Detach this extension from a virtual keyboard object. +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::Detach() + { + iRefCount--; + if ( iRefCount < 1 ) + { + delete this; + } + } + +// --------------------------------------------------------------------------- +// Enable preview bubble. +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::ShowBubble( TBool aFlag ) + { + if ( aFlag && ( NULL == iBubbleCtrlEx ) ) + { + TRAP_IGNORE( iBubbleCtrlEx = CPeninputFloatingBubble::NewL() ); + } + } + +// --------------------------------------------------------------------------- +// Draw preview bubble. +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::DrawBubble( CVirtualKey* aKey, + const TPoint& aVkbPos, + const TPoint& aLayoutPos, + const TSize& aBubbleSize ) + { + if ( iBubbleCtrlEx ) + { + TRect rect = aKey->Rect(); + rect.Move( aVkbPos.iX, aVkbPos.iY ); + rect.Move( aLayoutPos.iX, aLayoutPos.iY ); //now is in screen coord-sys + + TInt x = rect.Center().iX - aBubbleSize.iWidth / 2; + TInt y = rect.iTl.iY - aBubbleSize.iHeight - 5; + + TRect rcBubble( TPoint(x,y), aBubbleSize ); + if( aKey->DisplayUnicode() && aKey->DisplayUnicode()->Length() != 0 ) + { + iBubbleCtrlEx->SetText( *aKey->DisplayUnicode() ); + } + else + { + iBubbleCtrlEx->SetText( aKey->KeyUnicodes() ); + } + + iBubbleCtrlEx->Show( rcBubble ); + iBubbleCtrlEx->DrawDeferred(); + } + } + +// --------------------------------------------------------------------------- +// Clear preview bubble. +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::ClearBubble() + { + if ( iBubbleCtrlEx ) + { + iBubbleCtrlEx->Hide(); + } + } + +// --------------------------------------------------------------------------- +// Set icon and background of bubble. +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::SetBubbleBitmapParam( CFbsBitmap* /*aBmpId*/, + CFbsBitmap* /*aMaskBmpId*/, + TAknsItemID aBgSkinId ) + { + if( iBubbleCtrlEx ) + { + iBubbleCtrlEx->SetBackgroundImage( aBgSkinId ); + } + } + +// --------------------------------------------------------------------------- +// Set text format +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::SetTextFormat( TAknTextLineLayout aTextFormat ) + { + if( iBubbleCtrlEx ) + { + iBubbleCtrlEx->SetTextFormat( aTextFormat ); + } + } + +// --------------------------------------------------------------------------- +// Set margin of bubble +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::SetFrameDiff( TInt /*aLeftDiff*/, + TInt /*aTopDiff*/, + TInt /*aRightDiff*/, + TInt /*aBottomDiff*/ ) + { + } + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CPeninputAknVkbPreviewBubbleRenderer::CPeninputAknVkbPreviewBubbleRenderer() + { + } + +// --------------------------------------------------------------------------- +// Symbian constructor +// --------------------------------------------------------------------------- +// +void CPeninputAknVkbPreviewBubbleRenderer::ConstructL() + { + } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputfloatbubble.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputfloatbubble.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2006-2006 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: Implementation for Floating bubble +* +*/ + + +#include +#include + +#include "peninputfloatbubble.h" + +const TInt KDefaultMarginSize = 10; + +// --------------------------------------------------------------------------- +// Symbian Constructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble* CPeninputFloatingBubble::NewL() + { + CPeninputFloatingBubble* self = CPeninputFloatingBubble::NewLC(); + CleanupStack::Pop(); // self; + return self; + } + +// --------------------------------------------------------------------------- +// Symbian Constructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble* CPeninputFloatingBubble::NewLC() + { + CPeninputFloatingBubble* self = new ( ELeave ) CPeninputFloatingBubble(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// c++ destructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble::~CPeninputFloatingBubble() + { + if ( iText ) + { + delete iText; + } + + iText = NULL; + iIconImage = NULL; + iIconMask = NULL; + } + +// --------------------------------------------------------------------------- +// Draw this control +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::Draw( const TRect& aRect ) const + { + CWindowGc& gc = SystemGc(); + TRect rect = Rect(); + gc.Clear( rect ); + + //draw background + if ( iBkgndSkinId.iMajor ) + { + TRect border = rect; + TRect inner = rect; + inner.Shrink( KDefaultMarginSize, KDefaultMarginSize ); + AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), + gc, + border, + inner, + iBkgndSkinId, + KAknsIIDDefault ); + } + else + { + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.SetBrushColor( KRgbGray ); + gc.SetPenStyle( CGraphicsContext::ESolidPen ); + gc.SetPenColor( KRgbBlack ); + gc.DrawRoundRect( rect, TSize( 2, 2 ) ); + } + + //draw icon + if ( iIconImage ) + { + TSize size = iIconImage->SizeInPixels(); + TInt x = rect.iTl.iX + ( rect.Width() - size.iWidth ) / 2; + TInt y = rect.iTl.iY + ( rect.Height() - size.iHeight ) / 2; + if ( iIconMask ) + { + gc.BitBltMasked( TPoint( x, y ), iIconImage, + TRect( TPoint( 0, 0 ), size), iIconMask, + EFalse ); + } + else + { + gc.BitBlt( TPoint( x, y ), iIconImage ); + } + } + + //draw text + if ( iText ) + { + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + TAknLayoutText textLayout; + textLayout.LayoutText( rect, iTextFormat ); + TRgb color( KRgbBlack ); + if ( AknsUtils::AvkonSkinEnabled() ) + { + AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), + color, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG60 ); + } + textLayout.DrawText( gc, *iText, EFalse, color ); + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetBackgroundImage( TAknsItemID aBkgndImage ) + { + iBkgndSkinId = aBkgndImage; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetText( const TDesC& aText ) + { + if ( iText ) + { + delete iText; + } + iText = NULL; + + iText = aText.Alloc(); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetTextFormat( TAknTextLineLayout aTextFormat ) + { + iTextFormat = aTextFormat; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetIcon( CFbsBitmap* aIconImage, CFbsBitmap* aIconMask ) + { + iIconImage = aIconImage; + iIconMask = aIconMask; + } + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble::CPeninputFloatingBubble() + : iBkgndSkinId( KAknsIIDNone ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// Symbian second-phase constructor +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::ConstructL() + { + BaseConstructL(); + } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputfloatctrl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputfloatctrl.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,100 @@ +/* +* Copyright (c) 2006-2006 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: Implementation for Floating window +* +*/ + + +#include "peninputfloatctrl.h" + +const TInt KDefaultRoundSize = 2; +const TInt KDefaultOrdinalPosition = 0; +const TInt KDefaultOrdinalPriority = ECoeWinPriorityAlwaysAtFront + 100; +// --------------------------------------------------------------------------- +// C++ destructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingCtrl::~CPeninputFloatingCtrl() + { + } + +// --------------------------------------------------------------------------- +// Draw this control +// --------------------------------------------------------------------------- +// +void CPeninputFloatingCtrl::Draw( const TRect& aRect ) const + { + CWindowGc& gc = SystemGc(); + TRect rect = Rect(); + gc.Clear( rect ); + + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.SetBrushColor( KRgbGray ); + gc.SetPenStyle( CGraphicsContext::ESolidPen ); + gc.SetPenColor( KRgbBlack ); + gc.DrawRoundRect( rect, TSize( KDefaultRoundSize, KDefaultRoundSize ) ); + } + +// --------------------------------------------------------------------------- +// Show this floating control +// --------------------------------------------------------------------------- +// +void CPeninputFloatingCtrl::Show( const TRect& aRect ) + { + Show( aRect, KDefaultOrdinalPosition, KDefaultOrdinalPriority ); + } + +// --------------------------------------------------------------------------- +// Show this floating control +// --------------------------------------------------------------------------- +// +void CPeninputFloatingCtrl::Show( const TRect& aRect, TInt aOrdinalPos, + TInt aOrdinalPriority ) + { + SetRect( aRect ); + DrawableWindow()->SetOrdinalPosition( aOrdinalPos, aOrdinalPriority ); + MakeVisible( ETrue ); + } +// --------------------------------------------------------------------------- +// Hide this floating control +// --------------------------------------------------------------------------- +// +void CPeninputFloatingCtrl::Hide() + { + MakeVisible( EFalse ); + } + +// --------------------------------------------------------------------------- +// Symbian constructor +// --------------------------------------------------------------------------- +// +void CPeninputFloatingCtrl::BaseConstructL() + { + RWindowGroup& wg = CCoeEnv::Static()->RootWin(); + CreateWindowL( wg ); + SetComponentsToInheritVisibility(); + Window().SetRequiredDisplayMode( EColor16MA ); + MakeVisible( EFalse ); + ActivateL(); + } + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingCtrl::CPeninputFloatingCtrl() + { + // No implementation required + } + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -258,22 +258,28 @@ if ( iForgroundBmp ) { - if( iForgroundBmp->SizeInPixels() != innerRect.Size() ) + TRect iconRect; + iconRect.iTl = TPoint( innerRect.iTl.iX + iIconOffset.iWidth, + innerRect.iTl.iY + iIconOffset.iHeight ); + iconRect.SetWidth( iIconSize.iWidth ); + iconRect.SetHeight( iIconSize.iHeight ); + + if( iForgroundBmp->SizeInPixels() != iconRect.Size() ) { - AknIconUtils::SetSize( iForgroundBmp, innerRect.Size(), EAspectRatioNotPreserved ); + AknIconUtils::SetSize( iForgroundBmp, iconRect.Size(), EAspectRatioNotPreserved ); } TRect srcRect( TPoint( 0, 0 ), iForgroundBmp->SizeInPixels() ); if( iForgroundBmpMask ) { - if( iForgroundBmpMask->SizeInPixels() != innerRect.Size() ) + if( iForgroundBmpMask->SizeInPixels() != iconRect.Size() ) { - AknIconUtils::SetSize( iForgroundBmpMask, innerRect.Size(), EAspectRatioNotPreserved); + AknIconUtils::SetSize( iForgroundBmpMask, iconRect.Size(), EAspectRatioNotPreserved); } - - gc->BitBltMasked( innerRect.iTl, + gc->SetBrushStyle( CGraphicsContext::ENullBrush ); + gc->BitBltMasked( iconRect.iTl, iForgroundBmp, srcRect, iForgroundBmpMask, @@ -281,13 +287,13 @@ } else { - gc->BitBlt( innerRect.iTl, + gc->BitBlt( iconRect.iTl, iForgroundBmp, srcRect ); } } - if ( iText ) + if ( iText && iText->Length() > 0 ) { gc->SetBrushStyle( CGraphicsContext::ENullBrush ); TAknLayoutText textLayout; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcontrol.mmp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcontrol.mmp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcontrol.mmp Fri Mar 12 15:44:07 2010 +0200 @@ -54,7 +54,10 @@ SOURCE peninputlayoutcursor.cpp SOURCE peninputlayoutmultilineicfeditor.cpp SOURCE peninputpentracedecorator.cpp -SOURCE peninputlayoutsmiley.cpp +SOURCE peninputlayoutsmiley.cpp +SOURCE peninputfloatctrl.cpp +SOURCE peninputfloatbubble.cpp +SOURCE peninputaknvkbpreviewbubblerenderer.cpp userinclude ../../inc/peninputlayoutcontrolinc diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -967,26 +967,35 @@ } TPtrC icftext = editArea->iRichText->Read(editArea->iPromptTextLen, editArea->iRichText->DocumentLength()); - TInt startPos = icftext.LocateReverse(KStar) + 1 + editArea->iPromptTextLen; - - TBuf<1> buf; - buf.Append(KStar); - - TInt textlen = editArea->iRichText->DocumentLength(); - - if (startPos < textlen) + + for (TInt i = 0; i < icftext.Length(); i++) { - editArea->iRichText->DeleteL(startPos, 1); - editArea->iTextView->HandleInsertDeleteL(TCursorSelection(startPos, startPos), 1); - editArea->iRichText->InsertL(startPos, buf); - editArea->iTextView->HandleInsertDeleteL(TCursorSelection(startPos, startPos+buf.Length()), - 0); + if (icftext[i] != KStar)//find only one none-star char + { + TInt startPos = i + editArea->iPromptTextLen; + TBuf<1> buf; + buf.Append(KStar); + + TInt textlen = editArea->iRichText->DocumentLength(); - if (startPos == textlen - 1) - { - editArea->iSecretTextTimer->Cancel(); + if (startPos < textlen) + { + editArea->iRichText->DeleteL(startPos, 1); + editArea->iTextView->HandleInsertDeleteL(TCursorSelection( + startPos, startPos), 1); + editArea->iRichText->InsertL(startPos, buf); + editArea->iTextView->HandleInsertDeleteL(TCursorSelection( + startPos, startPos + buf.Length()), 0); + + if (startPos == textlen - 1) + { + editArea->iSecretTextTimer->Cancel(); + } + } + break; } } + editArea->UpdateArea(editArea->Rect(),EFalse); return KErrNone; } @@ -2654,11 +2663,9 @@ void CFepLayoutMultiLineIcfEditor::ShowByteWarningBubble(const TDesC& aInfo) { TSize size = iInfoBubble->Rect().Size(); - CFont::TMeasureTextInput* input = new (ELeave) CFont::TMeasureTextInput; - CleanupStack::PushL(input); - input->iMaxBounds = iRect.Width(); - TInt width = iFont->MeasureText(aInfo, input, NULL); - CleanupStack::PopAndDestroy(); + CFont::TMeasureTextInput input;// = new (ELeave) CFont::TMeasureTextInput; + input.iMaxBounds = iRect.Width(); + TInt width = iFont->MeasureText(aInfo, &input, NULL); size.SetSize(width, size.iHeight); SetInfoBubbleCtrlSize(size); TRAP_IGNORE(iInfoBubble->SetTextL(aInfo)); @@ -2973,7 +2980,6 @@ CPeninputSmileyImage* smiley = iSmileyManager->SmileyImage( code ); if ( smiley ) { - gc.SetBrushColor( TRgb(255,0,0) ); gc.SetBrushStyle( CGraphicsContext::ENullBrush ); smiley->SetImageSize( rect.Size() ); diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -27,6 +27,7 @@ #include "peninputlayoutvkb.h" #include "peninputpluginutils.h" +#include "peninputvkbpreviewbubblerenderer.h" const TInt KFadingParamBlack = 128; const TInt KFadingParamWhite = 192; const TInt KDefaultBubbleSize = 50; @@ -102,6 +103,7 @@ { iFontSpec = aFontSpec; SetControlType(ECtrlVirtualKeyboard); + iBubbleSize = TSize( KDefaultBubbleSize, KDefaultBubbleSize ); } // --------------------------------------------------------------------------- @@ -113,6 +115,11 @@ { if ( iBubbleCtrl ) delete iBubbleCtrl; + if ( iPreviewBubbleRenderer ) + { + iPreviewBubbleRenderer->Detach(); + iPreviewBubbleRenderer = NULL; + } //free keys iKeyArray.ResetAndDestroy(); @@ -441,10 +448,24 @@ { iBubbleCtrl->Close(); } + if( iPreviewBubbleRenderer ) + { + iPreviewBubbleRenderer->ClearBubble(); + } } void CVirtualKeyboard::DrawBubble(CVirtualKey* aKey) { + if( iPreviewBubbleRenderer ) + { + if ( iIsShowBubble ) + { + TPoint org = UiLayout()->Position(); + TPoint vkbpos = Rect().iTl; + iPreviewBubbleRenderer->DrawBubble( aKey, vkbpos, org, iBubbleSize ); + } + return; + } if ( aKey && !aKey->Dimmed() && iBubbleCtrl && iIsShowBubble) { @@ -466,12 +487,18 @@ { rect.iTl.iX = x1; rect.iBr.iX = x2; + + TPoint vkbpos = Rect().iTl; + rect.Move( vkbpos.iX, 0 ); } rect.iTl.iY = iBubbleVerticalMargin + aKey->Rect().iTl.iY - iBubbleSize.iHeight + Rect().iTl.iY; rect.iBr.iY = iBubbleVerticalMargin + aKey->Rect().iTl.iY + Rect().iTl.iY; - + + TPoint org = UiLayout()->Position(); + rect.Move( org.iX, org.iY ); //now is in screen coord-sys + if( aKey->DisplayUnicode() && aKey->DisplayUnicode()->Length() != 0 ) { TRAP_IGNORE(iBubbleCtrl->SetTextL(*aKey->DisplayUnicode())); @@ -485,9 +512,15 @@ } EXPORT_C void CVirtualKeyboard::ShowBubble(TBool aFlag) - { + { + iIsShowBubble = aFlag; + + if( iPreviewBubbleRenderer ) + { + iPreviewBubbleRenderer->ShowBubble( aFlag ); + return; + } TBool flag = iBubbleCtrl ? ETrue : EFalse; - iIsShowBubble = aFlag; if ( flag != aFlag ) { if(!flag) @@ -516,6 +549,10 @@ { iBubbleCtrl->SetBitmapParam(aBmpId,aMaskBmpId,aBgSkinId); } + if( iPreviewBubbleRenderer ) + { + iPreviewBubbleRenderer->SetBubbleBitmapParam( aBmpId,aMaskBmpId,aBgSkinId ); + } } EXPORT_C void CVirtualKeyboard::SetBubbleSize(const TSize& aSize) @@ -534,6 +571,10 @@ { iBubbleCtrl->SetTextFormat(aTextFormat); } + if( iPreviewBubbleRenderer ) + { + iPreviewBubbleRenderer->SetTextFormat( aTextFormat ); + } } EXPORT_C void CVirtualKeyboard::SetFrameDiff(TInt aLeftDiff, TInt aTopDiff, @@ -542,7 +583,11 @@ if ( iBubbleCtrl ) { iBubbleCtrl->SetFrameDiff(aLeftDiff,aTopDiff,aRightDiff,aBottomDiff); - } + } + if ( iPreviewBubbleRenderer ) + { + iPreviewBubbleRenderer->SetFrameDiff( aLeftDiff, aTopDiff, aRightDiff, aBottomDiff ); + } } EXPORT_C CFepUiBaseCtrl* CVirtualKeyboard::HandlePointerMoveEventL(const TPoint& aPt) @@ -1105,7 +1150,25 @@ { return CControlGroup::HandlePointerMoveEventL(aPoint); } - */ + */ +EXPORT_C void CVirtualKeyboard::SetPreviewBubbleRenderer( MPeninputVkbPreviewBubbleRenderer* aRenderer ) + { + if ( ( NULL != aRenderer ) && ( aRenderer == iPreviewBubbleRenderer ) ) + { + return; + } + + if( iPreviewBubbleRenderer ) + { + iPreviewBubbleRenderer->Detach(); + } + + iPreviewBubbleRenderer = aRenderer; + if ( aRenderer ) + { + aRenderer->Attach(); + } + } //end of implementation of class CVirtualKeyboard // Implementation of Class CVirtualKey diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputserverapp/peninputserver.cpp --- a/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1545,6 +1545,10 @@ return; } +#ifndef FIX_FOR_NGA +#define FIX_FOR_NGA +#endif + //MLayoutOwner // --------------------------------------------------------------------------- // CPeninputServer::UpdateArea @@ -1559,7 +1563,11 @@ if(iUseWindowCtrl) { - iPenUiCtrl->Invalidate(aRect,EFalse); +#ifdef FIX_FOR_NGA + iPenUiCtrl->Invalidate(TRect( TPoint(0,0), LayoutRect().Size()),EFalse); +#else + iPenUiCtrl->Invalidate(aRect,EFalse); +#endif return; } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp --- a/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -85,8 +85,10 @@ if ( iShowPopup ) { //layout is extended by popup - gc.SetClippingRect( iLayoutClipRect ); - gc.BitBlt( aRect.iTl, iBitmap, aRect ); + TRect rect = aRect; + rect.Intersection( iLayoutClipRect ); + TPoint pos = rect.iTl - iLayoutClipRect.iTl; + gc.BitBlt( pos, iBitmap, rect ); // Add to fix NGA refresh problem CCoeEnv::Static()->WsSession().Flush(); CCoeEnv::Static()->WsSession().Finish(); @@ -241,6 +243,11 @@ void CPenUiWndCtrl::ShowPopup( const TRect& aRectInScreen, const TRect& aRectInLayout, const TRect& aLayoutTrimRect ) { + TPoint offset = aLayoutTrimRect.iTl; + offset += Position(); + this->SetPosition( offset ); + this->SetSize( aLayoutTrimRect.Size() ); + iPopupWnd->PopUp( aRectInScreen, aRectInLayout ); iLayoutClipRect = aLayoutTrimRect; iShowPopup = ETrue; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/group/peninputcommonctrls.mmp --- a/textinput/peninputcommonctrls/group/peninputcommonctrls.mmp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputcommonctrls/group/peninputcommonctrls.mmp Fri Mar 12 15:44:07 2010 +0200 @@ -62,6 +62,7 @@ SOURCE peninputlistonerowwithouticonwithbubble.cpp SOURCE peninputlistmultirowrollwithiconwithbubble.cpp SOURCE peninputlistonerowrollwithiconwithbubble.cpp +SOURCE peninputlistmultirowwithouticonwithbubble.cpp // From peninputselectionlist SOURCEPATH ../src/peninputselectionlist diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.h Fri Mar 12 15:44:07 2010 +0200 @@ -98,7 +98,8 @@ EListExpandableWithoutIcon, EListExpandableRollWithIcon, EListExpandableRollWithIconWithBubble, - EListExpandableMultiRowWithoutIcon + EListExpandableMultiRowWithoutIcon, + EListExpandableMultiRowWithoutIconWithBubble }; enum TCandTruncateType diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmanager.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmanager.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmanager.h Fri Mar 12 15:44:07 2010 +0200 @@ -37,6 +37,7 @@ class CListExpandableMultiRowWithoutIcon; class CListOneRowRollWithIconWithBubble; class CListMultiRowRollWithIconWithBubble; +class CListMultiRowWithoutIconWithBubble; /** * List manager @@ -169,7 +170,8 @@ * @return the multi row list with icon */ CList* ListOneRowRollWithIconWithBubble() const; - + + CList* ListMultiRowWithoutIconWithBubble() const; /** * Reset some data * @since S60 v4.0 @@ -259,7 +261,12 @@ * Not Own */ MFepCtrlDropdownListContext* iContext; - + + /** + * The multi roll list without icon with bubble + * Own + */ + CListMultiRowWithoutIconWithBubble* iListMultiRowWithoutIconWithBubble; }; #endif // C_LISTMANAGER_H diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithouticonwithbubble.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithouticonwithbubble.h Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,117 @@ +/* +* 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: Multi rows list without icon for drop-down list objects +* +*/ + +#ifndef C_LISTMULTIROWWITHOUTICONWITHBUBBLE_H +#define C_LISTMULTIROWWITHOUTICONWITHBUBBLE_H + +// INCLUDES +#include +#include + +#include "peninputlist.h" +#include "peninputcandidate.h" +#include "peninputlistexpandablemultirowwithouticon.h" + +class MFepCtrlDropdownListContext; +/** + * Multi rows list without icon for drop-down list + * + * @lib FepCtrlDropdownList.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS(CListMultiRowWithoutIconWithBubble) : public CListExpandableMultiRowWithoutIcon + { + +public: // Methods + + /** + * Create a object of CListMultiRowWithIcon, static method + * + * @since S60 v3.2 + * @param aManager Pointer to the list manager + * @param iOwner The drop down list + * @return The CListMultiRowWithIcon pointer. + */ + static CListMultiRowWithoutIconWithBubble* NewL(CListManager* aManager, + MFepCtrlDropdownListContext* iOwner); + + /** + * Destructor + * + * @since S60 v3.2 + */ + virtual ~CListMultiRowWithoutIconWithBubble(); + +// from base class CListMultiRowWithIcon + + /** + * Deal with the pointer down event. + * + * @since S60 v3.2 + * @param aPoint The point of the mouse + * @return None. + */ + virtual void HandlePointerDownL(const TPoint& aPoint); + + /** + * Deal with the pointer up event. + * + * @since S60 v3.2 + * @param aPoint The point of the mouse + * @return None. + */ + virtual void HandlePointerUpL(const TPoint& aPoint); + + /** + * Deal with the pointer drag event. + * + * @since S60 v3.2 + * @param aPoint The point of the mouse + * @return None. + */ + virtual void HandlePointerDragL(const TPoint& aPoint); + +protected: // Methods + + /** + * Constructor. + * + * @param aManager The list manager + * @param aOwner The context of the drop down list + * @since S60 v3.2 + */ + CListMultiRowWithoutIconWithBubble(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); + +// from base class CList + + /** + * Compare rects equal or not. + * + * @since S60 v3.2 + * @param aSrcRect The source rect + * @param aDesRect The destination rect + * @return ETrue If the two rects are equal. + */ + virtual TBool CompareRect(const TRect& aSrcRect, const TRect& aDesRect); + +protected: + + }; + +#endif // C_LISTMULTIROWWITHOUTICONWITHBUBBLE_H + +// End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputdropdownlist.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputdropdownlist.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputdropdownlist.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -508,7 +508,12 @@ { ChangeActiveList(iListManager->ListExpandableMultiRowWithoutIcon()); } - break; + break; + case EListExpandableMultiRowWithoutIconWithBubble: + { + ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble()); + } + break; default: __ASSERT_DEBUG( EFalse, User::Panic( _L("TListType Error::SizeChanged()"), 0 ) ); @@ -673,7 +678,14 @@ { ChangeActiveList( iListManager->ListExpandableMultiRowWithoutIcon() ); } - break; + break; + + case EListExpandableMultiRowWithoutIconWithBubble: + { + ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble()); + } + break; + default: __ASSERT_DEBUG( EFalse, User::Panic( _L("TListType Error::SetCandidatesL()"), 0 ) ); @@ -822,6 +834,13 @@ NotifyClosePage(); } break; + + case EListExpandableMultiRowWithoutIconWithBubble: + { + ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble()); + NotifyClosePage(); + } + break; default: __ASSERT_DEBUG( EFalse, User::Panic( _L("TListType Error::ResetAndClear()"), 0 ) ); @@ -1231,7 +1250,13 @@ { ChangeActiveList( iListManager->ListExpandableMultiRowWithoutIcon() ); } - break; + break; + case EListExpandableMultiRowWithoutIconWithBubble: + { + ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble()); + } + break; + default: __ASSERT_DEBUG( EFalse, User::Panic( _L("TListType Error::SetFont()"), 0 ) ); @@ -1680,6 +1705,7 @@ EnableSecondary(EFalse); break; case EListExpandableMultiRowWithoutIcon: + case EListExpandableMultiRowWithoutIconWithBubble: break; default: __ASSERT_DEBUG( EFalse, @@ -1719,7 +1745,9 @@ || ( ( ( beforeList == iListManager->ListMultiRowWithIconWithBubble() )) && (aList != iListManager->ListMultiRowWithIconWithBubble() ) ) || ( ( ( beforeList == iListManager->ListMultiRowRollWithIconWithBubble() )) - && (aList != iListManager->ListMultiRowRollWithIconWithBubble() ) ) ) + && (aList != iListManager->ListMultiRowRollWithIconWithBubble() ) ) + || ( ( ( beforeList == iListManager->ListMultiRowWithoutIconWithBubble() )) + && (aList != iListManager->ListMultiRowWithoutIconWithBubble() ) )) { rect.Shrink(TSize(0,-1)); RootControl()->ReDrawRect(rect); @@ -1919,8 +1947,9 @@ } } break; - case EListExpandableMultiRowWithoutIcon: - break; + case EListExpandableMultiRowWithoutIcon: + case EListExpandableMultiRowWithoutIconWithBubble: + break; case EListNoExpandable: case EListNoExpandableWithBubble: break; @@ -2080,6 +2109,7 @@ iListManager->ListMultiRowRollWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo); iListManager->ListExpandableMultiRowWithoutIcon()->SetDropdownListImgID(aDropdownListDrawInfo); + iListManager->ListMultiRowWithoutIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo); } CFepUiLayout* CFepCtrlDropdownList::UiLayout() @@ -2233,10 +2263,33 @@ rect.iTl.iY = iBubbleVerticalMargin + aRect.iTl.iY - iBubbleSize.iHeight; - rect.iBr.iY = iBubbleVerticalMargin + aRect.iTl.iY; - - TRAP_IGNORE(iBubbleCtrl->SetTextL(aText)); - + if ( rect.iTl.iY < 0 ) + { + rect.iTl.iY = iBubbleVerticalMargin; + } + + rect.iBr.iY = rect.iTl.iY + iBubbleSize.iHeight; + + if((TBidiText::TextDirectionality(aText) == TBidiText:: ERightToLeft) && (aText.Length() > 1)) + { + HBufC* displayStr = aText.AllocLC(); + + TInt i = 0; + TInt charNum = displayStr->Length(); + + while(i < charNum) + { + displayStr->Des()[i] = aText[(charNum-1)-i]; + ++i; + } + TRAP_IGNORE(iBubbleCtrl->SetTextL(*displayStr)); + CleanupStack::PopAndDestroy(displayStr); + } + else + { + TRAP_IGNORE(iBubbleCtrl->SetTextL(aText)); + } + iBubbleCtrl->Popup(rect); } } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmanager.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmanager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmanager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -31,6 +31,8 @@ #include "peninputlistmultirowrollwithicon.h" #include "peninputlistonerowrollwithicon.h" #include "peninputlistexpandablemultirowwithouticon.h" +#include "peninputlistmultirowwithouticonwithbubble.h" + #include // ======== MEMBER FUNCTIONS ======== @@ -72,6 +74,7 @@ delete iListExpandableMultiRowWithoutIcon; delete iListMultiRowRollWithIconWithBubble; delete iListOneRowRollWithIconWithBubble; + delete iListMultiRowWithoutIconWithBubble; } // ----------------------------------------------------------------------------- @@ -95,6 +98,7 @@ iListExpandableMultiRowWithoutIcon = CListExpandableMultiRowWithoutIcon::NewL(this, aContext); iListMultiRowRollWithIconWithBubble = CListMultiRowRollWithIconWithBubble::NewL(this, aContext); iListOneRowRollWithIconWithBubble = CListOneRowRollWithIconWithBubble::NewL(this, aContext); + iListMultiRowWithoutIconWithBubble = CListMultiRowWithoutIconWithBubble::NewL(this, aContext); } // ----------------------------------------------------------------------------- @@ -117,6 +121,7 @@ iListExpandableMultiRowWithoutIcon->SizeChanged(); iListMultiRowRollWithIconWithBubble->SizeChanged(); iListOneRowRollWithIconWithBubble->SizeChanged(); + iListMultiRowWithoutIconWithBubble->SizeChanged(); } // ----------------------------------------------------------------------------- @@ -139,6 +144,7 @@ iListExpandableMultiRowWithoutIcon->Move(aOffset); iListMultiRowRollWithIconWithBubble->Move(aOffset); iListOneRowRollWithIconWithBubble->Move(aOffset); + iListMultiRowWithoutIconWithBubble->Move(aOffset); // Move all candidates for ( TInt i=0; iCandidateCount(); i++ ) @@ -281,6 +287,11 @@ { return iListMultiRowRollWithIconWithBubble; } + +CList* CListManager::ListMultiRowWithoutIconWithBubble() const + { + return iListMultiRowWithoutIconWithBubble; + } void CListManager::ResetStatus() { diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithouticonwithbubble.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithouticonwithbubble.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,228 @@ +/* +* 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: Multi rows list with icon with bubble for drop-down list objects +* +*/ + +// Include +#include +#include +#include +#include +#include +#include +#include "peninputlistmultirowwithouticonwithbubble.h" +#include "peninputlayout.h" + +// ======== MEMBER FUNCTIONS ======== + +// Implementation of Class CListMultiRowWithoutIconWithBubble + +// ----------------------------------------------------------------------------- +// CListMultiRowWithoutIconWithBubble::CListMultiRowWithoutIconWithBubble +// C++ default constructor can NOT contain any code, that +// might leave +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CListMultiRowWithoutIconWithBubble::CListMultiRowWithoutIconWithBubble(CListManager* aManager, + MFepCtrlDropdownListContext *aOwner) +: CListExpandableMultiRowWithoutIcon(aManager, aOwner) + { + } + +// ----------------------------------------------------------------------------- +// CListMultiRowWithoutIconWithBubble::NewL +// factory function +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CListMultiRowWithoutIconWithBubble* CListMultiRowWithoutIconWithBubble::NewL(CListManager* aManager, + MFepCtrlDropdownListContext *aOwner) + { + CListMultiRowWithoutIconWithBubble* self = new (ELeave) CListMultiRowWithoutIconWithBubble(aManager, aOwner); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// ----------------------------------------------------------------------------- +// CListMultiRowWithoutIconWithBubble::~CListMultiRowWithoutIconWithBubble +// desstrutor function +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CListMultiRowWithoutIconWithBubble::~CListMultiRowWithoutIconWithBubble() + { + } + + +// ----------------------------------------------------------------------------- +// CListMultiRowWithoutIconWithBubble::HandlePointerDownL +// handle pointer down +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CListMultiRowWithoutIconWithBubble::HandlePointerDownL(const TPoint& aPoint) + { + CList::HandlePointerDownL(aPoint); + + // also consider fuzzy boundry of drop down list + TRect fuzzyrect = iRect; + fuzzyrect.Grow(iOwner->FuzzyBoundry(), iOwner->FuzzyBoundry()); + + if (!fuzzyrect.Contains(aPoint)) + { + iOwner->SetCapture(EFalse); + iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); + iOwner->ClearBubble(); + return; + } + + if(iContentRect.Contains(aPoint)) + { + TInt index = -1; + CCandidate* candidate = FindCandidate(aPoint, index); + if(candidate) + { + iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); + } + } + } + + +// ----------------------------------------------------------------------------- +// CListMultiRowWithoutIconWithBubble::HandlePointerDragL +// handle pointer drag function +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CListMultiRowWithoutIconWithBubble::HandlePointerDragL(const TPoint& aPoint) + { + // Pass the event first to the base + CList::HandlePointerDragL(aPoint); + + CCandidate* candidate = FindCandidate(aPoint, iClickedCandidateIndex); + + TBool isUpdateBubble = EFalse; + if ( candidate ) + { + if (iClickedRect != candidate->GetRect()) + {// move to the other candidate + // set update prview bubble flag + isUpdateBubble = ETrue; + // remenber the previous cell rect + iMoveLatestRect = iClickedRect; + // get the new cell rect + iClickedRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); + } + } + else + {// move to the aperture + // remember the previous cell + iMoveLatestRect = iClickedRect; + // set the new cell to empty + iClickedRect = KDummyRect; + // redraw the cell only when drag outside at the first time + if(iMoveLatestRect != iClickedRect) + { + iOwner->ClearBubble(); + DrawSelection(iMoveLatestRect, EFalse); + DrawHighightCell(iMoveLatestRect, ETrue); + } + } + + if(candidate && isUpdateBubble) + { + iOwner->ClearBubble(); + CompareRect(iMoveLatestRect, iClickedRect); + // Show preview bubble when drag into a candidate cell + // Make sure show the bubble after redraw clicked cell + iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); + } + } + + + +// ----------------------------------------------------------------------------- +// CListMultiRowWithoutIconWithBubble::HandlePointerUpL +// handle pointer up function +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CListMultiRowWithoutIconWithBubble::HandlePointerUpL(const TPoint& aPoint) + { + // Reset the button clicked flag to EFalse + iIndicateButtonClicked = EFalse; + + iOwner->ClearBubble(); + +#ifdef __WINS__ + // in emulator, double click will be treated as: + // 1 pointer down and 2 pointer up, which will cause error + if (iClickedRect.IsEmpty() && ((CFepUiBaseCtrl*)iOwner)->PointerDown()) +#else + if (iClickedRect.IsEmpty()) +#endif // __WINS__ + { + iOwner->SetCapture(EFalse); + // Change active list object ie. close the dd-list + iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); + } + else + { + if ( iContentRect.Contains(aPoint) ) + { + if ( iClickedRect.Contains(aPoint) ) + { + // Redraw the selected aread + DrawSelection(iClickedRect, EFalse); + + iOwner->SetCapture(EFalse); + + // We have selected a candidate and iClickedCandidateIndex is the selected Index. + // Send the candidate to others + if (iClickedCandidateIndex != KErrNotFound) + { + iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); + CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); + if ( candidate ) + { + iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), + iClickedCandidateIndex); + } + } + } + } + iClickedRect = KEmptyRect; + } + } + + +TBool CListMultiRowWithoutIconWithBubble::CompareRect(const TRect& aSrcRect, const TRect& aDesRect) + { + if(aSrcRect != aDesRect) + { + DrawSelection(aDesRect, ETrue); + DrawSelection(aSrcRect, EFalse); + DrawHighightCell(aSrcRect, ETrue); + } + + return EFalse; + + } + + +// End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithiconwithbubble.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithiconwithbubble.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithiconwithbubble.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -151,6 +151,7 @@ iMoveLatestRect = iClickedRect; iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); } + CompareRect(iMoveLatestRect, iClickedRect); } else if ( iContentRect.Contains(aPoint) ) { @@ -165,6 +166,7 @@ iMoveLatestRect = iClickedRect; iClickedRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); + CompareRect(iMoveLatestRect, iClickedRect); iOwner->ClearBubble(); iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); } @@ -175,6 +177,7 @@ iMoveLatestRect = iClickedRect; iClickedRect = KEmptyRect; + CompareRect(iMoveLatestRect, iClickedRect); } } else @@ -184,7 +187,6 @@ iClickedRect = KEmptyRect; iMoveLatestRect = iClickedRect; } - CompareRect(iMoveLatestRect, iClickedRect); } } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputcommonlayout/inc/peninputcommonlayoutglobalenum.h --- a/textinput/peninputcommonlayout/inc/peninputcommonlayoutglobalenum.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputcommonlayout/inc/peninputcommonlayoutglobalenum.h Fri Mar 12 15:44:07 2010 +0200 @@ -70,6 +70,7 @@ EPeninputLayoutEventLeftArrow, EPeninputLayoutEventRightArrow, + EPeninputLayoutEventMultiRange, EPeninputLayoutEventLast = 2000 // user event starts from here, same as base control }; @@ -120,6 +121,7 @@ EPeninputWindowCtrlIdMultiLineICF, //candidate list EPentinputHwrCandidateList, + EPeninutWindowCtrlIdMultiRangeBtn, EPeninputWindowCtrlIdLastOne, EPeninutWindowCtrlIdRangeBtn //todo split view diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp --- a/textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1337,8 +1337,13 @@ CleanupStack::PopAndDestroy(); //rects - iVirtualNumpad->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG68 ); + iVirtualNumpad->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG65 ); iVirtualNumpad->SetDrawOpaqueBackground( EFalse ); + + //set key to be 9 piece graphics + iVirtualNumpad->SetKeySkinId( EKeyBmpNormal, KAknsIIDQsnFrKeypadButtonFrNormal ); + iVirtualNumpad->SetKeySkinId( EKeyBmpHighlight, KAknsIIDQsnFrKeypadButtonFrPressed ); + iVirtualNumpad->SetKeySkinId( EKeyBmpDim, KAknsIIDQsnFrKeypadButtonFrInactive ); } // --------------------------------------------------------------------------- @@ -1376,8 +1381,13 @@ TInt cols = iLafManager->VirtualSctpadColCount(); iVirtualSctpad->UpdatePaging( rows, cols ); - iVirtualSctpad->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG68 ); - iVirtualSctpad->SetDrawOpaqueBackground( EFalse ); + iVirtualSctpad->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG65 ); + iVirtualSctpad->SetDrawOpaqueBackground( EFalse ); + + //set key to be 9 piece graphics + iVirtualSctpad->SetKeySkinId( EKeyBmpNormal, KAknsIIDQsnFrKeypadButtonFrNormal ); + iVirtualSctpad->SetKeySkinId( EKeyBmpHighlight, KAknsIIDQsnFrKeypadButtonFrPressed ); + iVirtualSctpad->SetKeySkinId( EKeyBmpDim, KAknsIIDQsnFrKeypadButtonFrInactive ); } @@ -1412,8 +1422,13 @@ CleanupStack::PopAndDestroy();//rects - iVirtualSctpadFix->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG68 ); - iVirtualSctpadFix->SetDrawOpaqueBackground( EFalse ); + iVirtualSctpadFix->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG65 ); + iVirtualSctpadFix->SetDrawOpaqueBackground( EFalse ); + + //set key to be 9 piece graphics + iVirtualSctpadFix->SetKeySkinId( EKeyBmpNormal, KAknsIIDQsnFrKeypadButtonFrNormal ); + iVirtualSctpadFix->SetKeySkinId( EKeyBmpHighlight, KAknsIIDQsnFrKeypadButtonFrPressed ); + iVirtualSctpadFix->SetKeySkinId( EKeyBmpDim, KAknsIIDQsnFrKeypadButtonFrInactive ); } // --------------------------------------------------------------------------- diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/peninputfingerhwrarwnd.rss --- a/textinput/peninputfingerhwrar/data/peninputfingerhwrarwnd.rss Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/data/peninputfingerhwrarwnd.rss Fri Mar 12 15:44:07 2010 +0200 @@ -264,25 +264,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_backspace; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_backspace_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_backspace; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_backspace_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_backspace; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_backspace_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + active=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_backspace; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_backspace_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + activep=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_backspace; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_backspace_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + disable=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_backspace_mask; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_hwr_close @@ -291,25 +286,20 @@ imgmajorskinid=EAknsMajorGeneric; colorgroup=0xffff; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_close; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_close_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_close; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_close_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_close; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_close_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + active=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_close; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_close_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + activep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_close; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_close_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + disable=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_close_mask; } @@ -321,23 +311,18 @@ nactive=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up; nactivemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; nactivep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up; nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; active=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up; activemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; activep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up; activepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; disable=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up; disablemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_up_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_hwr_arrowdown @@ -348,23 +333,18 @@ nactive=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down; nactivemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; nactivep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down; nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; active=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down; activemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; activep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down; activepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; disable=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down; disablemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_down_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; } @@ -376,23 +356,18 @@ nactive=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left; nactivemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; nactivep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left; nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; active=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left; activemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; activep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left; activepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; disable=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left; disablemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_left_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_hwr_arrowright @@ -403,23 +378,18 @@ nactive=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right; nactivemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; nactivep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right; nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; active=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right; activemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; activep=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right; activepmsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; disable=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right; disablemsk=EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_hwr_symbol_table_button @@ -428,25 +398,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_case_special; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_case_special_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_case_special; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_case_special_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_case_special; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_case_special_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + active=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_case_special; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_case_special_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + activep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_case_special; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_case_special_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + disable=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_symbol_table_mask; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_hwr_option @@ -457,23 +422,18 @@ nactive=EMbmPeninputfingerhwrarQgn_indi_input_options; nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_options_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; nactivep=EMbmPeninputfingerhwrarQgn_indi_input_options; nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_options_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; active=EMbmPeninputfingerhwrarQgn_indi_input_options; activemsk=EMbmPeninputfingerhwrarQgn_indi_input_options_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; activep=EMbmPeninputfingerhwrarQgn_indi_input_options; activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_options_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; disable=EMbmPeninputfingerhwrarQgn_indi_input_options; disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_options_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_hwr_enter @@ -482,25 +442,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_enter; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_enter; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_enter; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + active=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_enter; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + activep=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_enter; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + disable=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask; } @@ -561,9 +516,8 @@ bmpfile = AKN_FEP_FINGERHWR_BMP; imgmajorskinid = EAknsMajorGeneric; - iconimage = EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right; - iconimagemsk = EMbmPeninputfingerhwrarQgn_indi_itut_cursor_right_mask; - iconimageskinid = EAknsMinorGenericQgnIndiFepButtonChinese; + iconimage = EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_writing_area; + iconimagemsk = EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_writing_area_mask; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_arabic_3page_hwr_sct_page_1 @@ -572,25 +526,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + active=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + activep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + disable=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_3_mask; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_arabic_3page_hwr_sct_page_2 @@ -599,25 +548,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + active=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + activep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + disable=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_3_mask; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_arabic_3page_hwr_sct_page_3 @@ -626,25 +570,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3_mask; - //nactiveskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3_mask; - //nactivepskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3_mask; - //activeskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + active=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3_mask; - //activepskinid=EAknsMinorGenericQgnIndiFepButtonChineseSel; + activep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page3_mask; - //disableskinid=EAknsMinorGenericQgnIndiFepButtonChinese; + disable=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_3_3_mask; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_arabic_2page_hwr_sct_page_1 @@ -653,20 +592,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; + active=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; + activep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page1_mask; + disable=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_1_2_mask; } RESOURCE AKN_FEP_BUTTON_IMAGE r_akn_fep_arabic_2page_hwr_sct_page_2 @@ -675,20 +614,20 @@ imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; + nactive=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2; + nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2_mask; - nactivep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; + nactivep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2; + nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2_mask; - active=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - activemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; + active=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2; + activemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2_mask; - activep=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; + activep=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2; + activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2_mask; - disable=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2; - disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_fshwr_sct_page2_mask; + disable=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2; + disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_hwr_arabic_page_2_2_mask; } RESOURCE AKN_FEP_NONIRREGULAR_VKB_BITMAP r_akn_fep_vkb_nonirregular_bitmap @@ -1256,7 +1195,7 @@ leftstr = <0x005D>; scancode = 0x005D; }, - PENINPUT_FINGERHWR_KEYPAD_KEY //half revert / + PENINPUT_FINGERHWR_KEYPAD_KEY //half \ { leftstr = <0x005C>; scancode = 0x005C; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_arabic_backspace.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_arabic_backspace.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,14 @@ + + + +]> + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_arabic_enter.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_arabic_enter.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,14 @@ + + + +]> + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_close.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_close.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,14 @@ + + + +]> + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_1_2.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_1_2.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,24 @@ + + + +]> + + + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_1_3.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_1_3.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,26 @@ + + + +]> + + + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_2_2.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_2_2.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,26 @@ + + + +]> + + + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_2_3.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_2_3.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,29 @@ + + + +]> + + + + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_3_3.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_3_3.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,30 @@ + + + +]> + + + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_symbol_table.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_symbol_table.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,33 @@ + + + +]> + + + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_writing_area.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_writing_area.svg Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,25 @@ + + + +]> + + + + + + + + + + + + + diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/group/bld.inf --- a/textinput/peninputfingerhwrar/group/bld.inf Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/group/bld.inf Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -21,11 +21,20 @@ PRJ_EXPORTS ../rom/peninputfingerhwrar_variant.iby CUSTOMER_MW_LAYER_IBY_EXPORT_PATH( peninputfingerhwrar_variant.iby ) +../data/qgn_indi_input_hwr_arabic_close.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_close.svg +../data/qgn_indi_input_hwr_arabic_page_1_2.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_page_1_2.svg +../data/qgn_indi_input_hwr_arabic_page_2_2.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_page_2_2.svg +../data/qgn_indi_input_hwr_arabic_page_1_3.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_page_1_3.svg +../data/qgn_indi_input_hwr_arabic_page_2_3.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_page_2_3.svg +../data/qgn_indi_input_hwr_arabic_page_3_3.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_page_3_3.svg +../data/qgn_indi_input_hwr_arabic_symbol_table.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_symbol_table.svg +../data/qgn_indi_input_hwr_arabic_writing_area.svg /epoc32/s60/icons/qgn_indi_input_hwr_arabic_writing_area.svg +../data/qgn_indi_input_arabic_backspace.svg /epoc32/s60/icons/qgn_indi_input_arabic_backspace.svg +../data/qgn_indi_input_arabic_enter.svg /epoc32/s60/icons/qgn_indi_input_arabic_enter.svg PRJ_MMPFILES -//gnumakefile peninputhwrfsar_icons.mk - peninputfingerhwrar.mmp +peninputfingerhwrar.mmp PRJ_EXTENSIONS START EXTENSION s60/mifconv diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/group/iconlist.txt --- a/textinput/peninputfingerhwrar/group/iconlist.txt Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/group/iconlist.txt Fri Mar 12 15:44:07 2010 +0200 @@ -1,31 +1,3 @@ --c8,8 qgn_graf_fep_char_6x5.svg --c8,8 qgn_indi_fep_button_full_half_width.svg --c8,8 qgn_indi_fep_button_full_half_width_sel.svg --c8,8 qgn_indi_fep_button_half_full_width.svg --c8,8 qgn_indi_fep_button_half_full_width_sel.svg --c8,8 qgn_indi_fep_button_long_backspace.svg --c8,8 qgn_indi_fep_button_long_backspace_sel.svg --c8,8 qgn_indi_fep_button_case_numeric.svg --c8,8 qgn_indi_fep_button_case_numeric_sel.svg --c8,8 qgn_indi_fep_button_mark_case_numeric.svg --c8,8 qgn_indi_fep_button_mark_case_numeric_sel.svg --c8,8 qgn_indi_fep_button_case_text.svg --c8,8 qgn_indi_fep_button_case_text_sel.svg --c8,8 qgn_indi_fep_button_mark_case_text.svg --c8,8 qgn_indi_fep_button_mark_case_text_sel.svg --c8,8 qgn_indi_fep_button_chinese.svg --c8,8 qgn_indi_fep_button_chinese_sel.svg --c8,8 qgn_indi_fep_button_mark_chinese.svg --c8,8 qgn_indi_fep_button_mark_chinese_sel.svg --c8,8 qgn_graf_fep_char_button_pressed.svg --c8,8 qgn_indi_fep_button_options.svg --c8,8 qgn_indi_fep_button_options_sel.svg --c8,8 qgn_indi_fep_button_switch.svg --c8,8 qgn_indi_fep_button_switch_sel.svg --c8,8 qgn_indi_fep_button_vkb.svg --c8,8 qgn_indi_fep_button_vkb_sel.svg --c8,8 qgn_indi_fep_button_enter.svg --c8,8 qgn_indi_fep_button_enter_sel.svg -c8,8 qgn_indi_fep_button_space1.svg -c8,8 qgn_indi_fep_button_space1_sel.svg @@ -42,14 +14,10 @@ -c8,8 qgn_indi_fep_button_expand.svg -c8,8 qgn_indi_fep_button_close.svg -c8,8 qgn_indi_fep_button_close_sel.svg --c8,8 qgn_indi_input_chinese.svg --c8,8 qgn_indi_input_case_text.svg --c8,8 qgn_indi_input_case_numeric.svg --c8,8 qgn_indi_input_case_special.svg + -c8,8 qgn_indi_input_backspace.svg -c8,8 qgn_indi_input_close.svg -c8,8 qgn_indi_input_options.svg --c8,8 qgn_indi_input_switcher.svg -c8,8 qgn_indi_input_enter.svg -c8,8 qgn_indi_input_candi_list_close.svg @@ -87,6 +55,13 @@ -c8,8 qgn_indi_keypad_space.svg --c8,8 qgn_indi_input_fshwr_sct_page1.svg --c8,8 qgn_indi_input_fshwr_sct_page2.svg --c8,8 qgn_indi_input_fshwr_sct_page3.svg +-c8,8 qgn_indi_input_hwr_arabic_close.svg +-c8,8 qgn_indi_input_hwr_arabic_page_1_2.svg +-c8,8 qgn_indi_input_hwr_arabic_page_2_2.svg +-c8,8 qgn_indi_input_hwr_arabic_page_1_3.svg +-c8,8 qgn_indi_input_hwr_arabic_page_2_3.svg +-c8,8 qgn_indi_input_hwr_arabic_page_3_3.svg +-c8,8 qgn_indi_input_hwr_arabic_symbol_table.svg +-c8,8 qgn_indi_input_hwr_arabic_writing_area.svg +-c8,8 qgn_indi_input_arabic_backspace.svg +-c8,8 qgn_indi_input_arabic_enter.svg \ No newline at end of file diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/group/peninputfingerhwrar.mmp --- a/textinput/peninputfingerhwrar/group/peninputfingerhwrar.mmp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/group/peninputfingerhwrar.mmp Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -92,7 +92,4 @@ LIBRARY peninputcommonlayout.lib LIBRARY ptiengine.lib - - - // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/group/peninputfingerhwrar_icons.mk --- a/textinput/peninputfingerhwrar/group/peninputfingerhwrar_icons.mk Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/group/peninputfingerhwrar_icons.mk Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2009 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" @@ -26,8 +26,8 @@ TARGETDIR=$(ZDIR)\resource\apps HEADERDIR=\epoc32\include -ICONTARGETFILENAME=$(TARGETDIR)\peninputfingerhwr.mif -HEADERFILENAME=$(HEADERDIR)\peninputfingerhwr.mbg +ICONTARGETFILENAME=$(TARGETDIR)\peninputfingerhwrar.mif +HEADERFILENAME=$(HEADERDIR)\peninputfingerhwrar.mbg do_nothing : @rem do_nothing @@ -39,7 +39,7 @@ CLEAN : @del $(ICONTARGETFILENAME) @del $(HEADERFILENAME) - @del $(TARGETDIR)\peninputfingerhwr.mbm + @del $(TARGETDIR)\peninputfingerhwrar.mbm LIB : do_nothing diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrar.hrh --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrar.hrh Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrar.hrh Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -19,12 +19,12 @@ #ifndef PENINPUTFINGERHWRAR_HRH #define PENINPUTFINGERHWRAR_HRH -#include +#include /** * special scancode as virtual key mark. * - * @lib peninputfingerhwr.lib + * @lib peninputfingerhwrar.lib * @since S60 v5.0 */ enum TVirtualKeyMark diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrar.rh --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrar.rh Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrar.rh Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarcontrolid.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarcontrolid.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarcontrolid.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -11,7 +11,7 @@ * * Contributors: * -* Description: Enum values of control id in fingerhwr hwr pluggin +* Description: Enum values of control id in arabic fingerhwr hwr pluggin * */ @@ -23,8 +23,8 @@ * * defines the controlid of full screen hwr * - * @lib peninputfingerhwr.lib - * @since S60 v5.0 + * @lib peninputfingerhwrar.lib + * @since Symbian TB9.2 */ enum TPenInputFingerHwrCtrlId { @@ -39,16 +39,13 @@ EHwrCtrlIdBackspace, EHwrCtrlIdLanguageOption, EHwrCtrlIdInputLangSwitcher, - EHwrCtrlIdVkbSwitcher, EHwrCtrlIdClose, EHwrCtrlIdSymbolTableVkb, EHwrCtrlIdSymbolTableVkbGroup, - EHwrCtrlIdSctpad, EHwrCtrlIdSymbolButton, - EHwrCtrlIdInputModeSwitcher, EHwrCtrlIdArrowLeft, EHwrCtrlIdArrowRight, EHwrCtrlIdArrowUp, diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrardatastore.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrardatastore.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrardatastore.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -15,7 +15,6 @@ * */ - #ifndef C_PENINPUTFINGERHWRARDATASTORE_H #define C_PENINPUTFINGERHWRARDATASTORE_H @@ -24,10 +23,10 @@ #include #include #include -#include +#include //FEP INCLUDES -#include +#include #include @@ -48,7 +47,7 @@ * CPeninputFingerHwrArDataStore * * @lib peninputfingerhwr.lib - * @since S60 v5.0 + * @since Symbian TB9.2 */ class CPeninputFingerHwrArDataStore : public CBase { @@ -56,7 +55,7 @@ /** * Symbian constructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aPtiEngine The PtiEngine * @param aLayout The Finger HWR layout * @return Pointer to created CPeninputFingerHwrArDataStore object @@ -67,7 +66,7 @@ /** * destructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ virtual ~CPeninputFingerHwrArDataStore(); @@ -77,7 +76,7 @@ /** * Is valid candidate * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aCandidateIndex The index the candidate in list. * @return ETrue if candidate is not empty; otherwise EFalse */ @@ -87,7 +86,7 @@ /** * Is English letter * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aLetter The recognize character. * @return ETrue if the character is English letter; otherwise EFalse */ @@ -96,7 +95,7 @@ /** * Do recoginize by engine * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aTraceData The trace data. * @return None */ @@ -106,27 +105,15 @@ /** * Set Chinese symbol to writing candidate list * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void SetArabicSymbolL(); - - /** - * Set fixed English symbol - * - * @since S60 v5.0 - * @param aRowCount The flag to confirm which row - * @return None - */ - void SetFixEnglishSymbolL(TRowCount aRowCount = ERowOne); - - - /** * Set permitted ranges * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aPermittedRanges The permitted ranges. * @return None */ @@ -135,7 +122,7 @@ /** * Set permitted ranges * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aPermittedRanges The permitted ranges. * @return None */ @@ -145,7 +132,7 @@ /** * Set Primary range * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aPrimaryRange The Primary range * @return None */ @@ -154,7 +141,7 @@ /** * Get Primary range * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return Primary range. */ TInt PrimaryRange(); @@ -162,7 +149,7 @@ /** * Get current range * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return Current range. */ TFingerHwrRange CurrentRange(); @@ -171,7 +158,7 @@ /** * Set case * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aCase The case * @return None */ @@ -180,7 +167,7 @@ /** * Set language * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aLanguage The language * @return None */ @@ -190,7 +177,7 @@ /** * Set auto complete candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aIsFirstStroke The first stroke flag * @return None */ @@ -199,7 +186,7 @@ /** * Set auto complete candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return ETrue if it's the first stroke */ TBool FirstStroke(); @@ -208,7 +195,7 @@ /** * Get the candidate. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aIndex The index of candidate * @param aCharCode The result candidate * @return Candidate char code @@ -219,7 +206,7 @@ /** * Set number mode * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aNumberMode Given number mode * @return None */ @@ -228,7 +215,7 @@ /** * Set number mode * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aCustomMode The customized number key mapping, 0-9 * are not included. * @return None @@ -238,7 +225,7 @@ /** * Set the screen mode. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aRange The range * @return None */ @@ -250,7 +237,7 @@ /** * Set stroke end mark to stroke end mark control * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void SetStrokeEndMark(); @@ -258,7 +245,7 @@ /** * Get the stroke end mark. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return TPoint */ TPoint StrokeEndMark(); @@ -266,7 +253,7 @@ /** * Get stroke end mark from control which handle it * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ TPoint StrokeEndMarkFromControl(); @@ -274,7 +261,7 @@ /** * Get number keymapping string * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aKeyMappingId Keymapping id * @return Pointer to keymapping string */ @@ -283,7 +270,7 @@ /** * Check if the char is the special display char * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aChar The checked char * @return TBool Wheater or not the input char is the special display char */ @@ -292,7 +279,7 @@ /** * Check if the char is need to be sent to app directly which not need to be shown in candidate window. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aChar The checked char * @return TBool Wheater or not the input char is the directly sent char */ @@ -301,7 +288,7 @@ /** * Convert the special display char to the keycode. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aChar The special display char. * @return HBufC* The converted keycode char. */ @@ -310,7 +297,7 @@ /** * Get start writing char flag * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return ETrue If begine writing. */ TBool StartCharacter(); @@ -318,7 +305,7 @@ /** * Set start writing char flag * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aStartCharacter The start writing flag * @return ETrue If begine writing. */ @@ -327,7 +314,7 @@ /** * Set input area size to engine for recognize * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aStartCharacter The start writing flag * @return ETrue If begine writing. */ @@ -336,7 +323,7 @@ /** * Set screen size to engine for recognize * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aStartCharacter The start writing flag * @return ETrue If begine writing. */ @@ -346,7 +333,7 @@ /** * Set high light flag for candidate list * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aIsHighlight The flag to decide highlight default cell or not * @return None */ @@ -355,7 +342,7 @@ /** * Get high light flag for candidate list * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return ETrue If highlight the default cell to candidate list */ TBool Highlight(); @@ -363,7 +350,7 @@ /** * Remove duplicate candidate from predictive candidate list * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aSrc The punctuation candidate list * @param aTgt The predicative candidate list * @param aSrcStartIdx @@ -378,35 +365,35 @@ /** * Reset key board type * - * @since S60 v5.0 + * @since Symbian TB9.2 */ void ResetKeyboardType(); /** * Set key board type to qwerty * - * @since S60 v5.0 + * @since Symbian TB9.2 */ void SetKeyboardToQwerty(); /** * Get key board type * - * @since S60 v5.0 + * @since Symbian TB9.2 */ void GetKeyboardType(); /** * Get top guide line from hwr engine * - * @since S60 v5.0 + * @since Symbian TB9.2 */ void GetTopGuideLinePos(TInt& aPos); /** * Get bottom guide line from hwr engine * - * @since S60 v5.0 + * @since Symbian TB9.2 */ void GetBottomGuideLinePos(TInt& aPos); @@ -442,31 +429,12 @@ * @return ETrue if it is, EFalse otherwise */ TBool IsArabicNumber(TUint16 aChar); - - /** - * Check if the passed char is arabic character - * - * @since s60 v5.2 - * @param aChar The passed unicode - * @return ETrue if it is, EFalse otherwise - */ - TBool IsArabicChar(TUint16 aChar); - - /** - * Check if the passed char is arabic symbols - * - * @since s60 v5.2 - * @param aChar The passed unicode - * @return ETrue if it is, EFalse otherwise - */ - TBool IsArabicSymbol(TUint16 aChar); - private: /** * C++ constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ CPeninputFingerHwrArDataStore(CPeninputFingerHwrArLayout* aLayout); @@ -474,7 +442,7 @@ /** * Second phase constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void ConstructL( CPtiEngine* aPtiEngine ); @@ -482,7 +450,7 @@ /** * Initialize the key mapping list * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void InitKeyMappingListL(); @@ -491,7 +459,7 @@ /** * Judge if a language is Arabic * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aLanguage Given language code * @return ETrue if aLanguage is Chinese, otherwise EFalse */ @@ -500,7 +468,7 @@ /** * Set engine language * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aLanguage Given language code * @return None */ @@ -509,7 +477,7 @@ /** * Set language show text * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aLanguage language code * @return None */ diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarengine.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarengine.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarengine.h Fri Mar 12 15:44:07 2010 +0200 @@ -22,7 +22,7 @@ // INCLUDES #include #include -#include +#include class CPeninputFingerHwrArDataStore; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarevent.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarevent.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarevent.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 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" @@ -27,7 +27,7 @@ * defines the events from internal controls. Those events are sent * by controls via calling ReportEvent() * - * @lib peninputfingerhwr.lib + * @lib peninputfingerhwrar.lib * @since S60 v5.0 */ enum TPeninputFingerHwrEvent diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarindicator.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarindicator.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarindicator.h Fri Mar 12 15:44:07 2010 +0200 @@ -24,7 +24,7 @@ * Label control. This class could be used directly by user. * * @lib peninputfingerhwrar.lib - * @since S60 V5.0 + * @since Symbian TB9.2 */ class CPeninputArabicFingerHwrIndicator: public CFepUiBaseCtrl { @@ -34,14 +34,14 @@ /** * Destructor. * - * @since S60 V4.0 + * @since Symbian TB9.2 */ virtual ~CPeninputArabicFingerHwrIndicator(); /** * Factory function. * - * @since S60 V4.0 + * @since Symbian TB9.2 * @param aRect The rectangle area for this control * @param aUiLayout Ui layout who contains this control.Ownership not transferred * @param aControlId control Id @@ -54,7 +54,7 @@ /** * Set bitmap for given status . * - * @since S60 V4.0 + * @since Symbian TB9.2 * @param aBmp The bitmap. Ownership transferred to button * @param aType The bitmap type used for */ @@ -63,7 +63,7 @@ /** * Set mask bitmap for given status. * - * @since S60 V4.0 + * @since Symbian TB9.2 * @param aBmp The bitmap. Ownership transferred to button * @param aType The bitmap type used for */ @@ -74,14 +74,14 @@ * From CFepUiBaseCtrl * Draw control * - * @since S60 V4.0 + * @since Symbian TB9.2 */ virtual void Draw(); /** * Label size changed * - * @since S60 v3.2 + * @since Symbian TB9.2 * @param aNewRect New rect for label * @param aIsReloadImages resize image * @return None @@ -93,7 +93,7 @@ /** * Constructor * - * @since S60 V4.0 + * @since Symbian TB9.2 * @param aRect The rectangle area for this control * @param aUiLayout Ui layout who contains this control.Ownership not transferred * @param aControlId control Id @@ -103,7 +103,7 @@ /** * Bitmaps size changed * - * @since S60 v3.2 + * @since Symbian TB9.2 * @param aSize New size for bitmaps * @return None */ diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarlafmanager.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlafmanager.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlafmanager.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -25,7 +25,7 @@ * Wrapper of L&F data. * * @lib peninputfingerhwrar.lib -* @since S60 v5.0 +* @since Symbian TB9.2 */ class CPeninputFingerHwrArLafManager : public CBase { @@ -33,7 +33,7 @@ /** * Symbian constructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return Pointer to created object. */ static CPeninputFingerHwrArLafManager* NewL(); @@ -41,7 +41,7 @@ /** * Symbian constructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return Pointer to created object. */ static CPeninputFingerHwrArLafManager* NewLC(); @@ -49,7 +49,7 @@ /** * standard c++ destructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ ~CPeninputFingerHwrArLafManager(); @@ -58,7 +58,7 @@ /** * read laf data. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void ReadLafInfo(); @@ -66,7 +66,7 @@ /** * get screen orientation. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return ETrue if is landscape. */ TBool IsLandscape(); @@ -74,7 +74,7 @@ /** * get rect of layout. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return rect of layout. */ TRect LayoutRect(); @@ -82,7 +82,7 @@ /** * get rect of specified control. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aCtrlId specifies control id. * @return rect of specified control. */ @@ -92,7 +92,7 @@ /** * get rect of ICF control. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return rect of icf. */ TRect IcfRect(); @@ -100,7 +100,7 @@ /** * get left margin of icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return left margin of icf. */ TInt IcfLeftMargin(); @@ -108,7 +108,7 @@ /** * get Right margin of icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return Right margin of icf. */ TInt IcfRightMargin(); @@ -116,7 +116,7 @@ /** * get top margin of icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return top margin of icf. */ TInt IcfTopMargin(); @@ -124,7 +124,7 @@ /** * get bottom margin of icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return bottom margin of icf. */ TInt IcfBottomMargin(); @@ -132,7 +132,7 @@ /** * get line spacing of icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return line spacing of icf. */ TInt IcfLineSpaceMargin(); @@ -140,7 +140,7 @@ /** * get font of icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return font of icf. */ CFont* IcfFont(); @@ -148,7 +148,7 @@ /** * get text height of icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return text height of icf. */ TInt IcfTextHeight(); @@ -158,34 +158,17 @@ /** * get inner padding of buttons. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return inner padding of buttons. */ TSize ButtonInnerPadding(); -public: //num pad - /** - * get cell size of virtual numpad. - * - * @since S60 v5.0 - * @return cell size of virtual numpad. - */ - TRect VirtualNumpadCellSize(); - - /** - * get text layout of virtual numpad. - * - * @since S60 v5.0 - * @return a TAknTextLineLayout object to layout cell text. - */ - TAknTextLineLayout NumpadKeyTxtLayout(); - -public: //sct pad +public: //symbol table /** * get row count of virtual sctpad. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return row count of virtual sctpad. */ TInt VirtualSctpadRowCount(); @@ -193,7 +176,7 @@ /** * get column count of virtual sctpad. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return column count of virtual sctpad. */ TInt VirtualSctpadColCount(); @@ -201,7 +184,7 @@ /** * get cell size of virtual sctpad. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return cell size of virtual sctpad. */ TRect VirtualSctpadCellSize(); @@ -209,7 +192,7 @@ /** * Get cell size of Space and Enter * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return cell size of virtual sctpad. */ TRect FixVirtualSctpadCellSize(); @@ -217,26 +200,16 @@ /** * get cell rect of virtual sctpad. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aArrayRects a TRect array to receive cell rect. * @return none. */ void GetVirtualKeyRects( RArray& aArrayRects ); /** - * get cell rect of Space and Enter. - * - * @since S60 v5.0 - * @param aArrayRects a TRect array to receive cell rect. - * @return none. - */ - void GetFixVirtualKeyRects( RArray& aArrayRects ); - - - /** * get text layout of virtual sctpad. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a TAknTextLineLayout object to layout cell text. */ TAknTextLineLayout SctpadKeyTxtLayout(); @@ -244,7 +217,7 @@ /** * Get text layout about Space and Enter * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a TAknTextLineLayout object to layout cell text. */ TAknTextLineLayout FixSctpadKeyTxtLayout(); @@ -252,7 +225,7 @@ /** * get preview bubble rect. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a TRect object to preview bubble rect. */ TRect PreviewBubbleRect(); @@ -260,7 +233,7 @@ /** * get preview bubble inner rect. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a TRect object to preview bubble inner rect. */ TRect PreviewBubbleInnerRect(); @@ -268,7 +241,7 @@ /** * get preview bubble font. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a CFont pointer to preview bubble font. */ const CFont* PreviewBubbleFont(); @@ -276,7 +249,7 @@ /** * get preview bubble text layout. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a TAknTextLineLayout object to preview bubble text layout. */ TAknTextLineLayout PreviewBubbleTextLayout(); @@ -286,7 +259,7 @@ /** * get width unit of candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return width unit of candidate list. */ TInt CandidateUnitWidth(); @@ -294,7 +267,7 @@ /** * get height unit of candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return height unit of candidate list. */ TInt CandidateUnitHeight(); @@ -303,7 +276,7 @@ /** * get horizontal margin of candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return horizontal margin of candidate list. */ TInt CandidateHorizontalMargin(); @@ -311,7 +284,7 @@ /** * get vertical margin of candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return vertical margin of candidate list. */ TInt CandidateVerticalMargin(); @@ -319,7 +292,7 @@ /** * get top-left position of candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return top-left position of candidate list. */ TPoint CandidateLTPos(); @@ -327,7 +300,7 @@ /** * get top-left position of predictive list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return top-left position of predictive list. */ TPoint PredictiveLTPos(); @@ -335,7 +308,7 @@ /** * get font of candidate list. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return font of candidate list. */ const CFont* CandidateFont(); @@ -344,7 +317,7 @@ /** * get text layout of sct paging button. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a TAknTextLineLayout object to layout text. */ TAknTextLineLayout SctPageBtnTxtLayout(); @@ -354,7 +327,7 @@ /** * C++ constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ CPeninputFingerHwrArLafManager(); @@ -362,7 +335,7 @@ /** * Symbian second-phase constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void ConstructL(); @@ -376,7 +349,6 @@ TRect iRectWritingBox; TRect iRectNumpad; TRect iRectSctpad; - TRect iRectFixSctpad; TRect iRectSpase; TRect iRectEnter; @@ -400,7 +372,6 @@ TInt iSctpadRowCount; TInt iSctpadColCount; TSize iSizeSctpadCell; - TSize iSizeFixSctpadCell; TRect iLayoutRect; TPoint iLayoutOffset; @@ -439,4 +410,4 @@ #endif // C_PENINPUTFINGERHWRARLAFMANAGER_H -// End Of File +// End Of File \ No newline at end of file diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarlayout.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlayout.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlayout.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -443,15 +443,7 @@ * @param aGuideLineOn guide line on or off. * @return none */ - void SetGuideLineOn(const TBool aGuideLineOn); - - /** - * get current state manager. - * - * @since S60 v5.0 - * @return current state manager - */ - CPeninputFingerHwrArStateManagerBase* CurStateManager(); + void SetGuideLineOn(TBool aGuideLineOn); /** * change current state manager to standby state. @@ -459,7 +451,7 @@ * @since S60 v5.0 * @return none */ - void ChangeCurStateManagerToStandby(); + void ChangeCurStateToStandby(); private: @@ -479,7 +471,7 @@ * The state manager * Own */ - RPointerArray iStateMgrArray; + CPeninputFingerHwrArStateManagerBase* iStateMgr; /** * The resource Id diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarmultipagevkb.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarmultipagevkb.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarmultipagevkb.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 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" diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarstatemanager.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarstatemanager.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarstatemanager.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -35,7 +35,7 @@ * * The state handler interfaces * -* @lib peninputFingerHwr.lib +* @lib peninputfingerhwrar.lib * @since S60 v5.0 */ class MPeninputFingerHwrArStateHandler @@ -44,21 +44,21 @@ /** * Handle state event * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ virtual void HandleEventL( const TInt aEventType, const TDesC& aEventData ) = 0; /** * Handle the state entering action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ virtual void OnEntry() = 0; /** * Handle the state exiting action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ virtual void OnExit() = 0; }; @@ -67,7 +67,7 @@ /** * The state handler base class. * -* @since Series 60 5.0. +* @since Symbian TB9.2. */ class CPeninputFingerHwrArStateHandlerBase :public CBase ,public MPeninputFingerHwrArStateHandler @@ -77,7 +77,7 @@ /** * The handler base destructor * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ virtual ~CPeninputFingerHwrArStateHandlerBase(); @@ -85,7 +85,7 @@ /** * The constructor. * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aStateManager The reference to state manager. @see CPeninputFingerHwrStateManager. */ CPeninputFingerHwrArStateHandlerBase( CPeninputFingerHwrArStateManagerBase& aStateManager ); @@ -94,14 +94,14 @@ /** * The reference to state manager. * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ CPeninputFingerHwrArStateManagerBase& iStateManager; /** * The data store reference * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ CPeninputFingerHwrArDataStore& iDataStore; }; @@ -111,7 +111,7 @@ /** * The finger hwr state manager base class. * -* @since Series 60 5.0 +* @since Symbian TB9.2 */ class CPeninputFingerHwrArStateManagerBase : public CBase { @@ -124,7 +124,7 @@ /** * The destructor * - *@since Series 60 5.0 + *@since Symbian TB9.2 */ virtual ~CPeninputFingerHwrArStateManagerBase(); @@ -132,7 +132,7 @@ /** * Handle the hwr box and canidate events * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aEventType The event type * @param aEventData The event data */ @@ -141,7 +141,7 @@ /** * Return the layout reference * - * @since Series 60 5.0 + * @since Symbian TB9.2 * CPeninputFingerHwrArLayout& The hwr layout reference */ CPeninputFingerHwrArLayout& HwrLayout(); @@ -149,7 +149,7 @@ /** * Is stanby state * - * @since Series 60 5.0 + * @since Symbian TB9.2 * TBool The standby state flag */ TBool IsStandbyState(); @@ -157,7 +157,7 @@ /** * Set current state. * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aState The state to be set. @See TPeninputFingerHwrState. */ virtual void SetState( TInt aState ); @@ -167,14 +167,14 @@ /** * 2nd phase constructor. * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void BaseConstructL(); /** * The constructor. * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aLayout The full screen HWR layout pointer. */ CPeninputFingerHwrArStateManagerBase( CPeninputFingerHwrArLayout* aLayout ); @@ -203,7 +203,7 @@ /** * The finger hwr state manager for arabic. * -* @since Series 60 5.0 +* @since Symbian TB9.2 */ class CPeninputFingerHwrArStateManager : public CPeninputFingerHwrArStateManagerBase { @@ -211,7 +211,7 @@ /** * The factory function * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aLayout The layout reference * @return CPeninputFingerHwrArStateManager* The newly created CPeninputFingerHwrArStateManager object */ @@ -220,7 +220,7 @@ /** * The destructor * - *@since Series 60 5.0 + *@since Symbian TB9.2 */ ~CPeninputFingerHwrArStateManager(); @@ -228,7 +228,7 @@ /** * The hwr states. * - *@since Series 60 5.0 + *@since Symbian TB9.2 */ enum TPeninputFingerHwrArState { @@ -242,7 +242,7 @@ /** * Handle the hwr box and canidate events * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aEventType The event type * @param aEventData The event data */ @@ -251,7 +251,7 @@ /** * Set current state. * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aState The state to be set. @See TPeninputFingerHwrState. */ virtual void SetState( TInt aState ); @@ -260,7 +260,7 @@ /** * The constructor. * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aLayout The full screen HWR layout pointer. */ CPeninputFingerHwrArStateManager( CPeninputFingerHwrArLayout* aLayout ); @@ -268,14 +268,14 @@ /** * 2nd phase constructor. * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void ConstructL(); /** * Find the current state object. * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aState According to this state type, * we could find the corresponding state obect. */ @@ -300,7 +300,7 @@ /** * The Standby state class. * -* @since Series 60 5.0 +* @since Symbian TB9.2 */ class CPeninputFingerHwrArStateStandby : public CPeninputFingerHwrArStateHandlerBase { @@ -308,7 +308,7 @@ /** * Factory function * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aStateManager The reference to state manager. @see CPeninputFingerHwrStateManager. * @return CPeninputFingerHwrStateHandlerStandby* Return the CPeninputFingerHwrStateHandlerStandby object pointer. @@ -320,21 +320,21 @@ /** * Handle state event * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void HandleEventL( const TInt aEventType, const TDesC& aEventData ); /** * Handle the state entering action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void OnEntry(); /** * Handle the state exiting action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void OnExit(); @@ -342,7 +342,7 @@ /** * The constructor * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aStateManager The reference to state manager. @see CPeninputFingerHwrStateManager. */ CPeninputFingerHwrArStateStandby( @@ -354,7 +354,7 @@ /** * The Writing state class. * -* @since Series 60 5.0 +* @since Symbian TB9.2 */ class CPeninputFingerHwrArStateWriting : public CPeninputFingerHwrArStateHandlerBase { @@ -362,7 +362,7 @@ /** * Factory function * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aStateManager The reference to state manager. @see CPeninputFingerHwrStateManager. * @return CPeninputFingerHwrStateHandlerWriting* Return the CPeninputFingerHwrStateHandlerWriting object pointer. @@ -374,21 +374,21 @@ /** * Handle state event * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void HandleEventL( const TInt aEventType, const TDesC& aEventData ); /** * Handle the state entering action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void OnEntry(); /** * Handle the state exiting action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void OnExit(); @@ -396,7 +396,7 @@ /** * The constructor * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aStateManager The reference to state manager. @see CPeninputFingerHwrStateManager. */ CPeninputFingerHwrArStateWriting( CPeninputFingerHwrArStateManager& aStateManager ); @@ -405,7 +405,7 @@ /** * Handle the end stroke event * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aEventData The trace data */ void OnEndStrokeL( const TDesC& aEventData ); @@ -413,7 +413,7 @@ /** * Handle the end writing event * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aEventData The trace data */ void OnEndWritingL( const TDesC& aEventData ); @@ -421,7 +421,7 @@ /** * Handle the candidate selection event * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aEventData The trace data */ void OnSelectedCandidatesL( const TDesC& aEventData ); @@ -431,7 +431,7 @@ /** * The CandidateSelecting state class for Chinese. * -* @since Series 60 5.0 +* @since Symbian TB9.2 */ class CPeninputFingerHwrArStateCandidateSelecting : public CPeninputFingerHwrArStateHandlerBase { @@ -439,7 +439,7 @@ /** * Factory function * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aStateManager The reference to state manager. @see CPeninputFingerHwrStateManager. * @return CPeninputFingerHwrStateHandlerCandidateSelecting Return the CPeninputFingerHwrStateHandlerCandidateSelecting object pointer. @@ -451,21 +451,21 @@ /** * Handle state event * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void HandleEventL( const TInt aEventType, const TDesC& aEventData ); /** * Handle the state entering action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void OnEntry(); /** * Handle the state exiting action * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void OnExit(); @@ -473,7 +473,7 @@ /** * The constructor * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aStateManager The reference to state manager. @see CPeninputFingerHwrStateManager. */ CPeninputFingerHwrArStateCandidateSelecting( @@ -483,7 +483,7 @@ /** * Handle one candiate selected event * - * @since Series 60 5.0 + * @since Symbian TB9.2 * @param aEventData The selected candidate */ void OnSelectedCandidatesL( const TDesC& aEventData ); @@ -492,7 +492,7 @@ /** * Handle backspace events * - * @since Series 60 5.0 + * @since Symbian TB9.2 */ void OnClickBackSpaceL(); }; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarstoreconstants.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarstoreconstants.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarstoreconstants.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -11,7 +11,7 @@ * * Contributors: * -* Description: const definitions for finger hwr +* Description: const definitions for finger hwrar * */ @@ -22,7 +22,7 @@ /** * writing speed definition * - * @lib peninputfingerhwr.lib + * @lib peninputfingerhwrar.lib * @since S60 v5.0 */ enum TPeninputHwrfscnWritingSpeed @@ -33,25 +33,11 @@ EHwrWritingSpeedSlow = 700*1000, EHwrWritingSpeedVerySlow = 1000*1000 }; - -/** - * - * - * @lib peninputfingerhwr.lib - * @since S60 v5.0 - */ -enum TPeninputHwrfscnStateMgrCmd - { - ERecgnizeCmd, - EPredictiveCmd, - ESetTriggerStringCmd, - EAppendTriggerStringCmd - }; /** * char range id definition * - * @lib peninputfingerhwr.lib + * @lib peninputfingerhwrar.lib * @since S60 v5.0 */ enum TFingerHwrRange @@ -65,7 +51,7 @@ /** * pop directions definition * - * @lib peninputfingerhwr.lib + * @lib peninputfingerhwrar.lib * @since S60 v5.0 */ enum TPeninputPopListDirection @@ -85,75 +71,6 @@ EPagePosLastPage, EPagePosFirstPage, }; - -/** - * row index definition - * - * @lib peninputfingerhwr.lib - * @since S60 v5.0 - */ -enum TRowCount - { - ERowOne, - ERowTwo - }; - -// the predict symbol unicode when the primary is the english -const TUint16 EnglishSymbolCodeOneRow[6] = - { - 0x0027, // ' - 0x002C, // , - 0x002E, // . - 0x003F, // ? - 0x0021, // ! -#ifdef RD_INTELLIGENT_TEXT_INPUT - 0x002D // - -#else - 0xF800 // space -#endif - }; - - -const TUint16 EnglishSymbolCodeTwoRow[6] = - { - 0x0040, // @ - 0x003A, // : - 0x003B, // ; - 0x0029, // ) - 0x0044, // D - 0x0028 // ( - }; - -const TUint16 ColonSymbol = 0x003A; - - -const TUint16 ChineseSymbolCode[6] = - { - 0xFF0C, - 0x3002, - 0xFF1F, - 0xFF01, - 0x3001, - 0xFF1A - }; - - -const TUint16 ChinesePredictCode[100] = - { - 0x6211, 0x4F60, 0x7684, 0x4E86, 0xFF0C, 0x4E0D, 0x597D, 0x5728, 0x662F, 0x6709, - 0x3002, 0x4E00, 0x4E48, 0x53BB, 0x5427, 0x5929, 0x4E0A, 0xFF1F, 0x6765, 0x6CA1, - 0x554A, 0x5230, 0x5417, 0xFF01, 0x4EEC, 0x5C31, 0x56DE, 0x8FD8, 0x90A3, 0x8981, - 0x4E0B, 0x5BB6, 0x4E2A, 0x65F6, 0x70B9, 0x8FD9, 0x4E5F, 0x8FC7, 0x7ED9, 0x770B, - 0x4EC0, 0x4F1A, 0x4EBA, 0x8BF4, 0x53EF, 0x5927, 0x4ED6, 0x4E8B, 0x591A, 0x5B66, - 0x60F3, 0xFF1A, 0x80FD, 0x4EE5, 0x73B0, 0x90FD, 0x9053, 0x77E5, 0x660E, 0x5F97, - 0x8BDD, 0x5403, 0x5B50, 0x53D1, 0x91CC, 0x5462, 0x548C, 0x51FA, 0x6253, 0x4ECA, - 0x884C, 0x5C0F, 0x7535, 0x7B49, 0x6837, 0x5FC3, 0x8D77, 0x7740, 0x540E, 0x600E, - 0x8001, 0x5F88, 0x518D, 0x628A, 0x51E0, 0x7528, 0x5F00, 0x4E2D, 0x751F, 0x95EE, - 0x95F4, 0x5979, 0x3001, 0x513F, 0x5730, 0x5BF9, 0x81EA, 0x89C1, 0x4E3A, 0x5DF2 - }; - - - // the default end mark const TInt KDefaultStrokeEndMarkX = -65536; @@ -161,14 +78,11 @@ //candiate number const TInt KCandidateCount = 6; -const TInt KMaxPredictiveCount = 100; -const TInt KPredictiveCountPerPage = 20; const TInt KPremaryCandidateCount = 10; const TInt KCandidateRowCount = 2; -const TInt KPredictiveRowCount = 3; const TInt KCandidateCountPerRow = 5; -const TInt KPredictiveCountPerRow = 5; + const TInt KSpecialConvertedCharCount = 2; @@ -187,7 +101,7 @@ const TInt KInvalidIndex = -1; //category -_LIT(KCategory, "AKNFEPHWR"); +_LIT(KCategory, "AKNFEPHWRAR"); //the number string _LIT(KNumberString,"0123456789"); diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarsymboltable.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarsymboltable.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarsymboltable.h Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -29,7 +29,6 @@ // FORWARD DECLARATIONS class CAknFepCtrlEventButton; class CMultiPageVirtualKeyboard; -class CPeninputSyncBitmapRotator; // CLASS DECLARATION @@ -38,8 +37,8 @@ * * The symbol table control for arabic input * - * @lib peninputfingerhwr.lib - * @since S60 v5.0 + * @lib peninputfingerhwrar.lib + * @since Symbian TB9.2 */ class CPeninputArabicFingerHwrSymbolTable : public CControlGroup { @@ -47,7 +46,7 @@ /** * Symbian constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aUiLayout The layout * @param aId The control id * @return pointer of created object. @@ -57,7 +56,7 @@ /** * Symbian constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aUiLayout The layout * @param aId The control id * @return pointer of created object. @@ -67,7 +66,7 @@ /** * standard c++ destructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 */ ~CPeninputArabicFingerHwrSymbolTable(); @@ -75,7 +74,7 @@ /** * open the symbol table. * - * @since S60 v5.0 + * @since Symbian TB9.2 * * @return None */ @@ -84,7 +83,7 @@ /** * cancel the popup. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None * */ @@ -92,7 +91,7 @@ /** * get visibility of popup. - * @since S60 v5.0 + * @since Symbian TB9.2 * @return ETrue if the popup is visible */ TBool IsPopup(); @@ -114,7 +113,7 @@ void UpdatePageButtonsUi(); - void UpdateAllVirtualKeysFeedback(TInt aType); + void UpdateAllVirtualKeysFeedback(); protected: //virtuals from CControlGroup (CFepUiBaseCtrl) @@ -122,7 +121,7 @@ * From CControlGroup * Handle pointer down event * - * @since S60 V5.0 + * @since Symbian TB9.2 * @param aPoint The point position relative the layout * @return The control which handles the event. */ @@ -132,7 +131,7 @@ * From CControlGroup * Handle pointer up event * - * @since S60 V5.0 + * @since Symbian TB9.2 * @param aPoint The point position relative the layout * @return The control which handles the event. */ @@ -149,19 +148,9 @@ CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); /** - * Handle pointer levae event. - * This will be called only when it's got pointer down event before and - * now pointer leaves without pointer up event - * - * @since S60 V4.0 - * @param aPoint current pointer position - */ - void HandlePointerLeave(const TPoint& aPoint); - - /** * C++ constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aFepUiLayout A Ui Layout environment (CFepUiLayout) * @param aControlId Control id * @return none. @@ -171,7 +160,7 @@ /** * Symbian second-phase constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void ConstructL(); @@ -179,7 +168,7 @@ /** * create a multipate virtual keypad * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CreateVirtualKeypadL(); @@ -193,7 +182,7 @@ /** * EventButton creation helper. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aCtrlId button control id. * @param aResId resource id. * @param aEvent event id; @@ -206,7 +195,7 @@ /** * EventButton layout helper. Move button to specified rect. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aButton the button to move * @param aRect new rect of button * @param aXPadding horz padding of button icon. @@ -230,6 +219,7 @@ void UpdateVkbKeyL( CVirtualKey* aVirtualKey, TResourceReader& aReader, const TRect aKeyRect ); void OnActivate(); + private: /** * multipage viritual keyboard diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/inc/peninputfingerhwrarwnd.h --- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarwnd.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarwnd.h Fri Mar 12 15:44:07 2010 +0200 @@ -27,7 +27,6 @@ class CAknFepCtrlEventButton; class CAknFepCtrlRepeatButton; class CFepCtrlDropdownList; -class CPeninputLayoutInputmodelChoice; class CTransparentHwrWndExt; class CPeninputFingerHwrArLafManager; class CPeninputArabicFingerHwrSymbolTable; @@ -39,17 +38,16 @@ * Main window of finger hwr arabic. * * @lib peninputfingerhwrar.lib - * @since S60 v5.0 + * @since Symbian TB9.2 */ class CPeninputFingerHwrArWnd : public CControlGroup - { - + { public: /** * Symbian constructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 * * @param aUiLayout The layout * @param aControlId The control id @@ -62,7 +60,7 @@ /** * Symbian constructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 * * @param aUiLayout The layout * @param aControlId The control id @@ -75,7 +73,7 @@ /** * standard c++ destructor. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ virtual ~CPeninputFingerHwrArWnd(); @@ -102,7 +100,7 @@ /** * Resize according to LAF. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void SizeChangedL(); @@ -111,7 +109,7 @@ /** * accept editor's text alignment. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aAlignment text alignment id. It can be one of the following: * EAknEditorAlignNone * EAknEditorAlignCenter @@ -126,7 +124,7 @@ /** * accept editor's text. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aData editor's text. * @return none */ @@ -135,7 +133,7 @@ /** * accept editor's promopt txt * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aPromoptData editor's promopt text * @return none */ @@ -144,7 +142,7 @@ /** * Dim option button * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aEnable Enable or disable option button * @return none */ @@ -153,31 +151,18 @@ /** * accept editor's bubble text. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aPromoptData editor's bubble text. * @return none */ void SetBubbleTextL( const TDesC& aInfo ); - /** - * accept editor's char ranges restriction. - * - * @since S60 v5.0 - * @param aPermittedRanges permitted char range flags. It can be combination of the following: - * ERangeNative - * ERangeEnglish - * ERangeNumber. - * See TAknFepPenInputRange. - * @return none - */ - void SetPermittedRanges( const TInt aPermittedRanges ); - public: //hwr /** * get strokes from hwr writing box * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return a TPoint array of strokes */ const RArray& StrokeList(); @@ -185,7 +170,7 @@ /** * set end mark of hwr * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aEndMark a TPoint object as end mark * @return none */ @@ -194,7 +179,7 @@ /** * set guide line on or off. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ void SetGuideLineOn( const TBool aGuideLineOn); @@ -202,7 +187,7 @@ /** * set pen color of hwr writing * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ void SetBoxPenColor( const TInt aPenColor ); @@ -210,7 +195,7 @@ /** * set pen size of hwr writing * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ void SetBoxPenSize( const TSize aPenSize ); @@ -218,7 +203,7 @@ /** * set writing speed hwr writing * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ void SetBoxWritingSpeed( const TTimeIntervalMicroSeconds32& aCharDelay ); @@ -226,7 +211,7 @@ /** * retrieve rect of hwr writingbox. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return rect of hwr writingbox. */ TRect WritingBoxRect(); @@ -234,7 +219,7 @@ /** * Cancel wrting * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CancelWriting(); @@ -242,9 +227,9 @@ public: // show symbol table page /** - * Change SCT page. + * Change symbol table page. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aPageNo page no. * @param aPos Specifies the interpretation of the aPageNo parameter: EPagePosPageNo - go to page aPageNo. @@ -254,14 +239,14 @@ EPagePosFirstPage - go to first page. * @return none */ - void ShowSctPage( TInt aPageNo, TInt aPos ); + void ShowSymbolPage( TInt aPageNo, TInt aPos ); public: //child control access /** * retrieve the ICF control. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return pointer to ICF */ CFepLayoutMultiLineIcf* Icf(); @@ -270,7 +255,7 @@ /** * retrieve the candicate list control. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return pointer to candicate list */ CFepCtrlDropdownList* CandidateList(); @@ -278,38 +263,15 @@ /** * retrieve the number candicate list control. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return pointer to candicate list */ CFepCtrlDropdownList* NumCandidateList(); - -public: //ui - - /** - * update layout - * safe version of UpdateLayoutL() - * - * @since S60 v5.0 - * @param aIsStandby ETrue if is standby state - * @return none - */ - void UpdateLayout( const TBool aIsStandby, - const TBool aReloadCandicate=ETrue ); - - /** - * update layout - * - * @since S60 v5.0 - * @param aIsStandby ETrue if is standby state - * @return none - */ - void UpdateLayoutL( const TBool aIsStandby, - const TBool aReloadCandicate=ETrue); - + /** * dim arrow buttons * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aDimArrow ETrue to dim arrow buttons, EFalse to set arrow buttons as not dimmed. * @return none */ @@ -317,17 +279,9 @@ public: // symbol table & candidate list /** - * retrieve char range of layout, including sct. - * - * @since S60 v5.0 - * @return char range id. - */ - TInt CurrentCharRange(); - - /** * Show preview bubble * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aShow Show/Hide flag * @return none */ @@ -336,7 +290,7 @@ /** * Open the symble table * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ void OpenSymbolTable(); @@ -344,15 +298,31 @@ /** * Close the symble table * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ void CloseSymbolTable(); /** + * Open the candidate list + * + * @since Symbian TB9.2 + * @return none + */ + void OpenCandidateList(); + + /** + * Close the candidate list + * + * @since Symbian TB9.2 + * @return none + */ + void CloseCandidateList(); + + /** * Check if the symbol table is alreay opened up * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ TBool IsSymbolTableShowingUp(); @@ -360,14 +330,14 @@ /** * Check if the candidate list was opened up * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ TBool IsCandidateShowup(); /** * Hide the indicator of handwriting - * @since S60 v5.0 + * @since Symbian TB9.2 * @return none */ void HideIndicator(); @@ -377,7 +347,7 @@ * * @param aCharPos The the char position * @param aCharBeforeCursor The char to be retrieved - * @since S60 v5.0 + * @since Symbian TB9.2 * @return TBool ETrue if char have been retrieved, EFalse otherwise */ TBool GetCharBeforeCursor(TInt aCharPos, TUint16& aCharBeforeCursor); @@ -387,7 +357,7 @@ /** * C++ constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aFepUiLayout A Ui Layout environment (CFepUiLayout) * @param aControlId Control id * @return None @@ -399,7 +369,7 @@ /** * Symbian second-phase constructor * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aLandscapeStyle Current screen is landscape or not * @return None */ @@ -408,7 +378,7 @@ /** * create icf. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CreateContextFieldL(); @@ -416,14 +386,14 @@ /** * create candidate lists. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CreateCandidateListL(); /** * create number candidate lists. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CreateNumCandidateListL(); @@ -431,7 +401,7 @@ /** * create writing box. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CreateWritingBoxL(); @@ -439,7 +409,7 @@ /** * create all function buttons. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CreateButtonsL(); @@ -447,7 +417,7 @@ /** * create virtual sct pad. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CreateSymbolTableL(); @@ -455,7 +425,7 @@ /** * EventButton creation helper. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aCtrlId button control id. * @param aResId resource id. * @param aEvent event id; @@ -468,7 +438,7 @@ /** * RepeatButton creation helper. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aCtrlId button control id. * @param aResId resource id. * @param aEvent event id; @@ -477,48 +447,37 @@ */ CAknFepCtrlRepeatButton* CreateRepBtnL( const TInt aCtrlId, TInt32 aResId, const TInt aEvent, const TInt aUnicode ); - - /** - * load virtual number pad images. - * - * @since S60 v5.0 - * @param aResId resource id. - * @param aKeySize virtual key rect. - * @return None - */ - void LoadVkbKeyImageL( const TInt aResId, const TSize& aKeySize ); - - + /** * load virtual sct keys. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aResId resource id. * @param aCellRects rects of virtual keys. * @return None */ - void LoadVirtualSctpadKeysL( const TInt aResId, const RArray& aCellRects ); + void LoadSymbolVirtualKeysL( const TInt aResId, const RArray& aCellRects ); /** * relayout full ui, reset all controls position. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void ResetLayoutL(); /** - * layout for chinese range standby. + * switch to arabic standby view * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void SwitchToStandbyView(); /** - * layout for symbol range standby. + * switch to symbol table view * - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void SwitchToSymbolTableView(); @@ -526,7 +485,7 @@ /** * EventButton layout helper. Move button to specified rect. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aButton the button to move * @param aRect new rect of button * @param aXPadding horz padding of button icon. @@ -540,7 +499,7 @@ /** * read control's shadow info. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aResId resource id. * @return None */ @@ -549,7 +508,7 @@ /** * read control's background info. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aResId resource id. * @return None */ @@ -558,7 +517,7 @@ /** * read icf appearance info. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aResId resource id. * @return None */ @@ -567,31 +526,22 @@ /** * read writingbox appearance info. * - * @since S60 v5.0 + * @since Symbian TB9.2 * @param aResId resource id. * @return None */ void ReadWritingBoxInfoL( TInt aResId ); - - /** - * update feedback state of all virtual keys - * - * @since S60 v5.0 - * @param aType char range id - * @return None - */ - void UpdateAllVirtualKeysFeedback( TInt aType ); /** * Calcaulate the postion of guideline - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void CalculateGuideLinePos(); /** * Draw the guideline - * @since S60 v5.0 + * @since Symbian TB9.2 * @return None */ void DrawGuideLine(); @@ -681,12 +631,6 @@ * Not own. */ CPeninputArabicFingerHwrSymbolTable* iSymbolTable; - - /** - * Ime selection list control. - * Not own. - */ - CPeninputLayoutInputmodelChoice* iInputModeSwitch; /** * L&F manager. @@ -698,17 +642,7 @@ * First time construct flag */ TBool iFirstTimeConstruct; - - /** - * Current char range id, including SCT. - */ - TInt iCurCharRange; - - /** - * Current char range id, without SCT. - */ - TInt iCurCharRangeNoSct; - + /** * bit mask of permitted char ranges. */ diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/hbufcarrayar.cpp --- a/textinput/peninputfingerhwrar/src/hbufcarrayar.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/hbufcarrayar.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 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" diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrardatastore.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrardatastore.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrardatastore.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -21,8 +21,8 @@ //FEP INCLUDE #include -#include -#include +#include +#include //USER INCLUDE #include "peninputfingerhwrarlayout.h" @@ -137,70 +137,8 @@ void CPeninputFingerHwrArDataStore::SetArabicSymbolL() { iCandidates.ResetAndDestroy(); -// TInt symCount = sizeof( ChineseSymbolCode )/sizeof( TUint16 ); -// -// for( TInt i = 0; i < symCount; i++ ) -// { -// TBuf<1> charBuf; -// charBuf.Append( ChineseSymbolCode[i] ); -// -// iCandidates.AppendL( charBuf.AllocL() ); -// } - } - -// ---------------------------------------------------------------------------- -// Set fixed English symbols -// ---------------------------------------------------------------------------- -// - void CPeninputFingerHwrArDataStore::SetFixEnglishSymbolL(TRowCount aRowCount) - { - TInt symCount = 0; - - switch(aRowCount) - { - case ERowOne: // only set one row dropdownlist - { - iCandidates.ResetAndDestroy(); - symCount = sizeof( EnglishSymbolCodeOneRow )/sizeof( TUint16 ); - for( TInt i = 0; i < symCount; i++ ) - { - TBuf<1> charBuf; - charBuf.Append( EnglishSymbolCodeOneRow[i] ); - iCandidates.AppendL( charBuf.AllocL() ); - } - } - break; - case ERowTwo: // Set two rows dropdownlist - { - iCandidates.ResetAndDestroy(); - symCount = sizeof( EnglishSymbolCodeTwoRow )/sizeof( TUint16 ); - - for( TInt i = 0; i < symCount; i++ ) - { - TBuf<1> charBuf1; // the first row - TBuf<2> charBuf2; // the second row - - charBuf1.Append( EnglishSymbolCodeOneRow[i] ); - iCandidates.AppendL( charBuf1.AllocL() ); - - if(i > 2) // for smile symbol - { - charBuf2.Append(ColonSymbol); - } - charBuf2.Append( EnglishSymbolCodeTwoRow[i] ); - - } - } - break; - default: - break; - } - } - - - // ---------------------------------------------------------------------------- // Set permitted ranges // ---------------------------------------------------------------------------- @@ -360,7 +298,7 @@ } else { - // aLanguage is Chinese + // aLanguage is arabic if ( iLanguage != aLanguage ) { iLanguage = aLanguage; @@ -859,22 +797,6 @@ } } } - else if(iFirstCandidateType == ECandArabicCharFirst) - { - for(TInt i = 0; i < candCount; i++) - { - TUint16 unicode = (*iCandidates[i])[0]; - if(IsArabicChar(unicode)) - { - if(insertPos < i) - { - iCandidates.Insert(iCandidates[i],insertPos); - iCandidates.Remove(i+1); - } - insertPos++; - } - } - } } // ---------------------------------------------------------------------------- @@ -920,37 +842,4 @@ return EFalse; } -// ---------------------------------------------------------------------------- -// CPeninputFingerHwrArDataStore::IsArabicChar -// ---------------------------------------------------------------------------- -// -TBool CPeninputFingerHwrArDataStore::IsArabicChar(TUint16 aChar) - { - if((aChar >= 0x0600 && aChar <= 0x06FF && !IsArabicNumber(aChar) && - !IsArabicSymbol(aChar)) || - (aChar >= 0x0750 && aChar <= 0x077F) || - (aChar >= 0xFB50 && aChar <= 0xFDFF) || - (aChar >= 0xFE70 && aChar <= 0xFEFF)) - { - return ETrue; - } - - return EFalse; - } - -// ---------------------------------------------------------------------------- -// CPeninputFingerHwrArDataStore::IsArabicSymbol -// ---------------------------------------------------------------------------- -// -TBool CPeninputFingerHwrArDataStore::IsArabicSymbol(TUint16 aChar) - { - if(aChar == 0x061B || aChar == 0x061F || - aChar == 0x060C || aChar == 0x066A) - { - return ETrue; - } - - return EFalse; - } - // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarengine.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarengine.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarengine.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -17,11 +17,11 @@ //FEP INCLUDES -#include +#include #include -#include +#include #include -#include "PtiDefs.h" +#include "ptidefs.h" //USER INCLUDES #include "peninputfingerhwrarengine.h" diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarindicator.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarindicator.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarindicator.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -15,7 +15,7 @@ * */ -#include +#include #include #include "peninputfingerhwrarindicator.h" diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -19,7 +19,7 @@ // INCLUDES #include #include -#include +#include #include "peninputfingerhwrarlafmanager.h" #include "peninputfingerhwrarcontrolid.h" @@ -266,7 +266,6 @@ btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). LayoutLine(); btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); - iRectBtnImeSwitch = btnbgRect.Rect(); // Arrow up button btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ). @@ -319,10 +318,7 @@ LayoutLine(); btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); - iRectFixSctpad = btnrowRect.Rect(); - iSizeFixSctpadCell = btnRect.Rect().Size(); - iRectSpase = btnbgRect.Rect(); - iRectSpase.Move(-iRectFixSctpad.iTl ); + // Enter button btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 1 , 0 ). @@ -333,7 +329,6 @@ btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); iRectEnter = btnbgRect.Rect(); - iRectEnter.Move(-iRectFixSctpad.iTl); // Writing box @@ -390,7 +385,7 @@ // going to be removed if the LAF data is ready // #ifdef HackerVersion - + const TUint KMarginLayout = 4; // hardcode those and remove them after the laf data is ready // do we really need to read ui data from laf system? // icf margins @@ -406,10 +401,10 @@ if(iIsLandscape) { - TInt buttonHight = (iLayoutRect.Height()-20)/6;//-6; // 1mm ~= 6 pixls - TInt buttonWidth = (iLayoutRect.Width()-20)/8;//-8; + TInt buttonHight = (iLayoutRect.Height()-2*KMarginLayout)/6;//-6; // 1mm ~= 6 pixls + TInt buttonWidth = (iLayoutRect.Width()-2*KMarginLayout)/8;//-8; - iRectBtnClose = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(buttonWidth+10,buttonHight+10)); + iRectBtnClose = TRect(iLayoutRect.iTl+TPoint(KMarginLayout,KMarginLayout),TPoint(buttonWidth+KMarginLayout,buttonHight+KMarginLayout)); iRectBtnOption = iRectBtnClose; iRectBtnOption.Move(TPoint(buttonWidth,0)); @@ -433,9 +428,8 @@ iRectBtnArrowRight = iRectBtnArrowLeft; iRectBtnArrowRight.Move(TPoint(buttonWidth,0)); - // fix symbol table - TPoint fixSctTl = iRectBtnClose.iTl+TPoint(0,buttonHight); - iRectFixSctpad = TRect(fixSctTl,fixSctTl+TPoint(4*buttonWidth,buttonHight)); + iSizeBtnPadding = TSize(6,6); + iRectSpase = iRectBtnClose; iRectSpase.Move(TPoint(0,buttonHight)); @@ -443,10 +437,7 @@ iRectEnter = iRectSpase; iRectEnter.Move(TPoint(buttonWidth,0)); - iRectSpase.Move(-iRectFixSctpad.iTl ); - iRectEnter.Move(-iRectFixSctpad.iTl ); - - iSizeFixSctpadCell = iRectSpase.Size(); + // candate position iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight); @@ -454,10 +445,10 @@ iCandsUnitHeight = buttonHight; // icf editor rect - iRectIcf = TRect(TPoint(4*buttonWidth+10,10),TPoint(iLayoutRect.iBr.iX-10,2*buttonHight+10)); + iRectIcf = TRect(TPoint(4*buttonWidth+KMarginLayout,KMarginLayout),TPoint(iLayoutRect.iBr.iX-KMarginLayout,2*buttonHight+KMarginLayout)); // iwriting box - iRectWritingBox = TRect(TPoint(10,2*buttonHight+10),iLayoutRect.iBr-TPoint(10,10)); + iRectWritingBox = TRect(TPoint(KMarginLayout,2*buttonHight+KMarginLayout),iLayoutRect.iBr-TPoint(KMarginLayout,KMarginLayout)); // construct symbol table iRectOfSymbolTable = iRectWritingBox; @@ -489,23 +480,26 @@ else { // icf rect - iRectIcf = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(iLayoutRect.iBr.iX-10,22.5*9)); - TPoint backSpaceTl = iRectIcf.iTl+TPoint(0,iRectIcf.Height()); + iRectIcf = TRect(iLayoutRect.iTl+TPoint(KMarginLayout,KMarginLayout),TPoint(iLayoutRect.iBr.iX-KMarginLayout,22.5*9)); - TInt buttonHight = (iLayoutRect.Height()-iRectIcf.Height()-20)/6;//(15*9)/2; // 1mm ~= 9pixls - TInt buttonWidth = (iLayoutRect.Width()-20)/4; + TInt buttonHight = (iLayoutRect.Height()-iRectIcf.Height()-2*KMarginLayout)/6;//(15*9)/2; // 1mm ~= 9pixls + TInt buttonWidth = (iLayoutRect.Width()-2*KMarginLayout)/4; // the button on second row - iRectBtnBackspace = TRect(backSpaceTl,backSpaceTl+TPoint(buttonWidth,buttonHight)); - iRectBtnOption = iRectBtnBackspace; + TPoint firstButtonTl = iRectIcf.iTl+TPoint(0,iRectIcf.Height()); + iRectBtnClose = TRect(firstButtonTl,firstButtonTl+TPoint(buttonWidth,buttonHight)); + + iRectBtnOption = iRectBtnClose; iRectBtnOption.Move(TPoint(buttonWidth,0)); - iRectBtnRangeSmb = iRectBtnOption; + + iRectBtnRangeSmb = iRectBtnOption; iRectBtnRangeSmb.Move(TPoint(buttonWidth,0)); - iRectBtnClose = iRectBtnRangeSmb; - iRectBtnClose.Move(TPoint(buttonWidth,0)); + + iRectBtnBackspace = iRectBtnRangeSmb; + iRectBtnBackspace.Move(TPoint(buttonWidth,0)); // arrow button: on third row - iRectBtnArrowUp = iRectBtnBackspace; + iRectBtnArrowUp = iRectBtnClose; iRectBtnArrowUp.Move(TPoint(0,buttonHight)); iRectBtnArrowDown = iRectBtnArrowUp; @@ -516,14 +510,17 @@ iRectBtnArrowRight = iRectBtnArrowLeft; iRectBtnArrowRight.Move(TPoint(buttonWidth,0)); - + + // button padding + iSizeBtnPadding = TSize(6,6); + // candate position - iCandidateLTPos = iRectBtnBackspace.iTl + TPoint(0,buttonHight); + iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight); iCandsUnitWidth = buttonWidth-iCandsVerticalMargin; iCandsUnitHeight = buttonHight; // HWR Box Rect - iRectWritingBox = TRect(TPoint(iRectBtnArrowUp.iTl.iX,iRectBtnArrowUp.iBr.iY),iLayoutRect.iBr-TPoint(10,10)); + iRectWritingBox = TRect(TPoint(iRectBtnArrowUp.iTl.iX,iRectBtnArrowUp.iBr.iY),iLayoutRect.iBr-TPoint(KMarginLayout,KMarginLayout)); // construct symbol table iRectOfSymbolTable = iRectWritingBox; @@ -631,10 +628,6 @@ { return iRectBtnOption; } - case EHwrCtrlIdVkbSwitcher: - { - return iRectBtnImeSwitch; - } case EHwrCtrlId3Page1Btn: case EHwrCtrlId3Page2Btn: case EHwrCtrlId3Page3Btn: @@ -736,30 +729,9 @@ { return iSizeBtnPadding; } - - -// --------------------------------------------------------------------------- -// get cell size of virtual numpad. -// --------------------------------------------------------------------------- -// -TRect CPeninputFingerHwrArLafManager::VirtualNumpadCellSize() - { - return iSizeNumpadCell; - } // --------------------------------------------------------------------------- -// get text layout of virtual numpad. -// --------------------------------------------------------------------------- -// -TAknTextLineLayout CPeninputFingerHwrArLafManager::NumpadKeyTxtLayout() - { - TAknTextLineLayout layout = AknLayoutScalable_Avkon:: - cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); - return layout; - } - -// --------------------------------------------------------------------------- // get row count of virtual sctpad. // --------------------------------------------------------------------------- // @@ -785,15 +757,6 @@ { return iSizeSctpadCell; } - -// --------------------------------------------------------------------------- -// get cell size of virtual sctpad. -// --------------------------------------------------------------------------- -// -TRect CPeninputFingerHwrArLafManager::FixVirtualSctpadCellSize() - { - return iSizeFixSctpadCell; - } // --------------------------------------------------------------------------- @@ -849,17 +812,6 @@ } // --------------------------------------------------------------------------- -// get space and enter key rect. -// --------------------------------------------------------------------------- -// -void CPeninputFingerHwrArLafManager::GetFixVirtualKeyRects( RArray& aArrayRects ) - { - aArrayRects.Reset(); - aArrayRects.Append( iRectSpase ); - aArrayRects.Append( iRectEnter ); - } - -// --------------------------------------------------------------------------- // get text layout of virtual sctpad. // --------------------------------------------------------------------------- // diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -20,13 +20,12 @@ #include //FEP Includes -#include +#include #include #include #include #include #include -#include #include #include #include @@ -154,7 +153,6 @@ { TInt ranges = *(TInt*)aData; iDataStore->SetPermittedRanges( ranges ); - iHwrWnd->SetPermittedRanges( ranges ); ret = KErrNone; } break; @@ -188,7 +186,7 @@ TSize hwrSize = hwrRect.Size(); iDataStore->SetInputAreaSize(hwrSize); iDataStore->SetScreenSize(hwrSize); - ChangeCurStateManagerToStandby(); + ChangeCurStateToStandby(); iDataStore->GetKeyboardType(); iDataStore->SetKeyboardToQwerty(); @@ -299,10 +297,7 @@ { candtype = ECandArabicIndicNumFirst; } - else if(iDataStore->IsArabicChar(charBeforeCursor)) - { - candtype = ECandArabicCharFirst; - } + iDataStore->SetFirstCandidateType(candtype); } @@ -356,13 +351,14 @@ // void CPeninputFingerHwrArLayout::OnDeActivate() { - //cancel writing + // cancel writing iHwrWnd->CancelWriting(); - if(!iHwrWnd->IsSymbolTableShowingUp()) - { - iHwrWnd->UpdateLayout( ETrue ); - } + // close the symbol table if it's showing up + iHwrWnd->CloseSymbolTable(); + + // close the candidate list if it's showing up + iHwrWnd->CloseCandidateList(); CFepUiLayout::OnDeActivate(); } @@ -445,7 +441,7 @@ case EHwrEventOutsideEvent: { - ChangeCurStateManagerToStandby(); + ChangeCurStateToStandby(); iHwrWnd->CloseSymbolTable(); } break; @@ -549,7 +545,7 @@ break; case KSettingsPenInputGuideLine: { - + self->SetGuideLineOn(newValue); } break; default: @@ -616,9 +612,7 @@ CCoeEnv::Static()->DeleteResourceFile( iResId ); delete iDataStore; - iStateMgrArray.ResetAndDestroy(); - iStateMgrArray.Close(); - + delete iStateMgr; delete iGSRepositoryWatcher; delete iRepositorySetting; } @@ -645,7 +639,7 @@ // void CPeninputFingerHwrArLayout::CreateStateManagerL() { - iStateMgrArray.AppendL( CPeninputFingerHwrArStateManager::NewL( this ) ); + iStateMgr = CPeninputFingerHwrArStateManager::NewL( this ); } // --------------------------------------------------------------------------- @@ -679,8 +673,8 @@ { iDataStore->SetStartCharacter(EFalse); iHwrWnd->CancelWriting(); - ChangeCurStateManagerToStandby(); - iHwrWnd->UpdateLayout( ETrue ); + ChangeCurStateToStandby(); + iHwrWnd->CloseCandidateList(); } SignalOwner( ESignalLayoutClosed ); @@ -698,8 +692,8 @@ { iDataStore->SetStartCharacter(EFalse); iHwrWnd->CancelWriting(); - ChangeCurStateManagerToStandby(); - iHwrWnd->UpdateLayout( ETrue ); + ChangeCurStateToStandby(); + iHwrWnd->CloseCandidateList(); } if(iHwrWnd->IsSymbolTableShowingUp()) @@ -708,34 +702,34 @@ } else { - ChangeCurStateManagerToStandby(); + ChangeCurStateToStandby(); iHwrWnd->OpenSymbolTable(); } } break; case EHwrCtrlId3Page1Btn: { - iHwrWnd->ShowSctPage( 1, EPagePosPageNo ); + iHwrWnd->ShowSymbolPage( 1, EPagePosPageNo ); } break; case EHwrCtrlId3Page2Btn: { - iHwrWnd->ShowSctPage( 2, EPagePosPageNo ); + iHwrWnd->ShowSymbolPage( 2, EPagePosPageNo ); } break; case EHwrCtrlId3Page3Btn: { - iHwrWnd->ShowSctPage( 0, EPagePosPageNo ); + iHwrWnd->ShowSymbolPage( 0, EPagePosPageNo ); } break; case EHwrCtrlId2Page1Btn: { - iHwrWnd->ShowSctPage( 1, EPagePosPageNo ); + iHwrWnd->ShowSymbolPage( 1, EPagePosPageNo ); } break; case EHwrCtrlId2Page2Btn: { - iHwrWnd->ShowSctPage( 0, EPagePosPageNo ); + iHwrWnd->ShowSymbolPage( 0, EPagePosPageNo ); } break; case EHwrCtrlIdBtnEnter: @@ -808,18 +802,17 @@ { // goto standby and clear screen iDataStore->SetStartCharacter(EFalse); - ChangeCurStateManagerToStandby(); - iHwrWnd->UpdateLayout( ETrue ); + ChangeCurStateToStandby(); + iHwrWnd->CloseCandidateList(); } else { - SubmitCharToFep( EKeyBackspace ); - CurStateManager()->HandleEventL( EHwrEventKeyBack, KNullDesC ); + iStateMgr->HandleEventL( EHwrEventKeyBack, KNullDesC ); if(iDataStore->StartCharacter()) { - ChangeCurStateManagerToStandby(); - iHwrWnd->UpdateLayout( ETrue ); + ChangeCurStateToStandby(); + iHwrWnd->CloseCandidateList();; } } } @@ -875,12 +868,11 @@ return; } - CurStateManager()->HandleEventL( EHwrEventCandidateSelected, aData ); - + iStateMgr->HandleEventL( EHwrEventCandidateSelected, aData ); - ChangeCurStateManagerToStandby(); + ChangeCurStateToStandby(); - iHwrWnd->UpdateLayout( ETrue ); + iHwrWnd->CloseCandidateList();; } @@ -891,8 +883,11 @@ void CPeninputFingerHwrArLayout::OnIcfClicked() { // Go to standby - ChangeCurStateManagerToStandby(); - iHwrWnd->UpdateLayout( ETrue ); + ChangeCurStateToStandby(); + if(iHwrWnd->IsCandidateShowup()) + { + iHwrWnd->CloseCandidateList(); + } } // --------------------------------------------------------------------------- @@ -902,13 +897,19 @@ void CPeninputFingerHwrArLayout::OnHwrStrokeStartedL() { iHwrWnd->HideIndicator(); + // The default candidate cell is not highlight - iDataStore->SetHighlight(EFalse); - iHwrWnd->UpdateLayout(ETrue); + iDataStore->SetHighlight(EFalse); + + // close the candidate list if it's currently showing up + if(iHwrWnd->IsCandidateShowup()) + { + iHwrWnd->CloseCandidateList(); + } // remember the start writing position. iDataStore->SetStartCharacter(ETrue); - CurStateManager()->HandleEventL( EEventHwrStrokeStarted, KNullDesC ); + iStateMgr->HandleEventL( EEventHwrStrokeStarted, KNullDesC ); } // --------------------------------------------------------------------------- @@ -920,7 +921,7 @@ RArray points = iHwrWnd->StrokeList(); TPtrC ptr; ptr.Set(reinterpret_cast(&points), sizeof(&points)); - CurStateManager()->HandleEventL( EEventHwrStrokeFinished, ptr ); + iStateMgr->HandleEventL( EEventHwrStrokeFinished, ptr ); } // --------------------------------------------------------------------------- @@ -934,11 +935,10 @@ RArray points = iHwrWnd->StrokeList(); TPtrC ptr; ptr.Set( reinterpret_cast( &points ), sizeof(&points) ); - CurStateManager()->HandleEventL( EEventHwrCharacterTimerOut, ptr ); - - // When recognize Enter or Backspace, it will go to standby - iHwrWnd->UpdateLayout( CurStateManager()->IsStandbyState(), ETrue); - } + iStateMgr->HandleEventL( EEventHwrCharacterTimerOut, ptr ); + + iHwrWnd->OpenCandidateList(); + } // --------------------------------------------------------------------------- // get value from repository. @@ -1039,32 +1039,18 @@ // set hwr writing pen color. // --------------------------------------------------------------------------- // -void CPeninputFingerHwrArLayout::SetGuideLineOn(const TBool aGuideLineOn) +void CPeninputFingerHwrArLayout::SetGuideLineOn(TBool aGuideLineOn) { iHwrWnd->SetGuideLineOn( aGuideLineOn ); } // --------------------------------------------------------------------------- -// get current state manager. -// --------------------------------------------------------------------------- -// -CPeninputFingerHwrArStateManagerBase* CPeninputFingerHwrArLayout::CurStateManager() - { - return iStateMgrArray[0]; - } - - -// --------------------------------------------------------------------------- // change current state manager to standby state. // --------------------------------------------------------------------------- // -void CPeninputFingerHwrArLayout::ChangeCurStateManagerToStandby() +void CPeninputFingerHwrArLayout::ChangeCurStateToStandby() { - CPeninputFingerHwrArStateManagerBase* stateMgr = CurStateManager(); - if ( stateMgr ) - { - stateMgr->SetState( CPeninputFingerHwrArStateManagerBase::EStateStandBy ); - } + iStateMgr->SetState( CPeninputFingerHwrArStateManagerBase::EStateStandBy ); } //End of file diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarproxy.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarproxy.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarproxy.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarstatemanager.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarstatemanager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarstatemanager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -189,11 +189,7 @@ iStates[++i] = EPeninputFingerHwrArStateCandidateSelecting; iStateHandlers[i] = CPeninputFingerHwrArStateCandidateSelecting::NewL( *this ); - -// iStates[++i] = EPeninputFingerHwrArStatePredictSelecting; -// iStateHandlers[i] = -// CPeninputFingerHwrArStatePredictSelecting::NewL( *this ); -// + iCurrentStateHandler = iStateHandlers[0]; iCurrentState = EPeninputFingerHwrArStateStandby; } @@ -376,12 +372,7 @@ { OnSelectedCandidatesL(aEventData); } - break; - case EHwrEventPredictiveSelected: - { -// OnSelectedPredictivesL(aEventData); - } - break; + break; default: break; } @@ -559,11 +550,6 @@ OnSelectedCandidatesL( aEventData ); } break; - case EHwrEventPredictiveSelected: - { -// OnSelectedPredictivesL( aEventData ); - } - break; case EHwrEventKeyBack: { OnClickBackSpaceL(); diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarsymboltable.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarsymboltable.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarsymboltable.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: Implementation of char range selector. +* Description: Implementation of symbol table. * */ @@ -25,17 +25,15 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include #include -#include -#include #include "hbufcarrayar.h" #include "peninputfingerhwrarevent.h" @@ -91,12 +89,10 @@ void CPeninputArabicFingerHwrSymbolTable::OpenSymbolTable() { CapturePointer( ETrue ); - iPopupVisible = ETrue; - iPointerMoveBack = EFalse; - Draw(); - UpdateArea(iRect ); + iPopupVisible = ETrue; UiLayout()->LockArea(UiLayout()->Rect(),this); - } + NavigatePage(0,EPagePosPageNo); + } // --------------------------------------------------------------------------- // cancel the popup. @@ -105,7 +101,6 @@ void CPeninputArabicFingerHwrSymbolTable::CloseSymbolTable() { CapturePointer( EFalse ); - iPenDownCtrl = NULL; iPopupVisible = EFalse; UiLayout()->UnLockArea(UiLayout()->Rect(),this); } @@ -128,15 +123,13 @@ { CancelPointerDownL(); CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerDownEventL( aPoint ); - iPenDownCtrl = ctrl; - + if(!ctrl) { ReportEvent(EHwrEventOutsideEvent); } else { - ctrl->Draw(); ctrl->UpdateArea(ctrl->Rect(),EFalse); } @@ -154,7 +147,6 @@ if(ctrl) { - ctrl->Draw(); ctrl->UpdateArea(ctrl->Rect(),EFalse); } @@ -171,31 +163,17 @@ CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerMoveEventL( aPoint ); if(ctrl) { - ctrl->Draw(); ctrl->UpdateArea(ctrl->Rect(),EFalse); - iPointerMoveBack = ETrue; } else { - if(iPointerMoveBack) - { - if(iPenDownCtrl) - { - iPenDownCtrl->HandlePointerLeave(aPoint); - } - iPointerMoveBack = EFalse; - } + CControlGroup::HandlePointerLeave(aPoint); + UpdateArea(iRect,EFalse); } - + return ctrl; } -void CPeninputArabicFingerHwrSymbolTable::HandlePointerLeave(const TPoint& aPoint) - { - CControlGroup::HandlePointerLeave(aPoint); - Draw(); - UpdateArea(Rect(),EFalse); - } // --------------------------------------------------------------------------- // C++ constructor. // --------------------------------------------------------------------------- @@ -294,7 +272,7 @@ iMutiPageKeypad = CMultiPageVirtualKeyboard::NewL( TRect(0,0,0,0), UiLayout(), - EHwrCtrlIdSctpad, + EHwrCtrlIdSymbolTableVkb, spec ); AddControlL( iMutiPageKeypad ); @@ -368,11 +346,11 @@ void CPeninputArabicFingerHwrSymbolTable::OnActivate() { CControlGroup::OnActivate(); - if(IsPopup()) + /*if(IsPopup()) { CapturePointer( ETrue ); NavigatePage(0,EPagePosPageNo); - } + }*/ } void CPeninputArabicFingerHwrSymbolTable::LoadVkbKeyImageL(TInt aResId, const TSize& aKeySize) @@ -580,11 +558,9 @@ break; } - iMutiPageKeypad->Draw(); UpdatePageButtonsUi(); - UpdateAllVirtualKeysFeedback( EFingerHwrSymbolRange ); - iEnterBtn->Draw(); - iSpaceBtn->Draw(); + Draw(); + UpdateAllVirtualKeysFeedback(); UpdateArea(iRect); } @@ -614,10 +590,8 @@ // update feedback state of all virtual keys. // --------------------------------------------------------------------------- // -void CPeninputArabicFingerHwrSymbolTable::UpdateAllVirtualKeysFeedback( TInt aType ) +void CPeninputArabicFingerHwrSymbolTable::UpdateAllVirtualKeysFeedback() { - TBool isSctpad = ( aType == EFingerHwrSymbolRange ) ? ETrue : EFalse; - //update sctpad keys TInt keyCount = iMutiPageKeypad->KeyArray().Count(); TInt pageSize = iMutiPageKeypad->PageSize(); @@ -626,8 +600,9 @@ { CVirtualKey* vk = iMutiPageKeypad->KeyArray()[i]; TInt page = i / pageSize; - TBool enable = !vk->Dimmed() && isSctpad && ( page == curPage ); + TBool enable = !vk->Dimmed() && ( page == curPage ); iMutiPageKeypad->EnableKeyFeedback( vk, enable ); } } + // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -16,47 +16,40 @@ */ // INCLUDE -#include +#include +#include + #include #include +#include +#include +#include +#include +#include +#include + +#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include - +// USER INCLUDES #include "peninputfingerhwrarwnd.h" #include "peninputfingerhwrarlafmanager.h" #include "peninputfingerhwrarevent.h" #include "peninputfingerhwrarcontrolid.h" #include "peninputfingerhwrarstoreconstants.h" +#include "peninputfingerhwrarmultipagevkb.h" #include "peninputfingerhwrarlayout.h" #include "peninputfingerhwrardatastore.h" #include "peninputlayouthwrwnd.h" #include "peninputfingerhwrarsymboltable.h" #include "peninputfingerhwrarindicator.h" -#include "peninputfingerhwrarmultipagevkb.h" -#include "hbufcarrayar.h" - -const TUint32 KDefaultTextColor = 0x000000; -const TUint KDefaultFrameColor = 0x000000; -const TUint32 KDefaultWriteBoxBgColor = 0xdddddd; +const TUint32 KDefaultTextColor = 0x000000; +const TUint KDefaultFrameColor = 0x000000; +const TUint32 KDefaultWriteBoxBgColor = 0xdddddd; const TUint32 KDefaultWriteBoxFrameColor = 0x000000; // --------------------------------------------------------------------------- @@ -329,18 +322,6 @@ } // --------------------------------------------------------------------------- -// accept editor's char ranges restriction. -// --------------------------------------------------------------------------- -// -void CPeninputFingerHwrArWnd::SetPermittedRanges( const TInt aPermittedRanges ) - { - if(aPermittedRanges == 0) - return; - - iPermittedRanges = aPermittedRanges; - } - -// --------------------------------------------------------------------------- // get strokes from hwr writing box. // --------------------------------------------------------------------------- // @@ -365,6 +346,7 @@ void CPeninputFingerHwrArWnd::SetGuideLineOn(const TBool aGuideLineOn) { iGuideLineOn = aGuideLineOn; + DrawGuideLine(); } // --------------------------------------------------------------------------- @@ -418,10 +400,9 @@ // Change SCT page. // --------------------------------------------------------------------------- // -void CPeninputFingerHwrArWnd::ShowSctPage( TInt aPageNo, TInt aPos ) +void CPeninputFingerHwrArWnd::ShowSymbolPage( TInt aPageNo, TInt aPos ) { iSymbolTable->NavigatePage(aPageNo,aPos); - UpdateAllVirtualKeysFeedback( EFingerHwrSymbolRange ); } // --------------------------------------------------------------------------- @@ -452,72 +433,58 @@ } // --------------------------------------------------------------------------- -// Update layout +// Open the candidate list // --------------------------------------------------------------------------- -// -void CPeninputFingerHwrArWnd::UpdateLayout( const TBool aIsStandby, const TBool aReloadCandicate) +// +void CPeninputFingerHwrArWnd::OpenCandidateList() { - TRAP_IGNORE( UpdateLayoutL( aIsStandby, aReloadCandicate) ); - } + typedef CFepCtrlDropdownList::TListType TDropListType; + + CPeninputFingerHwrArLayout* hwrLayout = NULL; + hwrLayout = static_cast( UiLayout() ); + CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore(); + + const RPointerArray& candidates = datastore.Candidate(); + + + TDropListType unexpandable = CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble; + + if ( datastore.PrimaryRange() == ERangeNative ) + { + iCandidateList->Hide( EFalse ); + TRAP_IGNORE(iCandidateList->SetCandidatesL( candidates, unexpandable )); + iCandidateList->SetHighlightCell( 0, datastore.Highlight() ); + } + else + { + iNumCandidateList->Hide( EFalse ); + TRAP_IGNORE(iNumCandidateList->SetCandidatesL( candidates, unexpandable )); + iNumCandidateList->SetHighlightCell( 0, datastore.Highlight() ); + } + + iArrowLeftBtn->Hide(ETrue); + iArrowRightBtn->Hide(ETrue); + iArrowUpBtn->Hide(ETrue); + iArrowDownBtn->Hide(ETrue); + } // --------------------------------------------------------------------------- -// Update layout +// Close the candidate list // --------------------------------------------------------------------------- -// -void CPeninputFingerHwrArWnd::UpdateLayoutL( const TBool aIsStandby, - const TBool aReloadCandicate) +// +void CPeninputFingerHwrArWnd::CloseCandidateList() { - // Set the candidates when dropdown list is shown - if ( !aIsStandby ) - { - typedef CFepCtrlDropdownList::TListType TDropListType; - - CPeninputFingerHwrArLayout* hwrLayout = NULL; - hwrLayout = static_cast( UiLayout() ); - CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore(); - - const RPointerArray& candidates = datastore.Candidate(); - - - TDropListType unexpandable = CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble; - - if ( datastore.PrimaryRange() == ERangeNative ) - { - iCandidateList->Hide( EFalse ); - - if ( aReloadCandicate ) - { - iCandidateList->SetCandidatesL( candidates, unexpandable ); - } - - iCandidateList->SetHighlightCell( 0, datastore.Highlight() ); - - } - else - { - iNumCandidateList->Hide( EFalse ); - if ( aReloadCandicate ) - { - iNumCandidateList->SetCandidatesL( candidates, unexpandable ); - } - - iNumCandidateList->SetHighlightCell( 0, datastore.Highlight() ); - } - } - else - { - iCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble); - iNumCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble); - // hide all the dropdown list in standby state - iCandidateList->Hide( ETrue ); - iNumCandidateList->Hide( ETrue ); - } + iCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble); + iNumCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble); + // hide all the dropdown list in standby state + iCandidateList->Hide( ETrue ); + iNumCandidateList->Hide( ETrue ); - iArrowLeftBtn->Hide( !aIsStandby ); - iArrowRightBtn->Hide( !aIsStandby ); - iArrowUpBtn->Hide( !aIsStandby ); - iArrowDownBtn->Hide( !aIsStandby ); - } + iArrowLeftBtn->Hide(EFalse); + iArrowRightBtn->Hide(EFalse); + iArrowUpBtn->Hide(EFalse); + iArrowDownBtn->Hide(EFalse); + } // --------------------------------------------------------------------------- // dim arrow buttons. @@ -532,15 +499,6 @@ } // --------------------------------------------------------------------------- -// retrieve char range of layout, including sct. -// --------------------------------------------------------------------------- -// -TInt CPeninputFingerHwrArWnd::CurrentCharRange() - { - return iCurCharRange; - } - -// --------------------------------------------------------------------------- // c++ constructor // --------------------------------------------------------------------------- // @@ -583,11 +541,10 @@ //create control buttons CreateButtonsL(); - iCurCharRangeNoSct = EFingerHwrNativeRange; - iCurCharRange = EFingerHwrNativeRange; - - //ResetLayoutL(); + //set controls postion and extent SizeChangedL(); + + //switch to standby view SwitchToStandbyView(); } @@ -846,19 +803,10 @@ } // --------------------------------------------------------------------------- -// load virtual number pad images. -// --------------------------------------------------------------------------- -// -void CPeninputFingerHwrArWnd::LoadVkbKeyImageL( TInt aResId, const TSize& aKeySize ) - { - iSymbolTable->LoadVkbKeyImageL(aResId,aKeySize); - } - -// --------------------------------------------------------------------------- // load virtual sct keys. // --------------------------------------------------------------------------- // -void CPeninputFingerHwrArWnd::LoadVirtualSctpadKeysL( const TInt aResId, +void CPeninputFingerHwrArWnd::LoadSymbolVirtualKeysL( const TInt aResId, const RArray& aCellRects ) { TAknTextLineLayout txtlayout = iLafManager->SctpadKeyTxtLayout(); @@ -931,7 +879,7 @@ // load vkb key image TSize keysize = iLafManager->VirtualSctpadCellSize().Size(); - LoadVkbKeyImageL(R_FINGER_HWR_SCTPAD_IMAGE, keysize ); + iSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_SCTPAD_IMAGE, keysize ); // get the key rect RArray rects; @@ -941,11 +889,11 @@ // load keys if(iLafManager->IsLandscape()) { - LoadVirtualSctpadKeysL(R_ARABIC_FINGER_HWR_LANDSCAPE_SYMBOL_TABLE, rects); + LoadSymbolVirtualKeysL(R_ARABIC_FINGER_HWR_LANDSCAPE_SYMBOL_TABLE, rects); } else { - LoadVirtualSctpadKeysL(R_ARABIC_FINGER_HWR_PORTRAIT_SYMBOL_TABLE, rects); + LoadSymbolVirtualKeysL(R_ARABIC_FINGER_HWR_PORTRAIT_SYMBOL_TABLE, rects); } CleanupStack::PopAndDestroy();//rects @@ -970,7 +918,7 @@ // hide following controls iCandidateList->Hide( ETrue ); iNumCandidateList->Hide( ETrue ); - iSymbolTable->Hide( ETrue ); + iSymbolTable->Hide( ETrue); // show following controls iArrowLeftBtn->Hide( EFalse ); @@ -978,11 +926,8 @@ iArrowUpBtn->Hide( EFalse ); iArrowDownBtn->Hide( EFalse ); iOptionBtn->Hide( EFalse ); - - iSymbolTableBtn->Hide( EFalse ); - iSymbolTableBtn->SetHighlight( EFalse); - - UpdateAllVirtualKeysFeedback( EFingerHwrNativeRange ); + iSymbolTableBtn->SetHighlight( EFalse); + iContextField->SetReady(ETrue); Draw(); } @@ -1004,13 +949,13 @@ iArrowRightBtn->Hide( ETrue ); iArrowUpBtn->Hide( ETrue ); iArrowDownBtn->Hide( ETrue ); - iOptionBtn->Hide( EFalse ); + + // set the symboltable button highlighted iSymbolTableBtn->SetHighlight( ETrue ); - - TInt pageno = ( iCurCharRangeNoSct == EFingerHwrNativeRange ) ? 0 : 1; - ShowSctPage( pageno, EPagePosPageNo ); - - UpdateAllVirtualKeysFeedback( EFingerHwrSymbolRange ); + + // avoid overlap refresh problem after opening symbil table + // so set this control to be not ready + iContextField->SetReady(EFalse); iSymbolTable->OpenSymbolTable(); } @@ -1279,15 +1224,6 @@ CleanupStack::PopAndDestroy(); // reader } - -// --------------------------------------------------------------------------- -// update feedback state of all virtual keys. -// --------------------------------------------------------------------------- -// -void CPeninputFingerHwrArWnd::UpdateAllVirtualKeysFeedback( TInt aType ) - { - iSymbolTable->UpdateAllVirtualKeysFeedback(aType); - } // --------------------------------------------------------------------------- // show bublble or not @@ -1363,12 +1299,13 @@ // void CPeninputFingerHwrArWnd::DrawGuideLine() { - if(iGuideLineOn) + if(!iGuideLineOn) { iWritingBox->HideGuideLine(ETrue); } else { + iWritingBox->HideGuideLine(EFalse); TInt style = CTransparentHwrWndExt::EGuideLineBottom; iWritingBox->SetGuideLineStyle( style ); @@ -1376,9 +1313,8 @@ CalculateGuideLinePos(); iWritingBox->SetBottomGuideLinePosition(iGuideLineBottomTl, iGuideLineBottomBr); - - iWritingBox->RefreshUI(); } + iWritingBox->RefreshUI(); } // -------------------------------------------------------------------------- diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/group/iconlist.txt --- a/textinput/peninputgenericitut/group/iconlist.txt Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/group/iconlist.txt Fri Mar 12 15:44:07 2010 +0200 @@ -46,3 +46,4 @@ -c8,8 qgn_indi_input_list_collapse.svg -c8,8 qgn_indi_input_backspace.svg -c8,8 qgn_indi_input_shift.svg +-c8,8 qgn_indi_itut_backspace1.svg diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/group/peninputgenericitut.mmp --- a/textinput/peninputgenericitut/group/peninputgenericitut.mmp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/group/peninputgenericitut.mmp Fri Mar 12 15:44:07 2010 +0200 @@ -121,5 +121,6 @@ LIBRARY fbscli.lib LIBRARY bitgdi.lib LIBRARY commonengine.lib +LIBRARY centralrepository.lib // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/inc/peninputgenericitutdata.h --- a/textinput/peninputgenericitut/inc/peninputgenericitutdata.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/inc/peninputgenericitutdata.h Fri Mar 12 15:44:07 2010 +0200 @@ -94,6 +94,17 @@ EPreviewBubbleInnerRect, EPreviewBubbleFont, EPreviewBubbleTextlayout, + EIndiPaneWithTextRect, + EIndiPaneWithoutTextRect, + EIndiIconWithTextRect, + EIndiIconWithoutTextRect, + EIndiTextLine, + ESpellIndiPaneWithoutTextRect, + ESpellIndiIconWithoutTextRect, + ESpellArrowLeft, + ESpellArrowLeftInner, + ESpellArrowRight, + ESpellArrowRightInner }; enum TControlId diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h --- a/textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h Fri Mar 12 15:44:07 2010 +0200 @@ -74,6 +74,7 @@ void SetCase(TInt aCase); TAny* RequestData(TInt aDataType); + TAny* RequestDataForPortraitWest(TInt aDataType); inline CPtiEngine* PtiEngine(); @@ -100,6 +101,9 @@ inline void SetLatinOnly( TBool aLatinOnly ); + inline TBool IsPortraitWest(); + + TBool IsChineseGlobalLanguage(); void SetUpdate(TBool aNeedUpdate); TBool IsUpdate() const; // when user press navi-next button on dropdownlist, there is need to @@ -164,6 +168,14 @@ TInt iIcfTextHeightCn; TRect iShiftIconRect; + TInt iIcfTextLeftMarginForPrtWest; + TInt iIcfTextRightMarginForPrtWest; + TInt iIcfTextTopMarginForPrtWest; + TInt iIcfTextBottomMarginForPrtWest; + TInt iIcfTextLineSpaceMarginForPrtWest; + TInt iIcfTextHeightForPrtWest; + TRect iShiftIconRectForPrtWest; + TInt iSpellIcfTextHeightForPrtWest; private: CGenericItutDataMgr(MItutLayoutContext* aLayoutContext, CPtiEngine* aPtiEngine ); @@ -188,6 +200,7 @@ TInt HindiKeypadResourceId(); TInt KoreanKeypadResourceId(); + void ReadLafInfoForPrtWest(); private: // data member RPointerArray iSubscriberList; @@ -324,6 +337,24 @@ TAknTextLineLayout iBtnTextFormat1; TFepIndicatorInfo iIndicatorData; + TRect iSpellQueryPaneRectForPrtWest; + TRect iOKRectForPrtWest; + TRect iCancelRectForPrtWest; + TAknTextLineLayout iBtnOKTextForPrtWest; + TAknTextLineLayout iBtnCancelTextForPrtWest; + TRect iSpellICFRectForPrtWest; + TRect iSpellICFBtnRectForPrtWest; + TRect iSpellICFBtnInnerRectForPrtWest; + TAknTextLineLayout iSpellText1ForPrtWest; + TAknTextLineLayout iSpellText2ForPrtWest; + TAknTextLineLayout iSpellText3ForPrtWest; + TRect iSpellIndiPaneWithoutTextForPrtWest; + TRect iSpellIndiIconWithoutTextForPrtWest; + CFont* iSpellIcfFontForPrtWest; + TRect iSpellArrowLeftRectForPrtWest; + TRect iSpellArrowLeftInnerRectForPrtWest; + TRect iSpellArrowRightRectForPrtWest; + TRect iSpellArrowRightInnerRectForPrtWest; RPointerArray iMenuItemList; TBool iNeedUpdate; @@ -337,6 +368,37 @@ TBool iPlusCharFlagChanged; TBool iNumberOnly; + TRect iLayoutRectForPrtWest; + TPoint iLayoutOffsetForPrtWest; + RArray iKeypadCellRectsForPrtWest; + TRect iKeypadRectForPrtWest; + TAknTextLineLayout iVkAlphaText1ForPrtWest; + TAknTextLineLayout iVkAlphaText2ForPrtWest; + TAknTextLineLayout iVkAlphaText3ForPrtWest; + TAknTextLineLayout iVkNumTextForPrtWest; + TRect iCloseRectForPrtWest; + TRect iCloseInnerRectForPrtWest; + TRect iArrowLeftRectForPrtWest; + TRect iArrowLeftInnerRectForPrtWest; + TRect iOptionsRectForPrtWest; + TRect iOptionInnerRectForPrtWest; + TRect iArrowRightRectForPrtWest; + TRect iArrowRightInnerRectForPrtWest; + TRect iBackspaceRectForPrtWest; + TRect iBackspaceInnerRectForPrtWest; + TRect iPreviewWndRectForPrtWest; + TRect iPreviewWndInnerRectForPrtWest; + TAknTextLineLayout iPreviewWndTextForPrtWest; + CFont* iBubbleFontForPrtWest; + TRect iIcfRectForPrtWest; + CFont* iIcfFontForPrtWest; + TInt iIcfTextAlignmentForPrtWest; + + TRect iIndiPaneRectWithTextForPrtWest; + TRect iIndiPaneRectWithoutTextForPrtWest; + TRect iIndiIconRectWithTextForPrtWest; + TRect iIndiIconRectWithoutTextForPrtWest; + TAknTextLineLayout iIndiTextForPrtWest; }; inline CPtiEngine* CGenericItutDataMgr::PtiEngine() @@ -393,6 +455,10 @@ iLatinOnly = aLatinOnly; } +inline TBool CGenericItutDataMgr::IsPortraitWest() + { + return !iLandScape && !IsChinese(); + } inline TBool CGenericItutDataMgr::IsValidLanguage(TInt aLanguage) { return (aLanguage != ELangTest && aLanguage != ELangNone); diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/inc/peninputgenericitutwindow.h --- a/textinput/peninputgenericitut/inc/peninputgenericitutwindow.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/inc/peninputgenericitutwindow.h Fri Mar 12 15:44:07 2010 +0200 @@ -125,6 +125,15 @@ void HandleButtonResOnLangDirChange( TInt aControlId ); void HandleButtonResOnLangDirChangeL( TInt aControlId ); + TBool IsPortraitWest(); + void IndiBubbleWithText(); + void IndiBubbleWithoutText(); + void UpdateIndiBubbleL( TUint8* aData ); + void SetIndiBubbleImageL( const TInt aImgID1, + const TInt aMaskID1, + const TInt aImgID2, + const TInt aMaskID2 ); + void SetIndiWithTextFlag( TBool aFlag ); private: CGenericItutWindow(CGenericItutWindowManager* aWindowMgr, CGenericItutUiLayout* aLayoutOwner, @@ -251,6 +260,7 @@ CFepInputContextField* iSpell; CPeninputSyncBitmapRotator* iBmpRotator; TFepSymbolOfHardwareOne iSymbolData; + TBool iIndiWithText; }; inline CFepLayoutMultiLineIcf* CGenericItutWindow::Icf() diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/inc/peninputgenericitutwindowmanager.h --- a/textinput/peninputgenericitut/inc/peninputgenericitutwindowmanager.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/inc/peninputgenericitutwindowmanager.h Fri Mar 12 15:44:07 2010 +0200 @@ -99,6 +99,7 @@ void HideByteWarningBubble(); void DisplayWarningNote(const TDesC& aInfo); /* Teleca change end, 18.05.2009 ssal */ + TBool IsPortraitWest(); private: CGenericItutWindowManager(CGenericItutUiLayout* aLayoutOwner, diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/src/peninputcommonbgctrl.cpp --- a/textinput/peninputgenericitut/src/peninputcommonbgctrl.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/src/peninputcommonbgctrl.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -62,6 +62,12 @@ return; } + TRect rect = Rect(); + if ( aRect == rect ) + { + return; + } + SetRect( aRect ); Draw(); diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -32,6 +32,8 @@ #include #include #include +#include +#include #include "peninputgenericitutdatamgr.h" #include "peninputgenericitutlayoutcontext.h" @@ -110,6 +112,7 @@ iKeypadCellRects.Close(); iKeypadCellRectsCn.Close(); iKeypadCellRectsQuery.Close(); + iKeypadCellRectsForPrtWest.Close(); delete iNumericKeymapData; } @@ -174,6 +177,295 @@ } } +void CGenericItutDataMgr::ReadLafInfoForPrtWest() + { + // Screen + TRect rect; + + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, rect); + + TAknWindowLineLayout mainWnd, bottomWnd, bottomPane; + TAknLayoutRect mainWndRect, bottomwndtrect, bottompanerect; + + mainWnd = AknLayoutScalable_Avkon::main_fep_vtchi_ss_pane(0).LayoutLine(); + mainWndRect.LayoutRect(rect, mainWnd); + + bottomWnd = AknLayoutScalable_Avkon::popup_fep_ituss_window(0).LayoutLine(); + bottomwndtrect.LayoutRect(mainWndRect.Rect(), bottomWnd); + + bottomPane = AknLayoutScalable_Avkon::ituss_keypad_pane(0).LayoutLine(); + bottompanerect.LayoutRect(bottomwndtrect.Rect(), bottomPane); + + iLayoutRectForPrtWest = mainWndRect.Rect(); + iLayoutOffsetForPrtWest = mainWndRect.Rect().iTl; + + // ICF + TAknWindowLineLayout icflayout, icflayoutbg, icflayoutpane; + TAknLayoutRect icfRect, icfRectBg, icfRectPane; + + icflayoutpane = AknLayoutScalable_Avkon::popup_fep_vtchi_icf_pane(0).LayoutLine(); + icfRectPane.LayoutRect( mainWndRect.Rect(), icflayoutpane ); + + icflayoutbg = AknLayoutScalable_Avkon::bg_icf_pane_cp01(0).LayoutLine(); + icfRectBg.LayoutRect( icfRectPane.Rect(), icflayoutbg ); + + icflayout = AknLayoutScalable_Avkon::vtchi_icf_list_pane(0).LayoutLine(); + icfRect.LayoutRect( icfRectBg.Rect(), icflayout ); + + iIcfRectForPrtWest = icfRect.Rect(); + + // icf indicator + TAknWindowLineLayout icfIndiPaneWithText, icfIndiPaneWithoutText, + indiIcon, indiText; + TAknLayoutRect icfIndiPaneRectWithText, icfIndiPaneRectWithoutText, indiIconRect, indiTextRect; + TAknTextLineLayout indiTextLayout; + + icfIndiPaneWithText = AknLayoutScalable_Avkon::icf_edit_indi_pane(1).LayoutLine(); + icfIndiPaneRectWithText.LayoutRect(icfRect.Rect(), icfIndiPaneWithText); + iIndiPaneRectWithTextForPrtWest = icfIndiPaneRectWithText.Rect(); + + icfIndiPaneWithoutText = AknLayoutScalable_Avkon::icf_edit_indi_pane(0).LayoutLine(); + icfIndiPaneRectWithoutText.LayoutRect(icfRect.Rect(), icfIndiPaneWithoutText); + iIndiPaneRectWithoutTextForPrtWest = icfIndiPaneRectWithoutText.Rect(); + + iIndiIconRectWithTextForPrtWest = TRect( 0, 0, 60, 20 ); + iIndiIconRectWithoutTextForPrtWest = TRect( 0, 0, 60, 20 ); + + indiTextLayout = AknLayoutScalable_Avkon::icf_edit_indi_pane_t1(0).LayoutLine(); + iIndiTextForPrtWest = indiTextLayout; + + // icf text + TAknTextLineLayout icflefttext, icflefttext1; + icflefttext = AknLayoutScalable_Avkon::vtchi_icf_list_pane_t1(0, 0, 0).LayoutLine(); + icflefttext1 = AknLayoutScalable_Avkon::vtchi_icf_list_pane_t1(0, 0, 1).LayoutLine(); + + iIcfTextAlignmentForPrtWest = icflefttext.iJ; + iIcfTextLeftMarginForPrtWest = icflefttext.il; + //iIcfTextRightMarginForPrtWest = icflefttext.ir; + iIcfTextRightMarginForPrtWest = iIcfTextLeftMarginForPrtWest; + + TAknLayoutText ctxt, ctxt1; + ctxt.LayoutText( icfRect.Rect(), icflefttext ); + ctxt1.LayoutText( icfRect.Rect(), icflefttext1 ); + + iIcfTextTopMarginForPrtWest = ctxt.TextRect().iTl.iY - icfRect.Rect().iTl.iY; + iIcfTextLineSpaceMarginForPrtWest = ctxt1.TextRect().iTl.iY - ctxt.TextRect().iBr.iY; + iIcfTextHeightForPrtWest = ctxt.TextRect().Height(); + + TInt maxRow = ( iIcfRectForPrtWest.Height() - iIcfTextTopMarginForPrtWest ) + / ( iIcfTextHeightForPrtWest + iIcfTextLineSpaceMarginForPrtWest ); + + iIcfTextBottomMarginForPrtWest = + iIcfRectForPrtWest.Height() - ( iIcfTextHeightForPrtWest + iIcfTextLineSpaceMarginForPrtWest ) + * maxRow - iIcfTextTopMarginForPrtWest; + + iIcfFontForPrtWest = const_cast(AknLayoutUtils::FontFromId(icflefttext.iFont, NULL)); + + // Keypad + TAknWindowLineLayout itucell, ituinnercell; + TAknLayoutRect itucellrect, ituinnercellrect; + + iKeypadCellRectsForPrtWest.Reset(); + + itucell = AknLayoutScalable_Avkon::cell_ituss_key_pane(0).LayoutLine(); + itucellrect.LayoutRect(bottompanerect.Rect(), itucell); + ituinnercell = AknLayoutScalable_Avkon::bg_cell_ituss_key_g1(1).LayoutLine(); + + iKeypadRectForPrtWest = bottompanerect.Rect(); + iKeypadRectForPrtWest.SetHeight(itucellrect.Rect().Height() * 4); + iKeypadRectForPrtWest.Move(-iLayoutOffsetForPrtWest); + + TRect cellrect = itucellrect.Rect(); + cellrect.Move(-iLayoutOffsetForPrtWest); + cellrect.Move(-iKeypadRectForPrtWest.iTl); + + // keypad is 4 rows, 3 cols + for (TInt i = 0; i < 4; i++) + { + for (TInt j = 0; j < 3; j++) + { + TRect keyrect = cellrect; + keyrect.Move(itucellrect.Rect().Width() * j, itucellrect.Rect().Height() * i); + + ituinnercellrect.LayoutRect(keyrect, ituinnercell); + iKeypadCellRectsForPrtWest.Append(ituinnercellrect.Rect()); + + // read shift icon rect + if( i == 3 && j == 2 ) + { + TAknWindowLineLayout shiftIcon = AknLayoutScalable_Avkon:: + cell_ituss_key_pane_g2( 0 ).LayoutLine(); + TAknLayoutRect shiftIconRect; + shiftIconRect.LayoutRect( keyrect, shiftIcon ); + iShiftIconRectForPrtWest = shiftIconRect.Rect(); + } + } + } + + + iVkNumTextForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t1(0).LayoutLine(); + // Key text row 1 + iVkAlphaText1ForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t2(0).LayoutLine(); + iVkAlphaText3ForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t4(0).LayoutLine(); + // Key text row 2 + iVkAlphaText2ForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t3(0).LayoutLine(); + + // close button + TAknWindowLineLayout funcbtn, funcbtnbg, funcbtninner; + TAknLayoutRect funcrect, funcbgrect, funcinnerrect, arrowleftinnerrect, arrowrightinnerrect; + TAknLayoutRect optioninnerrect, backspaceinnerrect; + + funcbtn = AknLayoutScalable_Avkon::cell_ituss_key_pane(1).LayoutLine(); + funcrect.LayoutRect(bottompanerect.Rect(), funcbtn); + + funcbtnbg = AknLayoutScalable_Avkon::bg_cell_ituss_key_g1(1).LayoutLine(); + funcbgrect.LayoutRect(funcrect.Rect(), funcbtnbg); + + funcbtninner = AknLayoutScalable_Avkon::cell_ituss_key_pane_g1(0).LayoutLine(); + funcinnerrect.LayoutRect(funcrect.Rect(), funcbtninner); + + TInt btnWidth = funcrect.Rect().Width(); + // close button + iCloseRectForPrtWest = funcbgrect.Rect(); + iCloseRectForPrtWest.Move(0, funcrect.Rect().Height() * 4); + iCloseRectForPrtWest.Move(-iLayoutOffsetForPrtWest); + + iCloseInnerRectForPrtWest = funcinnerrect.Rect(); + iCloseInnerRectForPrtWest.Move(0, funcrect.Rect().Height() * 4); + iCloseInnerRectForPrtWest.Move(-iLayoutOffsetForPrtWest); + + // arrow left button + iArrowLeftRectForPrtWest = iCloseRectForPrtWest; + iArrowLeftRectForPrtWest.Move(btnWidth, 0); + arrowleftinnerrect.LayoutRect(iArrowLeftRectForPrtWest, funcbtninner); + iArrowLeftInnerRectForPrtWest = arrowleftinnerrect.Rect(); + + // option button + iOptionsRectForPrtWest = iArrowLeftRectForPrtWest; + iOptionsRectForPrtWest.Move(btnWidth, 0); + optioninnerrect.LayoutRect(iOptionsRectForPrtWest, funcbtninner); + iOptionInnerRectForPrtWest = optioninnerrect.Rect(); + + // arrow right button + iArrowRightRectForPrtWest = iOptionsRectForPrtWest; + iArrowRightRectForPrtWest.Move(btnWidth, 0); + arrowrightinnerrect.LayoutRect(iArrowRightRectForPrtWest, funcbtninner); + iArrowRightInnerRectForPrtWest = arrowrightinnerrect.Rect(); + + // backspace button + iBackspaceRectForPrtWest = iArrowRightRectForPrtWest; + iBackspaceRectForPrtWest.Move(btnWidth, 0); + backspaceinnerrect.LayoutRect(iBackspaceRectForPrtWest, funcbtninner); + iBackspaceInnerRectForPrtWest = backspaceinnerrect.Rect(); + + // preview popup window + TAknWindowLineLayout previewWnd, previewBackground, previewWndInner; + TAknLayoutRect previewWndRect, previewBackgroundRect, previewWndInnerRect; + TAknLayoutText previewWndText; + previewWnd = AknLayoutScalable_Avkon::popup_fshwr2_char_preview_window(0).LayoutLine(); + + previewWndRect.LayoutRect( iLayoutRectForPrtWest, previewWnd ); + previewBackground = AknLayoutScalable_Avkon::bg_popup_fep_char_preview_window_cp01().LayoutLine(); + previewBackgroundRect.LayoutRect( previewWndRect.Rect(), previewBackground ); + iPreviewWndRectForPrtWest = previewBackgroundRect.Rect(); + + previewWndInner = AknLayoutScalable_Avkon::bg_popup_fep_char_preview_window_g9().LayoutLine(); + previewWndInnerRect.LayoutRect( previewBackgroundRect.Rect(), previewWndInner ); + + iPreviewWndInnerRectForPrtWest = previewWndInnerRect.Rect(); + iPreviewWndTextForPrtWest = + AknLayoutScalable_Avkon::popup_fshwr2_char_preview_window_t1(0).LayoutLine(); + previewWndText.LayoutText(previewWndRect.Rect(), iPreviewWndTextForPrtWest); + iBubbleFontForPrtWest = const_cast(previewWndText.Font()); + + // LAF for spell mode + TAknWindowLineLayout btnPaneWnd, okBtnWnd, cancelBtnWnd, spellwnd; + TAknLayoutRect btnPaneRect, okBtnRect, cancelBtnRect, spellwndtrect; + + iSpellQueryPaneRectForPrtWest = mainWndRect.Rect(); + + spellwnd = AknLayoutScalable_Avkon::popup_fep_ituss_window(1).LayoutLine(); + spellwndtrect.LayoutRect( mainWndRect.Rect(), spellwnd ); + + btnPaneWnd = AknLayoutScalable_Avkon::ituss_sks_pane(0).LayoutLine(); + btnPaneRect.LayoutRect( spellwndtrect.Rect(), btnPaneWnd ); + + okBtnWnd = AknLayoutScalable_Avkon::ituss_sks_pane_g1(0).LayoutLine(); + okBtnRect.LayoutRect( btnPaneRect.Rect(), okBtnWnd ); + iOKRectForPrtWest = okBtnRect.Rect(); + + cancelBtnWnd = AknLayoutScalable_Avkon::ituss_sks_pane_g2(0).LayoutLine(); + cancelBtnRect.LayoutRect( btnPaneRect.Rect(), cancelBtnWnd ); + iCancelRectForPrtWest = cancelBtnRect.Rect(); + + iBtnOKTextForPrtWest = AknLayoutScalable_Avkon::ituss_sks_pane_t1(0).LayoutLine(); + iBtnCancelTextForPrtWest = AknLayoutScalable_Avkon::ituss_sks_pane_t2(0).LayoutLine(); + + iBtnOKTextForPrtWest.ir = 7; + iBtnCancelTextForPrtWest.ir = 7; + + iBtnCancelTextForPrtWest = iBtnOKTextForPrtWest; + + TAknWindowLineLayout queryTopPane, queryICFPane, icfSpellIndiPane, middleInnerBtn; + TAknLayoutRect queryTopPaneRect, queryICFPaneRect, icfSpellIndiPaneRect, + middleButton, middleInnerRect; + + queryTopPane = AknLayoutScalable_Avkon::popup_fep_vtchi_icf_pane(1).LayoutLine(); + queryTopPaneRect.LayoutRect( mainWndRect.Rect(), queryTopPane ); + + queryICFPane = AknLayoutScalable_Avkon::vtchi_query_pane(0).LayoutLine(); + queryICFPaneRect.LayoutRect( queryTopPaneRect.Rect(), queryICFPane ); + iSpellICFRectForPrtWest = queryICFPaneRect.Rect(); + + TRect middleButtonPaneRect = spellwndtrect.Rect(); + middleButtonPaneRect.Move( 5, 3 ); + + TRect cellSpellRect; + cellSpellRect.iTl = middleButtonPaneRect.iTl; + cellSpellRect.SetHeight( itucellrect.Rect().Height()); + cellSpellRect.SetWidth( itucellrect.Rect().Width()); + + // Left + middleButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowLeftRectForPrtWest = middleButton.Rect(); + + middleInnerBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane_g1(2).LayoutLine(); + middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); + iSpellArrowLeftInnerRectForPrtWest = middleInnerRect.Rect(); + + // Right + cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); + middleButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowRightRectForPrtWest = middleButton.Rect(); + + middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); + iSpellArrowRightInnerRectForPrtWest = middleInnerRect.Rect(); + + // BackSpace + cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); + middleButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellICFBtnRectForPrtWest = middleButton.Rect(); + + middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); + iSpellICFBtnInnerRectForPrtWest = middleInnerRect.Rect(); + + iSpellText1ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t1(0).LayoutLine(); + iSpellText2ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t2(0).LayoutLine(); + iSpellText3ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t3(0).LayoutLine(); + + iSpellIcfFontForPrtWest = const_cast( + AknLayoutUtils::FontFromId(iSpellText1ForPrtWest.iFont, NULL)); + + TAknLayoutText cSpelltxt1; + cSpelltxt1.LayoutText( queryICFPaneRect.Rect(), iSpellText1ForPrtWest ); + iSpellIcfTextHeightForPrtWest = cSpelltxt1.TextRect().Height(); + + + icfSpellIndiPane = AknLayoutScalable_Avkon::icf_edit_indi_pane(0).LayoutLine(); + icfSpellIndiPaneRect.LayoutRect(queryICFPaneRect.Rect(), icfSpellIndiPane); + iSpellIndiPaneWithoutTextForPrtWest = icfSpellIndiPaneRect.Rect(); + iSpellIndiIconWithoutTextForPrtWest = TRect( 0, 0, 50, 17 ); + } void CGenericItutDataMgr::ReadLafInfo() { // Screen @@ -183,6 +475,7 @@ iLandScape = iScreenSize.iWidth < iScreenSize.iHeight ? EFalse : ETrue; + ReadLafInfoForPrtWest(); AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, rect); // finger Layout @@ -767,13 +1060,29 @@ if (icffield && InputLanguage() != ELangNone) { - TRAP_IGNORE(icffield->SetTextAlignmentL(iIcfTextAlignment, InputLanguage())); + if ( IsPortraitWest()) + { + TRAP_IGNORE(icffield->SetTextAlignmentL( + iIcfTextAlignmentForPrtWest, InputLanguage())); + } + else + { + TRAP_IGNORE(icffield->SetTextAlignmentL( + iIcfTextAlignment, InputLanguage())); + } } } void CGenericItutDataMgr::SetIcfTextAlignment(TInt aAlignment) { - iIcfTextAlignment = aAlignment; + if ( IsPortraitWest()) + { + iIcfTextAlignmentForPrtWest = aAlignment; + } + else + { + iIcfTextAlignment = aAlignment; + } } void CGenericItutDataMgr::SetLanguageL(TInt aLanguage) @@ -890,8 +1199,474 @@ } } +TBool CGenericItutDataMgr::IsChineseGlobalLanguage() + { + CRepository* repository = NULL; + TRAPD(ret, repository = CRepository::NewL(KCRUidAknFep)); + if (ret != KErrNone) + { + return EPluginInputModeAll; + } + TInt curLanguage ; + repository->Get(KAknFepInputTxtLang, curLanguage); + delete repository; + + return (curLanguage == ELangPrcChinese || curLanguage == ELangHongKongChinese + || curLanguage == ELangTaiwanChinese); + } + +TAny* CGenericItutDataMgr::RequestDataForPortraitWest(TInt aDataType) + { + switch ( aDataType ) + { + case EScreenSize: + { + return &iScreenSize; + } + case ELayoutOffset: + { + return &iLayoutOffsetForPrtWest; + } + case ELayoutRect: + { + if ( IsChineseGlobalLanguage()) + { + return &iLayoutRect; + } + else + { + return &iLayoutRectForPrtWest; + } + } + case EIcfRect: + { + return &iIcfRectForPrtWest; + } + case EIcfFont: + { + if ( IsChineseGlobalLanguage()) + { + return IsChinese() ? reinterpret_cast(iIcfFontCn) : + reinterpret_cast(iIcfFont); + } + else + { + return reinterpret_cast(iIcfFontForPrtWest); + } + } + case EBackspaceRect: + case EItutPosClear: + { + return &iBackspaceRectForPrtWest; + } + case EKeypadRect: + { + if ( IsChineseGlobalLanguage()) + { + return IsChinese() ? &iKeypadRectCn : &iKeypadRect; + } + else + { + return &iKeypadRectForPrtWest; + } + } + case EKeypadCellRects: + { + if ( IsChineseGlobalLanguage()) + { + return IsChinese() ? &iKeypadCellRectsCn : &iKeypadCellRects; + } + else + { + return &iKeypadCellRectsForPrtWest; + } + } + case EKeypadLeftTextLine: + { + if ( IsChineseGlobalLanguage()) + { + return &iVkNumText; + } + else + { + return &iVkNumTextForPrtWest; + } + } + case EKeypadRightTextLine1: + { + if ( IsChineseGlobalLanguage()) + { + return IsThai() ? &iVkAlphaText1ForThai : &iVkAlphaText1; + } + else + { + return &iVkAlphaText1ForPrtWest; + } + } + case EKeypadRightTextLine2: + { + if ( IsChineseGlobalLanguage()) + { + return IsThai() ? &iVkAlphaText2ForThai : &iVkAlphaText2; + } + else + { + return &iVkAlphaText2ForPrtWest; + } + } + case EKeypadRightTextLine3: + { + if ( IsChineseGlobalLanguage()) + { + return IsThai() ? &iVkAlphaText3ForThai : &iVkAlphaText3; + } + else + { + return &iVkAlphaText3ForPrtWest; + } + } + case EDropdownlistUnitWidth: + { + return &iCandsUnitWidth; + } + case EDropdownlistUnitHeight: + { + return &iCandsUnitHeight; + } + case EDropdownlistHorizontalMargin: + { + return &iCandsHorizontalMargin; + } + case EDropdownlistVerticalMargin: + { + return &iCandsVerticalMargin; + } + case EDropdownListNaviWidth: + { + return &iCandsNaviWidth; + } + case EDropdownListSpinBtnHeight: + { + return &iCandsSpinBtnHeight; + } + case EDropdownListSpellLTPos: + { + return &iCandsSpellLTPos; + } + case EDropdownListCandsLTPos: + { + return &iCandsLTPos; + } + case EDropdownListPuncLTPos: + { + return &iCandsPuncLTPos; + } + case EDropdownListFont: + { + return reinterpret_cast(iCandsFont); + } + case EDropdownListTextMargin: + { + return &iCandsTextMargin; + } + case EDropdownListTextColor: + { + return &iCandsTextColor; + } + case ESpellRect: + { + return &iSpellRect; + } + case ESpellFont: + { + return reinterpret_cast(iSpellIcfFontForPrtWest); + } + case ESpellTextColor: + { + return &iSpellTextColor; + } + case ELanguage: + { + return &iLanguage; + } + case EInputMode: + { + return &iInputMode; + } + case ECase: + { + return &iCase; + } + case EChnCandidates: + { + return &iCandidates; + } + case EChnPuncCandidates: + { + return &iPuncCandidates; + } + case EArrowLeftRect: + case EItutPosArrowLeft: + { + return &iArrowLeftRectForPrtWest; + } + case EArrowRightRect: + case EItutPosArrowRight: + { + return &iArrowRightRectForPrtWest; + } + case EArrowUpRect: + case EItutPosArrowUp: + { + return &iArrowUpRect; + } + case EArrowDownRect: + case EItutPosArrowDown: + { + return &iArrowDownRect; + } + case EItutPosSend: + { + return &iSendRect; + } + case EItutPosDisconn: + { + return &iDisconnRect; + } + case EMatchSelectionTlPos: + { + return &iSelectionTl; + } + case EMatchSelectionItemSize: + { + return &iSelectionItemSize; + } + case EMatchSelectionItemMargin: + { + return &iSelectionItemMargin; + } + case EMatchSelectionTextLine: + { + return &iSelectionTextLine; + } + case EOptionsRect: + { + return &iOptionsRectForPrtWest; + } + case ECloseRect: + { + return &iCloseRectForPrtWest; + } + case ELeftInnerRect: + { + return &iArrowLeftInnerRectForPrtWest; + } + case ERightInnerRect: + { + return &iArrowRightInnerRectForPrtWest; + } + case EUpInnerRect: + { + return &iArrowUpInnerRect; + } + case EDownInnerRect: + { + return &iArrowDownInnerRect; + } + case EBackspaceInnerRect: + { + return &iBackspaceInnerRectForPrtWest; + } + case ECloseInnerRect: + { + return &iCloseInnerRectForPrtWest; + } + case EOptionInnerRect: + { + return &iOptionInnerRectForPrtWest; + } + case EItutPosOk: + { + if ( IsChineseGlobalLanguage()) + { + return &iOkRect; + } + else + { + return &iOKRectForPrtWest; + } + } + case EItutPosCancel: + { + if ( IsChineseGlobalLanguage()) + { + return &iCancelRect; + } + else + { + return &iCancelRectForPrtWest; + } + } + case EBtnTextLine: + { + if ( IsChineseGlobalLanguage()) + { + return &iBtnTextFormat; + } + else + { + return &iBtnOKTextForPrtWest; + } + } + case ESpellTextCancle: + { + if ( IsChineseGlobalLanguage()) + { + return &iBtnTextFormat1; + } + else + { + return &iBtnCancelTextForPrtWest; + } + } + case ESpellICFRect: + { + if ( IsChineseGlobalLanguage()) + { + return &iSpellICFRect; + } + else + { + return &iSpellICFRectForPrtWest; + } + } + case ESpellClrRect: + { + if ( IsChineseGlobalLanguage()) + { + return &iSpellClrRect; + } + else + { + return &iSpellICFBtnRectForPrtWest; + } + } + case ESpellClrInnerRect: + { + if ( IsChineseGlobalLanguage()) + { + return &iSpellClrInnerRect; + } + else + { + return &iSpellICFBtnInnerRectForPrtWest; + } + } + case ESpellEditIndicatorRect: + { + return &iSpellEditIndicator; + } + case ESpellQueryPaneRect: + { + if ( IsChineseGlobalLanguage()) + { + return &iSpellQueryPaneRect; + } + else + { + return &iSpellQueryPaneRectForPrtWest; + } + } + case ELatinOnly: + { + return &iLatinOnly; + } + case EPreviewBubbleRect: + { + return &iPreviewWndRectForPrtWest; + } + case EPreviewBubbleInnerRect: + { + return &iPreviewWndInnerRectForPrtWest; + } + case EPreviewBubbleTextlayout: + { + return &iPreviewWndTextForPrtWest; + } + case EPreviewBubbleFont: + { + return reinterpret_cast(iBubbleFontForPrtWest); + } + case EImIndicatorRect: + { + if (iSpellMode) + { + return &iSpellEditIndicator; + } + + CalWesternIndicator(); + return &iCalindwesternRect; + } + case EImIndicatorOuterRect: + { + return &iImIndiOuterRect; + } + case EIndiPaneWithTextRect: + { + return &iIndiPaneRectWithTextForPrtWest; + } + case EIndiPaneWithoutTextRect: + { + return &iIndiPaneRectWithoutTextForPrtWest; + } + case EIndiIconWithTextRect: + { + return &iIndiIconRectWithTextForPrtWest; + } + case EIndiIconWithoutTextRect: + { + return &iIndiIconRectWithoutTextForPrtWest; + } + case EIndiTextLine: + { + return &iIndiTextForPrtWest; + } + case ESpellIndiPaneWithoutTextRect: + { + return &iSpellIndiPaneWithoutTextForPrtWest; + } + case ESpellIndiIconWithoutTextRect: + { + return &iSpellIndiIconWithoutTextForPrtWest; + } + case ESpellArrowLeft: + { + return &iSpellArrowLeftRectForPrtWest; + } + case ESpellArrowLeftInner: + { + return &iSpellArrowLeftInnerRectForPrtWest; + } + case ESpellArrowRight: + { + return &iSpellArrowRightRectForPrtWest; + } + case ESpellArrowRightInner: + { + return &iSpellArrowRightInnerRectForPrtWest; + } + default: + break; + } + + return NULL; + } TAny* CGenericItutDataMgr::RequestData(TInt aDataType) { + if ( IsPortraitWest()) + { + return RequestDataForPortraitWest( aDataType ); + } switch ( aDataType ) { case EScreenSize: diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -192,8 +192,26 @@ case EItutExtCmdSetIcfData: case ECmdPenInputCase: case ECmdPenInputFingerMatchSelection: + { + if (UiMgr()) + { + TInt handled = KErrNone; + TRAP_IGNORE(handled = UiMgr()->HandleCommandL(aCmd, aData)); + return handled; + } + } + break; case ECmdPenInputFingerSpelling: { + + // Fix bug EZLG-7YUAP7 + // When writing language is Chinese, and Spell On, enforce setting language to English + if( (*(reinterpret_cast(aData))) && iDataMgr->IsChinese() ) + { + iDataMgr->SetLanguageL( ELangEnglish ); + } + // + if (UiMgr()) { TInt handled = KErrNone; @@ -381,6 +399,17 @@ if (previousLang != aLanguage) { + + // Fix bug for EZLG-7YUAP7 + // When state is spelling, don¡¯t apply LAF Data + if(iCurrentUiMgr + && iCurrentUiMgr->CurrentState() + && iCurrentUiMgr->CurrentState()->StateType() == CGenericItutUiMgrBase::EStateSpelling) + { + return; + } + // + ApplyVariantLafDataL(); } } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -47,6 +47,7 @@ #include "peninputcommonbgctrl.h" _LIT(KBmpFileName, "z:\\resource\\apps\\peninputgenericitut.mbm"); +_LIT(KEmptyString, ""); const TInt KImageMajorSkinId = EAknsMajorGeneric; const TUint KDefaultSpellTextColor = 0; @@ -74,7 +75,8 @@ CGenericItutDataMgr* aDataMgr) : iDataMgr(aDataMgr), iLayoutOwner(aLayoutOwner), - iWindowMgr(aWindowMgr) + iWindowMgr(aWindowMgr), + iIndiWithText( EFalse ) { } @@ -158,7 +160,14 @@ // read key shift icon res CPenInputColorIcon* shiftIcon = CPenInputColorIcon::NewL( R_ITUT_KEYPAD_SHIFT_ICON ); - shiftIcon->ResizeL( iDataMgr->iShiftIconRect.Size() ); + if ( IsPortraitWest()) + { + shiftIcon->ResizeL( iDataMgr->iShiftIconRectForPrtWest.Size()); + } + else + { + shiftIcon->ResizeL( iDataMgr->iShiftIconRect.Size()); + } iStandardItutKp->SetShiftIcon( shiftIcon ); //set key to be 9 piece graphics @@ -497,7 +506,7 @@ void CGenericItutWindow::CreateAllButtonL() { - CFepUiBaseCtrl* temp = NULL; + //CFepUiBaseCtrl* temp = NULL; //create backgrand CreateBackGroundControlL(); @@ -506,13 +515,10 @@ EBackspaceInnerRect,R_FINGER_RAWKEY_BACKSPACE); //create switch + /* CreateButtonL(ECommonButton, ECtrlIdSwitch, ESwitchRect, ESwitchInnerRect, R_FINGER_LAYOUT_SWITCH); - - //create indicator -// temp = CreateButtonL(ERawKeyButton, ECtrlIdIndicator, KUnavailableID, -// KUnavailableID,KUnavailableID, 127); //If open indicator menu, please use the following 2 lines temp = CreateButtonL(ECommonButton, ECtrlIdIndicator, KUnavailableID, KUnavailableID,KUnavailableID); @@ -523,7 +529,7 @@ } temp = NULL; - + */ // create navi CreateButtonL(ERawKeyButton, ECtrlIdArrowLeft, EArrowLeftRect, @@ -547,9 +553,9 @@ ECloseInnerRect, R_PENINPUT_FINGER_CLOSE); - CAknFepCtrlLabel* spellIndicator = CAknFepCtrlLabel::NewL(iLayoutOwner, ECtrlIdSpellIndicator); - AddControlL(spellIndicator); - spellIndicator->Hide(ETrue); + //CAknFepCtrlLabel* spellIndicator = CAknFepCtrlLabel::NewL(iLayoutOwner, ECtrlIdSpellIndicator); + //AddControlL(spellIndicator); + //spellIndicator->Hide(ETrue); } @@ -760,6 +766,10 @@ void CGenericItutWindow::ShowEditorMenuL(TInt* aData) { + if ( NULL == iEditorMenu ) + { + return; + } TInt count = *aData; iEditorMenu->ClearItemsL(); for (TInt i=1;i<=count;i++ ) @@ -790,6 +800,7 @@ CreateICFL(); CreateMatchSelectionCtrlL(); + /* AddEditorMenuL(); iInputModeSwitch = CPeninputLayoutInputmodelChoice::NewL( @@ -798,6 +809,7 @@ EPluginInputModeItut ); iInputModeSwitch->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub ); AddControlL( iInputModeSwitch ); + */ iBubbleSize = AknLayoutScalable_Apps::popup_char_count_window().LayoutLine(); @@ -812,6 +824,7 @@ KAknsIIDQsnFrInputPreviewMiddle, KAknsIIDQsnFrInputPreviewSideR); iICF->SetMsgBubbleCtrlSize(TSize(iBubbleSize.iW,iBubbleSize.iH)); + iICF->MsgBubbleCtrl()->SetTextL( KEmptyString ); /* Teleca change start, 18.05.2009 ssal */ iICF->InfoBubbleCtrl()->SetTextFormat(iBubbleTextLayout); iICF->InfoBubbleCtrl()->SetTextColorIndex( EAknsCIQsnTextColorsCG67 ); @@ -834,6 +847,30 @@ { return; } + // create switch + CreateButtonL(ECommonButton, ECtrlIdSwitch, ESwitchRect, + ESwitchInnerRect, R_FINGER_LAYOUT_SWITCH); + + // create indicator button + CFepUiBaseCtrl* indicatorBtn = CreateButtonL(ECommonButton, + ECtrlIdIndicator, KUnavailableID, + KUnavailableID,KUnavailableID); + + // create spell indicator + CAknFepCtrlLabel* spellIndicator = CAknFepCtrlLabel::NewL(iLayoutOwner, ECtrlIdSpellIndicator); + AddControlL(spellIndicator); + spellIndicator->Hide(ETrue); + + // create input case type menu + AddEditorMenuL(); + + // create switch input mode menu + iInputModeSwitch = CPeninputLayoutInputmodelChoice::NewL( + iLayoutOwner, + ECtrlIdInputSwitch, + EPluginInputModeItut ); + iInputModeSwitch->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub ); + AddControlL( iInputModeSwitch ); CreateDropdownListL(); // create spell control for stroke/zhuyin @@ -980,14 +1017,93 @@ return err; } +void CGenericItutWindow::SetIndiBubbleImageL( const TInt aImgID1, + const TInt aMaskID1, + const TInt aImgID2, + const TInt aMaskID2 ) + { + MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); + CFbsBitmap* bmp1 = NULL; + CFbsBitmap* mask1 = NULL; + TInt colorIndex = EAknsCIQsnIconColorsCG30; + + AknsUtils::CreateColorIconL(skininstance, + KAknsIIDQsnIconColors, + KAknsIIDQsnIconColors, + colorIndex, + bmp1, + mask1, + AknIconUtils::AvkonIconFileName(), + aImgID1, + aMaskID1, + KRgbGray); + CleanupStack::PushL( bmp1 ); + CleanupStack::PushL( mask1 ); + + AknIconUtils::GetContentDimensions(bmp1, iIndicatorSize); + + CFbsBitmap* bmp2 = NULL; + CFbsBitmap* mask2 = NULL; + AknsUtils::CreateColorIconL(skininstance, + KAknsIIDQsnIconColors, + KAknsIIDQsnIconColors, + colorIndex, + bmp2, + mask2, + AknIconUtils::AvkonIconFileName(), + aImgID2, + aMaskID2, + KRgbGray); + + CleanupStack::PushL( bmp2 ); + CleanupStack::PushL( mask2 ); + + AknIconUtils::GetContentDimensions(bmp2, iIndicatorTextSize); + + TRect boundRect; + if ( iIndiWithText ) + { + boundRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData(EIndiIconWithTextRect)); + } + else + { + boundRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData(EIndiIconWithoutTextRect)); + } + TRect imgrect, textrect; + + CalIndicatorRect(boundRect, imgrect, textrect, EIndiAlignCenter); + AknIconUtils::SetSize(bmp1, imgrect.Size(), EAspectRatioNotPreserved); + AknIconUtils::SetSize(mask1, imgrect.Size(), EAspectRatioNotPreserved); + AknIconUtils::SetSize(bmp2, textrect.Size(), EAspectRatioNotPreserved); + AknIconUtils::SetSize(mask2, textrect.Size(), EAspectRatioNotPreserved); + + CFbsBitmap* bmp3 = AknPenImageUtils::CombineTwoImagesL(bmp1, bmp2, bmp1->DisplayMode()); + CFbsBitmap* mask3 = AknPenImageUtils::CombineTwoImagesL(mask1, mask2, EGray256); + + iICF->MsgBubbleCtrl()->SetBitmapParam( bmp3, mask3, + KAknsIIDQsnFrInputPreviewSideL, + KAknsIIDQsnFrInputPreviewMiddle, + KAknsIIDQsnFrInputPreviewSideR ); + + CleanupStack::PopAndDestroy( mask2 ); + CleanupStack::PopAndDestroy( bmp2 ); + CleanupStack::PopAndDestroy( mask1 ); + CleanupStack::PopAndDestroy( bmp1 ); + } void CGenericItutWindow::SetIndicatorImageL(CFepUiBaseCtrl* aIndicator, const TInt aImgID1, const TInt aMaskID1, const TInt aImgID2, const TInt aMaskID2) { + if ( NULL == aIndicator ) + { + return; + } MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); CFbsBitmap* bmp1 = NULL; @@ -1098,6 +1214,57 @@ CleanupStack::PopAndDestroy( bmp1 ); } +void CGenericItutWindow::UpdateIndiBubbleL( TUint8* aData ) + { + RDesReadStream readStream; + TFepIndicatorInfo indicatorData; + + TPtr8 countPtr( aData, 4*sizeof(TInt), 4*sizeof(TInt) ); + readStream.Open(countPtr); + CleanupClosePushL(readStream); + + indicatorData.iIndicatorImgID = readStream.ReadInt32L(); + indicatorData.iIndicatorMaskID = readStream.ReadInt32L(); + indicatorData.iIndicatorTextImgID = readStream.ReadInt32L(); + indicatorData.iIndicatorTextMaskID = readStream.ReadInt32L(); + + CleanupStack::PopAndDestroy(&readStream); + + if (indicatorData.iIndicatorImgID != 0 && + indicatorData.iIndicatorMaskID != 0 && + indicatorData.iIndicatorTextImgID != 0 && + indicatorData.iIndicatorTextMaskID != 0) + { + iDataMgr->SetIndicatorData(indicatorData); + iImDimensionSet = ETrue; + + SetIndiBubbleImageL( indicatorData.iIndicatorImgID, + indicatorData.iIndicatorMaskID, + indicatorData.iIndicatorTextImgID, + indicatorData.iIndicatorTextMaskID); + + if ( iLayoutOwner->UiMgr()->CurrentState()->StateType() == + CGenericItutUiMgrBase::EStateSpelling ) + { + TRect bubbleRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( ESpellIndiPaneWithoutTextRect )); + TRect iconRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( ESpellIndiIconWithoutTextRect )); + TSize offset( 0, 6 ); + TSize size( iconRect.Width(), iconRect.Height()); + + iICF->MsgBubbleCtrl()->SetRect( bubbleRect ); + iICF->MsgBubbleCtrl()->SetIconOffsetAndSize( offset, size ); + iICF->ShowBubble( KEmptyString, iICF->MsgBubbleCtrl()->Rect()); + } + else + { + TBuf<100> text; + iICF->MsgBubbleCtrl()->GetText( text ); + iICF->ShowBubble( text, iICF->MsgBubbleCtrl()->Rect()); + } + } + } void CGenericItutWindow::UpdateIndicatorL(TUint8* aData) { @@ -1140,7 +1307,17 @@ CGenericItutUiMgrBase::EStateSpelling) { temp = Control(ECtrlIdSpellIndicator); - Control(ECtrlIdIndicator)->Hide(ETrue); + if ( !temp ) + { + return; + } + + CFepUiBaseCtrl* indi = Control(ECtrlIdIndicator); + if ( !indi ) + { + return; + } + indi->Hide(ETrue); SetIndicatorImageL(temp, indicatorData.iIndicatorImgID, indicatorData.iIndicatorMaskID, @@ -1159,7 +1336,17 @@ else { temp = Control(ECtrlIdIndicator); - Control(ECtrlIdSpellIndicator)->Hide(ETrue); + if ( !temp ) + { + return; + } + + CFepUiBaseCtrl* indi = Control(ECtrlIdSpellIndicator); + if ( !indi ) + { + return; + } + indi->Hide(ETrue); SetIndicatorImageL(temp, indicatorData.iIndicatorImgID, indicatorData.iIndicatorMaskID, @@ -1440,22 +1627,44 @@ } else { - iICF->SetTextMargin ( iDataMgr->iIcfTextLeftMargin, - iDataMgr->iIcfTextRightMargin, - iDataMgr->iIcfTextTopMargin, - iDataMgr->iIcfTextBottomMargin ); - - iICF->SetLineSpace( iDataMgr->iIcfTextLineSpaceMargin ); - - iICF->SizeChangedL(TItutDataConverter::AnyToRect(iDataMgr->RequestData(EIcfRect)), - //icffont->HeightInPixels(), - iDataMgr->iIcfTextHeight, - icffont->FontMaxHeight(), - icffont); + if ( iDataMgr->IsLandScape()) + { + iICF->SetTextMargin ( iDataMgr->iIcfTextLeftMargin, + iDataMgr->iIcfTextRightMargin, + iDataMgr->iIcfTextTopMargin, + iDataMgr->iIcfTextBottomMargin ); + + iICF->SetLineSpace( iDataMgr->iIcfTextLineSpaceMargin ); + + iICF->SizeChangedL(TItutDataConverter::AnyToRect(iDataMgr->RequestData(EIcfRect)), + iDataMgr->iIcfTextHeight, + icffont->FontMaxHeight(), + icffont); + } + else + { + iICF->SetTextMargin ( iDataMgr->iIcfTextLeftMarginForPrtWest, + iDataMgr->iIcfTextRightMarginForPrtWest, + iDataMgr->iIcfTextTopMarginForPrtWest, + iDataMgr->iIcfTextBottomMarginForPrtWest ); + + iICF->SetLineSpace( iDataMgr->iIcfTextLineSpaceMarginForPrtWest ); + + iICF->SizeChangedL(TItutDataConverter::AnyToRect(iDataMgr->RequestData(EIcfRect)), + iDataMgr->iIcfTextHeightForPrtWest, + icffont->FontMaxHeight(), + icffont); + } } iICF->Hide(EFalse); + if ( IsPortraitWest() && (!iDataMgr->IsChineseGlobalLanguage())) + { + iICF->MsgBubbleCtrl()->SetTextL( KEmptyString ); + iIndiWithText = EFalse; + IndiBubbleWithoutText(); + } if( iDataMgr->IsChinese() ) { ControlSizeChanged(ECtrlIdArrowUp, EArrowUpRect, EUpInnerRect, ETrue); @@ -1465,7 +1674,10 @@ TBool bSizeChanged = EFalse; ControlSizeChanged(ECtrlIdArrowLeft, EArrowLeftRect, ELeftInnerRect, ETrue); ControlSizeChanged(ECtrlIdArrowRight, EArrowRightRect, ERightInnerRect, ETrue); - ControlSizeChanged(ECtrlIdSwitch, ESwitchRect, ESwitchInnerRect, ETrue); + if( iDataMgr->IsChinese()) + { + ControlSizeChanged(ECtrlIdSwitch, ESwitchRect, ESwitchInnerRect, ETrue); + } bSizeChanged = ControlSizeChanged(ECtrlIdBackspace, EBackspaceRect, EBackspaceInnerRect, ETrue); ControlSizeChanged(ECtrlIdOptions, EOptionsRect, EOptionInnerRect, ETrue); ControlSizeChanged(ECtrlIdClose, ECloseRect, ECloseInnerRect, ETrue); @@ -1528,7 +1740,14 @@ // reconstruct shift icon when skin changed TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ReConstructL()); - TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ResizeL(iDataMgr->iShiftIconRect.Size())); + if ( IsPortraitWest()) + { + TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ResizeL(iDataMgr->iShiftIconRectForPrtWest.Size())); + } + else + { + TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ResizeL(iDataMgr->iShiftIconRect.Size())); + } //Skin change will case the reconstuction of the button graphic. //When language is RToL, it should be mirrored again. @@ -1564,6 +1783,10 @@ void CGenericItutWindow::ResetIndicatorL(CFepUiBaseCtrl* aIndicator) { + if ( NULL == aIndicator ) + { + return; + } SetIndicatorImageL(aIndicator, iDataMgr->IndicatorData().iIndicatorImgID, iDataMgr->IndicatorData().iIndicatorMaskID, @@ -1592,7 +1815,13 @@ void CGenericItutWindow::DisplayInputmodeSwitchL() { - TRect rect = Control(ECtrlIdSwitch)->Rect(); + CFepUiBaseCtrl* btn = Control(ECtrlIdSwitch); + if ( NULL == btn ) + { + return; + } + + TRect rect = btn->Rect(); TRAP_IGNORE( iInputModeSwitch->PopUpSwitchListL(rect) ); } @@ -1793,4 +2022,49 @@ unicodesInt.Close(); } +TBool CGenericItutWindow::IsPortraitWest() + { + return !iDataMgr->IsChinese() && !iDataMgr->IsLandScape(); + } + +void CGenericItutWindow::IndiBubbleWithText() + { + if ( iICF ) + { + TAknTextLineLayout textLine = TItutDataConverter::AnyToTextLine( + iDataMgr->RequestData( EIndiTextLine )); + TRect bubbleRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( EIndiPaneWithTextRect )); + TRect iconRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( EIndiIconWithTextRect )); + TSize offset( 60, 6 ); + TSize size( iconRect.Width(), iconRect.Height()); + + iICF->MsgBubbleCtrl()->SetRect( bubbleRect ); + iICF->MsgBubbleCtrl()->SetIconOffsetAndSize( offset, size ); + iICF->MsgBubbleCtrl()->SetTextFormat( textLine ); + iICF->MsgBubbleCtrl()->SetTextColorIndex( EAknsCIQsnTextColorsCG67 ); + } + } + +void CGenericItutWindow::IndiBubbleWithoutText() + { + if ( iICF ) + { + TRect bubbleRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( EIndiPaneWithoutTextRect )); + TRect iconRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( EIndiIconWithoutTextRect )); + TSize offset( 0, 6 ); + TSize size( iconRect.Width(), iconRect.Height()); + + iICF->MsgBubbleCtrl()->SetRect( bubbleRect ); + iICF->MsgBubbleCtrl()->SetIconOffsetAndSize( offset, size ); + } + } + +void CGenericItutWindow::SetIndiWithTextFlag( TBool aFlag ) + { + iIndiWithText = aFlag; + } // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -45,6 +45,7 @@ #include "peninputgenericitutuistatebase.h" #include "peninputgenericitutconverter.h" +_LIT(KEmptyString, ""); const TInt KPeriodicTimerIntervalSec(2500000); /* Teleca change end, 18.05.2009 ssal */ CGenericItutWindowManager* CGenericItutWindowManager::NewL(CGenericItutUiLayout* aLayoutOwner, @@ -283,7 +284,12 @@ case ECmdPenInputIsSecretText: { iWindow->Icf()->SetTextIsSecret(*aData); - iWindow->InputModeSwitch()->SetSecretEditor(*aData); + CPeninputLayoutInputmodelChoice* choice = + iWindow->InputModeSwitch(); + if ( choice ) + { + choice->SetSecretEditor(*aData); + } } break; case ECmdPenInputIsNumberGrouping: @@ -299,7 +305,14 @@ break; case ECmdPenInputFingerMatchIndicator: { - UpdateIndicatorL(aData); + if ( IsPortraitWest() && ( !iDataMgr->IsChineseGlobalLanguage())) + { + iWindow->UpdateIndiBubbleL( aData ); + } + else + { + UpdateIndicatorL( aData ); + } handle = ETrue; } break; @@ -337,15 +350,18 @@ case ECmdPenInputEnableIndicatorButton: { - if (*data) + if ( NULL != static_cast(Control(ECtrlIdIndicator))) { - static_cast( - Control(ECtrlIdIndicator))->SetDimmed(EFalse); - } - else - { - static_cast( - Control(ECtrlIdIndicator))->SetDimmed(ETrue); + if (*data) + { + static_cast( + Control(ECtrlIdIndicator))->SetDimmed(EFalse); + } + else + { + static_cast( + Control(ECtrlIdIndicator))->SetDimmed(ETrue); + } } } break; @@ -416,6 +432,10 @@ return iLayoutOwner; } +TBool CGenericItutWindowManager::IsPortraitWest() + { + return !iDataMgr->IsChinese() && !iDataMgr->IsLandScape(); + } void CGenericItutWindowManager::HandleAppInfoChangeL(const TDesC& aInfo) { CGenericItutUiLayout * itutLayoutOwner; @@ -426,11 +446,58 @@ CGenericItutUiMgrBase::EStateSpelling && !iInEditWordQueryDlg) { + if ( IsPortraitWest() && (!iDataMgr->IsChineseGlobalLanguage())) + { + iWindow->Icf()->HideBubble(); + iWindow->SetIndiWithTextFlag( ETrue ); + iWindow->IndiBubbleWithText(); + + if ( iDataMgr->IndicatorData().iIndicatorImgID != 0 && + iDataMgr->IndicatorData().iIndicatorMaskID != 0 && + iDataMgr->IndicatorData().iIndicatorTextImgID != 0 && + iDataMgr->IndicatorData().iIndicatorTextMaskID != 0 ) + { + iWindow->SetIndiBubbleImageL( + iDataMgr->IndicatorData().iIndicatorImgID, + iDataMgr->IndicatorData().iIndicatorMaskID, + iDataMgr->IndicatorData().iIndicatorTextImgID, + iDataMgr->IndicatorData().iIndicatorTextMaskID); + } + } iWindow->Icf()->ShowBubble(aInfo,iWindow->Icf()->MsgBubbleCtrl()->Rect()); } else { - iWindow->Icf()->HideBubble(); + if ((!IsPortraitWest()) || iDataMgr->IsChineseGlobalLanguage()) + { + iWindow->Icf()->HideBubble(); + } + else + { + if ( itutLayoutOwner->UiMgr()->CurrentState() && + itutLayoutOwner->UiMgr()->CurrentState()->StateType() != + CGenericItutUiMgrBase::EStateSpelling ) + { + iWindow->Icf()->HideBubble(); + iWindow->SetIndiWithTextFlag( EFalse ); + iWindow->IndiBubbleWithoutText(); + } + + if ( iDataMgr->IndicatorData().iIndicatorImgID != 0 && + iDataMgr->IndicatorData().iIndicatorMaskID != 0 && + iDataMgr->IndicatorData().iIndicatorTextImgID != 0 && + iDataMgr->IndicatorData().iIndicatorTextMaskID != 0 ) + { + iWindow->SetIndiBubbleImageL( + iDataMgr->IndicatorData().iIndicatorImgID, + iDataMgr->IndicatorData().iIndicatorMaskID, + iDataMgr->IndicatorData().iIndicatorTextImgID, + iDataMgr->IndicatorData().iIndicatorTextMaskID); + } + + iWindow->Icf()->ShowBubble( KEmptyString, + iWindow->Icf()->MsgBubbleCtrl()->Rect()); + } } } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/src/peninputitutwesternuistatenonpredict.cpp --- a/textinput/peninputgenericitut/src/peninputitutwesternuistatenonpredict.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/src/peninputitutwesternuistatenonpredict.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -111,10 +111,10 @@ } else { - iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(EFalse); + //iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(EFalse); iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(EFalse); iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(EFalse); - iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); + //iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight); if(iOwner->LayoutContext()->IsSecretEdtior()) diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp --- a/textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -25,6 +25,9 @@ #include #include +// Fix bug for EZLG-7YUAP7 +#include + #include "peninputitutwesternuistatespelling.h" #include "peninputgenericitutuimgrbase.h" #include "peninputgenericitutdatamgr.h" @@ -35,6 +38,7 @@ #include "peninputcommonbgctrl.h" #include "peninputgenericitutwindowmanager.h" #include "peninputgenericitutwindow.h" +#include CWesternItutUiStateSpelling* CWesternItutUiStateSpelling::NewL(CGenericItutUiMgrBase* aOwner) { @@ -115,12 +119,38 @@ MItutPropertySubscriber::EItutPropertyKeypadResourceId, keypadResId); // hide not needed controls - iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(ETrue); + CFepUiBaseCtrl* baseCtrl = iOwner->LayoutContext()->Control(ECtrlIdSwitch); + if ( baseCtrl ) + { + baseCtrl->Hide(ETrue); + } iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)->Hide(ETrue); iOwner->LayoutContext()->Control(ECtrlIdArrowRight)->Hide(ETrue); iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(ETrue); iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(ETrue); - iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(ETrue); + baseCtrl = iOwner->LayoutContext()->Control(ECtrlIdIndicator); + if ( baseCtrl ) + { + baseCtrl->Hide(ETrue); + } + // Fix bug for EZLG-7YUAP7 + // Hide Chinese Arrow Up button and Arrow Down button + CAknFepCtrlRawKeyButton* upbtn = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdArrowUp)); + CAknFepCtrlRawKeyButton* downbtn = + static_cast(iOwner->LayoutContext()->Control(ECtrlIdArrowDown)); + + if( upbtn ) + { + upbtn->Hide(ETrue); + } + + if( downbtn ) + { + downbtn->Hide(ETrue); + } + // + TAknTextLineLayout btntextformat = TItutDataConverter::AnyToTextLine( iOwner->DataMgr()->RequestData(EBtnTextLine)); @@ -141,16 +171,22 @@ ReCalcLayoutL(); CAknFepCtrlLabel* indilabel = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdSpellIndicator)); - indilabel->Hide( EFalse ); + (iOwner->LayoutContext()->Control(ECtrlIdSpellIndicator)); + if ( indilabel ) + { + indilabel->Hide( EFalse ); + } iOwner->DataMgr()->SetUpdate(ETrue); } void CWesternItutUiStateSpelling::OnExit() { CAknFepCtrlLabel* indilabel = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdSpellIndicator)); - indilabel->Hide( ETrue ); + (iOwner->LayoutContext()->Control(ECtrlIdSpellIndicator)); + if ( indilabel ) + { + indilabel->Hide( ETrue ); + } iOk->Hide(ETrue); iCancel->Hide(ETrue); iOwner->DataMgr()->SetSpellMode(EFalse); @@ -233,7 +269,16 @@ iCancel->SetTextFormat(btntextCancel); iCancel->SizeChanged(btnrect, btnrect, ETrue); //iICF->SetRect( TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(ESpellICFRect)) ); - CFont* icffont = TItutDataConverter::AnyToFont(iOwner->DataMgr()->RequestData(EIcfFont)); + CFont* icffont; + if ( iOwner->DataMgr()->IsPortraitWest() && + (!iOwner->DataMgr()->IsChineseGlobalLanguage())) + { + icffont = TItutDataConverter::AnyToFont(iOwner->DataMgr()->RequestData(ESpellFont)); + } + else + { + icffont = TItutDataConverter::AnyToFont(iOwner->DataMgr()->RequestData(EIcfFont)); + } TRect rect = TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(ESpellICFRect) ); //rect.iTl.iY -= 50; @@ -243,11 +288,21 @@ 2); iICF->SetLineSpace( 1 ); - iICF->SizeChangedL(rect, - //icffont->HeightInPixels(), - iOwner->DataMgr()->iIcfTextHeight, - icffont->FontMaxHeight(), - icffont); + if ( iOwner->DataMgr()->IsPortraitWest() && + (!iOwner->DataMgr()->IsChineseGlobalLanguage())) + { + iICF->SizeChangedL(rect, + iOwner->DataMgr()->iSpellIcfTextHeightForPrtWest, + icffont->FontMaxHeight(), + icffont); + } + else + { + iICF->SizeChangedL(rect, + iOwner->DataMgr()->iIcfTextHeight, + icffont->FontMaxHeight(), + icffont); + } CAknFepCtrlCommonButton* clrBtn = static_cast( iOwner->LayoutContext()->Control(ECtrlIdBackspace) ); @@ -264,6 +319,45 @@ { iOwner->UiManager()->Window()->HandleButtonResOnLangDirChange( ECtrlIdBackspace ); } + if ( iOwner->DataMgr()->IsPortraitWest() && + (!iOwner->DataMgr()->IsChineseGlobalLanguage())) + { + iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)->Hide( EFalse ); + iOwner->LayoutContext()->Control(ECtrlIdArrowRight)->Hide( EFalse ); + + // left button + CAknFepCtrlCommonButton* middleBtn = static_cast( + iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)); + TRect middleRect = TItutDataConverter::AnyToRect( + iOwner->DataMgr()->RequestData(ESpellArrowLeft)); + TRect middleInnerRect = TItutDataConverter::AnyToRect( + iOwner->DataMgr()->RequestData(ESpellArrowLeftInner)); + middleBtn->SizeChanged( middleRect, middleInnerRect, ETrue ); + + // right button + middleBtn = static_cast( + iOwner->LayoutContext()->Control(ECtrlIdArrowRight)); + middleRect = TItutDataConverter::AnyToRect( + iOwner->DataMgr()->RequestData(ESpellArrowRight)); + middleInnerRect = TItutDataConverter::AnyToRect( + iOwner->DataMgr()->RequestData(ESpellArrowRightInner)); + middleBtn->SizeChanged( middleRect, middleInnerRect, ETrue ); + + // Indicator bubble + TRect bubbleRect = TItutDataConverter::AnyToRect( + iOwner->DataMgr()->RequestData( ESpellIndiPaneWithoutTextRect )); + TRect iconRect = TItutDataConverter::AnyToRect( + iOwner->DataMgr()->RequestData( ESpellIndiIconWithoutTextRect )); + TSize offset( 0, 6 ); + TSize size( iconRect.Width(), iconRect.Height()); + + iICF->MsgBubbleCtrl()->SetRect( bubbleRect ); + iICF->MsgBubbleCtrl()->SetIconOffsetAndSize( offset, size ); + + TBuf<100> text; + iICF->MsgBubbleCtrl()->GetText( text ); + iICF->ShowBubble( text, iICF->MsgBubbleCtrl()->Rect()); + } } // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericitut/srcdata/peninputgeneralitutnew.rss --- a/textinput/peninputgenericitut/srcdata/peninputgeneralitutnew.rss Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericitut/srcdata/peninputgeneralitutnew.rss Fri Mar 12 15:44:07 2010 +0200 @@ -126,8 +126,8 @@ bmpfile=AKN_FEP_ITUT_BMP; imgmajorskinid=EAknsMajorGeneric; - forground=EMbmPeninputgenericitutQgn_indi_input_backspace; - forgroundmsk=EMbmPeninputgenericitutQgn_indi_input_backspace_mask; + forground=EMbmPeninputgenericitutQgn_indi_itut_backspace1; + forgroundmsk=EMbmPeninputgenericitutQgn_indi_itut_backspace1_mask; //forgroundskinid=EAknsMinorGenericQgnIndiDialerClear; } @@ -136,8 +136,8 @@ bmpfile=AKN_FEP_ITUT_BMP; imgmajorskinid=EAknsMajorGeneric; - forground=EMbmPeninputgenericitutQgn_indi_itut_backspace; - forgroundmsk=EMbmPeninputgenericitutQgn_indi_itut_backspace_mask; + forground=EMbmPeninputgenericitutQgn_indi_itut_backspace1; + forgroundmsk=EMbmPeninputgenericitutQgn_indi_itut_backspace1_mask; //forgroundskinid=EAknsMinorGenericQgnIndiDialerClear; } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/group/iconlist.txt --- a/textinput/peninputgenericvkb/group/iconlist.txt Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/group/iconlist.txt Fri Mar 12 15:44:07 2010 +0200 @@ -194,3 +194,4 @@ -c8,8 qgn_indi_input_space_r.svg -c8,8 qgn_indi_fsq_cursor_up.svg -c8,8 qgn_indi_fsq_cursor_down.svg +-c8,8 qgn_indi_input_backspace1.svg diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/inc/peninputgenericvkb.rh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputgenericvkb/inc/peninputgenericvkb.rh Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,42 @@ +// Modify begin +/* +* Copyright (c) 2002-2006 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: Resource headers for project peninputgenericvkb +* +*/ + + +#ifndef PENINPUTGENERICVKB_RH +#define PENINPUTGENERICVKB_RH + +// system includes +#include + +// ----------------------------------------------------------------------------- +// PENINPUT_FSQQWERTY_RANGELABELS +// Resource definition for range labels of range list +// ----------------------------------------------------------------------------- +// +STRUCT PENINPUT_FSQQWERTY_RANGELABELS + { + LTEXT nativeChar =""; + LTEXT nativeNumber =""; + LTEXT latinChar =""; + LTEXT latinNumber =""; + LTEXT symbol =""; + LTEXT accent =""; + } + +#endif /* PENINPUTGENERICVKB_RH */ +// Modify end diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/inc/peninputgenericvkblafdatamgr.h --- a/textinput/peninputgenericvkb/inc/peninputgenericvkblafdatamgr.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/inc/peninputgenericvkblafdatamgr.h Fri Mar 12 15:44:07 2010 +0200 @@ -133,6 +133,12 @@ TPeninputButtonLayoutDataEx iSpaceButtonEx; TPeninputButtonLayoutData iEnterButton; TPeninputButtonLayoutData iSwitchButton; + TPeninputButtonLayoutData iMultiRangeButton; + TRect iIndiPaneRectWithTextForFSQ; + TRect iIndiPaneRectWithoutTextForFSQ; + TRect iIndiIconRectWithTextForFSQ; + TRect iIndiIconRectWithoutTextForFSQ; + TAknTextLineLayout iIndiTextForFSQ; TRect iTitlebarRect; TRect iClientRect; TRect iQwtRect; @@ -195,11 +201,16 @@ inline TPeninputVkbLafOption LafOption() const; void ConstructL(); TBool IsValid() const; + TRect& IndiPaneRectWithText(); + TRect& IndiPaneRectWithoutText(); + TRect& IndiIconRectWithText(); + TRect& IndiIconRectWithoutText(); + TAknTextLineLayout& IndiText(); protected: - void GetTopAndBottomPaneInfo( const TRect& aParentWndRect, + virtual void GetTopAndBottomPaneInfo( const TRect& aParentWndRect, TInt aLayoutType, TInt aLayoutParam, - CPeninputQwtLayoutDataInfo& aDataInfo ); + CPeninputQwtLayoutDataInfo& aDataInfo ) = 0; virtual void ReadLafInfoL() = 0; TInt iLayoutType; @@ -219,6 +230,10 @@ protected: CPeninputLafDataVKB( TInt aLayoutType ); + void GetTopAndBottomPaneInfo( const TRect& aParentWndRect, + TInt aLayoutType, + TInt aLayoutParam, + CPeninputQwtLayoutDataInfo& aDataInfo ); void ReadLafInfoL(); }; @@ -234,6 +249,10 @@ protected: CPeninputLafDataFSQ( TInt aLayoutType ); + void GetTopAndBottomPaneInfo( const TRect& aParentWndRect, + TInt aLayoutType, + TInt aLayoutParam, + CPeninputQwtLayoutDataInfo& aDataInfo ); void ReadLafInfoL(); private: @@ -253,6 +272,10 @@ * @return tooltip box layout data */ TPeninputTooltipBoxLayoutData ReadLafForTooltipBox( const TRect& aRect ); + TRect RelativeRect( const TRect& aRect, const TPoint& aPoint ); + + TRect CPeninputLafDataFSQ::OffsetRect( + const TRect& aRect, TInt aDx, TInt aDy ); }; /** @@ -402,6 +425,11 @@ */ const TPeninputTooltipBoxLayoutData& TooltipBoxLayoutData() const; + TRect& IndiPaneRectWithText(); + TRect& IndiPaneRectWithoutText(); + TRect& IndiIconRectWithText(); + TRect& IndiIconRectWithoutText(); + TAknTextLineLayout& IndiText(); protected: /** diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h --- a/textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h Fri Mar 12 15:44:07 2010 +0200 @@ -38,6 +38,21 @@ // Constants const TInt KMaxFileLength = 80; +const TInt KMaxRangeLabelLength = 100; + +/** + * class TAllRangeLabels + */ +class TAllRangeLabels + { +public: + TBuf iLabelNativeChar; + TBuf iLabelNativeNumber; + TBuf iLabelLatinChar; + TBuf iLabelLatinNumber; + TBuf iLabelSymbol; + TBuf iLabelAccent; + }; /** * Vkb layout window class * This class define methods to deal with window layout and @@ -48,7 +63,13 @@ */ class CPeninputGenericVkbWindow : public CPeninputLayoutWindowExt { - +private: + enum TIndicatorAlign + { + EIndiAlignLeft, + EIndiAlignCenter, + EIndiAlignRight + }; public: /** @@ -355,6 +376,41 @@ */ void HandleCandidateListSelectedL( CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ); + /* + * Load range labels for range list + * + * @since S60 v5.0 + * @param aLangId current language id + * @return None + */ + void ConstructRangeLabelListL( TInt aLangId ); + + /** + * Update state of range button + * + * @since S60 v5.0 + * @return None + */ + void UpdateRangeCtrlsL(); + + void ConstructFSQAccentListL( TInt aLangId ); + + void SetIndiBubbleImageL( const TInt aImgID1, + const TInt aMaskID1, + const TInt aImgID2, + const TInt aMaskID2 ); + + void IndiBubbleWithText(); + + void IndiBubbleWithoutText(); + + void SetIndiWithTextFlag( TBool aFlag ); + + void UpdateIndiBubbleL( TUint8* aData ); + + inline TFepIndicatorInfo IndicatorData(); + + inline void SetIndicatorData( const TFepIndicatorInfo& aIndicatorData ); protected: /** @@ -374,6 +430,60 @@ virtual void AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl); private: + + /** + * Show range list + * + * @since S60 v5.0 + * @return None + */ + void PopupRangeListL(); + + /** + * Prepare range list items + * + * @since S60 v5.0 + * @param aRangeItems items in range list + * @return None + */ + void PrepareRangeListItems( RArray& + aRangeItems ); + + /** + * Utils to get context value + * + * @since S60 v5.0 + * @param aDataIndex index of context value + * @return conext value + */ + TInt IntContext( TPeninputDataType aDataIndex ); + + void CalIndicatorRect(const TRect& aBoundRect, + TRect& aRealRect1, + TRect& aRealRect2, + TIndicatorAlign aAlign); + + /** + * Handle range list event + * + * @since S60 v5.0 + * @return None + */ + void HandleRangeListSelectedL( CFepUiBaseCtrl* aCtrl, + const TDesC& aData ); + + /** + * Get resource ids of range button icon + * + * @since S60 v5.0 + * @param aLangId current language id + * @param aAlphaRange variable to receive icon resource id for alpha range + * @param aOtherRange variable to receive icon resource id for other ranges + * @return None + */ + void GetRangeIconResource( TInt aLangId, TInt& aAlphaRange, + TInt& aOtherRange ); + /** * Add range bar into client area * @@ -441,7 +551,7 @@ TBool HandleDeadKeyL(TInt aEventType, const TDesC& aEventData ); - void ReorgnizeTitleBar(); + void ReorgnizeICFAndButtons(); void UpdateICFTextL(); @@ -590,6 +700,23 @@ * Bitmap rotator */ CPeninputSyncBitmapRotator* iBmpRotator; + /** + * Accent command list + */ + RArray iAccentCmdList; + + TSize iIndicatorSize; + + TSize iIndicatorTextSize; + + TBool iIndiWithText; + + TFepIndicatorInfo iIndicatorData; + + /** + * Range labels for range list + */ + TAllRangeLabels iRangeLabels; private: CFepLayoutScrollableList* iCandidateList; @@ -608,4 +735,17 @@ { return (aLanguage != ELangTest && aLanguage != ELangNone); } +inline void CPeninputGenericVkbWindow::SetIndicatorData( + const TFepIndicatorInfo& aIndicatorData ) + { + iIndicatorData.iIndicatorImgID = aIndicatorData.iIndicatorImgID; + iIndicatorData.iIndicatorMaskID = aIndicatorData.iIndicatorMaskID; + iIndicatorData.iIndicatorTextImgID = aIndicatorData.iIndicatorTextImgID; + iIndicatorData.iIndicatorTextMaskID = aIndicatorData.iIndicatorTextMaskID; + } + +inline TFepIndicatorInfo CPeninputGenericVkbWindow::IndicatorData() + { + return iIndicatorData; + } #endif // C_PENINPUTGENERICVKBWINDOW_H diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/loc/peninputgenericvkbaccentlist.loc --- a/textinput/peninputgenericvkb/loc/peninputgenericvkbaccentlist.loc Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/loc/peninputgenericvkbaccentlist.loc Fri Mar 12 15:44:07 2010 +0200 @@ -36,4 +36,27 @@ //r: 3.2 #define qtn_tin_vkb_accented_set3 "Accented "<0x0151>" - "<0x01EF> +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_alpha_range "ABC" + +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_native_characters_range "Native char" + +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_numbers_symbols "123*&#" + +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_native_numbers_symbols "Native number" // End of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp --- a/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -444,6 +444,35 @@ aMiddleIconRect = iLafData->QwtLayoutData().iSpaceButtonEx.iMiddleIconRect; } +TRect& CPeninputGenericVkbLafMgr::IndiPaneRectWithText() + { + ASSERT(iLafData); + return iLafData->IndiPaneRectWithText(); + } + +TRect& CPeninputGenericVkbLafMgr::IndiPaneRectWithoutText() + { + ASSERT(iLafData); + return iLafData->IndiPaneRectWithoutText(); + } + +TRect& CPeninputGenericVkbLafMgr::IndiIconRectWithText() + { + ASSERT(iLafData); + return iLafData->IndiIconRectWithText(); + } + +TRect& CPeninputGenericVkbLafMgr::IndiIconRectWithoutText() + { + ASSERT(iLafData); + return iLafData->IndiIconRectWithoutText(); + } + +TAknTextLineLayout& CPeninputGenericVkbLafMgr::IndiText() + { + ASSERT(iLafData); + return iLafData->IndiText(); + } // --------------------------------------------------------------------------- // Return layout data for candidate list // --------------------------------------------------------------------------- @@ -554,6 +583,11 @@ pData = &(iLayoutDataInfo[iLayoutType]->iRightButton); } break; + case EPeninutWindowCtrlIdMultiRangeBtn: + { + pData = &(iLayoutDataInfo[iLayoutType]->iMultiRangeButton); + } + break; default: ASSERT(EFalse); break; @@ -605,6 +639,35 @@ return *iLayoutDataInfo[iLayoutType]; } +TRect& MPeninputLafDataCommon::IndiPaneRectWithText() + { + ASSERT( IsValid()); + return iLayoutDataInfo[iLayoutType]->iIndiPaneRectWithTextForFSQ; + } + +TRect& MPeninputLafDataCommon::IndiPaneRectWithoutText() + { + ASSERT( IsValid()); + return iLayoutDataInfo[iLayoutType]->iIndiPaneRectWithoutTextForFSQ; + } + +TRect& MPeninputLafDataCommon::IndiIconRectWithText() + { + ASSERT( IsValid()); + return iLayoutDataInfo[iLayoutType]->iIndiIconRectWithTextForFSQ; + } + +TRect& MPeninputLafDataCommon::IndiIconRectWithoutText() + { + ASSERT( IsValid()); + return iLayoutDataInfo[iLayoutType]->iIndiIconRectWithoutTextForFSQ; + } + +TAknTextLineLayout& MPeninputLafDataCommon::IndiText() + { + ASSERT( IsValid()); + return iLayoutDataInfo[iLayoutType]->iIndiTextForFSQ; + } // --------------------------------------------------------------------------- // CPeninputLafDataCommon::ConstructL() // (other items were commented in a header) @@ -627,11 +690,11 @@ // --------------------------------------------------------------------------- -// CPeninputLafDataCommon::GetTopAndBottomPaneInfo +// CPeninputLafDataVKB::GetTopAndBottomPaneInfo // (other items were commented in a header) // --------------------------------------------------------------------------- // -void MPeninputLafDataCommon::GetTopAndBottomPaneInfo( const TRect& aParentWndRect, +void CPeninputLafDataVKB::GetTopAndBottomPaneInfo( const TRect& aParentWndRect, TInt aLayoutType, TInt aLayoutParam, CPeninputQwtLayoutDataInfo& aDataInfo ) @@ -922,6 +985,244 @@ } // --------------------------------------------------------------------------- +// CPeninputLafDataFSQ::RelativeRect +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +TRect CPeninputLafDataFSQ::RelativeRect( const TRect& aRect, const TPoint& aPoint ) + { + TRect rect = aRect; + rect.Move( - aPoint.iX, - aPoint.iY ); + return rect; + } + +// --------------------------------------------------------------------------- +// CPeninputLafDataFSQ::OffsetRect +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +TRect CPeninputLafDataFSQ::OffsetRect( const TRect& aRect, TInt aDx, TInt aDy ) + { + TRect rect = aRect; + rect.Move( aDx, aDy ); + return rect; + } + +// --------------------------------------------------------------------------- +// CPeninputLafDataFSQ::GetTopAndBottomPaneInfo +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputLafDataFSQ::GetTopAndBottomPaneInfo( const TRect& aParentWndRect, + TInt aLayoutType, + TInt aLayoutParam, + CPeninputQwtLayoutDataInfo& aDataInfo ) + { + TAknWindowLineLayout linelayout; + TAknLayoutRect layoutrect; + + TAknLayoutRect keypadRect, keypaneRect, keycellRect, keylabelRect; + TAknLayoutRect pic3paneRect; + + TPoint base; + TRect rectBottomWin, rectICFBg, rectICF, rectICFpane; + TAknTextLineLayout cellText; + TAknLayoutText txt; + TInt pic3pLeftWidth, pic3pRightWidth; + + base = aParentWndRect.iTl; + TRect rect = aParentWndRect; + rect.Move( - base.iX, - base.iY ); + aDataInfo.iClientRect = rect; + aDataInfo.iQwtRect = aParentWndRect; + + TInt v1, v2; + switch ( aLayoutType ) + { + case ELayout10x3: + { + v1 = 0; + v2 = 0; + break; + } + case ELayout11x3: + { + v1 = 1; + v2 = 2; + break; + } + case ELayout11x4: + { + v1 = 1; + v2 = 3; + break; + } + default: + { + v1 = 0; + v2 = 0; + } + } + + // Bottom pane rect + linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine(); + layoutrect.LayoutRect( aParentWndRect, linelayout ); + rectBottomWin = layoutrect.Rect(); + + // ICF pane rect + linelayout = AknLayoutScalable_Avkon::popup_fep_vkb_icf_pane(0).LayoutLine(); + layoutrect.LayoutRect( aParentWndRect, linelayout ); + rectICFpane = layoutrect.Rect(); + + // ICF bg pane rect + linelayout = AknLayoutScalable_Avkon::bg_icf_pane(0).LayoutLine(); + layoutrect.LayoutRect( rectICFpane, linelayout ); + rectICFBg = layoutrect.Rect(); + + // ICF area rect + linelayout = AknLayoutScalable_Avkon::list_vkb_icf_pane(0).LayoutLine(); + layoutrect.LayoutRect( rectICFBg, linelayout ); + rectICF = layoutrect.Rect(); + + aDataInfo.iICF.iRect = rectICF; + cellText = AknLayoutScalable_Avkon::list_vkb_icf_pane_t1(0, 0, 0).LayoutLine(); + aDataInfo.iICF.iPromptTextFont = AknLayoutUtils::FontFromId(cellText.iFont, NULL); + txt.LayoutText( rectICF, cellText ); + aDataInfo.iICF.iPromptTextRect = txt.TextRect(); + cellText = AknLayoutScalable_Avkon::list_vkb_icf_pane_t1(0, 0, 1).LayoutLine(); + aDataInfo.iICF.iTextFont = AknLayoutUtils::FontFromId(cellText.iFont, NULL); + txt.LayoutText( rectICF, cellText ); + aDataInfo.iICF.iTextRect = txt.TextRect(); + + // icf indicator + TAknWindowLineLayout icfIndiPaneWithText, icfIndiPaneWithoutText, + indiIconWithText, indiIconWithoutText, indiText; + TAknLayoutRect icfIndiPaneRectWithText, icfIndiPaneRectWithoutText, + indiIconRectWithText, indiIconRectWithoutText, indiTextRect; + TAknTextLineLayout indiTextLayout; + + icfIndiPaneWithText = AknLayoutScalable_Avkon::icf_edit_indi_pane(1).LayoutLine(); + icfIndiPaneRectWithText.LayoutRect( rectICF, icfIndiPaneWithText ); + aDataInfo.iIndiPaneRectWithTextForFSQ = icfIndiPaneRectWithText.Rect(); + + icfIndiPaneWithoutText = AknLayoutScalable_Avkon::icf_edit_indi_pane(0).LayoutLine(); + icfIndiPaneRectWithoutText.LayoutRect( rectICF, icfIndiPaneWithoutText ); + aDataInfo.iIndiPaneRectWithoutTextForFSQ = icfIndiPaneRectWithoutText.Rect(); + + aDataInfo.iIndiIconRectWithTextForFSQ = TRect( 0, 0, 60, 20 ); + aDataInfo.iIndiIconRectWithoutTextForFSQ = TRect( 0, 0, 60, 20 ); + + indiTextLayout = AknLayoutScalable_Avkon::icf_edit_indi_pane_t1(0).LayoutLine(); + aDataInfo.iIndiTextForFSQ = indiTextLayout; + + // keypad pane rect + linelayout = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(v1).LayoutLine(); + keypadRect.LayoutRect( rectBottomWin, linelayout ); + + // key pane rect + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(v2).LayoutLine(); + keypaneRect.LayoutRect( keypadRect.Rect(), linelayout ); + + // key cell rect + linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(v2).LayoutLine(); + keycellRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + // key label rect + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(v2).LayoutLine(); + keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + // pic3pane rect + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane(v2).LayoutLine(); + pic3paneRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g1(0).LayoutLine(); + layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout ); + pic3pLeftWidth = layoutrect.Rect().Width(); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g3(0).LayoutLine(); + layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout ); + pic3pRightWidth = layoutrect.Rect().Width(); + + TRect rectXPane = keypaneRect.Rect(); + rect = keycellRect.Rect(); + rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY ); + TRect rectXBorder = rect; + rect = keylabelRect.Rect(); + rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY ); + TRect rectXInner = rect; + rect = pic3paneRect.Rect(); + rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY ); + TRect rect3PicPane = rect; + rectXPane.Move( - rectXPane.iTl ); + + rect = keypadRect.Rect(); + rect.Move( - base.iX, - base.iY ); + TRect rectOfKeypad = rect; + TRect rectOfButtons = rectOfKeypad; + rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); + rectOfButtons.iTl.iY += rectOfKeypad.Height(); + + TInt spaceBtnWidth = rectOfButtons.Width() - rectXPane.Width() * 8; + TInt dx = rectOfButtons.iTl.iX; + TInt dy = rectOfButtons.iTl.iY; + + aDataInfo.iCloseButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iCloseButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + dx += rectXPane.Width(); + + aDataInfo.iShiftButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iShiftButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + dx += rectXPane.Width(); + + aDataInfo.iMultiRangeButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iMultiRangeButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + dx += rectXPane.Width(); + + aDataInfo.iLeftButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iLeftButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + dx += rectXPane.Width(); + + TInt expand = spaceBtnWidth - rectXPane.Width(); + aDataInfo.iSpaceButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iSpaceButton.iRect.Resize( expand, 0 ); + aDataInfo.iSpaceButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + aDataInfo.iSpaceButton.iInnerRect.Resize( expand, 0 ); + aDataInfo.iSpaceButtonEx.iIconsFrameRect = OffsetRect( rect3PicPane, dx, dy ); + aDataInfo.iSpaceButtonEx.iIconsFrameRect.Resize( expand, 0 ); + aDataInfo.iSpaceButtonEx.iMiddleIconRect = + aDataInfo.iSpaceButtonEx.iIconsFrameRect; + aDataInfo.iSpaceButtonEx.iMiddleIconRect.iTl.iX += pic3pLeftWidth; + aDataInfo.iSpaceButtonEx.iMiddleIconRect.iBr.iX -= pic3pRightWidth; + dx += spaceBtnWidth; + + aDataInfo.iRightButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iRightButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + dx += rectXPane.Width(); + + aDataInfo.iOptionButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iOptionButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + dx += rectXPane.Width(); + + aDataInfo.iEnterButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iEnterButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + dx += rectXPane.Width(); + + aDataInfo.iClearButton.iRect = OffsetRect( rectXBorder, dx, dy ); + aDataInfo.iClearButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); + + // preview popup window + TAknWindowLineLayout previewWnd, previewWndInner; + TAknLayoutRect previewWndRect, previewWndInnerRect; + previewWnd = AknLayoutScalable_Avkon::popup_fep_char_preview_window(aLayoutParam).LayoutLine(); + previewWndRect.LayoutRect( aParentWndRect, previewWnd ); + previewWndInner = AknLayoutScalable_Avkon::bg_popup_fep_char_preview_window_g9().LayoutLine(); + previewWndInnerRect.LayoutRect( previewWndRect.Rect(), previewWndInner ); + aDataInfo.iPreviewWndRect = previewWndRect.Rect(); + aDataInfo.iPreviewWndInnerRect = previewWndInnerRect.Rect(); + aDataInfo.iPreviewWndText = AknLayoutScalable_Avkon::popup_fep_char_preview_window_t1( + aLayoutParam).LayoutLine(); + } +// --------------------------------------------------------------------------- // CPeninputLafDataVKB::NewL( TInt aLayoutType ) // (other items were commented in a header) // --------------------------------------------------------------------------- @@ -1147,6 +1448,10 @@ CPeninputQwtLayoutDataInfo* dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo; TAknWindowLineLayout appWnd; TAknWindowLineLayout wndLayout; + TAknWindowLineLayout linelayout; + TAknLayoutRect layoutrect, keypaneRect, keycellRect, keylabelRect; + TRect rectBottomWin, rectVkbCtrl; + TPoint base; TAknWindowLineLayout keypad, cellpane; TAknWindowLineLayout cellPaneBK; @@ -1159,40 +1464,80 @@ TRect keyRect; // -----------------------Landscape Mode-------------------------- appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine(); - wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine(); + wndLayout = AknLayoutScalable_Avkon::main_fep_vtchi_ss_pane(0).LayoutLine(); wndRect.LayoutRect(appWnd.Rect(), wndLayout); + // Bottom pane rect + linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine(); + layoutrect.LayoutRect( wndRect.Rect(), linelayout ); + rectBottomWin = layoutrect.Rect(); + base = wndRect.Rect().iTl; // ==================10x3==================== // top pane and bottom pane GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout10x3, 0, *dataInfo ); // keypad - keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine(); + // Modify begin + keyText = AknLayoutScalable_Avkon::cell_vkbss_key_t1(0).LayoutLine(); + keyText.iB += 3; dataInfo->iKeypad.iTextLayout = keyText; - dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); - //dataInfo->iKeypad.iTxtRect = keyText.TextRect(); + dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId( keyText.iFont, NULL ); + + keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(0).LayoutLine(); + keypadRect.LayoutRect( rectBottomWin, keypad ); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(0).LayoutLine(); + keypaneRect.LayoutRect( keypadRect.Rect(), linelayout ); + + rectVkbCtrl = keypadRect.Rect(); + rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height(); + dataInfo->iKeypad.iKaypadRect = rectVkbCtrl; - keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(0).LayoutLine(); - keypadRect.LayoutRect(wndRect.Rect(), keypad); - dataInfo->iKeypad.iKaypadRect = keypadRect.Rect(); - //iKeypadRect10x3 = keypadRect.Rect(); - cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine(); + linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(0).LayoutLine(); + keycellRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(0).LayoutLine(); + keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(0).LayoutLine(); + layoutrect.LayoutRect( keypadRect.Rect(), linelayout ); + TInt rowIndentWidth = layoutrect.Rect().Width(); + + TRect rectOfKeypad = RelativeRect( keypadRect.Rect(), base ); + rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); + + TRect rectXPane = RelativeRect( keypaneRect.Rect(), base ); + TRect rectXBorder = RelativeRect( keycellRect.Rect(), base ); + TRect rectXInner = RelativeRect( keylabelRect.Rect(), base ); + + rectXPane.Move( - rectOfKeypad.iTl ); //translate to keypad coord-sys + rectXBorder.Move( - rectOfKeypad.iTl ); + rectXInner.Move( - rectOfKeypad.iTl ); + for( TInt i = 0; i < KKeypadLayout[0][1]; i++) { + TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for( TInt j = 0; j < KKeypadLayout[0][0]; j++) - { - cellpane = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane(0, j, i).LayoutLine(); - cellpaneRect.LayoutRect(keypadRect.Rect(), cellpane); - keyRect = cellpaneRect.Rect(); - keyRect.Move( -keypadRect.Rect().iTl.iX, -keypadRect.Rect().iTl.iY ); - cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); - keyBKRect = cellPaneBKRect.Rect(); - dataInfo->iKeypad.iRects.AppendL(keyBKRect); - keyTextLayout.LayoutText(keyRect, keyText); - dataInfo->iKeypad.iCharRects.AppendL(keyTextLayout.TextRect()); - } + { + TRect bound = rectXBorder; + bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); + bound.Move( indent, 0 ); + + dataInfo->iKeypad.iRects.AppendL( bound ); + + TRect inner = rectXPane; + inner.Move( j * rectXPane.Width(), i * rectXPane.Height() ); + inner.Move( indent, 0 ); + + TAknLayoutText keyTextLayout; + keyTextLayout.LayoutText( inner, keyText ); + dataInfo->iKeypad.iCharRects.AppendL( keyTextLayout.TextRect() ); + } } - keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine(); - dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); - //dataInfo->iKeypad.iTxtRect = keyText.TextRect(); + // Modify end + + // Modify begin + //keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine(); + //dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); + // Modify end // Add candate list laf data for ITI features // Candidate list's parent Layout window is ITUT window @@ -1217,11 +1562,15 @@ // ==================11x3==================== dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo; - wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine(); - wndRect.LayoutRect(appWnd.Rect(), wndLayout); + // Modify begin + //wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine(); + //wndRect.LayoutRect(appWnd.Rect(), wndLayout); + // Modify end // top pane and bottom pane GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout11x3, 1, *dataInfo ); // keypad + // Modify begin + /* keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(1).LayoutLine(); keypadRect.LayoutRect(wndRect.Rect(), keypad); dataInfo->iKeypad.iKaypadRect = keypadRect.Rect(); @@ -1245,7 +1594,65 @@ keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(1).LayoutLine(); dataInfo->iKeypad.iTextLayout = keyText; dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); - //dataInfo->iKeypad.iTxtRect = keyText.TextRect(); + */ + + keyText = AknLayoutScalable_Avkon::cell_vkbss_key_t1(2).LayoutLine(); + keyText.iB += 3; + dataInfo->iKeypad.iTextLayout = keyText; + dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId( keyText.iFont, NULL ); + + keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(1).LayoutLine(); + keypadRect.LayoutRect( rectBottomWin, keypad ); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(2).LayoutLine(); + keypaneRect.LayoutRect( keypadRect.Rect(), linelayout ); + + rectVkbCtrl = keypadRect.Rect(); + rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height(); + dataInfo->iKeypad.iKaypadRect = rectVkbCtrl; + + linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(2).LayoutLine(); + keycellRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(2).LayoutLine(); + keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(1).LayoutLine(); + layoutrect.LayoutRect( keypadRect.Rect(), linelayout ); + rowIndentWidth = layoutrect.Rect().Width(); + + rectOfKeypad = RelativeRect( keypadRect.Rect(), base ); + rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); + + rectXPane = RelativeRect( keypaneRect.Rect(), base ); + rectXBorder = RelativeRect( keycellRect.Rect(), base ); + rectXInner = RelativeRect( keylabelRect.Rect(), base ); + + rectXPane.Move( - rectOfKeypad.iTl ); //translate to keypad coord-sys + rectXBorder.Move( - rectOfKeypad.iTl ); + rectXInner.Move( - rectOfKeypad.iTl ); + + for( TInt i = 0; i < KKeypadLayout[1][1]; i++) + { + TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; + for( TInt j = 0; j < KKeypadLayout[1][0]; j++) + { + TRect bound = rectXBorder; + bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); + bound.Move( indent, 0 ); + + dataInfo->iKeypad.iRects.AppendL( bound ); + + TRect inner = rectXPane; + inner.Move( j * rectXPane.Width(), i * rectXPane.Height() ); + inner.Move( indent, 0 ); + + TAknLayoutText keyTextLayout; + keyTextLayout.LayoutText( inner, keyText ); + dataInfo->iKeypad.iCharRects.AppendL( keyTextLayout.TextRect() ); + } + } + // Modify end if ( isLandscape ) { @@ -1260,11 +1667,15 @@ // ==================11x4==================== dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo; - wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine(); - wndRect.LayoutRect(appWnd.Rect(), wndLayout); + // Modify begin + //wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine(); + //wndRect.LayoutRect(appWnd.Rect(), wndLayout); + // Modify end // top pane and bottom pane GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout11x4, 2, *dataInfo ); + // Modify begin // keypad + /* keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(2).LayoutLine(); keypadRect.LayoutRect(wndRect.Rect(), keypad); dataInfo->iKeypad.iKaypadRect = keypadRect.Rect(); @@ -1287,7 +1698,65 @@ keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(2).LayoutLine(); dataInfo->iKeypad.iTextLayout = keyText; dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); - //dataInfo->iKeypad.iTxtRect = keyText.TextRect(); + */ + + keyText = AknLayoutScalable_Avkon::cell_vkbss_key_t1(3).LayoutLine(); + keyText.iB += 3; + dataInfo->iKeypad.iTextLayout = keyText; + dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId( keyText.iFont, NULL ); + + keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(1).LayoutLine(); + keypadRect.LayoutRect( rectBottomWin, keypad ); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(3).LayoutLine(); + keypaneRect.LayoutRect( keypadRect.Rect(), linelayout ); + + rectVkbCtrl = keypadRect.Rect(); + rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height(); + dataInfo->iKeypad.iKaypadRect = rectVkbCtrl; + + linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(3).LayoutLine(); + keycellRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(3).LayoutLine(); + keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); + + linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(1).LayoutLine(); + layoutrect.LayoutRect( keypadRect.Rect(), linelayout ); + rowIndentWidth = layoutrect.Rect().Width(); + + rectOfKeypad = RelativeRect( keypadRect.Rect(), base ); + rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); + + rectXPane = RelativeRect( keypaneRect.Rect(), base ); + rectXBorder = RelativeRect( keycellRect.Rect(), base ); + rectXInner = RelativeRect( keylabelRect.Rect(), base ); + + rectXPane.Move( - rectOfKeypad.iTl ); //translate to keypad coord-sys + rectXBorder.Move( - rectOfKeypad.iTl ); + rectXInner.Move( - rectOfKeypad.iTl ); + + for( TInt i = 0; i < KKeypadLayout[2][1]; i++) + { + TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; + for( TInt j = 0; j < KKeypadLayout[2][0]; j++) + { + TRect bound = rectXBorder; + bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); + bound.Move( indent, 0 ); + + dataInfo->iKeypad.iRects.AppendL( bound ); + + TRect inner = rectXPane; + inner.Move( j * rectXPane.Width(), i * rectXPane.Height() ); + inner.Move( indent, 0 ); + + TAknLayoutText keyTextLayout; + keyTextLayout.LayoutText( inner, keyText ); + dataInfo->iKeypad.iCharRects.AppendL( keyTextLayout.TextRect() ); + } + } + // Modify end if ( isLandscape ) { diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp --- a/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -50,6 +50,7 @@ _LIT(KDisplaySpace, "\x0020"); +_LIT(KEmptyString, ""); // --------------------------------------------------------------------------- // CPeninputGenericVkbLayoutImp::NewL @@ -222,7 +223,23 @@ { vkbWindow->SetSwitchlistLanguage(*aData); vkbWindow->SetDeadKey(); - TRAP_IGNORE(vkbWindow->ConstructAccentListL(*aData)); + if ( iLayoutType == EPluginInputModeFSQ ) + { + TRAP_IGNORE(vkbWindow->ConstructFSQAccentListL( *aData )); + TRAP_IGNORE(vkbWindow->ConstructRangeLabelListL( *aData )); + } + else + { + TRAP_IGNORE(vkbWindow->ConstructAccentListL(*aData)); + } + } + break; + case ECmdPenInputRange: + { + if ( iLayoutType == EPluginInputModeFSQ ) + { + TRAP_IGNORE( vkbWindow->UpdateRangeCtrlsL()); + } } break; case ECmdPenInputIsSecretText: @@ -278,6 +295,14 @@ iITIEnabled = CPeninputDataConverter::AnyToInt( aData ); } break; + case ECmdPenInputFingerMatchIndicator: + { + if ( iLayoutType == EPluginInputModeFSQ ) + { + TRAP_IGNORE( vkbWindow->UpdateIndiBubbleL( aData )); + } + } + break; default: { } @@ -375,11 +400,46 @@ { if ( aInfo.Length() > 0 && !iInEditWordQueryDlg) { + icf->HideBubble(); + CPeninputGenericVkbWindow* vkbWindow = + static_cast(iLayoutWindow); + vkbWindow->SetIndiWithTextFlag( ETrue ); + vkbWindow->IndiBubbleWithText(); + + if ( vkbWindow->IndicatorData().iIndicatorImgID != 0 && + vkbWindow->IndicatorData().iIndicatorMaskID != 0 && + vkbWindow->IndicatorData().iIndicatorTextImgID != 0 && + vkbWindow->IndicatorData().iIndicatorTextMaskID != 0 ) + { + TRAP_IGNORE( vkbWindow->SetIndiBubbleImageL( + vkbWindow->IndicatorData().iIndicatorImgID, + vkbWindow->IndicatorData().iIndicatorMaskID, + vkbWindow->IndicatorData().iIndicatorTextImgID, + vkbWindow->IndicatorData().iIndicatorTextMaskID )); + } icf->ShowBubble(aInfo,icf->MsgBubbleCtrl()->Rect()); } else { icf->HideBubble(); + CPeninputGenericVkbWindow* vkbWindow = + static_cast(iLayoutWindow); + vkbWindow->SetIndiWithTextFlag( EFalse ); + vkbWindow->IndiBubbleWithoutText(); + + if ( vkbWindow->IndicatorData().iIndicatorImgID != 0 && + vkbWindow->IndicatorData().iIndicatorMaskID != 0 && + vkbWindow->IndicatorData().iIndicatorTextImgID != 0 && + vkbWindow->IndicatorData().iIndicatorTextMaskID != 0 ) + { + TRAP_IGNORE( vkbWindow->SetIndiBubbleImageL( + vkbWindow->IndicatorData().iIndicatorImgID, + vkbWindow->IndicatorData().iIndicatorMaskID, + vkbWindow->IndicatorData().iIndicatorTextImgID, + vkbWindow->IndicatorData().iIndicatorTextMaskID)); + } + + icf->ShowBubble(KEmptyString, icf->MsgBubbleCtrl()->Rect()); } } else diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp --- a/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -76,6 +76,8 @@ "z:\\resource\\plugins\\peninputvkbwindowconfiginfo_" ); _LIT( KResourceFileExtName, ".RSC" ); +_LIT(KEmptyString, ""); + // ======== MEMBER FUNCTIONS ======== // -------------------------------------------------------------------------- @@ -91,7 +93,8 @@ iPopupInited(EFalse), iPopupSet(EFalse), iLafMgr(NULL), - iFirstConstruct(ETrue) + iFirstConstruct(ETrue), + iIndiWithText( EFalse ) { } @@ -126,6 +129,7 @@ delete iLafMgr; iLafMgr = NULL; delete iBmpRotator; + iAccentCmdList.Close(); } void CPeninputGenericVkbWindow::ConstructL() { @@ -155,6 +159,14 @@ switch ( aEventType ) { + case EPeninputLayoutEventMultiRange: + { + if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn ) + { + PopupChoiceList(); + } + } + break; case EPeninputLayoutVkbEventResetShift: { HandleShiftAndCapslockBtnClicked(); @@ -165,7 +177,10 @@ if ( iPopupWnd && !iPopupWnd->Hiden() ) { iPopupWnd->CloseWindow(); - ResetAccentButton(); + if ( iLayoutContext->LayoutType() != EPluginInputModeFSQ ) + { + ResetAccentButton(); + } iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStateStandby ); } } @@ -179,25 +194,32 @@ { if (aCtrl->ControlId() == EPeninutWindowCtrlIdAccentPopupWindow) { - TInt currentRange = CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData(EPeninputDataTypeCurrentRange)); - TInt currentAccent = CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData(EPeninputDataTypeCurrentAccent)); - - if ((currentRange == ERangeAccent) && (currentAccent == event->iIndex)) + if ( iLayoutContext->LayoutType() == EPluginInputModeFSQ ) { - iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStateStandby ); - return; + TRAP_IGNORE( HandleRangeListSelectedL( aCtrl, aEventData )); } - - iLayoutContext->SetData( EPeninputDataTypeCurrentAccent, &(event->iIndex)); - - // Active range, update rangebar and vkb layout - //ChangeRange( ERangeAccent, EPeninputVkbLayoutAccented1 + 2 * event->iIndex); - (currentRange == ERangeAccent) ? ChangeRange(ERangeAccent, - EPeninputVkbLayoutAccented1 + 2 * event->iIndex, EFalse) : - ChangeRange(ERangeAccent, - EPeninputVkbLayoutAccented1 + 2 * event->iIndex, ETrue); + else + { + TInt currentRange = CPeninputDataConverter::AnyToInt( + iLayoutContext->RequestData(EPeninputDataTypeCurrentRange)); + TInt currentAccent = CPeninputDataConverter::AnyToInt( + iLayoutContext->RequestData(EPeninputDataTypeCurrentAccent)); + + if ((currentRange == ERangeAccent) && (currentAccent == event->iIndex)) + { + iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStateStandby ); + return; + } + + iLayoutContext->SetData( EPeninputDataTypeCurrentAccent, &(event->iIndex)); + + // Active range, update rangebar and vkb layout + //ChangeRange( ERangeAccent, EPeninputVkbLayoutAccented1 + 2 * event->iIndex); + (currentRange == ERangeAccent) ? ChangeRange(ERangeAccent, + EPeninputVkbLayoutAccented1 + 2 * event->iIndex, EFalse) : + ChangeRange(ERangeAccent, + EPeninputVkbLayoutAccented1 + 2 * event->iIndex, ETrue); + } } else if (aCtrl->ControlId() == EPeninutWindowCtrlIdSwitcherPopupWindow) { @@ -220,7 +242,10 @@ } else { - ResetAccentButton(); + if ( iLayoutContext->LayoutType() != EPluginInputModeFSQ ) + { + ResetAccentButton(); + } } iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStateStandby ); } @@ -429,6 +454,7 @@ KAknsIIDQsnFrInputPreviewSideL, KAknsIIDQsnFrInputPreviewMiddle, KAknsIIDQsnFrInputPreviewSideR); + icf->MsgBubbleCtrl()->SetTextL( KEmptyString ); icf->InfoBubbleCtrl()->SetTextFormat(iBubbleTextLayout); icf->InfoBubbleCtrl()->SetTextColorIndex( EAknsCIQsnTextColorsCG67 ); icf->InfoBubbleCtrl()->SetBitmapParam(NULL, @@ -442,8 +468,11 @@ icf->SetInfoBubbleCtrlSize(TSize(iBubbleSize.iW,iBubbleSize.iH)); } - // Range bar - AddRangeBarL(); + if ( !( iLayoutContext->LayoutType() == EPluginInputModeFSQ )) + { + // Range bar + AddRangeBarL(); + } // Vkb control iVkbCtrl = CPeninputVkbCtrlExt::NewL( TRect(), UiLayout(), @@ -527,10 +556,20 @@ KAknsIIDQsnFrKeypadButtonFrInactive ); } - // Switch to hwr button - AddButtonL( EPeninutWindowCtrlIdSwitchToHwrBtn, - EPeninputLayoutEventToHwr, - R_PENINPUT_LAYOUT_VKB_HWR ); + if ( iLayoutContext->LayoutType() == EPluginInputModeFSQ ) + { + // Switch to hwr button + AddButtonL( EPeninutWindowCtrlIdMultiRangeBtn, + EPeninputLayoutEventMultiRange, + R_PENINPUT_LAYOUT_FSQ_MULTIRANGE ); + } + else + { + // Switch to hwr button + AddButtonL( EPeninutWindowCtrlIdSwitchToHwrBtn, + EPeninputLayoutEventToHwr, + R_PENINPUT_LAYOUT_VKB_HWR ); + } // Add popup window AddPopupWindowL(); @@ -557,7 +596,10 @@ if ( !iPopupWnd->Hiden() ) { iPopupWnd->CloseWindow(); - ResetAccentButton(); + if ( iLayoutContext->LayoutType() != EPluginInputModeFSQ ) + { + ResetAccentButton(); + } iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStateStandby ); } @@ -683,7 +725,8 @@ TRect winRect( Rect().iTl, iLafMgr->EntirePaneRect().Size()); SetWindowRect(winRect); - ReorgnizeTitleBar(); + //ReorgnizeTitleBar(); + ReorgnizeICFAndButtons(); const TInt count = controlList.Count(); TInt controlID = 0; @@ -897,15 +940,366 @@ // void CPeninputGenericVkbWindow::PopupChoiceList() { - CFepUiBaseCtrl* accentBtn = Control( EPeninutWindowCtrlIdAccentedBtn ); + if ( iLayoutContext->LayoutType() == EPluginInputModeFSQ ) + { + TRAP_IGNORE( PopupRangeListL()); + } + else + { + CFepUiBaseCtrl* accentBtn = Control( EPeninutWindowCtrlIdAccentedBtn ); + + if ( accentBtn ) + { + if(!iPopupInited) + TRAP_IGNORE(DoIdleConstructL()); + iPopupWnd->Display( accentBtn->Rect() ); + iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStatePopup ); + } + } + } +// --------------------------------------------------------------------------- +// Show range list +// --------------------------------------------------------------------------- +// +void CPeninputGenericVkbWindow::PopupRangeListL() + { + if ( !iPopupInited ) + { + TRAP_IGNORE( DoIdleConstructL() ); + } + + + iPopupWnd->ClearItemsL(); + RArray items; + PrepareRangeListItems( items ); + TInt count = items.Count(); + for ( TInt i = 0; i < count; i++ ) + { + iPopupWnd->AddItemL( items[i] ); + } + items.Close(); + + if ( iPopupWnd->ItemsCount() < 1 ) + { + return; + } + + if ( iPopupWnd->ItemsCount() < 2 ) + { + const CFepLayoutChoiceList::SItem* item = iPopupWnd->ItemByIndex( 0 ); + CFepLayoutChoiceList::SEvent event; + event.iIndex = 0; + event.iCommand = item->iCommand; + TPtrC ptr; + ptr.Set(reinterpret_cast(&event), sizeof(event)); + HandleRangeListSelectedL( iPopupWnd, ptr ); + return; + } + + CFepUiBaseCtrl* btn = Control( EPeninutWindowCtrlIdMultiRangeBtn ); + iPopupWnd->SetListColumnNumWithLafL( iPopupWnd->ItemsCount() ); + iPopupWnd->SetCurrentFocusedIndex( - 1 ); //no active item + iPopupWnd->Display( btn->Rect() ); + iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStatePopup ); + } + +// --------------------------------------------------------------------------- +// Handle range list event +// --------------------------------------------------------------------------- +// +void CPeninputGenericVkbWindow::HandleRangeListSelectedL( CFepUiBaseCtrl* /*aCtrl*/, + const TDesC& aData ) + { + CFepLayoutChoiceList::SEvent* event = + (CFepLayoutChoiceList::SEvent*)aData.Ptr(); + + TInt index = -1; + TInt range = ERangeInvalid; + + if ( event->iCommand == EPeninputVkbLayoutNativeChar ) + { + range = ERangeNative; + } + + else if ( event->iCommand == EPeninputVkbLayoutNativeNumber ) + { + range = ERangeNativeNumber; + } - if ( accentBtn ) + else if ( event->iCommand == EPeninputVkbLayoutLatinChar ) + { + range = ERangeEnglish; + } + + else if ( event->iCommand == EPeninputVkbLayoutLatinNumber ) + { + range = ERangeNumber; + } + + else if ( event->iCommand == EPeninputVkbLayoutSymbol ) + { + range = ERangeSymbol; + } + + else if ( event->iCommand == EPeninputVkbLayoutAccented1 ) + { + index = 0; + range = ERangeAccent; + } + + else if ( event->iCommand == EPeninputVkbLayoutAccented2 ) + { + index = 1; + range = ERangeAccent; + } + + else if ( event->iCommand == EPeninputVkbLayoutAccented3 ) + { + index = 2; + range = ERangeAccent; + } + + TInt currentRange = IntContext( EPeninputDataTypeCurrentRange ); + TInt currentAccent = IntContext( EPeninputDataTypeCurrentAccent ); + + if ( currentRange == range ) + { + if ( range != ERangeAccent || currentAccent == index ) + { + iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStateStandby ); + return; + } + } + + iLayoutContext->SetData( EPeninputDataTypeCurrentAccent, &index ); + + if ( range != ERangeAccent ) + { + ChangeRange( range ); + } + else + { + ChangeRange( ERangeAccent, + EPeninputVkbLayoutAccented1 + 2 * index, ETrue ); + } + UpdateRangeCtrlsL(); + } + +// --------------------------------------------------------------------------- +// Update state of range button +// --------------------------------------------------------------------------- +// +void CPeninputGenericVkbWindow::UpdateRangeCtrlsL() + { + CAknFepCtrlCommonButton* rangeBtn = + static_cast( + Control(EPeninutWindowCtrlIdMultiRangeBtn)); + if ( !rangeBtn ) + { + return; + } + + RArray items; + PrepareRangeListItems( items ); + TInt count = items.Count(); + items.Close(); + + TInt languageId = IntContext( EPeninputDataTypeInputLanguage ); + TInt range = IntContext( EPeninputDataTypeCurrentRange ); + + TInt resId = -1; + TInt aplhaRangeResId = -1; + TInt numberRangeResId = -1; + GetRangeIconResource( languageId, aplhaRangeResId, numberRangeResId ); + + if ( range == ERangeEnglish || range == ERangeNative ) + { + resId = aplhaRangeResId; + } + else { - if(!iPopupInited) - TRAP_IGNORE(DoIdleConstructL()); - iPopupWnd->Display( accentBtn->Rect() ); - iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStatePopup ); + resId = numberRangeResId; + } + + rangeBtn->SetResourceId( resId ); + rangeBtn->ConstructFromResourceL(); + rangeBtn->SetDimmed( count < 1 ); + } + +// --------------------------------------------------------------------------- +// Get resource ids of range button icon +// --------------------------------------------------------------------------- +// +void CPeninputGenericVkbWindow::GetRangeIconResource( TInt aLangId, + TInt& aAlphaRange, + TInt& aOtherRange ) + { + switch ( aLangId ) + { + case ELangRussian: //Cyrillic + case ELangBulgarian: + case ELangUkrainian: + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_CYRILLIC_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_CYRILLIC_NUMERIC; + } + break; + case ELangGreek: //Greek + case ELangCyprusGreek: + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_GREEK_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_GREEK_NUMERIC; + } + break; + case ELangHebrew: //Hebrew + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_HEBREW_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_HEBREW_NUMERIC; + } + break; + case ELangArabic: //Arabic + case ELangFarsi: //Farsi + case ELangUrdu: //Urdu + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_ARABIC_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_ARABIC_NUMERIC; + } + break; + case ELangThai: //Thai + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_THAI_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_THAI_NUMERIC; + } + break; + default: //others + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_LATIN_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_LATIN_NUMERIC; + } + } + } + +// --------------------------------------------------------------------------- +// Prepare range list items +// --------------------------------------------------------------------------- +// +void CPeninputGenericVkbWindow::PrepareRangeListItems( + RArray& aRangeItems ) + { + aRangeItems.Reset(); + TInt currentRange = IntContext( EPeninputDataTypeCurrentRange ); + TInt permittedRange = IntContext( EPeninputDataTypePermittedRange ); + TInt currentAccent = IntContext( EPeninputDataTypeCurrentAccent ); + + CPeninputRangeBarInfo* rbinfo= ConfigInfo()->RangeBarInfo(); + CPeninputRangeInfo* rgninfo = NULL; + + //add accent items + if ( permittedRange & ERangeAccent ) + { + rgninfo = rbinfo->FindRange( ERangeAccent ); + if ( rgninfo ) + { + for ( TInt i = 0; i < iAccentCmdList.Count(); i++ ) + { + if( currentRange != ERangeAccent || currentAccent != i ) + { + aRangeItems.Append( iAccentCmdList[i] ); + } + } + } } + + //add range items + CFepLayoutChoiceList::SItem item; + + if ( permittedRange & ERangeNative ) + { + rgninfo = rbinfo->FindRange( ERangeNative ); + if ( rgninfo && currentRange != ERangeNative ) + { + item.iCommand = EPeninputVkbLayoutNativeChar; + item.iText.Copy( iRangeLabels.iLabelNativeChar ); + aRangeItems.Append( item ); + } + } + + if ( permittedRange & ERangeNativeNumber ) + { + rgninfo = rbinfo->FindRange( ERangeNativeNumber ); + if ( rgninfo && currentRange != ERangeNativeNumber ) + { + item.iCommand = EPeninputVkbLayoutNativeNumber; + item.iText.Copy( iRangeLabels.iLabelNativeNumber ); + aRangeItems.Append( item ); + } + } + + if ( permittedRange & ERangeEnglish ) + { + rgninfo = rbinfo->FindRange( ERangeEnglish ); + if ( rgninfo && currentRange != ERangeEnglish ) + { + item.iCommand = EPeninputVkbLayoutLatinChar; + item.iText.Copy( iRangeLabels.iLabelLatinChar ); + aRangeItems.Append( item ); + } + } + + if ( permittedRange & ERangeNumber ) + { + rgninfo = rbinfo->FindRange( ERangeNumber ); + if ( rgninfo && currentRange != ERangeNumber ) + { + item.iCommand = EPeninputVkbLayoutLatinNumber; + item.iText.Copy( iRangeLabels.iLabelLatinNumber ); + aRangeItems.Append( item ); + } + } + } + +// --------------------------------------------------------------------------- +// Load range labels for range list +// --------------------------------------------------------------------------- +// +void CPeninputGenericVkbWindow::ConstructRangeLabelListL( TInt /*aLangId*/ ) + { + iRangeLabels.iLabelNativeChar.Zero(); + iRangeLabels.iLabelNativeNumber.Zero(); + iRangeLabels.iLabelLatinChar.Zero(); + iRangeLabels.iLabelLatinNumber.Zero(); + iRangeLabels.iLabelSymbol.Zero(); + iRangeLabels.iLabelAccent.Zero(); + + TInt resid = R_PENINPUT_LAYOUT_VKB_RANGES; + + TResourceReader reader; + CCoeEnv::Static()->CreateResourceReaderLC( reader, resid ); + TPtrC ptr1 = reader.ReadTPtrC(); + TPtrC ptr2 = reader.ReadTPtrC(); + TPtrC ptr3 = reader.ReadTPtrC(); + TPtrC ptr4 = reader.ReadTPtrC(); + TPtrC ptr5 = reader.ReadTPtrC(); + TPtrC ptr6 = reader.ReadTPtrC(); + + iRangeLabels.iLabelNativeChar.Copy( ptr1 ); + iRangeLabels.iLabelNativeNumber.Copy( ptr2 ); + iRangeLabels.iLabelLatinChar.Copy( ptr3 ); + iRangeLabels.iLabelLatinNumber.Copy( ptr4 ); + iRangeLabels.iLabelSymbol.Copy( ptr5 ); + iRangeLabels.iLabelAccent.Copy( ptr6 ); + + CleanupStack::PopAndDestroy( 1 ); //reader + } + +// --------------------------------------------------------------------------- +// Utils to get context value +// --------------------------------------------------------------------------- +// +TInt CPeninputGenericVkbWindow::IntContext( TPeninputDataType aDataIndex ) + { + return CPeninputDataConverter::AnyToInt( + iLayoutContext->RequestData( aDataIndex )); } // -------------------------------------------------------------------------- @@ -1246,8 +1640,14 @@ // void CPeninputGenericVkbWindow::SetSwitchlistSecretFlag(TBool aSecret) { - static_cast - (Control(EPeninutWindowCtrlIdSwitcherPopupWindow))->SetSecretEditor(aSecret); + CPeninputLayoutInputmodelChoice* choiceList = + static_cast( + Control(EPeninutWindowCtrlIdSwitcherPopupWindow )); + + if ( choiceList ) + { + choiceList->SetSecretEditor( aSecret ); + } //disable or enable arrow keys of FSQ in secret editor. } @@ -1680,7 +2080,7 @@ TRAP_IGNORE( iLafMgr->UpdateLafDataL() ); } -void CPeninputGenericVkbWindow::ReorgnizeTitleBar() +void CPeninputGenericVkbWindow::ReorgnizeICFAndButtons() { TRect rect; @@ -1721,6 +2121,20 @@ icfFont->FontMaxHeight(), icfFont)); + if ( iLayoutContext->LayoutType() == EPluginInputModeFSQ ) + { + iLafMgr->GetButtonRect( + EPeninutWindowCtrlIdMultiRangeBtn, exRect, inRect ); + exRect.Move(x, y); + inRect.Move(x, y); + static_cast + ( Control( EPeninutWindowCtrlIdMultiRangeBtn ))->SizeChanged( + exRect, inRect, ETrue ); + + TRAP_IGNORE( icf->MsgBubbleCtrl()->SetTextL( KEmptyString )); + iIndiWithText = EFalse; + IndiBubbleWithoutText(); + } iLafMgr->GetButtonRect(EPeninutWindowCtrlIdOptionBtn,exRect ,inRect); exRect.Move(x, y); @@ -1885,6 +2299,88 @@ iPopupInited = ETrue; iPopupSet = ETrue; } +// --------------------------------------------------------------------------- +// Load accent labels for range list +// --------------------------------------------------------------------------- +// +void CPeninputGenericVkbWindow::ConstructFSQAccentListL( TInt aLangId ) + { + iAccentCmdList.Reset(); + + TBool is10x3 = ( aLangId == ELangEnglish ) || ( aLangId == ELangAmerican ) + || ( aLangId == ELangDutch) || (aLangId == ELangTagalog ) + || ( aLangId == ELangIndonesian) || (aLangId == ELangMalay ); + + if ( aLangId == ELangVietnamese ) + { + _LIT( KVietAccentList1, "\x00E0 - \x013A" ); + _LIT( KVietAccentList2, "\x013C - \x017E" ); + + CFepLayoutChoiceList::SItem item; + + item.iCommand = EPeninputVkbLayoutAccented1; + item.iText.Copy( KVietAccentList1 ); + iAccentCmdList.Append( item ); + + item.iCommand = EPeninputVkbLayoutAccented2; + item.iText.Copy( KVietAccentList2 ); + iAccentCmdList.Append( item ); + } + + // 10X3 + else if ( is10x3 ) + { + _LIT( KVietAccentList1, "\x00E0 - \x0121" ); + _LIT( KVietAccentList2, "\x0123 - \x014F" ); + _LIT( KVietAccentList3, "\x0151 - \x017E" ); + + CFepLayoutChoiceList::SItem item; + + item.iCommand = EPeninputVkbLayoutAccented1; + item.iText.Copy( KVietAccentList1 ); + iAccentCmdList.Append( item ); + + item.iCommand = EPeninputVkbLayoutAccented2; + item.iText.Copy( KVietAccentList2 ); + iAccentCmdList.Append( item ); + + + item.iCommand = EPeninputVkbLayoutAccented3; + item.iText.Copy( KVietAccentList3 ); + iAccentCmdList.Append( item ); + } + //10X4 + else + { + // Add item + TResourceReader reader; + CFepLayoutChoiceList::SItem item; + + item.iCommand = EPeninputVkbLayoutAccented1; + CCoeEnv::Static()->CreateResourceReaderLC( reader, R_PENINPUT_VKB_ACCENT1 ); + TPtrC p1 = reader.ReadTPtrC(); + item.iText.Copy( p1 ); + iAccentCmdList.Append( item ); + CleanupStack::PopAndDestroy( 1 ); //reader + + item.iCommand = EPeninputVkbLayoutAccented2; + CCoeEnv::Static()->CreateResourceReaderLC( reader, R_PENINPUT_VKB_ACCENT2 ); + TPtrC p2 = reader.ReadTPtrC(); + item.iText.Copy( p2 ); + iAccentCmdList.Append( item ); + CleanupStack::PopAndDestroy( 1 ); //reader + + item.iCommand = EPeninputVkbLayoutAccented3; + CCoeEnv::Static()->CreateResourceReaderLC( reader, R_PENINPUT_VKB_ACCENT3 ); + TPtrC p3 = reader.ReadTPtrC(); + item.iText.Copy( p3 ); + iAccentCmdList.Append( item ); + CleanupStack::PopAndDestroy( 1 );//reader + } + + iPopupInited = ETrue; + iPopupSet = ETrue; + } void CPeninputGenericVkbWindow::UpdateICFTextL() { CFepLayoutMultiLineIcf* icf = @@ -2101,4 +2597,208 @@ return matchlistcolor; } +void CPeninputGenericVkbWindow::SetIndiBubbleImageL( const TInt aImgID1, + const TInt aMaskID1, + const TInt aImgID2, + const TInt aMaskID2 ) + { + MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); + + CFbsBitmap* bmp1 = NULL; + CFbsBitmap* mask1 = NULL; + + TInt colorIndex = EAknsCIQsnIconColorsCG30; + + AknsUtils::CreateColorIconL(skininstance, + KAknsIIDQsnIconColors, + KAknsIIDQsnIconColors, + colorIndex, + bmp1, + mask1, + AknIconUtils::AvkonIconFileName(), + aImgID1, + aMaskID1, + KRgbGray); + CleanupStack::PushL( bmp1 ); + CleanupStack::PushL( mask1 ); + + AknIconUtils::GetContentDimensions(bmp1, iIndicatorSize); + + CFbsBitmap* bmp2 = NULL; + CFbsBitmap* mask2 = NULL; + AknsUtils::CreateColorIconL(skininstance, + KAknsIIDQsnIconColors, + KAknsIIDQsnIconColors, + colorIndex, + bmp2, + mask2, + AknIconUtils::AvkonIconFileName(), + aImgID2, + aMaskID2, + KRgbGray); + + CleanupStack::PushL( bmp2 ); + CleanupStack::PushL( mask2 ); + + AknIconUtils::GetContentDimensions(bmp2, iIndicatorTextSize); + + TRect boundRect; + if ( iIndiWithText ) + { + boundRect = iLafMgr->IndiIconRectWithText(); + } + else + { + boundRect = iLafMgr->IndiIconRectWithoutText(); + } + + TRect imgrect, textrect; + + CalIndicatorRect(boundRect, imgrect, textrect, EIndiAlignCenter); + AknIconUtils::SetSize(bmp1, imgrect.Size(), EAspectRatioNotPreserved); + AknIconUtils::SetSize(mask1, imgrect.Size(), EAspectRatioNotPreserved); + AknIconUtils::SetSize(bmp2, textrect.Size(), EAspectRatioNotPreserved); + AknIconUtils::SetSize(mask2, textrect.Size(), EAspectRatioNotPreserved); + + CFbsBitmap* bmp3 = AknPenImageUtils::CombineTwoImagesL(bmp1, bmp2, bmp1->DisplayMode()); + CFbsBitmap* mask3 = AknPenImageUtils::CombineTwoImagesL(mask1, mask2, EGray256); + + CFepLayoutMultiLineIcf* icf = static_cast + (Control(EPeninputWindowCtrlIdMultiLineICF)); + icf->MsgBubbleCtrl()->SetBitmapParam( bmp3, mask3, + KAknsIIDQsnFrInputPreviewSideL, + KAknsIIDQsnFrInputPreviewMiddle, + KAknsIIDQsnFrInputPreviewSideR ); + + CleanupStack::PopAndDestroy( mask2 ); + CleanupStack::PopAndDestroy( bmp2 ); + CleanupStack::PopAndDestroy( mask1 ); + CleanupStack::PopAndDestroy( bmp1 ); + } + +void CPeninputGenericVkbWindow::CalIndicatorRect(const TRect& aBoundRect, + TRect& aRealRect1, + TRect& aRealRect2, + TIndicatorAlign aAlign) + { + TInt imgAspectText = iIndicatorTextSize.iWidth / iIndicatorTextSize.iHeight; + TInt imgAspectIndi = iIndicatorSize.iWidth / iIndicatorSize.iHeight; + TSize imgSizeText( aBoundRect.Size().iHeight * imgAspectText, + aBoundRect.Size().iHeight ); + TSize imgSizeIndi( aBoundRect.Size().iHeight * imgAspectIndi, + aBoundRect.Size().iHeight ); + // check if the length of img > bound rect width + TInt nTotalWidth = imgSizeText.iWidth + imgSizeIndi.iWidth; + if( nTotalWidth > aBoundRect.Size().iWidth ) + { + TReal nAspect = (TReal)imgSizeText.iWidth / nTotalWidth; + imgSizeText.iWidth = aBoundRect.Size().iWidth * nAspect; + imgSizeIndi.iWidth = aBoundRect.Size().iWidth - imgSizeText.iWidth; + imgSizeText.iHeight = imgSizeText.iWidth / imgAspectText; + // make sure the height of two rect is equal + imgSizeIndi.iHeight = imgSizeText.iHeight; + } + if( aAlign == EIndiAlignRight ) + { + aRealRect2 = TRect(TPoint( aBoundRect.iBr.iX - imgSizeText.iWidth, aBoundRect.iTl.iY), + imgSizeText); + aRealRect1 = TRect(TPoint(aRealRect2.iTl.iX - imgSizeIndi.iWidth, aRealRect2.iTl.iY), + imgSizeIndi); + } + else if( aAlign == EIndiAlignCenter ) + { + TInt offsetX = ( aBoundRect.Size().iWidth - imgSizeText.iWidth - imgSizeIndi.iWidth ) / 2; + TInt offsetY = ( aBoundRect.Size().iHeight - imgSizeText.iHeight ) / 2; + aRealRect2 = TRect( TPoint( aBoundRect.iBr.iX - imgSizeText.iWidth - offsetX, + aBoundRect.iTl.iY + offsetY), + imgSizeText ); + aRealRect1 = TRect( TPoint(aRealRect2.iTl.iX - imgSizeIndi.iWidth, aRealRect2.iTl.iY), + imgSizeIndi ); + } + else if( aAlign == EIndiAlignLeft ) + { + aRealRect1 = TRect( aBoundRect.iTl, imgSizeIndi ); + aRealRect2 = TRect( TPoint( aRealRect1.iBr.iX, aRealRect1.iTl.iY ), imgSizeText ); + } + } + +void CPeninputGenericVkbWindow::IndiBubbleWithText() + { + CFepLayoutMultiLineIcf* icf = static_cast + (Control(EPeninputWindowCtrlIdMultiLineICF)); + if ( icf ) + { + TAknTextLineLayout textLine = iLafMgr->IndiText(); + TRect bubbleRect = iLafMgr->IndiPaneRectWithText(); + TRect iconRect = iLafMgr->IndiIconRectWithText(); + TSize offset( 60, 6 ); + TSize size( iconRect.Width(), iconRect.Height()); + + icf->MsgBubbleCtrl()->SetRect( bubbleRect ); + icf->MsgBubbleCtrl()->SetIconOffsetAndSize( offset, size ); + icf->MsgBubbleCtrl()->SetTextFormat( textLine ); + icf->MsgBubbleCtrl()->SetTextColorIndex( EAknsCIQsnTextColorsCG67 ); + } + } + +void CPeninputGenericVkbWindow::IndiBubbleWithoutText() + { + CFepLayoutMultiLineIcf* icf = static_cast + (Control(EPeninputWindowCtrlIdMultiLineICF)); + if ( icf ) + { + TRect bubbleRect = iLafMgr->IndiPaneRectWithoutText(); + TRect iconRect = iLafMgr->IndiIconRectWithoutText(); + TSize offset( 0, 6 ); + TSize size( iconRect.Width(), iconRect.Height()); + + icf->MsgBubbleCtrl()->SetRect( bubbleRect ); + icf->MsgBubbleCtrl()->SetIconOffsetAndSize( offset, size ); + } + } + +void CPeninputGenericVkbWindow::SetIndiWithTextFlag( TBool aFlag ) + { + iIndiWithText = aFlag; + } + +void CPeninputGenericVkbWindow::UpdateIndiBubbleL( TUint8* aData ) + { + CFepLayoutMultiLineIcf* icf = static_cast + (Control(EPeninputWindowCtrlIdMultiLineICF)); + + RDesReadStream readStream; + TFepIndicatorInfo indicatorData; + + TPtr8 countPtr( aData, 4*sizeof(TInt), 4*sizeof(TInt) ); + readStream.Open(countPtr); + CleanupClosePushL(readStream); + + indicatorData.iIndicatorImgID = readStream.ReadInt32L(); + indicatorData.iIndicatorMaskID = readStream.ReadInt32L(); + indicatorData.iIndicatorTextImgID = readStream.ReadInt32L(); + indicatorData.iIndicatorTextMaskID = readStream.ReadInt32L(); + + CleanupStack::PopAndDestroy(&readStream); + + if ( indicatorData.iIndicatorImgID != 0 && + indicatorData.iIndicatorMaskID != 0 && + indicatorData.iIndicatorTextImgID != 0 && + indicatorData.iIndicatorTextMaskID != 0 ) + { + SetIndicatorData( indicatorData ); + + if ( icf ) + { + SetIndiBubbleImageL( indicatorData.iIndicatorImgID, + indicatorData.iIndicatorMaskID, + indicatorData.iIndicatorTextImgID, + indicatorData.iIndicatorTextMaskID ); + + TBuf<100> text; + icf->MsgBubbleCtrl()->GetText( text ); + icf->ShowBubble( text, icf->MsgBubbleCtrl()->Rect()); + } + } + } // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputgenericvkb/srcdata/peninputvkbwindow.rss --- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindow.rss Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindow.rss Fri Mar 12 15:44:07 2010 +0200 @@ -28,6 +28,7 @@ // User includes #include "peninputcommonlayout.rh" #include "peninputgenericvkb.hrh" +#include "peninputgenericvkb.rh" #include // Resource identifiers @@ -203,14 +204,14 @@ //controltype = EPeninputCtrlTypeEventBtn; //controleventid = EPeninputLayoutEventBack; image = r_peninput_layout_vkb_enter; - }, - PENINPUT_LAYOUT_CONTROL_INFO - { - id = EPeninutWindowCtrlIdSwitcherPopupWindow; - //controltype = EPeninputCtrlTypePopupInputModeChoiceList; - //controleventid = ; - image = r_peninput_layout_vkb_hwr; } + //PENINPUT_LAYOUT_CONTROL_INFO + // { + // id = EPeninutWindowCtrlIdSwitcherPopupWindow; + // //controltype = EPeninputCtrlTypePopupInputModeChoiceList; + // //controleventid = ; + // image = r_peninput_layout_vkb_hwr; + // } }; } // end by vv @@ -533,20 +534,20 @@ bmpfile=PENINPUT_LAYOUT_VKB_BMP; imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputgenericvkbQgn_indi_input_backspace; - nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_backspace_mask; + nactive=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; nactiveskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - nactivep=EMbmPeninputgenericvkbQgn_indi_input_backspace; - nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_backspace_mask; + nactivep=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; nactivepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; - active=EMbmPeninputgenericvkbQgn_indi_input_backspace; - activemsk=EMbmPeninputgenericvkbQgn_indi_input_backspace_mask; + active=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; activeskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - activep=EMbmPeninputgenericvkbQgn_indi_input_backspace; - activepmsk=EMbmPeninputgenericvkbQgn_indi_input_backspace_mask; + activep=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; activepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; } @@ -560,20 +561,20 @@ bmpfile=PENINPUT_LAYOUT_VKB_BMP; imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputgenericvkbQgn_indi_itut_backspace; - nactivemsk=EMbmPeninputgenericvkbQgn_indi_itut_backspace_mask; + nactive=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; nactiveskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - nactivep=EMbmPeninputgenericvkbQgn_indi_itut_backspace; - nactivepmsk=EMbmPeninputgenericvkbQgn_indi_itut_backspace_mask; + nactivep=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; nactivepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; - active=EMbmPeninputgenericvkbQgn_indi_itut_backspace; - activemsk=EMbmPeninputgenericvkbQgn_indi_itut_backspace_mask; + active=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; activeskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - activep=EMbmPeninputgenericvkbQgn_indi_itut_backspace; - activepmsk=EMbmPeninputgenericvkbQgn_indi_itut_backspace_mask; + activep=EMbmPeninputgenericvkbQgn_indi_input_backspace1; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_backspace1_mask; activepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; } @@ -1007,6 +1008,358 @@ bgimgskinid = EAknsMinorGenericQgnGrafInputBg; } +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_fsq_multirange + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE PENINPUT_FSQQWERTY_RANGELABELS r_peninput_layout_vkb_ranges + { + nativeChar = qtn_tin_vkb_native_characters_range; + nativeNumber = qtn_tin_vkb_native_numbers_symbols; + latinChar = qtn_tin_vkb_alpha_range; + latinNumber = qtn_tin_vkb_numbers_symbols; + } + +//for Cyrillic +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_cyrillic_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_cyrillic_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_cyrillic_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +//for Greek +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_greek_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_greek_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_greek_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +//for Hebrew +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_hebrew_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_hebrew_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_hebrew_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +//for Arabic, Farsi and Urdu +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_arabic_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_arabic_indic_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_arabic_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_arabic_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + + +//for Thai +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_thai_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_thai_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_text_thai_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +//for Latin +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_latin_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_latin_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + nactivemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + nactivepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + activemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + activepmsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputgenericvkbQgn_indi_input_case_capital; + disablemsk=EMbmPeninputgenericvkbQgn_indi_input_case_capital_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } RESOURCE AKN_FEP_SCROLLABLE_LIST_IMAGE r_peninput_fsq_candidate_list { bmpfile = PENINPUT_LAYOUT_VKB_BMP; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/group/iconlist.txt --- a/textinput/peninputsplititut/group/iconlist.txt Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/group/iconlist.txt Fri Mar 12 15:44:07 2010 +0200 @@ -46,3 +46,4 @@ -c8,8 qgn_indi_input_list_collapse.svg -c8,8 qgn_indi_input_backspace.svg -c8,8 qgn_indi_input_shift.svg +-c8,8 qgn_indi_input_backspace1.svg diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/group/peninputsplititut.mmp --- a/textinput/peninputsplititut/group/peninputsplititut.mmp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/group/peninputsplititut.mmp Fri Mar 12 15:44:07 2010 +0200 @@ -42,6 +42,7 @@ SOURCE peninputsplititutchnuistatepinyincomposition.cpp peninputsplititutwesternuimgr.cpp peninputsplititutwesternuistatenonpredict.cpp SOURCE peninputsplititutconverter.cpp peninputcommonbgctrl.cpp +SOURCE peninputsplititutwesternuistatespelling.cpp USERINCLUDE ../inc diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutdata.h --- a/textinput/peninputsplititut/inc/peninputsplititutdata.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutdata.h Fri Mar 12 15:44:07 2010 +0200 @@ -80,6 +80,18 @@ EPreviewBubbleInnerRect, EPreviewBubbleFont, EPreviewBubbleTextlayout, + ESpellICFRect, + EBtnTextLine, + EItutPosOk, + EItutPosCancel, + EIcfFont, + ESpellEditIndicatorRect, + EImIndicatorRect, + ESpellBackSpcae, + ESpellBackSpcaeInner, + EIndiPaneWithoutTextRect, + EIndiIconWithoutTextRect, + EIndiTextLine }; enum TControlId @@ -98,7 +110,10 @@ ECtrlIdPuncCandsList, ECtrlIdBackground, // used to display background ECtrlIdCancelWindow, - ECtrlIdLastStdCtrl = ECtrlIdBackground + 1 + ECtrlIdICF, + ECtrlIdOkBtn, + ECtrlIdCancelBtn, + ECtrlIdLastStdCtrl = ECtrlIdCancelBtn+ 1 }; enum TItutCommand @@ -110,6 +125,7 @@ EItutCmdPredictItemSelected, EItutCmdArrowUp, EItutCmdArrowDown, + EItutExtCmdSizeChanged, EItutCmdCheckIcfEmpty }; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutdatamgr.h --- a/textinput/peninputsplititut/inc/peninputsplititutdatamgr.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutdatamgr.h Fri Mar 12 15:44:07 2010 +0200 @@ -188,6 +188,40 @@ inline void SetLatinOnly( TBool aLatinOnly ); /** + * Is in Spell mode + * + * @since S60 v5.0 + * @return TBool + */ + inline TBool IsSpellMode(); + + /** + * Set Spell mode flag + * + * @since S60 v5.0 + * @param aSpellMode Spell mode flag + * @return void + */ + inline void SetSpellMode(TBool aSpellMode); + + /** + * Set Indicator Data + * + * @since S60 v5.0 + * @param aIndicatorData Indicator Data + * @return void + */ + inline void SetIndicatorData(TFepIndicatorInfo &aIndicatorData); + + /** + * Get Indicator Data + * + * @since S60 v5.0 + * @return TFepIndicatorInfo + */ + inline TFepIndicatorInfo IndicatorData(); + + /** * Set update flag * * @since S60 v5.0 @@ -393,6 +427,13 @@ * @return resource id */ TInt HindiKeypadResourceId(); +public: + TInt iIcfTextLeftMargin; + TInt iIcfTextRightMargin; + TInt iIcfTextTopMargin; + TInt iIcfTextBottomMargin; + TInt iIcfTextLineSpaceMargin; + TInt iIcfTextHeight; private: // data member RPointerArray iSubscriberList; @@ -406,6 +447,7 @@ // offset of layout, compare to screen TPoint iLayoutOffset; TRect iLayoutRect; + TRect iLayoutRectSpell; TRect iBackgroundRect; TRect iBackspaceRect; @@ -498,7 +540,33 @@ TBool iExistPlusChar; TBool iPlusCharFlagChanged; TBool iNumberOnly; + // For spell mode + TBool iSpellMode; + TRect iSpellICFRect; + TRect iSpellEditIndicator; + TRect iOkRect; + TRect iCancelRect; + CFont* iIcfFont; + TInt iIcfTextAlignment; + + // Spell Back space rect + TRect iSpellBackSpcace; + TRect iSpellBackSpcaceInner; + + // Left&Right arrow + TRect iSpellArrowLeftRect; + TRect iSpellArrowLeftRectInner; + TRect iSpellArrowRightRect; + TRect iSpellArrowRightRectInner; + + //TRect iIndiPaneRectWithTextForPrtWest; + TRect iIndiPaneRectWithoutTextForPrtWest; + //TRect iIndiIconRectWithTextForPrtWest; + TRect iIndiIconRectWithoutTextForPrtWest; + TAknTextLineLayout iIndiTextForPrtWest; + TAknTextLineLayout iSpellBtnTextFormat; + TFepIndicatorInfo iIndicatorData; }; // --------------------------------------------------------------------------- @@ -547,6 +615,46 @@ } // --------------------------------------------------------------------------- +// CSplitItutDataMgr::IsSpellMode +// --------------------------------------------------------------------------- +// +inline TBool CSplitItutDataMgr::IsSpellMode() + { + return iSpellMode; + } + +// --------------------------------------------------------------------------- +// CSplitItutDataMgr::SetSpellMode +// --------------------------------------------------------------------------- +// +inline void CSplitItutDataMgr::SetSpellMode(TBool aSpellMode) + { + iSpellMode = aSpellMode; + } + +// --------------------------------------------------------------------------- +// CSplitItutDataMgr::SetIndicatorData +// --------------------------------------------------------------------------- +// +inline void CSplitItutDataMgr::SetIndicatorData(TFepIndicatorInfo &aIndicatorData) + { + iIndicatorData.iIndicatorImgID = aIndicatorData.iIndicatorImgID; + iIndicatorData.iIndicatorMaskID = aIndicatorData.iIndicatorMaskID; + iIndicatorData.iIndicatorTextImgID = aIndicatorData.iIndicatorTextImgID; + iIndicatorData.iIndicatorTextMaskID = aIndicatorData.iIndicatorTextMaskID; + } + +// --------------------------------------------------------------------------- +// CSplitItutDataMgr::IndicatorData +// --------------------------------------------------------------------------- +// +inline TFepIndicatorInfo CSplitItutDataMgr::IndicatorData() + { + return iIndicatorData; + } + + +// --------------------------------------------------------------------------- // CSplitItutDataMgr::IsValidLanguage // --------------------------------------------------------------------------- // diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutlayout.h --- a/textinput/peninputsplititut/inc/peninputsplititutlayout.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutlayout.h Fri Mar 12 15:44:07 2010 +0200 @@ -60,6 +60,15 @@ ~CSplitItutUiLayout(); /** + * Process text update + * + * @since S60 v5.0 + * @param aData context data + * @return TInt + */ + TInt OnAppEditorTextComing(const TFepInputContextFieldData& aData); + + /** * handle control event * * @since S60 v5.0 @@ -188,6 +197,14 @@ * @return None */ void ApplyVariantLafDataL(TBool aResolutionChange = EFalse); + /** + * apply spell modelaf data + * + * @since S60 v5.0 + * @return None + */ + void ApplyVariantLafDataForSpellL(); + /** * get ui manager diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutlayoutcontext.h --- a/textinput/peninputsplititut/inc/peninputsplititutlayoutcontext.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutlayoutcontext.h Fri Mar 12 15:44:07 2010 +0200 @@ -49,6 +49,7 @@ virtual CFepUiLayout* UiLayout() = 0; virtual TBool IsSecretEdtior() = 0; virtual void ApplyVariantLafDataL(TBool aResolutionChange = EFalse) = 0; + virtual void ApplyVariantLafDataForSpellL() = 0; virtual CSplitItutWindowManager* UiManager() = 0; }; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutuimgrbase.h --- a/textinput/peninputsplititut/inc/peninputsplititutuimgrbase.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutuimgrbase.h Fri Mar 12 15:44:07 2010 +0200 @@ -47,7 +47,8 @@ EStateComposition, EStatePredict, // western ui state - EStateWesternStandby + EStateWesternStandby, + EStateSpelling }; public: diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutwesternuimgr.h --- a/textinput/peninputsplititut/inc/peninputsplititutwesternuimgr.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutwesternuimgr.h Fri Mar 12 15:44:07 2010 +0200 @@ -133,6 +133,12 @@ * own */ CSplitItutUiStateBase* iNormalState; + + /** + * Spell state. + * own + */ + CSplitItutUiStateBase* iSpellState; }; #endif // C_WESTERNSPLITITUTUIMGR_H \ No newline at end of file diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutwesternuistatespelling.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputsplititut/inc/peninputsplititutwesternuistatespelling.h Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,60 @@ +/* +* Copyright (c) 2009 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: +* +*/ + +#ifndef C_WESTERNITUTUISTATESPELLING_H +#define C_WESTERNITUTUISTATESPELLING_H + +#include "peninputsplititutuistatebase.h" + +class CFepLayoutMultiLineIcf; +class CAknFepCtrlCommonButton; + +class CWesternSplitItutUiStateSpelling : public CSplitItutUiStateBase + { +public: + static CWesternSplitItutUiStateSpelling* NewL(CSplitItutUiMgrBase* aOwner); + + ~CWesternSplitItutUiStateSpelling(); + + void OnExit(); + + void OnEntryL(); + + CSplitItutUiMgrBase::TUiState StateType(); + + TInt HandleCommandL(TInt aCmd, TUint8* aData); + + TBool HandleCtrlEventL(TInt aEventType, + CFepUiBaseCtrl* aCtrl, + const TDesC& aEventData); + +protected: + CWesternSplitItutUiStateSpelling(CSplitItutUiMgrBase* aOwner); + void ConstructL(); + void CreateTextBtnIfNeededL(CAknFepCtrlCommonButton*& aBtn, + TInt aCtrlId, + TInt aCtrlPos, + TInt aTextResId, + TAknTextLineLayout aTextFormat); + void ReCalcLayoutL(); +private: + CFepLayoutMultiLineIcf* iICF; + CAknFepCtrlCommonButton* iOk; + CAknFepCtrlCommonButton* iCancel; + }; + +#endif //C_WESTERNITUTUISTATESPELLING_H \ No newline at end of file diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutwindow.h --- a/textinput/peninputsplititut/inc/peninputsplititutwindow.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutwindow.h Fri Mar 12 15:44:07 2010 +0200 @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "peninputsplititutwindowmanager.h" @@ -83,6 +84,14 @@ */ ~CSplitItutWindow(); + + /** + * Get Icf pointer + * + * @since S60 v5.0 + * @return CFepLayoutMultiLineIcf* + */ + inline CFepLayoutMultiLineIcf* Icf(); /** * get pen input type * @@ -145,6 +154,14 @@ void ConstructItutKeypadFromResourceL(TInt aResId); /** + * construct icf from resource + * + * @since S60 5.0 + * @return None + */ + void ConstructIcfFromResourceL(); + + /** * handle skin change * * @since S60 5.0 @@ -160,6 +177,14 @@ * @return None */ void ApplyVariantLafDataL(TBool aResolutionChange = EFalse); + + /** + * apply spell variant laf data + * + * @since S60 5.0 + * @return None + */ + void ApplyVariantLafDataForSpellL(); /** * construct spell control @@ -204,7 +229,47 @@ * @return None */ void HandleButtonResOnLangDirChangeL( TInt aControlId ); + + /** + * Set prompt text + * + * @since S60 5.0 + * @param aData text + * @return None + */ + void SetPromptTextL( TUint8* aData ); + /** + * Set bubble + * + * @since S60 5.0 + * @return None + */ + void SetIndiBubble(); + + /** + * Update bubble prompt text + * + * @since S60 5.0 + * @param aData text + * @return None + */ + void UpdateIndiBubbleL( TUint8* aData ); + + /** + * Set bubble image + * + * @since S60 5.0 + * @param aImgID1 image ID1 + * @param aMaskID1 mask image id1 + * @param aImgID2 image ID2 + * @param aMaskID2 mask image id2 + * @return None + */ + void SetIndiBubbleImageL( const TInt aImgID1, + const TInt aMaskID1, + const TInt aImgID2, + const TInt aMaskID2 ); private: /** * C++ constructor @@ -317,7 +382,7 @@ * @param aRectIdx * @return None */ - void SetCtrlRect(CFepUiBaseCtrl* aCtrl, TInt aRectIdx); + void SetCtrlRect(CFepUiBaseCtrl* aCtrl, TInt aRectIdx, const TBool aOffset = EFalse); /** * resize candidate list @@ -403,7 +468,15 @@ const TInt aInnerRectId, const TInt aResourceId, const TInt aCommand = KUnavailableID); - + + /** + * Create ICF for spell mode + * + * @since S60 5.0 + * @return None + */ + void CreateICFL(); + /** * Check control size change * @@ -463,6 +536,21 @@ * @return None */ void SetUnicodesForHardKey1L(CVirtualKey* aKey, const TDesC& aMapData); + + /** + * Indicator rect + * + * @since S60 5.0 + * @param aBoundRect + * @param aRealRect1 + * @param aRealRect2 + * @param aAlign + * @return None + */ + void CalIndicatorRect( const TRect& aBoundRect, + TRect& aRealRect1, + TRect& aRealRect2, + TIndicatorAlign aAlign ); private: /** * ITUT keypad. @@ -533,6 +621,11 @@ * symbol data for chinese */ TFepSymbolOfHardwareOne iSymbolData; + + TSize iIndicatorSize; + TSize iIndicatorTextSize; + TBool iImDimensionSet; + CFepLayoutMultiLineIcf* iICF; }; // --------------------------------------------------------------------------- @@ -543,5 +636,13 @@ { return iStandardItutKp; } - + +// --------------------------------------------------------------------------- +// CSplitItutWindow::Icf +// --------------------------------------------------------------------------- +// +inline CFepLayoutMultiLineIcf* CSplitItutWindow::Icf() + { + return iICF; + } #endif //C_SPLITITUTWINDOW_H diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/inc/peninputsplititutwindowmanager.h --- a/textinput/peninputsplititut/inc/peninputsplititutwindowmanager.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/inc/peninputsplititutwindowmanager.h Fri Mar 12 15:44:07 2010 +0200 @@ -64,6 +64,15 @@ ~CSplitItutWindowManager(); /** + * Process text update + * + * @since S60 v5.0 + * @param aData context data + * @return TInt + */ + TInt OnAppEditorTextComing(const TFepInputContextFieldData& aData); + + /** * Handle control event * * @since Series 60 5.0 @@ -187,6 +196,14 @@ */ void ApplyVariantLafDataL(TBool aResolutionChange); + /** + * apply spell variant laf data + * + * @since S60 5.0 + * @return None + */ + void ApplyVariantLafDataForSpellL(); + /** * apply variant laf data * @@ -249,6 +266,15 @@ * @return none */ void ConstructL(); + + /** + * Set prompt text + * + * @since S60 5.0 + * paran aData + * @return none + */ + void SetPromptTextL( TUint8* aData ); private: /** diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/src/peninputsplititutdatamgr.cpp --- a/textinput/peninputsplititut/src/peninputsplititutdatamgr.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/src/peninputsplititutdatamgr.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -167,6 +167,8 @@ splitpanerect.LayoutRect(spliwndtrect.Rect(), splitpane); iLayoutRect = spliwndtrect.Rect(); + // spell layout rect + iLayoutRectSpell = rect; iLayoutOffset = spliwndtrect.Rect().iTl; iBackgroundRect = iLayoutRect; iBackgroundRect.Move(-iLayoutOffset); @@ -290,6 +292,120 @@ AknLayoutScalable_Avkon::popup_fshwr2_char_preview_window_t1(0).LayoutLine(); previewWndText.LayoutText(previewWndRect.Rect(), iPreviewWndText); iBubbleFont = const_cast(previewWndText.Font()); + + // for spell window + // OK and Cancel button + TAknWindowLineLayout spellwnd, softkeypane, okkeypane, cancelkeypane ; + TAknLayoutRect spellwndtrect, softkeypanerect, okkeyRect, cancelkeyRect ; + + spellwnd = AknLayoutScalable_Avkon::popup_fep_ituss_window(1).LayoutLine(); + spellwndtrect.LayoutRect(rect, spellwnd); + + softkeypane = AknLayoutScalable_Avkon::ituss_sks_pane().LayoutLine(); + softkeypanerect.LayoutRect(spellwndtrect.Rect(), softkeypane); + + okkeypane = AknLayoutScalable_Avkon::ituss_sks_pane_g1().LayoutLine(); + okkeyRect.LayoutRect(softkeypanerect.Rect(), okkeypane); + iOkRect = okkeyRect.Rect(); + + iSpellBtnTextFormat = AknLayoutScalable_Avkon::ituss_sks_pane_t1().LayoutLine(); + iSpellBtnTextFormat.ir = 7; + + cancelkeypane = AknLayoutScalable_Avkon::ituss_sks_pane_g2().LayoutLine(); + cancelkeyRect.LayoutRect(softkeypanerect.Rect(), cancelkeypane); + iCancelRect = cancelkeyRect.Rect(); + + // icf in spell mode + TAknWindowLineLayout icfpane, querypane, focuspane, backkeyInnerpane, backkeypane, + middleInnerBtn; + TAknLayoutRect icfpaneRect, querypaneRect, focuspaneRect, backInnerRect, backkeyRect, + middleButton, middleInnerRect; + + icfpane = AknLayoutScalable_Avkon::popup_fep_vtchi_icf_pane(1).LayoutLine(); + icfpaneRect.LayoutRect(rect, icfpane); + + querypane = AknLayoutScalable_Avkon::vtchi_query_pane().LayoutLine(); + querypaneRect.LayoutRect(icfpaneRect.Rect(), querypane); + + focuspane = AknLayoutScalable_Avkon::vtchi_query_pane(0).LayoutLine(); + focuspaneRect.LayoutRect(querypaneRect.Rect(), focuspane); + iSpellICFRect = focuspaneRect.Rect(); + + TRect middleButtonPaneRect = spellwndtrect.Rect(); + middleButtonPaneRect.Move( 5, 3 ); + + TRect cellSpellRect; + cellSpellRect.iTl = middleButtonPaneRect.iTl; + cellSpellRect.SetHeight( itucellrect.Rect().Height()); + cellSpellRect.SetWidth( itucellrect.Rect().Width()); + + // Left + middleButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowLeftRect = middleButton.Rect(); + + middleInnerBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane_g1(2).LayoutLine(); + middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); + iSpellArrowLeftRectInner = middleInnerRect.Rect(); + + // Right + cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); + middleButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowRightRect = middleButton.Rect(); + + middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); + iSpellArrowRightRectInner = middleInnerRect.Rect(); + + + // backspace in spell mode + + cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); + middleButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellBackSpcace = middleButton.Rect(); + + middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); + iSpellBackSpcaceInner = middleInnerRect.Rect(); + + + + // icf indicator + TAknWindowLineLayout icfIndiPaneWithoutText, indiIcon, indiText; + TAknLayoutRect icfIndiPaneRectWithoutText, indiIconRect, indiTextRect; + TAknTextLineLayout indiTextLayout; + + + + icfIndiPaneWithoutText = AknLayoutScalable_Avkon::icf_edit_indi_pane(0).LayoutLine(); + icfIndiPaneRectWithoutText.LayoutRect(icfpaneRect.Rect(), icfIndiPaneWithoutText); + iIndiPaneRectWithoutTextForPrtWest = icfIndiPaneRectWithoutText.Rect(); + + + iIndiIconRectWithoutTextForPrtWest = TRect( 0, 0, 60, 20 ); + + indiTextLayout = AknLayoutScalable_Avkon::icf_edit_indi_pane_t1(0).LayoutLine(); + iIndiTextForPrtWest = indiTextLayout; + + // ICF text line info + TAknTextLineLayout icftextT1, icftextT2, icftextT3; + icftextT1 = AknLayoutScalable_Avkon::vtchi_query_pane_t1(0).LayoutLine(); + icftextT2 = AknLayoutScalable_Avkon::vtchi_query_pane_t2(0).LayoutLine(); + icftextT3 = AknLayoutScalable_Avkon::vtchi_query_pane_t3(0).LayoutLine(); + + iIcfTextAlignment = icftextT1.iJ; + iIcfTextLeftMargin = icftextT1.il; + iIcfTextRightMargin = icftextT1.ir; + + TAknLayoutText ctxt1, ctxt2, ctxt3; + ctxt1.LayoutText( focuspaneRect.Rect(), icftextT1 ); + ctxt2.LayoutText( focuspaneRect.Rect(), icftextT2 ); + ctxt3.LayoutText( focuspaneRect.Rect(), icftextT3 ); + + iIcfTextTopMargin = ctxt1.TextRect().iTl.iY - focuspaneRect.Rect().iTl.iY; + iIcfTextLineSpaceMargin = ctxt2.TextRect().iTl.iY - ctxt1.TextRect().iBr.iY; + iIcfTextBottomMargin = focuspaneRect.Rect().iBr.iY - ctxt3.TextRect().iBr.iY + - iIcfTextLineSpaceMargin; + iIcfTextHeight = ctxt1.TextRect().Height(); + + iIcfFont = const_cast(AknLayoutUtils::FontFromId(icftextT1.iFont, NULL)); } // --------------------------------------------------------------------------- @@ -453,9 +569,9 @@ case ELayoutOffset: return &iLayoutOffset; case ELayoutRect: - return &iLayoutRect; + return iSpellMode ? &iLayoutRectSpell : &iLayoutRect; case EBackgroundRect: - return &iBackgroundRect; + return iSpellMode ? &iLayoutRectSpell : &iBackgroundRect; case EBackspaceRect: return IsChinese() ? &iBackspaceCnRect : &iBackspaceRect; case EKeypadRect: @@ -512,11 +628,23 @@ return &iPuncCandidates; */ case EArrowLeftRect: - // case EItutPosArrowLeft: - return IsChinese() ? &iArrowLeftCnRect : &iArrowLeftRect; + if( iSpellMode ) + { + return &iSpellArrowLeftRect; + } + else + { + return IsChinese() ? &iArrowLeftCnRect : &iArrowLeftRect; + } case EArrowRightRect: -// case EItutPosArrowRight: - return IsChinese() ? &iArrowRightCnRect : &iArrowRightRect; + if( iSpellMode ) + { + return &iSpellArrowRightRect; + } + else + { + return IsChinese() ? &iArrowRightCnRect : &iArrowRightRect; + } case EArrowUpRect: // case EItutPosArrowUp: return &iArrowUpRect; @@ -536,9 +664,23 @@ return &iCloseRect; #endif case ELeftInnerRect: - return IsChinese() ? &iArrowLeftInnerCnRect : &iArrowLeftInnerRect; + if( iSpellMode ) + { + return &iSpellArrowLeftRectInner; + } + else + { + return IsChinese() ? &iArrowLeftInnerCnRect : &iArrowLeftInnerRect; + } case ERightInnerRect: - return IsChinese() ? &iArrowRightInnerCnRect : &iArrowRightInnerRect; + if( iSpellMode ) + { + return &iSpellArrowRightRectInner; + } + else + { + return IsChinese() ? &iArrowRightInnerCnRect : &iArrowRightInnerRect; + } case EBackspaceInnerRect: return IsChinese() ? &iBackspaceInnerCnRect : &iBackspaceInnerRect; case EUpInnerRect: @@ -567,6 +709,30 @@ return &iPreviewWndText; case EPreviewBubbleFont: return reinterpret_cast(iBubbleFont); + case EItutPosOk: + return &iOkRect; + case EItutPosCancel: + return &iCancelRect; + case EBtnTextLine: + return &iSpellBtnTextFormat; + case ESpellICFRect: + return &iSpellICFRect; + case ESpellEditIndicatorRect: + return &iSpellEditIndicator; + case EIcfFont: + return reinterpret_cast(iIcfFont); + case EImIndicatorRect: + return &iSpellEditIndicator; + case ESpellBackSpcae: + return &iSpellBackSpcace; + case ESpellBackSpcaeInner: + return &iSpellBackSpcaceInner; + case EIndiPaneWithoutTextRect: + return &iIndiPaneRectWithoutTextForPrtWest; + case EIndiIconWithoutTextRect: + return &iIndiIconRectWithoutTextForPrtWest; + case EIndiTextLine: + return &iIndiTextForPrtWest; default: break; } @@ -588,7 +754,8 @@ iCase(EAknEditorUpperCase), iConfigResId(0), iLayoutContext(aLayoutContext), - iCurrentScriptIdx(KInvalidIndex) + iCurrentScriptIdx(KInvalidIndex), + iSpellMode(EFalse) { } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/src/peninputsplititutlayout.cpp --- a/textinput/peninputsplititut/src/peninputsplititutlayout.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/src/peninputsplititutlayout.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -86,6 +86,30 @@ } // --------------------------------------------------------------------------- +// CSplitItutUiLayout::OnAppEditorTextComing +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +TInt CSplitItutUiLayout::OnAppEditorTextComing(const TFepInputContextFieldData& aData) + { + TInt err = 0; + if ( iDataMgr->IsSpellMode()) + { + // Update the icf text + err = iWindowMgr->OnAppEditorTextComing( aData ); + } + + // notify icf has text or not + if ( UiMgr()->CurrentState() && + UiMgr()->CurrentState()->StateType() == CSplitItutUiMgrBase::EStateSpelling ) + { + TRAP_IGNORE(UiMgr()->HandleCommandL(EItutCmdCheckIcfEmpty, NULL)); + } + + return err; + } + +// --------------------------------------------------------------------------- // CSplitItutUiLayout::ConstructL // (other items were commented in a header) // --------------------------------------------------------------------------- @@ -184,6 +208,7 @@ case ECmdPenInputFingerLongKeyPress: case ECmdPenInputCase: case ECmdPenInputFingerMatchSelection: + case ECmdPenInputFingerSpelling: { if (UiMgr()) { @@ -207,6 +232,7 @@ { TRAP_IGNORE(ChineseUiManager()->HandleCommandL(ECmdPenInputNoFreeSpace, NULL)); } + case ECmdPenInputSetPromptText: case ECmdPenInputFingerMatchIndicator: case ECmdPenInputSendEditMenuData: case ECmdPenInputEnableSettingBtn: @@ -422,6 +448,12 @@ SetRect(TItutDataConverter::AnyToRect(iDataMgr->RequestData(ELayoutRect))); TPoint offset = TItutDataConverter::AnyToPoint(iDataMgr->RequestData(ELayoutOffset)); + + if(iDataMgr->IsSpellMode()) + { + offset = TPoint(0,0); + } + LayoutOwner()->SetPosition( offset ); iWindowMgr->OnActivate(); @@ -470,6 +502,16 @@ { iWindowMgr->ApplyVariantLafDataL(aResolutionChange); } + +// --------------------------------------------------------------------------- +// CSplitItutUiLayout::ApplyVariantLafDataForSpellL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CSplitItutUiLayout::ApplyVariantLafDataForSpellL() + { + iWindowMgr->ApplyVariantLafDataForSpellL(); + } // --------------------------------------------------------------------------- // CSplitItutUiLayout::UiManager diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/src/peninputsplititutwesternuimgr.cpp --- a/textinput/peninputsplititut/src/peninputsplititutwesternuimgr.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/src/peninputsplititutwesternuimgr.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -20,6 +20,7 @@ #include "peninputsplititutdata.h" #include "peninputsplititutdatamgr.h" #include "peninputsplititutwesternuistatenonpredict.h" +#include "peninputsplititutwesternuistatespelling.h" #include "peninputsplititutlayoutcontext.h" #include "peninputsplititutlayout.h" #include "peninputsplititutwindowmanager.h" @@ -54,6 +55,7 @@ } delete iNormalState; + delete iSpellState; } // --------------------------------------------------------------------------- @@ -77,6 +79,7 @@ CSplitItutUiMgrBase::ConstructL(); iNormalState = CWesternSplitItutUiStateNonPredict::NewL(this); + iSpellState = CWesternSplitItutUiStateSpelling::NewL(this); } // --------------------------------------------------------------------------- @@ -115,6 +118,11 @@ newstate = iNormalState; } break; + case CSplitItutUiMgrBase::EStateSpelling: + { + newstate = iSpellState; + } + break; default: return; } @@ -169,7 +177,8 @@ // TInt CWesternSplitItutUiMgr::HandleCommandL(TInt aCmd, TUint8* aData) { - if ( aCmd == ECmdPenInputFingerMatchSelection ) + if ( aCmd == ECmdPenInputFingerMatchSelection || + aCmd == ECmdPenInputFingerSpelling ) { if (!(*(reinterpret_cast(aData)))) { @@ -190,7 +199,13 @@ return KErrNone; } } - break; + case ECmdPenInputFingerSpelling: + { + SetCurrentStateL(CSplitItutUiMgrBase::EStateSpelling); + return KErrNone; + } + // Modify warning + //break; default: break; } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/src/peninputsplititutwesternuistatenonpredict.cpp --- a/textinput/peninputsplititut/src/peninputsplititutwesternuistatenonpredict.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/src/peninputsplititutwesternuistatenonpredict.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -121,7 +121,10 @@ } else { - iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight); + iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight); + iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(EFalse); + iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(EFalse); + if(iOwner->LayoutContext()->IsSecretEdtior()) { CAknFepCtrlRawKeyButton * leftbtn; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/src/peninputsplititutwesternuistatespelling.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputsplititut/src/peninputsplititutwesternuistatespelling.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,216 @@ +/* +* 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: drop-down list control +* +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "peninputsplititutwesternuistatespelling.h" +#include "peninputsplititutuimgrbase.h" +#include "peninputsplititutdatamgr.h" +#include "peninputsplititutlayoutcontext.h" +#include "peninputsplititutconverter.h" +#include "peninputsplititutlayout.h" +#include "peninputcommonbgctrl.h" +#include "peninputsplititutwindowmanager.h" +#include "peninputsplititutwindow.h" + +CWesternSplitItutUiStateSpelling* CWesternSplitItutUiStateSpelling::NewL(CSplitItutUiMgrBase* aOwner) + { + CWesternSplitItutUiStateSpelling* self = new (ELeave) CWesternSplitItutUiStateSpelling(aOwner); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CWesternSplitItutUiStateSpelling::~CWesternSplitItutUiStateSpelling() + { + } + +CWesternSplitItutUiStateSpelling::CWesternSplitItutUiStateSpelling(CSplitItutUiMgrBase* aOwner) + :CSplitItutUiStateBase(aOwner) + { + iICF = static_cast(iOwner->LayoutContext()->Control(ECtrlIdICF)); + } + +void CWesternSplitItutUiStateSpelling::ConstructL() + { + CSplitItutUiStateBase::ConstructL(); + } + +void CWesternSplitItutUiStateSpelling::CreateTextBtnIfNeededL(CAknFepCtrlCommonButton*& aBtn, + TInt aCtrlId, + TInt aCtrlPos, + TInt aTextResId, + TAknTextLineLayout aTextFormat) + { + if (!aBtn) + { + aBtn = CAknFepCtrlCommonButton::NewL(iOwner->LayoutContext()->UiLayout(), + aCtrlId, + KAknsIIDQsnFrFunctionButtonNormal, + KAknsIIDQsnFrFunctionButtonPressed, + KAknsIIDQsnFrFunctionButtonInactive); + aBtn->SetRect(TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(aCtrlPos))); + HBufC* btntext = StringLoader::LoadLC(aTextResId); + aBtn->SetTextFormat(aTextFormat); + aBtn->SetTextL(*btntext); + aBtn->SetTextColorIndex( EAknsCIQsnTextColorsCG65 ); + CleanupStack::PopAndDestroy(btntext); + iOwner->LayoutContext()->UiLayout()->AddControlL(aBtn); + } + } + +void CWesternSplitItutUiStateSpelling::OnEntryL() + { + TInt keypadResId = KInvalidResId; + switch (iOwner->DataMgr()->InputMode()) + { + case ENumber: + keypadResId = R_FINGER_INPUT_KEYPAD_NUMBER; + break; + case ELatin: + keypadResId = iOwner->DataMgr()->KeypadResourceId(); + break; + default: + break; + } + //hide bubble in the first place. + iICF->HideBubble(); + + // update resource id of keypad + iOwner->DataMgr()->NotifyChangeControlLayout( + MItutPropertySubscriber::EItutPropertyKeypadResourceId, keypadResId); + + // hide not needed controls + //iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)->Hide(ETrue); + //iOwner->LayoutContext()->Control(ECtrlIdArrowRight)->Hide(ETrue); + iOwner->LayoutContext()->ShowArrowBtn( EBtnArrowLeft | EBtnArrowRight ); + iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(ETrue); + iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(ETrue); + + TAknTextLineLayout btntextformat = TItutDataConverter::AnyToTextLine( + iOwner->DataMgr()->RequestData(EBtnTextLine)); + CreateTextBtnIfNeededL(iOk, ECtrlIdOkBtn, EItutPosOk, R_PENINPUT_FINGER_OK, btntextformat); + iOk->SetReady(ETrue); + iOk->Hide(EFalse); + iICF->IsEmpty() ? iOk->SetDimmed(ETrue) : iOk->SetDimmed(EFalse); + + CreateTextBtnIfNeededL(iCancel, ECtrlIdCancelBtn, EItutPosCancel, + R_PENINPUT_FINGER_CANCEL, btntextformat); + iCancel->SetReady(ETrue); + iCancel->Hide(EFalse); + + iOwner->DataMgr()->SetSpellMode(ETrue); + iICF->SetLineSeparatorAfterPrompt(ETrue); + + ReCalcLayoutL(); + + iICF->Hide( EFalse ); + iOwner->DataMgr()->SetUpdate(ETrue); + } + +void CWesternSplitItutUiStateSpelling::OnExit() + { + iOk->Hide(ETrue); + iCancel->Hide(ETrue); + iOwner->DataMgr()->SetSpellMode(EFalse); + iICF->Hide( ETrue ); + iOwner->LayoutContext()->ShowArrowBtn(0); + } + +CSplitItutUiMgrBase::TUiState CWesternSplitItutUiStateSpelling::StateType() + { + return CSplitItutUiMgrBase::EStateSpelling; + } + +TInt CWesternSplitItutUiStateSpelling::HandleCommandL(TInt aCmd, TUint8* /*aData*/) + { + switch (aCmd) + { + case EItutExtCmdSizeChanged: + { + ReCalcLayoutL(); + return KErrNone; + } + + case EItutCmdCheckIcfEmpty: + { + iICF->IsEmpty() ? iOk->SetDimmed(ETrue) : iOk->SetDimmed(EFalse); + return KErrNone; + } + default: + break; + } + + return KErrNotSupported; + } + +TBool CWesternSplitItutUiStateSpelling::HandleCtrlEventL(TInt aEventType, + CFepUiBaseCtrl* aCtrl, + const TDesC& /*aEventData*/) + { + switch (aEventType) + { + case EEventButtonUp: + { + TInt ctrlid = aCtrl->ControlId(); + + if (ctrlid != ECtrlIdOkBtn && ctrlid != ECtrlIdCancelBtn) + { + return EFalse; + } + + TBuf<4> buf; + TBool exitbyok = (ctrlid == ECtrlIdOkBtn); + buf.Append(reinterpret_cast(&exitbyok), sizeof(TBool)/sizeof(TText)); + + iOwner->LayoutContext()->UiLayout()->SignalOwner(ESignalExitSpellMode, buf); + return ETrue; + } + default: + break; + } + + return EFalse; + } + +void CWesternSplitItutUiStateSpelling::ReCalcLayoutL() + { + // Update "OK" and "Cancel" position + TAknTextLineLayout btntextformat = TItutDataConverter::AnyToTextLine( + iOwner->DataMgr()->RequestData(EBtnTextLine)); + TRect btnrect = TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(EItutPosOk)); + iOk->SetTextFormat(btntextformat); + iOk->SizeChanged(btnrect, btnrect, ETrue); + + btnrect = TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(EItutPosCancel)); + iCancel->SetTextFormat(btntextformat); + iCancel->SizeChanged(btnrect, btnrect, ETrue); + + // Update key position + iOwner->LayoutContext()->ApplyVariantLafDataForSpellL(); + } + +// End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/src/peninputsplititutwindow.cpp --- a/textinput/peninputsplititut/src/peninputsplititutwindow.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/src/peninputsplititutwindow.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -30,7 +30,8 @@ #include #include #include -//#include +#include +#include #include "peninputsplititutwindow.h" #include "peninputsplititutdatamgr.h" @@ -42,6 +43,7 @@ #include "peninputcommonbgctrl.h" _LIT(KBmpFileName, "z:\\resource\\apps\\peninputsplititut.mbm"); +_LIT(KEmptyString, ""); const TInt KImageMajorSkinId = EAknsMajorGeneric; const TUint KDefaultSpellTextColor = 0; @@ -50,6 +52,12 @@ const TInt KButtonOneUnicode = 49; const TInt KInvalidBmp = -1; +const TUint KDefaultIcfTextColor = 0x000000; +const TUint KDefaultIcfFrameColor = 0x000000; + + + + // ============================ MEMBER FUNCTIONS ============================= @@ -92,6 +100,7 @@ delete iBmpRotator; } + // --------------------------------------------------------------------------- // CSplitItutWindow::SetPropertyL // --------------------------------------------------------------------------- @@ -170,7 +179,7 @@ // read keypad image info ConstructKeyImageFromResourceL( R_ITUT_KEYPAD_BITMAP ); - iStandardItutKp->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG68 ); + iStandardItutKp->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG65 ); iStandardItutKp->SetDrawOpaqueBackground(EFalse); // read key shift icon res @@ -664,6 +673,125 @@ iPuncCandsList->SetDropdownListImgID(candiDrawInfo); iPuncCandsList->Hide(ETrue); } + +// --------------------------------------------------------------------------- +// CSplitItutWindow::ConstructIcfFromResourceL +// --------------------------------------------------------------------------- +// +void CSplitItutWindow::ConstructIcfFromResourceL() + { + if (!iICF->ResourceId()) + { + return; + } + + TResourceReader icfreader; + CCoeEnv::Static()->CreateResourceReaderLC(icfreader, iICF->ResourceId()); + TInt32 colorMajorSkinId = icfreader.ReadInt32(); + TInt skinitemid = icfreader.ReadInt16(); + TInt coloridx = icfreader.ReadInt16(); + + TAknsItemID colorid; + colorid.Set(TInt(colorMajorSkinId), skinitemid); + + TRgb icftextcolor; + MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); + TInt error = AknsUtils::GetCachedColor( skininstance, + icftextcolor, + colorid, + coloridx ); + + if ( error != KErrNone ) + { + icftextcolor = TRgb( KDefaultIcfTextColor ); + } + + iICF->SetTextColorL( icftextcolor ); + + // Set highlight color + TRgb icfhightlightcolor; + error = AknsUtils::GetCachedColor( skininstance, + icfhightlightcolor, + KAknsIIDQsnHighlightColors, + EAknsCIQsnHighlightColorsCG2 ); + if ( error == KErrNone ) + { + iICF->SetTextSelColorL( icfhightlightcolor ); + } + + skinitemid = icfreader.ReadInt16(); + coloridx = icfreader.ReadInt16(); + + colorid.Set(TInt(colorMajorSkinId), skinitemid); + + TRgb icfframecolor; + error = AknsUtils::GetCachedColor(skininstance, + icfframecolor, + colorid, + coloridx); + + if ( error != KErrNone ) + { + icfframecolor = TRgb(KDefaultIcfFrameColor); + } + + iICF->SetBorderColor( icfframecolor ); + CleanupStack::PopAndDestroy( 1 ); // icfreader + } + + +// --------------------------------------------------------------------------- +// CSplitItutWindow::CreateICFL +// --------------------------------------------------------------------------- +// +void CSplitItutWindow::CreateICFL() + { + CFont* icffont = TItutDataConverter::AnyToFont(iDataMgr->RequestData(EIcfFont)); + TRect rect = TItutDataConverter::AnyToRect(iDataMgr->RequestData(ESpellICFRect)); + + // Create ICF + iICF = CFepLayoutMultiLineIcf::NewL( rect, + iLayoutOwner, + ECtrlIdICF, + iDataMgr->iIcfTextHeight, + icffont->FontMaxHeight(), + icffont ); + + iICF->SetFocus(ETrue); + iICF->SetResourceId( R_SPLIT_ITUT_ICF ); + ConstructIcfFromResourceL(); + iICF->SetBgImgSkinId( KAknsIIDQsnFrCall2Rect ); + + AddControlL( iICF ); + + // Set indicator parameters + TAknWindowLineLayout iBubbleSize = AknLayoutScalable_Apps::popup_char_count_window().LayoutLine(); + TAknTextLineLayout iBubbleTextLayout = AknLayoutScalable_Apps::popup_char_count_window_t1(0).LayoutLine(); + + iICF->MsgBubbleCtrl()->SetTextFormat(iBubbleTextLayout); + iICF->MsgBubbleCtrl()->SetTextColorIndex( EAknsCIQsnTextColorsCG67 ); + + //Change the ID when ID into release + iICF->MsgBubbleCtrl()->SetBitmapParam( NULL, + NULL, + KAknsIIDQsnFrInputPreviewSideL, + KAknsIIDQsnFrInputPreviewMiddle, + KAknsIIDQsnFrInputPreviewSideR ); + iICF->SetMsgBubbleCtrlSize(TSize(iBubbleSize.iW,iBubbleSize.iH)); + + iICF->MsgBubbleCtrl()->SetTextL( KEmptyString ); + + iICF->SetTextMargin( iDataMgr->iIcfTextLeftMargin, + iDataMgr->iIcfTextRightMargin, + iDataMgr->iIcfTextTopMargin, + iDataMgr->iIcfTextBottomMargin ); + + iICF->SetLineSpace( iDataMgr->iIcfTextLineSpaceMargin ); + + SetIndiBubble(); + iICF->Hide( ETrue ); + } + // --------------------------------------------------------------------------- // CSplitItutWindow::ConstructL @@ -674,6 +802,7 @@ iBmpRotator = CPeninputSyncBitmapRotator::NewL(); CreateAllButtonL(); CreateItutKeypadL(); + CreateICFL(); } // --------------------------------------------------------------------------- @@ -794,9 +923,15 @@ // CSplitItutWindow::SetCtrlRect // --------------------------------------------------------------------------- // -void CSplitItutWindow::SetCtrlRect(CFepUiBaseCtrl* aCtrl, TInt aRectIdx) +void CSplitItutWindow::SetCtrlRect(CFepUiBaseCtrl* aCtrl, TInt aRectIdx, const TBool aOffset ) { - aCtrl->SetRect(TItutDataConverter::AnyToRect(iDataMgr->RequestData(aRectIdx))); + TRect rect = TItutDataConverter::AnyToRect(iDataMgr->RequestData(aRectIdx)); + if(aOffset) + { + TPoint offset = TItutDataConverter::AnyToPoint(iDataMgr->RequestData(ELayoutOffset)); + rect.Move(offset); + } + aCtrl->SetRect(rect); } // --------------------------------------------------------------------------- @@ -930,6 +1065,41 @@ iDataMgr->SetLangDirectionSwitch( EFalse ); } } + +// --------------------------------------------------------------------------- +// CSplitItutWindow::ApplyVariantLafDataForSpellL +// --------------------------------------------------------------------------- +// +void CSplitItutWindow::ApplyVariantLafDataForSpellL() + { + TBool bSizeChanged = EFalse; + ControlSizeChanged( ECtrlIdArrowLeft, EArrowLeftRect, ELeftInnerRect, ETrue ); + ControlSizeChanged( ECtrlIdArrowRight, EArrowRightRect, ERightInnerRect, ETrue ); + + bSizeChanged = ControlSizeChanged( ECtrlIdBackspace, ESpellBackSpcae, + ESpellBackSpcaeInner, ETrue ); + + // resize all controls + SetCtrlRect( iBackgroundCtrl, EBackgroundRect ); + SetCtrlRect( iStandardItutKp, EKeypadRect, ETrue ); + + // Handle control res when language direction changing here. + if ( iDataMgr->IsLangDirectionSwitch() || + ( bSizeChanged && iDataMgr->IsRtoLLanguage())) + { + HandleButtonResOnLangDirChange( ECtrlIdBackspace ); + iDataMgr->SetLangDirectionSwitch( EFalse ); + } + + CFont* icffont = TItutDataConverter::AnyToFont(iDataMgr->RequestData( EIcfFont )); + iICF->Hide( ETrue ); + iICF->SizeChangedL( TItutDataConverter::AnyToRect( iDataMgr->RequestData( ESpellICFRect )), + iDataMgr->iIcfTextHeight, + icffont->FontMaxHeight(), + icffont ); + iICF->Hide( EFalse ); + } + // --------------------------------------------------------------------------- // CSplitItutWindow::ResizeCandidateList @@ -1275,4 +1445,241 @@ unicodesInt.Close(); } + +void CSplitItutWindow::UpdateIndiBubbleL( TUint8* aData ) + { + RDesReadStream readStream; + TFepIndicatorInfo indicatorData; + + TPtr8 countPtr( aData, 4*sizeof(TInt), 4*sizeof(TInt) ); + readStream.Open(countPtr); + CleanupClosePushL(readStream); + + indicatorData.iIndicatorImgID = readStream.ReadInt32L(); + indicatorData.iIndicatorMaskID = readStream.ReadInt32L(); + indicatorData.iIndicatorTextImgID = readStream.ReadInt32L(); + indicatorData.iIndicatorTextMaskID = readStream.ReadInt32L(); + + CleanupStack::PopAndDestroy(&readStream); + + if ( indicatorData.iIndicatorImgID != 0 && + indicatorData.iIndicatorMaskID != 0 && + indicatorData.iIndicatorTextImgID != 0 && + indicatorData.iIndicatorTextMaskID != 0) + { + iDataMgr->SetIndicatorData( indicatorData ); + iImDimensionSet = ETrue; + + SetIndiBubbleImageL( indicatorData.iIndicatorImgID, + indicatorData.iIndicatorMaskID, + indicatorData.iIndicatorTextImgID, + indicatorData.iIndicatorTextMaskID ); + + TBuf<100> text; + iICF->MsgBubbleCtrl()->GetText( text ); + iICF->ShowBubble( text, iICF->MsgBubbleCtrl()->Rect()); + } + } + +// --------------------------------------------------------------------------- +// CSplitItutWindow::CalIndicatorRect +// --------------------------------------------------------------------------- +// +void CSplitItutWindow::CalIndicatorRect(const TRect& aBoundRect, + TRect& aRealRect1, + TRect& aRealRect2, + TIndicatorAlign aAlign) + { + if (!iImDimensionSet) + { + return; + } + + TInt imgAspectText = iIndicatorTextSize.iWidth / iIndicatorTextSize.iHeight; + TInt imgAspectIndi = iIndicatorSize.iWidth / iIndicatorSize.iHeight; + TSize imgSizeText( aBoundRect.Size().iHeight * imgAspectText, + aBoundRect.Size().iHeight ); + TSize imgSizeIndi( aBoundRect.Size().iHeight * imgAspectIndi, + aBoundRect.Size().iHeight ); + // check if the length of img > bound rect width + TInt nTotalWidth = imgSizeText.iWidth + imgSizeIndi.iWidth; + if( nTotalWidth > aBoundRect.Size().iWidth ) + { + TReal nAspect = (TReal)imgSizeText.iWidth / nTotalWidth; + imgSizeText.iWidth = aBoundRect.Size().iWidth * nAspect; + imgSizeIndi.iWidth = aBoundRect.Size().iWidth - imgSizeText.iWidth; + imgSizeText.iHeight = imgSizeText.iWidth / imgAspectText; + // make sure the height of two rect is equal + imgSizeIndi.iHeight = imgSizeText.iHeight; + } + if( aAlign == EIndiAlignRight ) + { + aRealRect2 = TRect(TPoint( aBoundRect.iBr.iX - imgSizeText.iWidth, aBoundRect.iTl.iY), + imgSizeText); + aRealRect1 = TRect(TPoint(aRealRect2.iTl.iX - imgSizeIndi.iWidth, aRealRect2.iTl.iY), + imgSizeIndi); + } + else if( aAlign == EIndiAlignCenter ) + { + TInt offsetX = ( aBoundRect.Size().iWidth - imgSizeText.iWidth - imgSizeIndi.iWidth ) / 2; + TInt offsetY = ( aBoundRect.Size().iHeight - imgSizeText.iHeight ) / 2; + aRealRect2 = TRect( TPoint( aBoundRect.iBr.iX - imgSizeText.iWidth - offsetX, + aBoundRect.iTl.iY + offsetY), + imgSizeText ); + aRealRect1 = TRect( TPoint(aRealRect2.iTl.iX - imgSizeIndi.iWidth, aRealRect2.iTl.iY), + imgSizeIndi ); + } + else if( aAlign == EIndiAlignLeft ) + { + aRealRect1 = TRect( aBoundRect.iTl, imgSizeIndi ); + aRealRect2 = TRect( TPoint( aRealRect1.iBr.iX, aRealRect1.iTl.iY ), imgSizeText ); + } + } + +// --------------------------------------------------------------------------- +// CSplitItutWindow::SetPromptTextL +// --------------------------------------------------------------------------- +// +void CSplitItutWindow::SetPromptTextL( TUint8* aData ) + { + RDesReadStream readStream; + + TPtr8 countPtr( aData, 2*sizeof(TInt), 2*sizeof(TInt)); + readStream.Open(countPtr); + CleanupClosePushL(readStream); + const TInt dataCount = readStream.ReadInt32L(); + const TInt textCount = readStream.ReadInt32L(); + CleanupStack::PopAndDestroy(&readStream); + + TPtr8 ptr( aData+2*sizeof(TInt), dataCount+textCount, dataCount+textCount ); + readStream.Open(ptr); + CleanupClosePushL(readStream); + + HBufC8* dataBuf = HBufC8::NewLC(dataCount); + TPtr8 dataBufPtr = dataBuf->Des(); + readStream.ReadL(dataBufPtr, dataCount); + + TFepPromptText* pIcfData = + reinterpret_cast(const_cast(dataBufPtr.Ptr())); + + HBufC* textBuf; + if ( textCount > 0 ) + { + textBuf = HBufC::NewLC( textCount/2 ); + TPtr textBufPtr = textBuf->Des(); + readStream.ReadL( textBufPtr, textCount/2 ); + + const HBufC* icfPromptText = iICF->PromptText(); + + if (!icfPromptText || icfPromptText->Compare( textBuf->Des()) != 0 ) + { + iICF->SetPromptTextL( textBuf->Des(), pIcfData->iCleanContent ); + } + CleanupStack::PopAndDestroy( textBuf ); + } + else + { + iICF->SetPromptTextL( KNullDesC, pIcfData->iCleanContent ); + } + + CleanupStack::PopAndDestroy( dataBuf ); + CleanupStack::PopAndDestroy( &readStream ); + } + +// --------------------------------------------------------------------------- +// CSplitItutWindow::SetIndiBubbleImageL +// --------------------------------------------------------------------------- +// +void CSplitItutWindow::SetIndiBubbleImageL( const TInt aImgID1, + const TInt aMaskID1, + const TInt aImgID2, + const TInt aMaskID2 ) + { + MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); + + CFbsBitmap* bmp1 = NULL; + CFbsBitmap* mask1 = NULL; + + TInt colorIndex = EAknsCIQsnIconColorsCG30; + + AknsUtils::CreateColorIconL( skininstance, + KAknsIIDQsnIconColors, + KAknsIIDQsnIconColors, + colorIndex, + bmp1, + mask1, + AknIconUtils::AvkonIconFileName(), + aImgID1, + aMaskID1, + KRgbGray ); + CleanupStack::PushL( bmp1 ); + CleanupStack::PushL( mask1 ); + + AknIconUtils::GetContentDimensions( bmp1, iIndicatorSize ); + + CFbsBitmap* bmp2 = NULL; + CFbsBitmap* mask2 = NULL; + AknsUtils::CreateColorIconL( skininstance, + KAknsIIDQsnIconColors, + KAknsIIDQsnIconColors, + colorIndex, + bmp2, + mask2, + AknIconUtils::AvkonIconFileName(), + aImgID2, + aMaskID2, + KRgbGray ); + + CleanupStack::PushL( bmp2 ); + CleanupStack::PushL( mask2 ); + + AknIconUtils::GetContentDimensions( bmp2, iIndicatorTextSize ); + + TRect boundRect; + boundRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( EIndiIconWithoutTextRect )); + + TRect imgrect, textrect; + + CalIndicatorRect( boundRect, imgrect, textrect, EIndiAlignCenter ); + AknIconUtils::SetSize( bmp1, imgrect.Size(), EAspectRatioNotPreserved ); + AknIconUtils::SetSize( mask1, imgrect.Size(), EAspectRatioNotPreserved ); + AknIconUtils::SetSize( bmp2, textrect.Size(), EAspectRatioNotPreserved) ; + AknIconUtils::SetSize( mask2, textrect.Size(), EAspectRatioNotPreserved ); + + CFbsBitmap* bmp3 = AknPenImageUtils::CombineTwoImagesL(bmp1, bmp2, EColor256); + CFbsBitmap* mask3 = AknPenImageUtils::CombineTwoImagesL(mask1, mask2, EGray256); + + iICF->MsgBubbleCtrl()->SetBitmapParam( bmp3, mask3, + KAknsIIDQsnFrInputPreviewSideL, + KAknsIIDQsnFrInputPreviewMiddle, + KAknsIIDQsnFrInputPreviewSideR ); + + CleanupStack::PopAndDestroy( mask2 ); + CleanupStack::PopAndDestroy( bmp2 ); + CleanupStack::PopAndDestroy( mask1 ); + CleanupStack::PopAndDestroy( bmp1 ); + } + +// --------------------------------------------------------------------------- +// CSplitItutWindow::SetIndiBubble +// --------------------------------------------------------------------------- +// +void CSplitItutWindow::SetIndiBubble() + { + if ( iICF ) + { + TRect bubbleRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( EIndiPaneWithoutTextRect )); + TRect iconRect = TItutDataConverter::AnyToRect( + iDataMgr->RequestData( EIndiIconWithoutTextRect )); + + TSize offset( 0, 6 ); + TSize size( iconRect.Width(), iconRect.Height()); + + iICF->MsgBubbleCtrl()->SetRect( bubbleRect ); + iICF->MsgBubbleCtrl()->SetIconOffsetAndSize( offset, size ); + } + } + // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/src/peninputsplititutwindowmanager.cpp --- a/textinput/peninputsplititut/src/peninputsplititutwindowmanager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/src/peninputsplititutwindowmanager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -31,7 +31,7 @@ #include #include #include -//#include +#include #include #include "peninputsplititutwindowmanager.h" @@ -83,6 +83,16 @@ } // --------------------------------------------------------------------------- +// CSplitItutWindowManager::CSplitItutWindowManager +// --------------------------------------------------------------------------- +// +TInt CSplitItutWindowManager::OnAppEditorTextComing(const TFepInputContextFieldData& aData) + { + TRAPD(err, iWindow->Icf()->SetTextL(aData)); + return err; + } + +// --------------------------------------------------------------------------- // CSplitItutWindowManager::SetPropertyL // --------------------------------------------------------------------------- // @@ -238,6 +248,21 @@ iInEditWordQueryDlg = *data; } break; + case ECmdPenInputSetPromptText: + { + if( iDataMgr->IsSpellMode()) + { + SetPromptTextL(aData); + handle = ETrue; + } + } + break; + case ECmdPenInputFingerMatchIndicator: + { + iWindow->UpdateIndiBubbleL( aData ); + handle = ETrue; + } + break; default: break; @@ -317,6 +342,16 @@ } // --------------------------------------------------------------------------- +// CSplitItutWindowManager::ApplyVariantLafDataForSpellL +// --------------------------------------------------------------------------- +// +void CSplitItutWindowManager::ApplyVariantLafDataForSpellL() + { + iWindow->ApplyVariantLafDataForSpellL(); + } + + +// --------------------------------------------------------------------------- // CSplitItutWindowManager::CreateChineseSpecificCtrlsIfNeededL // --------------------------------------------------------------------------- // @@ -463,5 +498,14 @@ } */ } + +// --------------------------------------------------------------------------- +// CSplitItutWindowManager::ShowBubble +// --------------------------------------------------------------------------- +// +void CSplitItutWindowManager::SetPromptTextL(TUint8* aData) + { + iWindow->SetPromptTextL(aData); + } // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplititut/srcdata/peninputsplititutnew.rss --- a/textinput/peninputsplititut/srcdata/peninputsplititutnew.rss Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplititut/srcdata/peninputsplititutnew.rss Fri Mar 12 15:44:07 2010 +0200 @@ -35,6 +35,12 @@ RESOURCE TBUF { buf=""; } +RESOURCE TBUF r_peninput_finger_ok {buf = text_softkey_ok;} +RESOURCE TBUF r_peninput_finger_cancel {buf = text_softkey_cancel;} +RESOURCE TBUF r_peninput_finger_spell {buf = qtn_t9_match_selection_list;} +RESOURCE TBUF r_peninput_finger_spell_colon {buf = qtn_colon_in_prompt;} + + RESOURCE AKN_FEP_COMMON_BUTTON_IMAGE r_peninput_finger_cursor_up { bmpfile=AKN_FEP_ITUT_BMP; @@ -96,8 +102,8 @@ bmpfile=AKN_FEP_ITUT_BMP; imgmajorskinid=EAknsMajorGeneric; - forground=EMbmPeninputgenericitutQgn_indi_input_backspace; - forgroundmsk=EMbmPeninputgenericitutQgn_indi_input_backspace_mask; + forground=EMbmPeninputgenericitutQgn_indi_itut_backspace1; + forgroundmsk=EMbmPeninputgenericitutQgn_indi_itut_backspace1_mask; //forgroundskinid=EAknsMinorGenericQgnIndiDialerClear; } @@ -106,8 +112,8 @@ bmpfile=AKN_FEP_ITUT_BMP; imgmajorskinid=EAknsMajorGeneric; - forground=EMbmPeninputgenericitutQgn_indi_itut_backspace; - forgroundmsk=EMbmPeninputgenericitutQgn_indi_itut_backspace_mask; + forground=EMbmPeninputgenericitutQgn_indi_itut_backspace1; + forgroundmsk=EMbmPeninputgenericitutQgn_indi_itut_backspace1_mask; //forgroundskinid=EAknsMinorGenericQgnIndiDialerClear; } @@ -427,6 +433,15 @@ }; } +RESOURCE SPLIT_VIRTUAL_ITUT_ICF r_split_itut_icf + { + colormajorskinid = EAknsMajorSkin; + textcolorgrp = EAknsMinorQsnTextColors; + textcoloridx = 50; + bordercolorgrp = EAknsMinorQsnOtherColors; + bordercoloridx = 8; + } + RESOURCE AKN_FEP_NONIRREGULAR_VKB_BITMAP r_itut_keypad_bitmap { bmpfile = AKN_FEP_ITUT_BMP; diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplitqwerty/group/iconlist.txt --- a/textinput/peninputsplitqwerty/group/iconlist.txt Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplitqwerty/group/iconlist.txt Fri Mar 12 15:44:07 2010 +0200 @@ -194,3 +194,4 @@ -c8,8 qgn_indi_input_space_r.svg -c8,8 qgn_indi_itut_cursor_up.svg -c8,8 qgn_indi_itut_cursor_down.svg +-c8,8 qgn_indi_input_backspace1.svg diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h --- a/textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h Fri Mar 12 15:44:07 2010 +0200 @@ -36,7 +36,7 @@ // Constants const TInt KMaxFileLength = 80; -const TInt KMaxRangeLabelLength = 32; +const TInt KMaxRangeLabelLength = 50; /** * class TAllRangeLabels @@ -497,10 +497,6 @@ inline TBool IsRtoLLanguage( TInt aLanguage ); inline TBool IsValidLanguage( TInt aLanguage ); - inline CAknFepCtrlEventButton* EventButtonCtrl( TInt aCtrlId ); - inline CAknFepCtrlCommonButton* CommonButtonCtrl( TInt aCtrlId ); - TInt IntContext( TPeninputDataType aDataIndex ); - /** * Handle size changed for range list * @@ -530,6 +526,33 @@ void HandleButtonResOnLangDirChangeL( TInt aControlId ); /** + * Utils to get an event button + * + * @since S60 v5.0 + * @param aCtrlId id of button control + * @return pointer to an event button + */ + inline CAknFepCtrlEventButton* EventButtonCtrl( TInt aCtrlId ); + + /** + * Utils to get an common button + * + * @since S60 v5.0 + * @param aCtrlId id of button control + * @return pointer to an common button + */ + inline CAknFepCtrlCommonButton* CommonButtonCtrl( TInt aCtrlId ); + + /** + * Utils to get context value + * + * @since S60 v5.0 + * @param aDataIndex index of context value + * @return conext value + */ + TInt IntContext( TPeninputDataType aDataIndex ); + + /** * Handle range list event * * @since S60 v5.0 @@ -537,6 +560,28 @@ */ void HandleRangeListSelectedL( CFepUiBaseCtrl* aCtrl, const TDesC& aData ); + //todo new rangelist + /** + * Get resource ids of range button icon + * + * @since S60 v5.0 + * @param aLangId current language id + * @param aAlphaRange variable to receive icon resource id for alpha range + * @param aOtherRange variable to receive icon resource id for other ranges + * @return None + */ + void GetRangeIconResource( TInt aLangId, TInt& aAlphaRange, TInt& aOtherRange ); + + //todo new rangelist + /** + * Prepare range list items + * + * @since S60 v5.0 + * @param aRangeItems items in range list + * @return None + */ + void PrepareRangeListItems( RArray& aRangeItems ); + private: // Data /** diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplitqwerty/loc/peninputsplitqwertyaccentlist.loc --- a/textinput/peninputsplitqwerty/loc/peninputsplitqwertyaccentlist.loc Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplitqwerty/loc/peninputsplitqwertyaccentlist.loc Fri Mar 12 15:44:07 2010 +0200 @@ -36,4 +36,29 @@ //r: 3.2 #define qtn_tin_vkb_accented_set3 "Accented "<0x0151>" - "<0x01EF> + +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_alpha_range "ABC" + +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_native_characters_range "Native char" + +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_numbers_symbols "123*&#" + +//d:Text in range list of VKB range bar +//l:list_single_choice_list_pane_t1 +//w: +//r: 3.2 +#define qtn_tin_vkb_native_numbers_symbols "Native number" + // End of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp --- a/textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -451,6 +451,19 @@ data->iClearButton.iInnerRect = OffsetRect( rectXInner, dx, dy ); dx += rectXPane.Width(); + keyText = AknLayoutScalable_Avkon::popup_fep_char_pre_window_t1(0).LayoutLine(); + + linelayout = AknLayoutScalable_Avkon::popup_fep_char_pre_window(0).LayoutLine(); + layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout ); + TRect preBubbleRect = layoutrect.Rect(); + preBubbleRect.Move( -preBubbleRect.iTl ); + TRect preBubbleInner = preBubbleRect; + preBubbleInner.Shrink( 10, 10 ); + + data->iPreviewWndText = keyText; + data->iPreviewWndRect = preBubbleRect; + data->iPreviewWndInnerRect = preBubbleInner; + return data; } diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp --- a/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -56,6 +56,8 @@ #include "peninputsplitqwertylangmeritpair.h" #include "peninputsplitqwertylayout.h" +#include + // Constants const TInt KPeninputVkbWndInvalidIndex = -1; const TInt KInvalidImg = -1 ; @@ -227,11 +229,12 @@ iVkbLayout->ConstructFromNonIrregularResourceL(); //todo split-view FSQ, bubble support - /* - iVkbCtrl->ShowBubble(ETrue); - iVkbCtrl->SetGowithPointerDown(ETrue); - iVkbCtrl->SetBubbleBitmapParam(NULL,NULL,KAknsIIDQsnFrInputCharPreview); - */ + CPeninputAknVkbPreviewBubbleRenderer* renderer = CPeninputAknVkbPreviewBubbleRenderer::NewL(); + iVkbCtrl->SetPreviewBubbleRenderer( renderer ); + iVkbCtrl->ShowBubble( ETrue ); + iVkbCtrl->SetGowithPointerDown( ETrue ); + iVkbCtrl->SetBubbleBitmapParam( NULL, NULL, KAknsIIDQsnFrInputCharPreview ); + iVkbCtrl->SetBubbleSize( TSize(80,80) ); //todo preview-bubble //set key to be 9 piece graphics iVkbCtrl->SetKeySkinId( EKeyBmpNormal, KAknsIIDQsnFrKeypadButtonFrNormal ); @@ -977,7 +980,7 @@ // Load range labels for range list // --------------------------------------------------------------------------- // -void CPeninputSplitQwertyWindow::ConstructRangeLabelListL( TInt aLangId ) +void CPeninputSplitQwertyWindow::ConstructRangeLabelListL( TInt /*aLangId*/ ) { iRangeLabels.iLabelNativeChar.Zero(); iRangeLabels.iLabelNativeNumber.Zero(); @@ -986,68 +989,7 @@ iRangeLabels.iLabelSymbol.Zero(); iRangeLabels.iLabelAccent.Zero(); - TInt resid = -1; - switch ( aLangId ) - { - case 16: //Cyrillic - case 42: - case 93: - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_CYRILLIC; - } - break; - - case 54: //Greek - case 55: - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_GREEK; - } - break; - case 57: //Hebrew - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_HEBREW; - } - break; - case 37: //Arabic - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_ARABIC; - } - break; - case 50://Farsi - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_FARSI; - } - break; - case 94: //Urdu - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_URDU; - } - break; - case 33: //Thai - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_THAI; - } - break; - case 29: //chinese - case 30: - case 31: - break; - case 58: //Devanagiri - case 72: - { - resid = R_PENINPUT_LAYOUT_VKB_RANGES_DEVANAGIRI; - } - break; - default: //Latin - { - //1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - //11, 12, 13, 14, 15, 17, 18, 20, 21, 22, - //23, 24, 25, 26, 27, 28, 39, 44, 45, 46, - //47, 48, 49, 51, 59, 67, 68, 70, 76, 78, - //79, 82, 83, 85, 91, 96, 102, 103, 401, 402 - resid = R_PENINPUT_LAYOUT_VKB_RANGES_LATIN; - } - } + TInt resid = R_PENINPUT_LAYOUT_VKB_RANGES; TResourceReader reader; CCoeEnv::Static()->CreateResourceReaderLC( reader, resid ); @@ -1074,7 +1016,7 @@ // void CPeninputSplitQwertyWindow::ShowBubble( TInt aShow ) { - iVkbCtrl->ShowBubble( EFalse ); + iVkbCtrl->ShowBubble( aShow > 0 ? ETrue : EFalse ); } // --------------------------------------------------------------------------- @@ -1083,37 +1025,31 @@ // void CPeninputSplitQwertyWindow::UpdateRangeCtrlsL() { - TInt currentRange = IntContext( EPeninputDataTypeCurrentRange ); - - TInt resid = ConfigInfo()->RangebarResId(); + RArray items; + PrepareRangeListItems( items ); + TInt count = items.Count(); + items.Close(); - TResourceReader reader; + TInt languageId = IntContext( EPeninputDataTypeInputLanguage ); + TInt range = IntContext( EPeninputDataTypeCurrentRange ); + + TInt resId = -1; + TInt aplhaRangeResId = -1; + TInt numberRangeResId = -1; + GetRangeIconResource( languageId, aplhaRangeResId, numberRangeResId ); - CCoeEnv::Static()->CreateResourceReaderLC( reader, resid ); - - TInt count = reader.ReadInt16(); - for ( TInt i = 0; i < count; i++ ) + if ( range == ERangeEnglish || range == ERangeNative ) { - const TInt16 rangeId = reader.ReadInt16(); - const TInt16 rangeType = reader.ReadInt16(); - const TInt16 ctrlId = reader.ReadInt16(); - const TInt16 ctrlType = reader.ReadInt16(); - const TInt32 ctrlResId = reader.ReadInt32(); - const TInt actionStyle = reader.ReadInt16(); - TBool hide = reader.ReadInt16(); - TInt posidx = reader.ReadInt16(); + resId = aplhaRangeResId; + } + else + { + resId = numberRangeResId; + } - if ( currentRange == rangeId ) - { - iRangeButton->SetResourceId( ctrlResId ); - iRangeButton->ConstructFromResourceL(); - break; - } - } - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - + iRangeButton->SetResourceId( resId ); + iRangeButton->ConstructFromResourceL(); + iRangeButton->SetDimmed( count < 1 ); } // --------------------------------------------------------------------------- @@ -1519,105 +1455,41 @@ // void CPeninputSplitQwertyWindow::PopupRangeListL() { - TInt currentRange = IntContext( EPeninputDataTypeCurrentRange ); - TInt permittedRange = IntContext( EPeninputDataTypePermittedRange ); - TInt currentAccent = IntContext( EPeninputDataTypeCurrentAccent ); - - CFepUiBaseCtrl* btn = Control( EPeninutWindowCtrlIdRangeBtn ); - if( !btn ) - { - return; - } - if ( !iPopupInited ) { TRAP_IGNORE( DoIdleConstructL() ); } + iPopupWnd->ClearItemsL(); - - CPeninputRangeBarInfo* rbinfo= ConfigInfo()->RangeBarInfo(); - CPeninputRangeInfo* rgninfo = NULL; - - //add accent items - if ( permittedRange & ERangeAccent ) + RArray items; + PrepareRangeListItems( items ); + TInt count = items.Count(); + for ( TInt i = 0; i < count; i++ ) { - rgninfo = rbinfo->FindRange( ERangeAccent ); - if ( rgninfo ) - { - for ( TInt i = 0; i < iAccentCmdList.Count(); i++ ) - { - if( currentRange != ERangeAccent || currentAccent != i ) - { - iPopupWnd->AddItemL( iAccentCmdList[i] ); - } - } - } + iPopupWnd->AddItemL( items[i] ); } - - //add range items - - CFepLayoutChoiceList::SItem item; - - if ( permittedRange & ERangeNative ) + items.Close(); + + if ( iPopupWnd->ItemsCount() < 1 ) { - rgninfo = rbinfo->FindRange( ERangeNative ); - if ( rgninfo && currentRange != ERangeNative ) - { - item.iCommand = EPeninputVkbLayoutNativeChar; - item.iText.Copy( iRangeLabels.iLabelNativeChar ); - iPopupWnd->AddItemL( item ); - } + return; } - if ( permittedRange & ERangeNativeNumber ) + if ( iPopupWnd->ItemsCount() < 2 ) { - rgninfo = rbinfo->FindRange( ERangeNativeNumber ); - if ( rgninfo && currentRange != ERangeNativeNumber ) - { - item.iCommand = EPeninputVkbLayoutNativeNumber; - item.iText.Copy( iRangeLabels.iLabelNativeNumber ); - iPopupWnd->AddItemL( item ); - } - } - - if ( permittedRange & ERangeEnglish ) - { - rgninfo = rbinfo->FindRange( ERangeEnglish ); - if ( rgninfo && currentRange != ERangeEnglish ) - { - item.iCommand = EPeninputVkbLayoutLatinChar; - item.iText.Copy( iRangeLabels.iLabelLatinChar ); - iPopupWnd->AddItemL( item ); - } + const CFepLayoutChoiceList::SItem* item = iPopupWnd->ItemByIndex( 0 ); + CFepLayoutChoiceList::SEvent event; + event.iIndex = 0; + event.iCommand = item->iCommand; + TPtrC ptr; + ptr.Set(reinterpret_cast(&event), sizeof(event)); + HandleRangeListSelectedL( iPopupWnd, ptr ); + return; } - if ( permittedRange & ERangeNumber ) - { - rgninfo = rbinfo->FindRange( ERangeNumber ); - if ( rgninfo && currentRange != ERangeNumber ) - { - item.iCommand = EPeninputVkbLayoutLatinNumber; - item.iText.Copy( iRangeLabels.iLabelLatinNumber ); - iPopupWnd->AddItemL( item ); - } - } - - /* - if ( permittedRange & ERangeSymbol ) - { - rgninfo = rbinfo->FindRange( ERangeSymbol ); - if ( rgninfo && currentRange != ERangeSymbol ) - { - item.iCommand = EPeninputVkbLayoutSymbol; - item.iText.Copy( _L("#*") ); - iPopupWnd->AddItemL( item ); - } - } - */ - - iPopupWnd->SetListColumnNumWithLafL( iPopupWnd->ItemsCount() ); - + CFepUiBaseCtrl* btn = Control( EPeninutWindowCtrlIdRangeBtn ); + iPopupWnd->SetListColumnNumWithLafL( iPopupWnd->ItemsCount() ); iPopupWnd->SetCurrentFocusedIndex( - 1 ); //no active item iPopupWnd->Display( btn->Rect() ); iUiStateMgr->SetCurrentUiState( EPeninputVkbUiStatePopup ); @@ -1717,12 +1589,6 @@ UiLayout()->SignalOwner(ESignalSimulateEvent,eventPtr); } -TInt CPeninputSplitQwertyWindow::IntContext( TPeninputDataType aDataIndex ) - { - return CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData( aDataIndex ) - ); - } // --------------------------------------------------------------------------- // Handle size changed for range list @@ -1834,11 +1700,22 @@ } // --------------------------------------------------------------------------- +// Utils to get context value +// --------------------------------------------------------------------------- +// +TInt CPeninputSplitQwertyWindow::IntContext( TPeninputDataType aDataIndex ) + { + return CPeninputDataConverter::AnyToInt( + iLayoutContext->RequestData( aDataIndex ) + ); + } + +// --------------------------------------------------------------------------- // Handle range list event // --------------------------------------------------------------------------- // void CPeninputSplitQwertyWindow::HandleRangeListSelectedL( CFepUiBaseCtrl* /*aCtrl*/, - const TDesC& aData ) + const TDesC& aData ) { CFepLayoutChoiceList::SEvent* event = (CFepLayoutChoiceList::SEvent*)aData.Ptr(); @@ -1913,4 +1790,138 @@ UpdateRangeCtrlsL(); } +//todo new rangelist +// --------------------------------------------------------------------------- +// Get resource ids of range button icon +// --------------------------------------------------------------------------- +// +void CPeninputSplitQwertyWindow::GetRangeIconResource( TInt aLangId, + TInt& aAlphaRange, + TInt& aOtherRange ) + { + switch ( aLangId ) + { + case ELangRussian: //Cyrillic + case ELangBulgarian: + case ELangUkrainian: + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_CYRILLIC_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_CYRILLIC_NUMERIC; + } + break; + case ELangGreek: //Greek + case ELangCyprusGreek: + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_GREEK_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_GREEK_NUMERIC; + } + break; + case ELangHebrew: //Hebrew + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_HEBREW_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_HEBREW_NUMERIC; + } + break; + case ELangArabic: //Arabic + case ELangFarsi: //Farsi + case ELangUrdu: //Urdu + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_ARABIC_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_ARABIC_NUMERIC; + } + break; + case ELangThai: //Thai + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_THAI_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_THAI_NUMERIC; + } + break; + default: //others + { + aAlphaRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_LATIN_ALPHA; + aOtherRange = R_PENINPUT_LAYOUT_VKB_RANGECTRL_LATIN_NUMERIC; + } + } + } + +//todo new rangelist +// --------------------------------------------------------------------------- +// Prepare range list items +// --------------------------------------------------------------------------- +// +void CPeninputSplitQwertyWindow::PrepareRangeListItems( + RArray& aRangeItems ) + { + aRangeItems.Reset(); + TInt currentRange = IntContext( EPeninputDataTypeCurrentRange ); + TInt permittedRange = IntContext( EPeninputDataTypePermittedRange ); + TInt currentAccent = IntContext( EPeninputDataTypeCurrentAccent ); + + CPeninputRangeBarInfo* rbinfo= ConfigInfo()->RangeBarInfo(); + CPeninputRangeInfo* rgninfo = NULL; + + //add accent items + if ( permittedRange & ERangeAccent ) + { + rgninfo = rbinfo->FindRange( ERangeAccent ); + if ( rgninfo ) + { + for ( TInt i = 0; i < iAccentCmdList.Count(); i++ ) + { + if( currentRange != ERangeAccent || currentAccent != i ) + { + aRangeItems.Append( iAccentCmdList[i] ); + } + } + } + } + + //add range items + + CFepLayoutChoiceList::SItem item; + + if ( permittedRange & ERangeNative ) + { + rgninfo = rbinfo->FindRange( ERangeNative ); + if ( rgninfo && currentRange != ERangeNative ) + { + item.iCommand = EPeninputVkbLayoutNativeChar; + item.iText.Copy( iRangeLabels.iLabelNativeChar ); + aRangeItems.Append( item ); + } + } + + if ( permittedRange & ERangeNativeNumber ) + { + rgninfo = rbinfo->FindRange( ERangeNativeNumber ); + if ( rgninfo && currentRange != ERangeNativeNumber ) + { + item.iCommand = EPeninputVkbLayoutNativeNumber; + item.iText.Copy( iRangeLabels.iLabelNativeNumber ); + aRangeItems.Append( item ); + } + } + + if ( permittedRange & ERangeEnglish ) + { + rgninfo = rbinfo->FindRange( ERangeEnglish ); + if ( rgninfo && currentRange != ERangeEnglish ) + { + item.iCommand = EPeninputVkbLayoutLatinChar; + item.iText.Copy( iRangeLabels.iLabelLatinChar ); + aRangeItems.Append( item ); + } + } + + if ( permittedRange & ERangeNumber ) + { + rgninfo = rbinfo->FindRange( ERangeNumber ); + if ( rgninfo && currentRange != ERangeNumber ) + { + item.iCommand = EPeninputVkbLayoutLatinNumber; + item.iText.Copy( iRangeLabels.iLabelLatinNumber ); + aRangeItems.Append( item ); + } + } + } // End Of File diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputsplitqwerty/srcdata/peninputssqwin.rss --- a/textinput/peninputsplitqwerty/srcdata/peninputssqwin.rss Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwin.rss Fri Mar 12 15:44:07 2010 +0200 @@ -409,20 +409,20 @@ bmpfile=PENINPUT_LAYOUT_VKB_BMP; imgmajorskinid=EAknsMajorGeneric; - nactive=EMbmPeninputsplitqwertyQgn_indi_input_backspace; - nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace_mask; + nactive=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; nactiveskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - nactivep=EMbmPeninputsplitqwertyQgn_indi_input_backspace; - nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace_mask; + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; nactivepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; - active=EMbmPeninputsplitqwertyQgn_indi_input_backspace; - activemsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace_mask; + active=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; activeskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - activep=EMbmPeninputsplitqwertyQgn_indi_input_backspace; - activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace_mask; + activep=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; activepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; } @@ -435,21 +435,21 @@ { bmpfile=PENINPUT_LAYOUT_VKB_BMP; imgmajorskinid=EAknsMajorGeneric; - - nactive=EMbmPeninputsplitqwertyQgn_indi_itut_backspace; - nactivemsk=EMbmPeninputsplitqwertyQgn_indi_itut_backspace_mask; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; nactiveskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - nactivep=EMbmPeninputsplitqwertyQgn_indi_itut_backspace; - nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_itut_backspace_mask; + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; nactivepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; - active=EMbmPeninputsplitqwertyQgn_indi_itut_backspace; - activemsk=EMbmPeninputsplitqwertyQgn_indi_itut_backspace_mask; + active=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; activeskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1; - activep=EMbmPeninputsplitqwertyQgn_indi_itut_backspace; - activepmsk=EMbmPeninputsplitqwertyQgn_indi_itut_backspace_mask; + activep=EMbmPeninputsplitqwertyQgn_indi_input_backspace1; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_backspace1_mask; activepskinid=EAknsMinorGenericQgnIndiFepButtonBackspace1Sel; } @@ -914,90 +914,332 @@ disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; } -//todo split-view - -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_latin - { - latinChar ="ABC"; - latinNumber ="#+=123"; - } - -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_cyrillic +//todo new rangelist +RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges { - nativeChar =<0x0410><0x0411>; - nativeNumber =""; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; - } - -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_greek - { - nativeChar =<0x0391><0x03A9>; - nativeNumber =""; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; - } - -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_hebrew - { - nativeChar =<0x05D0><0x05D1>; - nativeNumber =""; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; + nativeChar = qtn_tin_vkb_native_characters_range; + nativeNumber = qtn_tin_vkb_native_numbers_symbols; + latinChar = qtn_tin_vkb_alpha_range; + latinNumber = qtn_tin_vkb_numbers_symbols; } -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_arabic +//todo new rangelist + +//for Cyrillic +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_cyrillic_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_cyrillic_numeric { - nativeChar ="arabic char"; - nativeNumber ="arabic num"; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_cyrillic_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +//for Greek +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_greek_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; } - -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_farsi + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_greek_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_greek_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +//for Hebrew +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_hebrew_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_hebrew_numeric { - nativeChar ="farsi char"; - nativeNumber ="farsi num"; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_hebrew_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +//for Arabic, Farsi and Urdu +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_arabic_alpha + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_arabic_indic_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_arabic_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_arabic_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; } -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_urdu + +//for Thai +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_thai_alpha { - nativeChar ="urdu char"; - nativeNumber ="urdu num"; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; } - -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_thai + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_thai_numeric { - nativeChar ="thai char"; - nativeNumber ="thai num"; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_text_thai_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; } - -RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges_devanagiri + +//for Latin +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_latin_alpha { - nativeChar ="devanagiri char"; - nativeNumber ="devanagiri num"; - latinChar ="ABC"; - latinNumber ="#+=123"; - symbol =""; - accent =""; + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_numeric_special_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; } + +RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_latin_numeric + { + bmpfile=PENINPUT_LAYOUT_VKB_BMP; + imgmajorskinid=EAknsMajorGeneric; + + nactive=EMbmPeninputsplitqwertyQgn_indi_input_case_capital; + nactivemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_mask; + nactiveskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + nactivep=EMbmPeninputsplitqwertyQgn_indi_input_case_capital; + nactivepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_mask; + nactivepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + + active=EMbmPeninputsplitqwertyQgn_indi_input_case_capital; + activemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_mask; + activeskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + activep=EMbmPeninputsplitqwertyQgn_indi_input_case_capital; + activepmsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_mask; + activepskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapitalSel; + + disable=EMbmPeninputsplitqwertyQgn_indi_input_case_capital; + disablemsk=EMbmPeninputsplitqwertyQgn_indi_input_case_capital_mask; + disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; + } diff -r f5a1e66df979 -r a47de9135b21 textinput/ptienginev2/group/VariantParser.pl --- a/textinput/ptienginev2/group/VariantParser.pl Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/ptienginev2/group/VariantParser.pl Fri Mar 12 15:44:07 2010 +0200 @@ -54,12 +54,12 @@ } print(INFFILE "/*\n"); -print(INFFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); +print(INFFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(INFFILE "* All rights reserved.\n"); print(INFFILE "* This component and the accompanying materials are made available\n"); print(INFFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(INFFILE "* which accompanies this distribution, and is available\n"); -print(INFFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); +print(INFFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(INFFILE "*\n"); print(INFFILE "* Initial Contributors:\n"); print(INFFILE "* Nokia Corporation - initial contribution.\n"); @@ -194,12 +194,12 @@ } print(RESFILE "/*\n"); - print(RESFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(RESFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(RESFILE "* All rights reserved.\n"); print(RESFILE "* This component and the accompanying materials are made available\n"); print(RESFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(RESFILE "* which accompanies this distribution, and is available\n"); - print(RESFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(RESFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(RESFILE "*\n"); print(RESFILE "* Initial Contributors:\n"); print(RESFILE "* Nokia Corporation - initial contribution.\n"); @@ -254,12 +254,12 @@ } print(MMPFILE "/*\n"); - print(MMPFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(MMPFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(MMPFILE "* All rights reserved.\n"); print(MMPFILE "* This component and the accompanying materials are made available\n"); print(MMPFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(MMPFILE "* which accompanies this distribution, and is available\n"); - print(MMPFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(MMPFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(MMPFILE "*\n"); print(MMPFILE "* Initial Contributors:\n"); print(MMPFILE "* Nokia Corporation - initial contribution.\n"); @@ -335,12 +335,12 @@ } print(IBYFILE "/*\n"); - print(IBYFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(IBYFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(IBYFILE "* All rights reserved.\n"); print(IBYFILE "* This component and the accompanying materials are made available\n"); print(IBYFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(IBYFILE "* which accompanies this distribution, and is available\n"); - print(IBYFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(IBYFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(IBYFILE "*\n"); print(IBYFILE "* Initial Contributors:\n"); print(IBYFILE "* Nokia Corporation - initial contribution.\n"); @@ -389,12 +389,12 @@ } print(CPPFILE "/*\n"); - print(CPPFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(CPPFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(CPPFILE "* All rights reserved.\n"); print(CPPFILE "* This component and the accompanying materials are made available\n"); print(CPPFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(CPPFILE "* which accompanies this distribution, and is available\n"); - print(CPPFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(CPPFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(CPPFILE "*\n"); print(CPPFILE "* Initial Contributors:\n"); print(CPPFILE "* Nokia Corporation - initial contribution.\n"); @@ -425,12 +425,12 @@ } print(CHHFILE "/*\n"); - print(CHHFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(CHHFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(CHHFILE "* All rights reserved.\n"); print(CHHFILE "* This component and the accompanying materials are made available\n"); print(CHHFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(CHHFILE "* which accompanies this distribution, and is available\n"); - print(CHHFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(CHHFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(CHHFILE "*\n"); print(CHHFILE "* Initial Contributors:\n"); print(CHHFILE "* Nokia Corporation - initial contribution.\n"); @@ -462,12 +462,12 @@ } print(CFFFILE "/*\n"); - print(CFFFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(CFFFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(CFFFILE "* All rights reserved.\n"); print(CFFFILE "* This component and the accompanying materials are made available\n"); print(CFFFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(CFFFILE "* which accompanies this distribution, and is available\n"); - print(CFFFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(CFFFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(CFFFILE "*\n"); print(CFFFILE "* Initial Contributors:\n"); print(CFFFILE "* Nokia Corporation - initial contribution.\n"); @@ -677,4 +677,4 @@ close(MASTERVARFILE); -# End of file +# End of file \ No newline at end of file diff -r f5a1e66df979 -r a47de9135b21 textinput/ptienginev2/languages/PtiKeymappings_ITUT_01.cpp --- a/textinput/ptienginev2/languages/PtiKeymappings_ITUT_01.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/ptienginev2/languages/PtiKeymappings_ITUT_01.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -97,192 +97,168 @@ // const TUint16 StandardQwertyData_table_English[] = { - 0x31, - 0x32, - 0x33, - 0x34, - 0x35, - 0x36, - 0x37, - 0x38, - 0x39, - 0x30, - 0x2b, - 0x71, - 0x77, - 0x65,0xe8,0xe9,0xea,0xeb, - 0x72, - 0x74,0xfe, - 0x79,0xfd, - 0x75,0xf9,0xfa,0xfb,0xfc, - 0x69,0xec,0xed,0xee,0xef, - 0x6f,0xf6,0xf8,0xf2,0xf3,0xf4,0xf5, - 0x70, - 0x2d, - 0x23, - 0x61,0xe4,0xe6,0xe5,0xe0,0xe1,0xe2,0xe3, - 0x73,0xdf, - 0x64,0xf0, - 0x66, - 0x67, - 0x68, - 0x6a, - 0x6b, - 0x6c, - 0x3b, - 0x27, - 0x7a, - 0x78, - 0x63,0xe7, - 0x76, - 0x62, - 0x6e,0xf1, - 0x6d, - 0x2c, - 0x2e, - 0x2f, - 0x21, - 0x22, - 0xa3, - 0x24, - 0x20ac, - 0x25, - 0x26, - 0x2a, - 0x28, - 0x29, - 0x3d, - 0x51, - 0x57, - 0x45,0xc8,0xc9,0xca,0xcb, - 0x52, - 0x54,0xde, - 0x59,0xdd, - 0x55,0xd9,0xda,0xdb,0xdc, - 0x49,0xcc,0xcd,0xce,0xcf, - 0x4f,0xd6,0xd8,0xd2,0xd3,0xd4,0xd5, - 0x50, - 0x5f, - 0x7e, - 0x41,0xc4,0xc6,0xc5,0xc0,0xc1,0xc2,0xc3, - 0x53, - 0x44,0xd0, - 0x46, - 0x47, - 0x48, - 0x4a, - 0x4b, - 0x4c, - 0x3a, - 0x40, - 0x5a, - 0x58, - 0x43,0xc7, - 0x56, - 0x42, - 0x4e,0xd1, - 0x4d, - 0x3c, - 0x3e, - 0x3f, + 0x0071, + 0x0077, + 0x0065, + 0x0072, + 0x0074, + 0x0079, + 0x0075, + 0x0069, + 0x006F, + 0x0070, + 0x0061, + 0x0073, + 0x0064, + 0x0066, + 0x0067, + 0x0068, + 0x006A, + 0x006B, + 0x006C, + 0x0027, + 0x007A, + 0x0078, + 0x0063, + 0x0076, + 0x0062, + 0x006E, + 0x006D, + 0x002C, + 0x002E, + 0x003F, + 0x0051, + 0x0057, + 0x0045, + 0x0052, + 0x0054, + 0x0059, + 0x0055, + 0x0049, + 0x004F, + 0x0050, + 0x0041, + 0x0053, + 0x0044, + 0x0046, + 0x0047, + 0x0048, + 0x004A, + 0x004B, + 0x004C, + 0x002F, + 0x005A, + 0x0058, + 0x0043, + 0x0056, + 0x0042, + 0x004E, + 0x004D, + 0x002B, + 0x002D, + 0x0021, }; -const TInt KStandardQwertyDataSize_English = 149; +const TInt KStandardQwertyDataSize_English = 60; const TPtiKeyBinding StandardQwertyKeyBindings_table_English[] = { - {EPtiKeyQwerty1, EPtiCaseLower, 0, 1}, - {EPtiKeyQwerty2, EPtiCaseLower, 1, 1}, - {EPtiKeyQwerty3, EPtiCaseLower, 2, 1}, - {EPtiKeyQwerty4, EPtiCaseLower, 3, 1}, - {EPtiKeyQwerty5, EPtiCaseLower, 4, 1}, - {EPtiKeyQwerty6, EPtiCaseLower, 5, 1}, - {EPtiKeyQwerty7, EPtiCaseLower, 6, 1}, - {EPtiKeyQwerty8, EPtiCaseLower, 7, 1}, - {EPtiKeyQwerty9, EPtiCaseLower, 8, 1}, - {EPtiKeyQwerty0, EPtiCaseLower, 9, 1}, + {EPtiKeyQwertyAtCharacter, EPtiCaseLower, 0, 1}, + {EPtiKeyQwerty1, EPtiCaseLower, 1, 1}, + {EPtiKeyQwerty2, EPtiCaseLower, 2, 1}, + {EPtiKeyQwerty3, EPtiCaseLower, 3, 1}, + {EPtiKeyQwerty4, EPtiCaseLower, 4, 1}, + {EPtiKeyQwerty5, EPtiCaseLower, 5, 1}, + {EPtiKeyQwerty6, EPtiCaseLower, 6, 1}, + {EPtiKeyQwerty7, EPtiCaseLower, 7, 1}, + {EPtiKeyQwerty8, EPtiCaseLower, 8, 1}, + {EPtiKeyQwerty9, EPtiCaseLower, 9, 1}, + {EPtiKeyQwerty0, EPtiCaseLower, 10, 0}, {EPtiKeyQwertyPlus, EPtiCaseLower, 10, 1}, {EPtiKeyQwertyQ, EPtiCaseLower, 11, 1}, {EPtiKeyQwertyW, EPtiCaseLower, 12, 1}, - {EPtiKeyQwertyE, EPtiCaseLower, 13, 5}, - {EPtiKeyQwertyR, EPtiCaseLower, 18, 1}, - {EPtiKeyQwertyT, EPtiCaseLower, 19, 2}, - {EPtiKeyQwertyY, EPtiCaseLower, 21, 2}, - {EPtiKeyQwertyU, EPtiCaseLower, 23, 5}, - {EPtiKeyQwertyI, EPtiCaseLower, 28, 5}, - {EPtiKeyQwertyO, EPtiCaseLower, 33, 7}, - {EPtiKeyQwertyP, EPtiCaseLower, 40, 1}, - {EPtiKeyQwertyMinus, EPtiCaseLower, 41, 1}, - {EPtiKeyQwertyHash, EPtiCaseLower, 42, 1}, - {EPtiKeyQwertyA, EPtiCaseLower, 43, 8}, - {EPtiKeyQwertyS, EPtiCaseLower, 51, 2}, - {EPtiKeyQwertyD, EPtiCaseLower, 53, 2}, - {EPtiKeyQwertyF, EPtiCaseLower, 55, 1}, - {EPtiKeyQwertyG, EPtiCaseLower, 56, 1}, - {EPtiKeyQwertyH, EPtiCaseLower, 57, 1}, - {EPtiKeyQwertyJ, EPtiCaseLower, 58, 1}, - {EPtiKeyQwertyK, EPtiCaseLower, 59, 1}, - {EPtiKeyQwertyL, EPtiCaseLower, 60, 1}, - {EPtiKeyQwertySemicolon, EPtiCaseLower, 61, 1}, - {EPtiKeyQwertyApostrophe, EPtiCaseLower, 62, 1}, - {EPtiKeyQwertyZ, EPtiCaseLower, 63, 1}, - {EPtiKeyQwertyX, EPtiCaseLower, 64, 1}, - {EPtiKeyQwertyC, EPtiCaseLower, 65, 2}, - {EPtiKeyQwertyV, EPtiCaseLower, 67, 1}, - {EPtiKeyQwertyB, EPtiCaseLower, 68, 1}, - {EPtiKeyQwertyN, EPtiCaseLower, 69, 2}, - {EPtiKeyQwertyM, EPtiCaseLower, 71, 1}, - {EPtiKeyQwertyComma, EPtiCaseLower, 72, 1}, - {EPtiKeyQwertyFullstop, EPtiCaseLower, 73, 1}, - {EPtiKeyQwertySlash, EPtiCaseLower, 74, 1}, - {EPtiKeyQwerty1, EPtiCaseUpper, 75, 1}, - {EPtiKeyQwerty2, EPtiCaseUpper, 76, 1}, - {EPtiKeyQwerty3, EPtiCaseUpper, 77, 1}, - {EPtiKeyQwerty4, EPtiCaseUpper, 78, 1}, - {EPtiKeyQwerty5, EPtiCaseUpper, 79, 1}, - {EPtiKeyQwerty6, EPtiCaseUpper, 80, 1}, - {EPtiKeyQwerty7, EPtiCaseUpper, 81, 1}, - {EPtiKeyQwerty8, EPtiCaseUpper, 82, 1}, - {EPtiKeyQwerty9, EPtiCaseUpper, 83, 1}, - {EPtiKeyQwerty0, EPtiCaseUpper, 84, 1}, - {EPtiKeyQwertyPlus, EPtiCaseUpper, 85, 1}, - {EPtiKeyQwertyQ, EPtiCaseUpper, 86, 1}, - {EPtiKeyQwertyW, EPtiCaseUpper, 87, 1}, - {EPtiKeyQwertyE, EPtiCaseUpper, 88, 5}, - {EPtiKeyQwertyR, EPtiCaseUpper, 93, 1}, - {EPtiKeyQwertyT, EPtiCaseUpper, 94, 2}, - {EPtiKeyQwertyY, EPtiCaseUpper, 96, 2}, - {EPtiKeyQwertyU, EPtiCaseUpper, 98, 5}, - {EPtiKeyQwertyI, EPtiCaseUpper, 103, 5}, - {EPtiKeyQwertyO, EPtiCaseUpper, 108, 7}, - {EPtiKeyQwertyP, EPtiCaseUpper, 115, 1}, - {EPtiKeyQwertyMinus, EPtiCaseUpper, 116, 1}, - {EPtiKeyQwertyHash, EPtiCaseUpper, 117, 1}, - {EPtiKeyQwertyA, EPtiCaseUpper, 118, 8}, - {EPtiKeyQwertyS, EPtiCaseUpper, 126, 1}, - {EPtiKeyQwertyD, EPtiCaseUpper, 127, 2}, - {EPtiKeyQwertyF, EPtiCaseUpper, 129, 1}, - {EPtiKeyQwertyG, EPtiCaseUpper, 130, 1}, - {EPtiKeyQwertyH, EPtiCaseUpper, 131, 1}, - {EPtiKeyQwertyJ, EPtiCaseUpper, 132, 1}, - {EPtiKeyQwertyK, EPtiCaseUpper, 133, 1}, - {EPtiKeyQwertyL, EPtiCaseUpper, 134, 1}, - {EPtiKeyQwertySemicolon, EPtiCaseUpper, 135, 1}, - {EPtiKeyQwertyApostrophe, EPtiCaseUpper, 136, 1}, - {EPtiKeyQwertyZ, EPtiCaseUpper, 137, 1}, - {EPtiKeyQwertyX, EPtiCaseUpper, 138, 1}, - {EPtiKeyQwertyC, EPtiCaseUpper, 139, 2}, - {EPtiKeyQwertyV, EPtiCaseUpper, 141, 1}, - {EPtiKeyQwertyB, EPtiCaseUpper, 142, 1}, - {EPtiKeyQwertyN, EPtiCaseUpper, 143, 2}, - {EPtiKeyQwertyM, EPtiCaseUpper, 145, 1}, - {EPtiKeyQwertyComma, EPtiCaseUpper, 146, 1}, - {EPtiKeyQwertyFullstop, EPtiCaseUpper, 147, 1}, - {EPtiKeyQwertySlash, EPtiCaseUpper, 148, 1}, + {EPtiKeyQwertyE, EPtiCaseLower, 13, 1}, + {EPtiKeyQwertyR, EPtiCaseLower, 14, 1}, + {EPtiKeyQwertyT, EPtiCaseLower, 15, 1}, + {EPtiKeyQwertyY, EPtiCaseLower, 16, 1}, + {EPtiKeyQwertyU, EPtiCaseLower, 17, 1}, + {EPtiKeyQwertyI, EPtiCaseLower, 18, 1}, + {EPtiKeyQwertyO, EPtiCaseLower, 19, 1}, + {EPtiKeyQwertyP, EPtiCaseLower, 20, 0}, + {EPtiKeyQwertyMinus, EPtiCaseLower, 20, 0}, + {EPtiKeyQwertyHash, EPtiCaseLower, 20, 1}, + {EPtiKeyQwertyA, EPtiCaseLower, 21, 1}, + {EPtiKeyQwertyS, EPtiCaseLower, 22, 1}, + {EPtiKeyQwertyD, EPtiCaseLower, 23, 1}, + {EPtiKeyQwertyF, EPtiCaseLower, 24, 1}, + {EPtiKeyQwertyG, EPtiCaseLower, 25, 1}, + {EPtiKeyQwertyH, EPtiCaseLower, 26, 1}, + {EPtiKeyQwertyJ, EPtiCaseLower, 27, 1}, + {EPtiKeyQwertyK, EPtiCaseLower, 28, 1}, + {EPtiKeyQwertyL, EPtiCaseLower, 29, 1}, + {EPtiKeyQwertySemicolon, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyApostrophe, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertySpace, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyZ, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyX, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyC, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyV, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyB, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyN, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyM, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyComma, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyFullstop, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertySlash, EPtiCaseLower, 30, 0}, + {EPtiKeyQwertyAtCharacter, EPtiCaseUpper, 30, 1}, + {EPtiKeyQwerty1, EPtiCaseUpper, 31, 1}, + {EPtiKeyQwerty2, EPtiCaseUpper, 32, 1}, + {EPtiKeyQwerty3, EPtiCaseUpper, 33, 1}, + {EPtiKeyQwerty4, EPtiCaseUpper, 34, 1}, + {EPtiKeyQwerty5, EPtiCaseUpper, 35, 1}, + {EPtiKeyQwerty6, EPtiCaseUpper, 36, 1}, + {EPtiKeyQwerty7, EPtiCaseUpper, 37, 1}, + {EPtiKeyQwerty8, EPtiCaseUpper, 38, 1}, + {EPtiKeyQwerty9, EPtiCaseUpper, 39, 1}, + {EPtiKeyQwerty0, EPtiCaseUpper, 40, 0}, + {EPtiKeyQwertyPlus, EPtiCaseUpper, 40, 1}, + {EPtiKeyQwertyQ, EPtiCaseUpper, 41, 1}, + {EPtiKeyQwertyW, EPtiCaseUpper, 42, 1}, + {EPtiKeyQwertyE, EPtiCaseUpper, 43, 1}, + {EPtiKeyQwertyR, EPtiCaseUpper, 44, 1}, + {EPtiKeyQwertyT, EPtiCaseUpper, 45, 1}, + {EPtiKeyQwertyY, EPtiCaseUpper, 46, 1}, + {EPtiKeyQwertyU, EPtiCaseUpper, 47, 1}, + {EPtiKeyQwertyI, EPtiCaseUpper, 48, 1}, + {EPtiKeyQwertyO, EPtiCaseUpper, 49, 1}, + {EPtiKeyQwertyP, EPtiCaseUpper, 50, 0}, + {EPtiKeyQwertyMinus, EPtiCaseUpper, 50, 0}, + {EPtiKeyQwertyHash, EPtiCaseUpper, 50, 1}, + {EPtiKeyQwertyA, EPtiCaseUpper, 51, 1}, + {EPtiKeyQwertyS, EPtiCaseUpper, 52, 1}, + {EPtiKeyQwertyD, EPtiCaseUpper, 53, 1}, + {EPtiKeyQwertyF, EPtiCaseUpper, 54, 1}, + {EPtiKeyQwertyG, EPtiCaseUpper, 55, 1}, + {EPtiKeyQwertyH, EPtiCaseUpper, 56, 1}, + {EPtiKeyQwertyJ, EPtiCaseUpper, 57, 1}, + {EPtiKeyQwertyK, EPtiCaseUpper, 58, 1}, + {EPtiKeyQwertyL, EPtiCaseUpper, 59, 1}, + {EPtiKeyQwertySemicolon, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyApostrophe, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertySpace, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyZ, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyX, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyC, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyV, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyB, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyN, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyM, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyComma, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertyFullstop, EPtiCaseUpper, 60, 0}, + {EPtiKeyQwertySlash, EPtiCaseUpper, 60, 0}, }; -const TInt KMaxStandardQwertyIndex_English = 88; +const TInt KMaxStandardQwertyIndex_English = 92; // // MiniQwerty keymap data table diff -r f5a1e66df979 -r a47de9135b21 textinput/ptienginev2/src/PtiLanguageDatabase.cpp --- a/textinput/ptienginev2/src/PtiLanguageDatabase.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/ptienginev2/src/PtiLanguageDatabase.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -342,6 +342,8 @@ {0, 0} }; +const TInt xt9LangImplUidDanish = 0x10282D36; +const TInt xt9LangImplUidNorwegian = 0x10282D38; // --------------------------------------------------------------------------- // CPtiLanguageDatabase::LanguageCodeForUid @@ -351,6 +353,15 @@ EXPORT_C TInt CPtiLanguageDatabase::LanguageCodeForUid(TInt aUid) { TInt i; + + if ( aUid == xt9LangImplUidDanish ) + { + return ELangDanish; + } + else if ( aUid == xt9LangImplUidNorwegian ) + { + return ELangNorwegian; + } for (i = 0; ; i++) { diff -r f5a1e66df979 -r a47de9135b21 textinput/ptienginev2/tools/VariantParser.pl --- a/textinput/ptienginev2/tools/VariantParser.pl Fri Feb 19 23:09:27 2010 +0200 +++ b/textinput/ptienginev2/tools/VariantParser.pl Fri Mar 12 15:44:07 2010 +0200 @@ -54,12 +54,12 @@ } print(INFFILE "/*\n"); -print(INFFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); +print(INFFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(INFFILE "* All rights reserved.\n"); print(INFFILE "* This component and the accompanying materials are made available\n"); print(INFFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(INFFILE "* which accompanies this distribution, and is available\n"); -print(INFFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); +print(INFFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(INFFILE "*\n"); print(INFFILE "* Initial Contributors:\n"); print(INFFILE "* Nokia Corporation - initial contribution.\n"); @@ -194,12 +194,12 @@ } print(RESFILE "/*\n"); - print(RESFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(RESFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(RESFILE "* All rights reserved.\n"); print(RESFILE "* This component and the accompanying materials are made available\n"); print(RESFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(RESFILE "* which accompanies this distribution, and is available\n"); - print(RESFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(RESFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(RESFILE "*\n"); print(RESFILE "* Initial Contributors:\n"); print(RESFILE "* Nokia Corporation - initial contribution.\n"); @@ -254,12 +254,12 @@ } print(MMPFILE "/*\n"); - print(MMPFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(MMPFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(MMPFILE "* All rights reserved.\n"); print(MMPFILE "* This component and the accompanying materials are made available\n"); print(MMPFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(MMPFILE "* which accompanies this distribution, and is available\n"); - print(MMPFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(MMPFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(MMPFILE "*\n"); print(MMPFILE "* Initial Contributors:\n"); print(MMPFILE "* Nokia Corporation - initial contribution.\n"); @@ -335,12 +335,12 @@ } print(IBYFILE "/*\n"); - print(IBYFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(IBYFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(IBYFILE "* All rights reserved.\n"); print(IBYFILE "* This component and the accompanying materials are made available\n"); print(IBYFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(IBYFILE "* which accompanies this distribution, and is available\n"); - print(IBYFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(IBYFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(IBYFILE "*\n"); print(IBYFILE "* Initial Contributors:\n"); print(IBYFILE "* Nokia Corporation - initial contribution.\n"); @@ -389,12 +389,12 @@ } print(CPPFILE "/*\n"); - print(CPPFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(CPPFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(CPPFILE "* All rights reserved.\n"); print(CPPFILE "* This component and the accompanying materials are made available\n"); print(CPPFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(CPPFILE "* which accompanies this distribution, and is available\n"); - print(CPPFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(CPPFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(CPPFILE "*\n"); print(CPPFILE "* Initial Contributors:\n"); print(CPPFILE "* Nokia Corporation - initial contribution.\n"); @@ -425,12 +425,12 @@ } print(CHHFILE "/*\n"); - print(CHHFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(CHHFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(CHHFILE "* All rights reserved.\n"); print(CHHFILE "* This component and the accompanying materials are made available\n"); print(CHHFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(CHHFILE "* which accompanies this distribution, and is available\n"); - print(CHHFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(CHHFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(CHHFILE "*\n"); print(CHHFILE "* Initial Contributors:\n"); print(CHHFILE "* Nokia Corporation - initial contribution.\n"); @@ -462,12 +462,12 @@ } print(CFFFILE "/*\n"); - print(CFFFILE "* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).\n"); + print(CFFFILE "* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).\n"); print(CFFFILE "* All rights reserved.\n"); print(CFFFILE "* This component and the accompanying materials are made available\n"); print(CFFFILE "* under the terms of the License \"Eclipse Public License v1.0\"\n"); print(CFFFILE "* which accompanies this distribution, and is available\n"); - print(CFFFILE "* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\n"); + print(CFFFILE "* at the URL "http://www.eclipse.org/legal/epl-v10.html".\n"); print(CFFFILE "*\n"); print(CFFFILE "* Initial Contributors:\n"); print(CFFFILE "* Nokia Corporation - initial contribution.\n"); @@ -677,4 +677,4 @@ close(MASTERVARFILE); -# End of file +# End of file \ No newline at end of file