--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingDialog.h Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingDialog.h Tue May 25 13:03:44 2010 +0300
@@ -105,6 +105,13 @@
virtual void DynInitMenuPaneL( TInt aResourceId,
CEikMenuPane* aMenuPane );
+ protected:
+ /**
+ * From CAknDialog
+ * Lays out the dialog's components when the size of the dialog
+ * is changed.
+ */
+ virtual void SizeChanged();
private:
void ConstructL( TInt aMenuTitleResourceId );
CAknFepPredictiveSettingDialog(TInt aConfirmationQueryResId, TInt aTitlePaneResId);
@@ -138,6 +145,7 @@
// the settings item and the flip staus changes.
TBool iSettingItemInEditingState;
CIdle* iItemCloseEventCheck;
+ TBool iSimuKey;
protected:
CAknFepPredictiveSettingList* iSettingsList;
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUserDictionaryEditDialog.h Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUserDictionaryEditDialog.h Tue May 25 13:03:44 2010 +0300
@@ -34,7 +34,7 @@
#define AKNFEPUSERDICTIONARYEDITDIALOG_H_
#include <aknselectionlist.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <aknsfld.h>
#include <AknQueryDialog.h>
#include <avkon.hrh>
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepAvkonCandidatePopup.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepAvkonCandidatePopup.cpp Tue May 25 13:03:44 2010 +0300
@@ -44,7 +44,7 @@
#include <AknFepInternalCRKeys.h>
#include <AvkonInternalCRKeys.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <AknFepGlobalEnums.h>
#include <avkon.hrh>
#include "AknFepAvkonCandidatePopup.h"
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Tue May 25 13:03:44 2010 +0300
@@ -42,7 +42,7 @@
#include <AknFepGlobalEnums.h>
#include "AknFepPredictiveSettingDialog.h"
#include <aknnotewrappers.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <hlplch.h>
#include <csxhelp/cp.hlp.hrh>
#include <akntitle.h> //CAknTitlePane
@@ -69,6 +69,7 @@
CAknDialog::ConstructL(aMenuTitleResourceId);
PrepareStatusPaneL();
iItemCloseEventCheck = CIdle::NewL(CActive::EPriorityStandard);
+ iSimuKey = EFalse;
}
CAknFepPredictiveSettingDialog ::CAknFepPredictiveSettingDialog(TInt aConfirmationQueryResId, TInt aTitlePaneResId):
@@ -647,14 +648,18 @@
{
if(iSettingItemInEditingState)
{
- // If we are currently editing the settings item then generate a cancel event
- // and start the scheduler so as to close the settings page
- // when the blocking call completes.
- RWsSession& wsSession = CEikonEnv::Static()->WsSession();
- TKeyEvent escapeEvent = {EKeyEscape, EStdKeyEscape, 0, 0};
- TRAP_IGNORE(CEikonEnv::Static()->SimulateKeyEventL(escapeEvent, EEventKey));
- wsSession.Flush();
- iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) );
+ if (!iSimuKey)
+ {
+ // If we are currently editing the settings item then generate a cancel event
+ // and start the scheduler so as to close the settings page
+ // when the blocking call completes.
+ RWsSession& wsSession = CEikonEnv::Static()->WsSession();
+ TKeyEvent escapeEvent = {EKeyEscape, EStdKeyEscape, 0, 0};
+ TRAP_IGNORE(CEikonEnv::Static()->SimulateKeyEventL(escapeEvent, EEventKey));
+ iSimuKey = ETrue;
+ wsSession.Flush();
+ iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) );
+ }
}
else
{
@@ -786,3 +791,15 @@
}
}
}
+
+/**
+ * From CAknDialog
+ */
+void CAknFepPredictiveSettingDialog::SizeChanged()
+ {
+ if( iSettingsList != NULL && iSettingsList->ListBox() != NULL )
+ {
+ iSettingsList->ListBox()->EnableStretching(EFalse);
+ }
+ CAknDialog::SizeChanged();
+ }
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp Tue May 25 13:03:44 2010 +0300
@@ -34,7 +34,7 @@
#include <AvkonInternalCRKeys.h>
#include <e32property.h>
#include <PtiDefs.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <AknFepGlobalEnums.h>
#include <featmgr.h>
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingDialog.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingDialog.cpp Tue May 25 13:03:44 2010 +0300
@@ -32,7 +32,7 @@
#include <AvkonInternalCRKeys.h>
#include <AknFepGlobalEnums.h>
#include <aknnotewrappers.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "AknFepUIAvkonCtrlDualLanguageSettingDialog.h"
#include "AknFepUIAvkonCtrlDualLanguageSettingModel.h"
#include "AknFepUIAvkonCtrlDualLanguageSettingData.h"
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidatePane.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidatePane.cpp Tue May 25 13:03:44 2010 +0300
@@ -36,7 +36,7 @@
#include <AknsDrawUtils.h>
#include <AknsBasicBackgroundControlContext.h>
#include <AknLayout.lag>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <skinlayout.cdl.h>
#include <AknLayout2ScalableDef.h>
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseKutenQueryDialog.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseKutenQueryDialog.cpp Tue May 25 13:03:44 2010 +0300
@@ -36,7 +36,7 @@
#include <aknsoundsystem.h>
#include <charconv.h>
#include <PtiDefs.h> //keys
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <avkon.hrh>
#include "AknFepUIAvkonCtrlJapaneseKutenQueryDialog.h"
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictivePane.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictivePane.cpp Tue May 25 13:03:44 2010 +0300
@@ -35,7 +35,7 @@
#include <aknPopupHeadingPane.h>
#include <AknsDrawUtils.h>
#include <AknsBasicBackgroundControlContext.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <barsread.h>
#include <eikmop.h>
#include <AknLayout.lag>
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonImpl.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonImpl.cpp Tue May 25 13:03:44 2010 +0300
@@ -36,7 +36,7 @@
#include <aknlistquerydialog.h>
#include <aknedsts.h> //CAknEdwinState
#include <barsread.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "AknFepGlobalEnums.h"
#include <aknstyluspopupmenu.h>
#include <aknSctDialog.h> //CAknCharMapDialog
Binary file fep/aknfep/conf/aknfep.confml has changed
Binary file fep/aknfep/conf/aknfep_101F876D.crml has changed
--- a/fep/aknfep/inc/AknFepPluginManager.h Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/inc/AknFepPluginManager.h Tue May 25 13:03:44 2010 +0300
@@ -86,7 +86,8 @@
EPluginSwitchToLandscape,
EPluginSwitchMode,
EPluginUpdatePenInputITIStatus,
- EPluginEnableFetchDimState
+ EPluginEnableFetchDimState,
+ EPluginArabicNumModeChanged
};
/**
@@ -848,6 +849,13 @@
void SetICFTextForSpellL();
void SendMatchListCmd(const RArray<TPtrC>& aList);
+ /**
+ * Initialize the Menu item in Option Menu for Arabic Finger HWR
+ *
+ * @CAknFepUiInterfaceMenuPane* aMenuPane The menu pane used to add more menu items
+ */
+ void InitMenuItemForArabicFingerHwrL(CAknFepUiInterfaceMenuPane* aMenuPane);
+
private: // Data
/**
@@ -989,6 +997,7 @@
TBool iLaunchMenu;
TBool iInMenu; // need to check whether it can be replaced by iLaunchMenu
+ TUint iCurMFNECap;
MCoeFepAwareTextEditor* iCurEditor;
MCoeFepAwareTextEditor* iOldFepAwareEditor;
@@ -1071,6 +1080,8 @@
TBool iCurrentDimState;
TBool iLaunchSCTInSpell;
+
+ TBool iFocuschangedForSpellEditor;
};
class CConnectAo : public CActive
--- a/fep/aknfep/inc/AknFepSharedDataInterface.h Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/inc/AknFepSharedDataInterface.h Tue May 25 13:03:44 2010 +0300
@@ -548,6 +548,25 @@
* 1 is landscape.
*/
void SetDefaultArabicFingerHwrOrientation(TInt aValue);
+ /**
+ * Returns a value of default arabic finger hwr number mode.
+ *
+ * @since 5.2
+ * @return 0 is portrait.
+ * 1 is landscape.
+ */
+ TInt DefaultArabicNumberMode() const;
+
+ /**
+ * Set a value of default arabic finger hwr number mode.
+ *
+ * @since 5.2
+ * @param aValue new value set to default arabic finger hwr number mode
+ * ared data item which represents the default number mode.
+ * 0 is latin nubmer.
+ * 1 is arabic native number.
+ */
+ void SetDefaultArabicNumberMode(TInt aValue);
private:
/**
* C++ Constructor
--- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKr.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKr.cpp Tue May 25 13:03:44 2010 +0300
@@ -27,7 +27,7 @@
#include <StringLoader.h>
#include <peninputcmd.h>
-#include <PeninputPluginKrRes.rsg>
+#include <peninputpluginkrres.rsg>
#include <peninputclient.h>
#include <AknFepInternalCRKeys.h>
--- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp Tue May 25 13:03:44 2010 +0300
@@ -600,7 +600,14 @@
}
iPermittedRange |= ERangeNumber;
}
-
+ else if(aPermittedMode == (EAknEditorNumericInputMode | EAknEditorFullWidthNumericInputMode))
+ {
+ if ( SupportNativeNumberRange() )
+ {
+ iPermittedRange = ERangeNativeNumber;
+ }
+ iPermittedRange |= ERangeNumber;
+ }
else if ( aPermittedMode & EAknEditorTextInputMode )
{
// Derived from edwin and EAknEditorTextInputMode
@@ -664,6 +671,11 @@
iPermittedRange = ERangeNativeNumber;
}
}
+ else if( iPermittedMode ==
+ (EAknEditorNumericInputMode | EAknEditorFullWidthNumericInputMode))
+ {
+ iPermittedRange = ERangeNumber | ERangeNativeNumber;
+ }
}
SendCommandToServer( ECmdPenInputPermittedRange, iPermittedRange );
--- a/fep/aknfep/src/AknFepCaseManager.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepCaseManager.cpp Tue May 25 13:03:44 2010 +0300
@@ -30,7 +30,7 @@
#include "AknFepPanic.h"
#include "aknfeppeninputenums.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <aknedsts.h>
#include <barsread.h>
#include <jplangutil.h>
--- a/fep/aknfep/src/AknFepManager.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepManager.cpp Tue May 25 13:03:44 2010 +0300
@@ -69,7 +69,7 @@
#include <frmtview.h>
#include <aknedformaccessor.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <avkon.mbg>
#include "aknconsts.h"
@@ -1248,8 +1248,7 @@
&wordIndexToSelect );
if( iQwertyInputMode
- && ( iExactWordPopupContent->IsPopUpVisible()
- || ( iFepPluginManager && iFepPluginManager->IsTooltipOpenOnFSQ() ) )
+ && IsExactWordPopUpShown()
&& aCode == EKeyUpArrow )
{
iExactWordPopupContent->HidePopUp();
@@ -1515,10 +1514,7 @@
response = EKeyWasConsumed;
}
SendEventsToPluginManL( EPluginHideTooltip );
- if(iExactWordPopupContent && iExactWordPopupContent->IsPopUpVisible())
- {
- iExactWordPopupContent->HidePopUp();
- }
+ iExactWordPopupContent->HidePopUp();
#else
else if (FepUI()->HandleKeyL(aCode, aLength))
{
@@ -1544,10 +1540,7 @@
// also need to check and close tooltip on it.
SendEventsToPluginManL( EPluginHideTooltip );
- if(iExactWordPopupContent && iExactWordPopupContent->IsPopUpVisible())
- {
- iExactWordPopupContent->HidePopUp();
- }
+ iExactWordPopupContent->HidePopUp();
if ( IsFlagSet( EFlagInsideInlineEditingTransaction ) )
{
TryRemoveNoMatchesIndicatorL();
@@ -3312,7 +3305,10 @@
aResponse = EKeyWasConsumed;
#ifdef RD_INTELLIGENT_TEXT_INPUT
// Predictive QWERTY changes ---->
- ShowExactWordPopupIfNecessaryL();
+ if ( iLangMan->IsSplitView() || ( iFepPluginManager && !iFepPluginManager->EnableITIOnFSQ()))
+ {
+ ShowExactWordPopupIfNecessaryL();
+ }
// Predictive QWERTY changes <----
}
#endif //RD_INTELLIGENT_TEXT_INPUT
@@ -3829,6 +3825,12 @@
case CAknExtendedInputCapabilities::MAknEventObserver::EActivatePenInputRequest:
SendEventsToPluginManL( EPluginEditorActivate );
break;
+ case CAknExtendedInputCapabilities::MAknEventObserver::EClosePenInputRequest:
+ if ( iFepPluginManager )
+ {
+ iFepPluginManager->ClosePluginInputModeL( EFalse );
+ }
+ break;
case CAknExtendedInputCapabilities::MAknEventObserver::EPointerEventReceived:
/*
@@ -4462,6 +4464,16 @@
iCaseMan->SetCurrentCase(EAknEditorLowerCase);
break;
case EAknCmdEditModeNumber:
+ //if current input is arabic finger hwr, then change the default
+ //number mode.
+ if(iSharedDataInterface->InputTextLanguage() == ELangArabic
+ && iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
+ {
+ iSharedDataInterface->SetDefaultArabicNumberMode(0);
+ HandleChangeInFocus();
+ SendEventsToPluginManL(EPluginArabicNumModeChanged, 0);
+ break;
+ }
case EJapanFepCmdEditModeNumber:
case EChinFepCmdModeNumber:
SendEventsToPluginManL( EPluginCloseMode, EFalse );
@@ -4475,10 +4487,22 @@
TryChangeModeL(ENumber);
break;
case EAknCmdEditModeArabicIndicNumber:
- SendEventsToPluginManL( EPluginCloseMode, EFalse );
- HandleChangeInFocus();
- iLanguageCapabilities.iLocalDigitType = EDigitTypeArabicIndic;
- TryChangeModeL(ENativeNumber);
+ //if current input is arabic finger hwr, then change the default
+ //number mode.
+ if(iSharedDataInterface->InputTextLanguage() == ELangArabic
+ && iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
+ {
+ iSharedDataInterface->SetDefaultArabicNumberMode(1);
+ SendEventsToPluginManL(EPluginArabicNumModeChanged, 1);
+ HandleChangeInFocus();
+ }
+ else
+ {
+ SendEventsToPluginManL( EPluginCloseMode, EFalse );
+ HandleChangeInFocus();
+ iLanguageCapabilities.iLocalDigitType = EDigitTypeArabicIndic;
+ TryChangeModeL(ENativeNumber);
+ }
break;
/*For Eastern Arabic Numeric*/
case EAknCmdEditModeEasternArabicIndicNumber:
@@ -4603,29 +4627,14 @@
if ( (iLanguageCapabilities.iInputLanguageCode == ELangThai ) &&
(iMode!=ENumber && iMode != ENativeNumber ) )
{
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- // if itut call Thai multitap HandleCommandL to Launch SCT
- if(!iQwertyInputMode)
- {
-#endif
- TInt resourceId = 0;
- if (iAknFepThaiSCTSelector)
- {
- resourceId = iAknFepThaiSCTSelector->ThaiSCRResourceId(PreviousChar(),EPtiKeyStar);
- }
- LaunchSpecialCharacterTableL(resourceId,
- aCommandId==EAknCmdEditInsertSymbol,
- aCommandId==EAknCmdEditInsertSmiley);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- }
- else
- {
- CAknFepUIManagerWestern* westernUIManager = static_cast<CAknFepUIManagerWestern*>(FepUI());
- LaunchSpecialCharacterTableL(westernUIManager->ThaiSCTResourceId(static_cast<TChar>(PreviousChar()),EPtiKeyStar),
- aCommandId==EAknCmdEditInsertSymbol,
- aCommandId==EAknCmdEditInsertSmiley);
- }
-#endif
+ TInt resourceId = 0;
+ if (iAknFepThaiSCTSelector)
+ {
+ resourceId = iAknFepThaiSCTSelector->ThaiSCRResourceId(PreviousChar(),EPtiKeyStar);
+ }
+ LaunchSpecialCharacterTableL(resourceId,
+ aCommandId==EAknCmdEditInsertSymbol,
+ aCommandId==EAknCmdEditInsertSmiley);
}
else
{
@@ -4971,29 +4980,25 @@
SendEventsToPluginManL( EPluginSwitchToLandscape);
}
break;
- case EPenInputCmdSwitchToVkeyBasedInput:
+ /*case EPenInputCmdSwitchToVkeyBasedInput:
{
SendEventsToPluginManL( EPluginCloseMode, EFalse );
HandleChangeInFocus();
SendEventsToPluginManL( EPluginSwitchMode);
}
- break;
+ break;*/
case EPenInputCmdWritingSpeed:
{
- SetStopProcessFocus(ETrue);
- HandleChangeInFocus();
+ SetStopProcessFocus(ETrue,EFalse);
LaunchWritingSpeedPopupListL();
- HandleChangeInFocus();
- iStopProcessFocus = EFalse;
+ SetStopProcessFocus(EFalse);
}
break;
case EPenInputCmdGuidingLine:
{
- SetStopProcessFocus(ETrue);
- HandleChangeInFocus();
+ SetStopProcessFocus(ETrue,EFalse);
LaunchGuidingLinePopupListL();
- HandleChangeInFocus();
- iStopProcessFocus = EFalse;
+ SetStopProcessFocus(EFalse);
}
break;
default:
@@ -8482,7 +8487,7 @@
// TryPopExactWordInOtherPlaceL directly after extracting them from
// the OLD ShowExactWordPopupIfNecessaryL.
iExactWordPopupContent->HidePopUp();
- SendEventsToPluginManL(EPluginHideTooltip);
+// SendEventsToPluginManL(EPluginHideTooltip);
if (!iWesternPredictive || !IsFlagSet(EFlagInsideInlineEditingTransaction))
return;
@@ -8493,7 +8498,7 @@
return;
}
- TryPopExactWordInICFL();
+ //TryPopExactWordInICFL();
if (iFepPluginManager && !iFepPluginManager->IsTooltipOpenOnFSQ())
TryPopExactWordInOtherPlaceL();
}
@@ -8506,21 +8511,30 @@
// Before open tooltip,
// also need to check and close tooltip on it.
- SendEventsToPluginManL(EPluginHideTooltip);
+// SendEventsToPluginManL(EPluginHideTooltip);
if (!iWesternPredictive || !IsFlagSet(EFlagInsideInlineEditingTransaction))
+ {
+ SendEventsToPluginManL(EPluginHideTooltip);
return;
+ }
TInt activeIdx, secondaryIdx;
GetCandidatesWithIndexL(NULL, activeIdx, secondaryIdx);
if (activeIdx == secondaryIdx)
+ {
+ SendEventsToPluginManL(EPluginHideTooltip);
return;
+ }
CDesCArray* candidates = new (ELeave) CDesCArrayFlat(16);
CleanupStack::PushL(candidates);
GetCandidatesWithIndexL(candidates, activeIdx, secondaryIdx);
CleanupStack::PopAndDestroy(candidates);
if (activeIdx == secondaryIdx)
+ {
+ SendEventsToPluginManL(EPluginHideTooltip);
return;
+ }
if (iFepPluginManager)
SendEventsToPluginManL(EPluginShowTooltip, secondaryIdx);
@@ -12983,7 +12997,8 @@
// Add This condition for Phonebook, ReTe, PF52.50_2008_wk32:
// Navigation bar disappears after tapping find pane and then returning back to Names list view.
if (!(editingStateIndicator == (MAknEditingStateIndicator*)iIndicator &&
- ( iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) &&
+ ( iFepPluginManager && ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut
+ || iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ) ) &&
IsFindPaneEditor()))
{
editingStateIndicator->SetState(newState);
@@ -15106,7 +15121,12 @@
TKeyPressLength aLength)
{
TKeyResponse response = EKeyWasNotConsumed;
-
+ if ( iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr
+ && aCode == EKeyBackspace )
+ {
+ return response;
+ }
+
if (TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response))
{
return response;
@@ -18216,7 +18236,8 @@
}
if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == charMap &&
( R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY == currentEditorSCTResId ||
- R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG == currentEditorSCTResId ) )
+ R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG == currentEditorSCTResId ||
+ R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG == currentEditorSCTResId) )
{
TBool isEmpty = ETrue;
TRAP_IGNORE(isEmpty = GetSctLengthL(charMap));
@@ -18378,7 +18399,28 @@
SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
// after closing SCT, need change dim state.
SendEventsToPluginManL(EPluginEnableFetchDimState);
-
+#ifdef RD_SCALABLE_UI_V2
+ iNotifyPlugin = EFalse;
+ if( iFepFullyConstructed && iFepPluginManager)
+ {
+ if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
+ iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
+ iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
+ {
+ SetStopProcessFocus(EFalse);
+ }
+ else
+ {
+ HandleChangeInFocus();
+ }
+ }
+ else
+ {
+ HandleChangeInFocus();
+ }
+ // Set the flag, not change focus for next.
+ iNotifyPlugin = ETrue;
+#endif
//Removes auto-complition part if SCT is launched and any special character is selected
#ifdef RD_INTELLIGENT_TEXT_INPUT
@@ -18431,9 +18473,6 @@
iUncommittedText.iAnchorPos);
}
}
- // Get new InputCapabilities immediatly.
- CCoeEnv* coeEnv = CCoeEnv::Static();
- iInputCapabilities = static_cast<const CCoeAppUi*>(coeEnv->AppUi())->InputCapabilities();
if (EditorState())
{
if (charAsDesc[0] == CEditableText::EParagraphDelimiter)
@@ -18474,28 +18513,6 @@
}
}
}
-#ifdef RD_SCALABLE_UI_V2
- iNotifyPlugin = EFalse;
- if( iFepFullyConstructed && iFepPluginManager)
- {
- if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
- iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
- iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
- {
- SetStopProcessFocus(EFalse);
- }
- else
- {
- HandleChangeInFocus();
- }
- }
- else
- {
- HandleChangeInFocus();
- }
- // Set the flag, not change focus for next.
- iNotifyPlugin = ETrue;
-#endif
}
else
{
@@ -18795,11 +18812,13 @@
iInputCapabilities.FepAwareTextEditor()->
GetCursorSelectionForFep(currentEditorSelection);
}
-
- if(!IsMfneEditor() &&
- (PluginInputMode() == EPluginInputModeItut ||
- PluginInputMode() == EPluginInputModeFSQ) &&
- currentEditorSelection.Length() != 0)
+
+ TInt inputMode = PluginInputMode();
+ TBool isArabicFingerHwr = (inputMode == EPluginInputModeFingerHwr &&
+ GetInputLanguageFromSharedDataInterface() == ELangArabic);
+ if(!IsMfneEditor() && (inputMode == EPluginInputModeItut ||
+ inputMode == EPluginInputModeFSQ || isArabicFingerHwr)
+ && currentEditorSelection.Length() != 0)
{
if ((aKeyEvent.iScanCode == EStdKeyLeftArrow) || (aKeyEvent.iScanCode == EStdKeyRightArrow))
@@ -20722,12 +20741,18 @@
void CAknFepManager::HideExactWordPopUp()
{
- iExactWordPopupContent->HidePopUp();
+ iExactWordPopupContent->HidePopUp();
+ SendEventsToPluginManL( EPluginHideTooltip );
}
TBool CAknFepManager::IsExactWordPopUpShown()
{
-return iExactWordPopupContent->IsPopUpVisible();
+#ifdef RD_SCALABLE_UI_V2
+ return iExactWordPopupContent->IsPopUpVisible()
+ || ( iFepPluginManager && iFepPluginManager->IsTooltipOpenOnFSQ() );
+#else
+ return iExactWordPopupContent->IsPopUpVisible();
+#endif // RD_SCALABLE_UI_V2
}
void CAknFepManager::StopDisplayingMenuBar()
{
--- a/fep/aknfep/src/AknFepPluginManager.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepPluginManager.cpp Tue May 25 13:03:44 2010 +0300
@@ -42,7 +42,7 @@
#include <AvkonInternalCRKeys.h> // KAknQwertyInputModeActive
#include <hlplch.h>
#include <peninputgsinterface.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <avkon.rsg>
#include <AknIndicatorContainer.h> //CAknIndicatorContainer
#include <StringLoader.h>
@@ -685,6 +685,7 @@
break;
case ESignalEnterSpellMode:
{
+ iCurrentPluginInputFepUI->HandleCommandL(ECmdPeninputDisableLayoutDrawing,ETrue);
iFepMan.LaunchEditWordQueryL();
}
break;
@@ -693,6 +694,10 @@
TInt* ptrData = (TInt*)(pBuf.Ptr());
TBool exitbyok = *(ptrData);
+ //remove spell mode editor will cause focus change, so as pen UI is closed and opened again.
+ iFocuschangedForSpellEditor = ETrue;
+ iCurrentPluginInputFepUI->HandleCommandL(ECmdPeninputDisableLayoutDrawing,ETrue);
+
exitbyok ? iFepMan.ExitPluginSpellModeByOk() :
iFepMan.ExitPluginSpellModeByCancel();
}
@@ -770,6 +775,54 @@
iFepMan.PtiEngine()->CommitCurrentWord();
}
break;
+ case ESignalDeleteLastInput:
+ {
+
+ iFepMan.SetFlag( CAknFepManager::EFlagSupressAutoUpdate );
+
+ //set selection
+ MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor();
+ if( iFepMan.IsFepAwareTextEditor() && edit )
+ {
+ TCursorSelection curSor;
+ edit->GetCursorSelectionForFep(curSor);
+ if ( curSor.iAnchorPos == curSor.iCursorPos )
+ {
+ curSor.iAnchorPos = curSor.iCursorPos - iLastSubmitCount;
+
+ if (curSor.iAnchorPos<0 ||
+ curSor.iAnchorPos>edit->DocumentLengthForFep())
+ {
+ break;
+ }
+
+ if (curSor.iCursorPos > curSor.iAnchorPos)
+ {
+ edit->SetCursorSelectionForFepL(curSor);
+ }
+ }
+ TBuf<1> backSpace;
+ backSpace.Append(TChar(EKeyBackspace));
+ SubmitUiPluginTextL(backSpace, EKeyEvent);
+ }
+ iFepMan.ClearFlag( CAknFepManager::EFlagSupressAutoUpdate );
+
+ }
+ break;
+ case ESignalArabicSCTChar:
+ {
+ TPtrC ptr( const_cast<TUint16*>(pBuf.Ptr()), pBuf.Length());
+// if(iFepMan.InputMode() == ELatin && (iPluginInputMode == EPluginInputModeVkb ||
+// iPluginInputMode == EPluginInputModeFSQ))
+// {
+// AdjustDataCase( ptr );
+// }
+ iFepMan.StartInlineEditL(ptr);
+ iFepMan.CommitInlineEditL();
+ SendIcfDataL( EPluginSyncAll );
+// OnPenInputServerKeyEventL(pBuf);
+ }
+ break;
default:
break;
}
@@ -1019,6 +1072,13 @@
iNeedFetchDimState = ETrue;
}
break;
+ case EPluginArabicNumModeChanged:
+ if(iCurrentPluginInputFepUI)
+ {
+ iCurrentPluginInputFepUI->HandleCommandL(
+ ECmdPeninputArabicNumModeChanged,aEventData);
+ }
+ break;
default:
break;
}
@@ -1107,15 +1167,39 @@
( aSuggestMode == EPluginInputModeFSQ &&
( iDefaultOrientation == CAknAppUiBase::EAppUiOrientationPortrait ||
( !landscape && !iAvkonAppUi->OrientationCanBeChanged() ) ) );
+
if ( disableFSQ )
{
iPenInputServer.SetDisabledLayout( EPluginInputModeFSQ );
}
-
- if ( aSuggestMode == EPluginInputModeFSQ || (aSuggestMode == EPluginInputModeFingerHwr
- && iSharedData.InputTextLanguage() == ELangArabic
- && iSharedData.AutoRotateEnabled()))
+
+ TBool disableITUT =
+ ( iDefaultOrientation == CAknAppUiBase::EAppUiOrientationLandscape ||
+ ( landscape && !iAvkonAppUi->OrientationCanBeChanged() ) ) ;
+
+ if( disableITUT )
+ {
+ //disable V-ITUT, and if current aSuggestMode is EPluginInputModeItut, replace it with EPluginInputModeFSQ;
+ iPenInputServer.SetDisabledLayout( EPluginInputModeItut );
+ if( aSuggestMode == EPluginInputModeItut )
+ {
+ aSuggestMode = EPluginInputModeFSQ;
+ }
+ }
+ else
+ {
+ // if V-ITUT had been disabled before, enable it now;
+ TInt disableMode = iPenInputServer.DisabledLayout();
+ if( disableMode & EPluginInputModeItut )
+ {
+ iPenInputServer.SetDisabledLayout( -1 );//reset
+ iPenInputServer.SetDisabledLayout( disableMode & ~EPluginInputModeItut );
+ }
+ }
+
+
+ if ( aSuggestMode == EPluginInputModeFSQ)
{
TPluginInputMode tempInputMode = iPluginInputMode;
iPluginInputMode = aSuggestMode;
@@ -1128,8 +1212,7 @@
else
{
if ( (!iSharedData.AutoRotateEnabled()
- && aSuggestMode == EPluginInputModeFSQ) ||
- (aSuggestMode == EPluginInputModeFingerHwr))
+ && aSuggestMode == EPluginInputModeFSQ))
{
iFepMan.SetNotifyPlugin( EFalse );
iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape );
@@ -1187,7 +1270,14 @@
{
isSplit = EFalse;
}
+
+ if ( iLangMan.IsSplitView() && !isSplit )
+ {
+ NotifyAppUiImeTouchWndStateL( EFalse ); //restore layout
+ }
+
iLangMan.SetSplitView(isSplit);
+
MAknFepManagerInterface* fepUI = iLangMan.GetPluginInputFepUiL(
aSuggestMode,
@@ -1367,7 +1457,17 @@
InformMfneUiStatusL( EFalse );
iPenInputServer.ClearServerEvent();
- iCurrentPluginInputFepUI->CloseUI();
+ if(iFocuschangedForSpellEditor)
+ {
+ iFocuschangedForSpellEditor = EFalse;
+ //disable the redrawing, it will be redrawn in
+ //iCurrentPluginInputFepUI->HandleCommandL(ECmdPeninputDisableLayoutDrawing,ETrue);
+ return; //don't close the UI if this is caused by removing spell editor
+ }
+ else
+ {
+ iCurrentPluginInputFepUI->CloseUI();
+ }
if( aResetState )
{
iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputWindowClose);
@@ -1415,9 +1515,9 @@
return;
}
- if ( iPluginInputMode == EPluginInputModeFSQ &&
- !iSharedData.AutoRotateEnabled() || (iPluginInputMode == EPluginInputModeFingerHwr
+ if ( (iPluginInputMode == EPluginInputModeFSQ || (iPluginInputMode == EPluginInputModeFingerHwr
&& iSharedData.InputTextLanguage() == ELangArabic))
+ && !iSharedData.AutoRotateEnabled() )
{
return;
}
@@ -1553,6 +1653,11 @@
break;
case EPenInputCmdVITUT:
{
+ //Here calling this function is to reset menu state when the focus change caused by
+ //the screen orientation, in the normal circumstance the foucus change should not
+ //occur while the screen orientation is handling. So directly resetting menu state
+ //to avoid the above case, preconditon is that the option menu must be closed.
+ ResetMenuState();
ClosePluginInputModeL(ETrue);
iFepMan.TryCloseUiL();
TryChangePluginInputModeByModeL(EPluginInputModeItut,
@@ -1562,6 +1667,11 @@
break;
case EPeninputCmdFSQ:
{
+ //Here calling this function is to reset menu state when the focus change caused by
+ //the screen orientation, in the normal circumstance the foucus change should not
+ //occur while the screen orientation is handling. So directly resetting menu state
+ //to avoid the above case, preconditon is that the option menu must be closed.
+ ResetMenuState();
ClosePluginInputModeL(ETrue);
iFepMan.TryCloseUiL();
TryChangePluginInputModeByModeL(EPluginInputModeFSQ,
@@ -1571,6 +1681,11 @@
break;
case EPeninputCmdHwr:
{
+ //Here calling this function is to reset menu state when the focus change caused by
+ //the screen orientation, in the normal circumstance the foucus change should not
+ //occur while the screen orientation is handling. So directly resetting menu state
+ //to avoid the above case, preconditon is that the option menu must be closed.
+ ResetMenuState();
ClosePluginInputModeL(ETrue);
iFepMan.TryCloseUiL();
TryChangePluginInputModeByModeL( EPluginInputModeFingerHwr,
@@ -1940,80 +2055,92 @@
aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse);
}
- //if ( iFepMan.IsArabicInputLanguage() && ( curInputMode != EPluginInputModeFingerHwr )
- // && !( disabledInputMode & EPluginInputModeFingerHwr ))
- // {
- // aMenuPane->SetItemDimmed( EPeninputCmdHwr, 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))
+ if ( FeatureManager::FeatureSupported( KFeatureIdArabicHandwritingRecognitionInput )
+ &&iFepMan.IsArabicInputLanguage()
+ && ( curInputMode != EPluginInputModeFingerHwr )
+ && !( disabledInputMode & EPluginInputModeFingerHwr ))
+ {
+ aMenuPane->SetItemDimmed( EPeninputCmdHwr, EFalse );
+ }
+
+ // check if this is the arabic finger hwr
+ TBool isArabicFingerHwr = (iPluginInputMode == EPluginInputModeFingerHwr
+ && ELangArabic == iSharedData.InputTextLanguage());
+
+ // Initialize the menu item for Arabic Finger HWR
+ if(isArabicFingerHwr)
{
- 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);
- }
+ InitMenuItemForArabicFingerHwrL(aMenuPane);
+ }
iLangMan.CurrentImePlugin()->DynInitMenuPaneL(aMenuPane);
}
-
-
- }
-
+ }
+
+void CAknFepPluginManager::InitMenuItemForArabicFingerHwrL(CAknFepUiInterfaceMenuPane* aMenuPane)
+ {
+ TInt index = 0;
+ TBool isAutoRotateEnabled = iSharedData.AutoRotateEnabled();
+ // add menu item to switch to landscape or protrait
+ if(!isAutoRotateEnabled)
+ {
+ TPixelsTwipsAndRotation size;
+ CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
+ TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight;
+ if(landscape)
+ {
+ index = 0;
+ // add switch to protrait
+ if(aMenuPane->MenuItemExists(EPenInputCmdHwrInputToPortrait, index))
+ {
+ aMenuPane->SetItemDimmed(EPenInputCmdHwrInputToPortrait,EFalse);
+ }
+ }
+ else
+ {
+ index = 0;
+ // add switch to landscape
+ if(aMenuPane->MenuItemExists(EPenInputCmdHwrInputToLandscape, index))
+ {
+ aMenuPane->SetItemDimmed(EPenInputCmdHwrInputToLandscape,EFalse);
+ }
+ }
+ }
+
+ // hide the setting menu
+// index = 0;
+// if(aMenuPane->MenuItemExists(EPenInputCmdSetting, index))
+// {
+// aMenuPane->SetItemDimmed(EPenInputCmdSetting, ETrue);
+// }
+
+ //Show number mode menu item.
+ if(iFepMan.InputMode() == ENumber || iFepMan.InputMode() == ENativeNumber)
+ {
+ if(iSharedData.DefaultArabicNumberMode())
+ {
+ aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse);
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, EFalse);
+ }
+ }
+ // add the writing speed menu
+ index = 0;
+ if(aMenuPane->MenuItemExists(EPenInputCmdWritingSpeed, index))
+ {
+ aMenuPane->SetItemDimmed(EPenInputCmdWritingSpeed,EFalse);
+ }
+
+ // add the guidingline menu
+ index = 0;
+ if(aMenuPane->MenuItemExists(EPenInputCmdGuidingLine, index))
+ {
+ aMenuPane->SetItemDimmed(EPenInputCmdGuidingLine,EFalse);
+ }
+ }
+
// ---------------------------------------------------------------------------
// CAknFepPluginManager::OnFocusChangedL
// (other items were commented in a header)
@@ -2149,7 +2276,8 @@
if ( enableAdaptiveSearch )
{
if(!(iInMenu && ( iPluginInputMode == EPluginInputModeItut ||
- iPluginInputMode == EPluginInputModeFSQ )))
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode ==EPluginInputModeFingerHwr)))
{
ClosePluginInputModeL(ETrue);
if(iPenInputSvrConnected ) //lost foreground
@@ -2867,8 +2995,11 @@
// iPenInputServer.UpdateAppInfo(KNullDesC, EAppIndicatorMsg);
iPluginInputMode = (TPluginInputMode)iLangMan.CurrentImePlugin()->CurrentMode();
-
- iPenInputServer.SetDataQueryPopped(IsDisplayDataQuery());
+
+ // Not only for data query, but also for other pop dialogs contain editor.
+ //iPenInputServer.SetDataQueryPopped(IsDisplayDataQuery());
+ iPenInputServer.SetDataQueryPopped(CCoeEnv::Static()->AppUi()->IsDisplayingDialog() &&
+ CCoeEnv::Static()->AppUi()->TopFocusedControl());
//adjust VKB window if data query dialog is displaying
if(IsDisplayDataQuery())
@@ -2891,7 +3022,9 @@
if ( !NotifyInGlobalNoteEditorL() )
{
+ iFocuschangedForSpellEditor = EFalse; // restore the flag
iCurrentPluginInputFepUI->ActivateUI();
+ iNeedFetchDimState = ETrue;
}
iFepMan.UpdateIndicators();
@@ -4611,6 +4744,20 @@
{
iSpell->InputPane()->InputWin()->SetAknEditorCurrentCase(editorCase);
iSpell->InputPane()->InputWin()->SetAknEditorCurrentInputMode(EAknEditorTextInputMode);
+ if ( iLangMan.IsSplitView() )
+ {
+ iSpell->InputPane()->InputWin()->SetAknEditorFlags(
+ iSpell->InputPane()->InputWin()->AknEdwinFlags() |
+ aEditorFlag | EAknEditorFlagNoT9 |
+ EAknEditorFlagEnablePartialScreen );
+ }
+ else
+ {
+ iSpell->InputPane()->InputWin()->SetAknEditorFlags(
+ iSpell->InputPane()->InputWin()->AknEdwinFlags() |
+ aEditorFlag | EAknEditorFlagNoT9 );
+ }
+
iSpell->MakeVisible( ETrue );
iSpell->SetInputWinFocus( ETrue );
}
@@ -5022,7 +5169,7 @@
if(!iPenInputSvrConnected )
{
return;
- }
+ }
if (!(PluginInputMode() == EPluginInputModeItut ||
PluginInputMode() == EPluginInputModeFSQ ||
@@ -5035,9 +5182,15 @@
if (aUpdateEditor && !iInMenu)
{
if(iFepMan.FepAwareTextEditor())
- iCurEditor = iFepMan.FepAwareTextEditor();
+ {
+ iCurMFNECap = iFepMan.IsMfneEditor() ? iFepMan.ExtendedInputCapabilities() : 0;
+ iCurEditor = iFepMan.FepAwareTextEditor();
+ }
else
- iCurEditor = NULL;
+ {
+ iCurMFNECap = 0;
+ iCurEditor = NULL;
+ }
}
iInMenu = ETrue;
@@ -5056,9 +5209,10 @@
if(!iPenInputSvrConnected )
{
return;
- }
-
+ }
+
iInMenu = EFalse;
+ iCurMFNECap = 0;
iCurEditor = NULL;
if (aUnDim)
{
@@ -5138,7 +5292,7 @@
void CAknFepPluginManager::InformMfneUiStatusL( TBool aOpened )
{
- if ( iMfne && iMfneChanged )
+ if ( iMfne && ( iMfneChanged || !aOpened ))
{
//make the selection longer than maximum length of current
//text, so it won't change the behavior of MFNE editor which
@@ -5197,7 +5351,8 @@
//if it's in global notes, show it.
if(EPluginInputModeItut == PluginInputMode() ||
- EPluginInputModeFSQ == PluginInputMode() )
+ EPluginInputModeFSQ == PluginInputMode() ||
+ EPluginInputModeFingerHwr == PluginInputMode())
{
if(iInGlobleNoteEditor && iPenInputSvrConnected)
{
@@ -5608,10 +5763,19 @@
//
void CAknFepPluginManager::SetItiStateL()
{
- if ( iIsITIConfigured || !IsSupportITIOnFSQ() )
+ if ( !IsSupportITIOnFSQ() )
{
return;
}
+ if ( iIsITIConfigured )
+ {
+ // if fep state has been configed to iti status before,
+ // there is no need to config fep state again,
+ // but sending command to fsq to update iti status flag is needed.
+ iCurrentPluginInputFepUI->HandleCommandL( ECmdPeninputITIStatus,
+ iFepMan.WesternPredictive() );
+ return;
+ }
// 1. Config keyboard layout type
SetItiKeyboardLayoutL();
@@ -5794,7 +5958,21 @@
//Normal editors
CAknEdwinState* state = iFepMan.EditorState();
if (iCurEditor && state == NULL)
- state = static_cast<CAknEdwinState *> (iCurEditor->Extension1()->State(KNullUid));
+ {
+ if( iCurMFNECap )
+ {
+ return CAknExtendedInputCapabilities::EInputEditorPartialScreen ==
+ ( iCurMFNECap & CAknExtendedInputCapabilities::EInputEditorPartialScreen );
+ }
+ else
+ {
+ MCoeFepAwareTextEditor_Extension1* extension = iCurEditor->Extension1();
+ if( extension )
+ {
+ state = static_cast<CAknEdwinState *>( extension->State(KNullUid) );
+ }
+ }
+ }
if ( state )
{
return EAknEditorFlagEnablePartialScreen ==
--- a/fep/aknfep/src/AknFepSharedDataInterface.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepSharedDataInterface.cpp Tue May 25 13:03:44 2010 +0300
@@ -1860,6 +1860,35 @@
}
}
+/**
+ * Returns a value of default arabic finger hwr number mode.
+ *
+ * @since 5.2
+ * @return Value of default arabic finger hwr number mode.
+ */
+TInt CAknFepSharedDataInterface::DefaultArabicNumberMode() const
+ {
+ TInt value = 0;
+ if (iAknFepRepository)
+ {
+ iAknFepRepository->Get(KAknFepDefaultArabicNumberMode, value);
+ }
+ return value;
+ }
+
+/**
+ * Set a value of default arabic finger hwr number mode.
+ *
+ * @since 5.2
+ * @param aValue new value set to default arabic finger hwr number mode shared data item
+ */
+void CAknFepSharedDataInterface::SetDefaultArabicNumberMode(TInt aValue)
+ {
+ if (iAknFepRepository)
+ {
+ iAknFepRepository->Set(KAknFepDefaultArabicNumberMode, aValue);
+ }
+ }
#endif
// End of File
--- a/fep/aknfep/src/AknFepThaiSCTSelector.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepThaiSCTSelector.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include <PtiDefs.h>
#include <aknSctDialog.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <e32std.h>
#include <AknFepManager.h>
--- a/fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyCangJie.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyCangJie.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include "AknFepManager.h" //FepMan flag
#include "AknFepUICtrlInputPane.h"
#include "AknFepUiCtrlContainerChinese.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiEngine.h> //CPtiEngine
#include <e32keys.h> //keys
#include <avkon.rsg>
--- a/fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include "AknFepManager.h" //FepMan flag
#include "AknFepUICtrlInputPane.h"
#include "AknFepUiCtrlContainerChinese.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiEngine.h> //CPtiEngine
#include <e32keys.h> //keys
#include <avkon.rsg>
--- a/fep/aknfep/src/AknFepUiInputStateCandidateHalfQwertyChinesePhrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateCandidateHalfQwertyChinesePhrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -39,7 +39,7 @@
#include "AknFepUICtrlPinyinPopup.h"
#include "AknFepUIManagerStateInterface.h"
#include "AknFepManager.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// Constant definition
const TInt KMinCandidateCount = 1;
--- a/fep/aknfep/src/AknFepUiInputStateCandidateHiraganaKanji.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateCandidateHiraganaKanji.cpp Tue May 25 13:03:44 2010 +0300
@@ -42,7 +42,7 @@
#include <PtiDefs.h> // keys
#include <PtiEngine.h>
#include <PtiCompositionDataIF.h> // MPtiEngineCompositionDataInterfac
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
--- a/fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -41,7 +41,7 @@
#include "aknfepuictrleditpane.h" //phrase creation
#include "AknFepUIManagerStateInterface.h"
#include "AknFepManager.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// ---------------------------------------------------------------------------
// AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase::
--- a/fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -38,7 +38,7 @@
#include "AknFepUICtrlInputPane.h"
#include "AknFepUIManagerStateInterface.h"
#include "AknFepManager.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "aknfepuictrleditpane.h" //for zhuyin phrase creation
#include "aknfepinputstateminiqwertyzhuyinkeymap.h"
--- a/fep/aknfep/src/AknFepUiInputStateCandidateRetroActive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateCandidateRetroActive.cpp Tue May 25 13:03:44 2010 +0300
@@ -42,7 +42,7 @@
#include <PtiEngine.h>
#include <PtiCompositionDataIF.h> // MPtiEngineCompositionDataInterfac
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
--- a/fep/aknfep/src/AknFepUiInputStateConversionHiraganaKanji.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateConversionHiraganaKanji.cpp Tue May 25 13:03:44 2010 +0300
@@ -36,7 +36,7 @@
#include <PtiDefs.h> // keys
#include <PtiEngine.h>
#include <PtiCompositionDataIF.h> // MPtiEngineCompositionDataInterface
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
--- a/fep/aknfep/src/AknFepUiInputStateEntryHalfQwertyWesternPredictive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryHalfQwertyWesternPredictive.cpp Tue May 25 13:03:44 2010 +0300
@@ -40,7 +40,7 @@
#include <PtiCompositionDataIF.h> //MPtiEngineCompositionDataInterface
#include <featmgr.h> //FeatureManager
#include <e32keys.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiUserDicEntry.h>
// TODO: Remove this include
#include <AvkonInternalCRKeys.h>
--- a/fep/aknfep/src/AknFepUiInputStateEntryHiraganaKanji.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryHiraganaKanji.cpp Tue May 25 13:03:44 2010 +0300
@@ -36,7 +36,7 @@
#include <PtiDefs.h> // keys
#include <PtiEngine.h>
#include <PtiCompositionDataIF.h> // MPtiEngineCompositionDataInterface
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
--- a/fep/aknfep/src/AknFepUiInputStateEntryIndicPredictive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryIndicPredictive.cpp Tue May 25 13:03:44 2010 +0300
@@ -30,7 +30,7 @@
#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface
#include "AknFepPanic.h"
#include "AknFepManagerUIInterface.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiEngine.h>
#include <PtiDefs.h>
--- a/fep/aknfep/src/AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -41,7 +41,7 @@
#include <e32keys.h>
#include <PtiDefs.h>
#include <avkon.rsg> //keys
-#include <AknFep.rsg>
+#include <aknfep.rsg>
const TInt KInputPaneLength = 32;
_LIT(KSep, "'");
--- a/fep/aknfep/src/AknFepUiInputStateEntryPinyinPhrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryPinyinPhrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -40,7 +40,7 @@
#include <PtiEngine.h> //CPtiEngine
#include <PtiDefs.h> //keys
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <aknnotewrappers.h>
const TText KPinyinTone0Valid = 0x02C9;
--- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyWesternPredictive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryQwertyWesternPredictive.cpp Tue May 25 13:03:44 2010 +0300
@@ -41,7 +41,7 @@
#include <PtiCompositionDataIF.h> //MPtiEngineCompositionDataInterface
#include <featmgr.h> //FeatureManager
#include <e32keys.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
static const TInt KKeyMappingsLength = 63;
@@ -458,6 +458,12 @@
TBool wasInlineEditing = EFalse;
wasInlineEditing =
fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction);
+
+ if(aKey == EStdKeySpace && tailLength > 0)
+ {
+ fepMan->RemoveSuggestedAdvanceCompletionL();
+ }
+
ptiengine->CommitCurrentWord();
fepMan->CommitInlineEditL();
/* Temporary Fix */
--- a/fep/aknfep/src/AknFepUiInputStateEntryThaiPredictive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryThaiPredictive.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include <PtiEngine.h> //CPtiEngine
#include <PtiDefs.h> //keys
#include <e32keys.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
TAknFepInputStateEntryThaiPredictive::
TAknFepInputStateEntryThaiPredictive(MAknFepUIManagerStateInterface* aOwner)
--- a/fep/aknfep/src/AknFepUiInputStateEntryVietnamesePredictive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryVietnamesePredictive.cpp Tue May 25 13:03:44 2010 +0300
@@ -39,7 +39,7 @@
#include <PtiDefs.h> //keys
#include <aknSctDialog.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "AknFepUiManagerWestern.h"
TAknFepInputStateEntryVietnamesePredictive::
--- a/fep/aknfep/src/AknFepUiInputStateEntryWesternPredictive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryWesternPredictive.cpp Tue May 25 13:03:44 2010 +0300
@@ -41,7 +41,7 @@
#include <PtiDefs.h> //keys
#include <featmgr.h> //FeatureManager
#include <e32keys.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiUserDicEntry.h>
// The Maximum world size
--- a/fep/aknfep/src/AknFepUiInputStateEntryWesternPredictiveJp.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryWesternPredictiveJp.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include <PtiDefs.h> //keys
#include <featmgr.h> //FeatureManager
#include <e32keys.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
TAknFepInputStateEntryWesternPredictiveJp::
TAknFepInputStateEntryWesternPredictiveJp(MAknFepUIManagerStateInterface* aOwner)
--- a/fep/aknfep/src/AknFepUiInputStateEntryZhuyinStrokeBasePhrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryZhuyinStrokeBasePhrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -38,7 +38,7 @@
#include <PtiEngine.h> //CPtiEngine
#include <e32keys.h> //keys
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
TAknFepInputStateEntryZhuyinStrokeBasePhrase::TAknFepInputStateEntryZhuyinStrokeBasePhrase(
MAknFepUIManagerStateInterface* aOwner,
--- a/fep/aknfep/src/AknFepUiInputStateInitialIndicMultitap.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateInitialIndicMultitap.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include <PtiDefs.h>
#include <aknSctDialog.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <eikenv.h>
#define PTI_CLEAR_CURRENTWORD( A, B ) \
--- a/fep/aknfep/src/AknFepUiInputStateInitialThaiMultitap.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateInitialThaiMultitap.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include <PtiDefs.h>
#include <aknSctDialog.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
TAknFepInputStateInitialThaiMultitap::
--- a/fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp Tue May 25 13:03:44 2010 +0300
@@ -39,7 +39,7 @@
#include <PtiDefs.h>
#include <aknSctDialog.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "AknFepUiManagerWestern.h"
--- a/fep/aknfep/src/AknFepUiInputStateJapanesePredictiveBase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateJapanesePredictiveBase.cpp Tue May 25 13:03:44 2010 +0300
@@ -39,7 +39,7 @@
#include <PtiDefs.h> // keys
#include <PtiEngine.h>
#include <PtiCompositionDataIF.h> // MPtiEngineCompositionDataInterface
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
--- a/fep/aknfep/src/AknFepUiInputStateNextWordJapanesePredictive.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateNextWordJapanesePredictive.cpp Tue May 25 13:03:44 2010 +0300
@@ -40,7 +40,7 @@
#include <PtiDefs.h> // keys
#include <PtiEngine.h>
#include <PtiCompositionDataIF.h> // MPtiEngineCompositionDataInterface
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
--- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputJapanese.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStatePredictiveInputJapanese.cpp Tue May 25 13:03:44 2010 +0300
@@ -40,7 +40,7 @@
#include <PtiDefs.h> // keys
#include <PtiEngine.h>
#include <PtiCompositionDataIF.h> // MPtiEngineCompositionDataInterface
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <avkon.rsg>
// CONSTANTS
--- a/fep/aknfep/src/AknFepUiManagerBase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiManagerBase.cpp Tue May 25 13:03:44 2010 +0300
@@ -43,7 +43,7 @@
#include "AknFepCaseManager.h"
#include "AknFepPanic.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <AknIndicatorContainer.h> // CAknIndicatorContainer::TIndicatorContext
#include <PtiEngine.h>
#include <PtiDefs.h>
--- a/fep/aknfep/src/AknFepUiManagerChinese.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiManagerChinese.cpp Tue May 25 13:03:44 2010 +0300
@@ -121,7 +121,7 @@
#include <PtiDefs.h>
#include <avkon.rsg> //phrase creation
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
const TInt16 KStrokeHorizontalValue = 0x4e00;
--- a/fep/aknfep/src/AknFepUiManagerWestern.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/AknFepUiManagerWestern.cpp Tue May 25 13:03:44 2010 +0300
@@ -96,7 +96,7 @@
#include <PtiEngine.h>
#include <PtiDefs.h>
#include <PtiUserDicEntry.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// CONSTANTS
/**
@@ -382,18 +382,35 @@
{
case ELatin:
{
- if ( iLanguage == ELangTaiwanChinese ||
- iLanguage == ELangHongKongChinese ||
- iLanguage == ELangPrcChinese ||
- iLanguage == ELangJapanese ||
- iLanguage == ELangHindi )
+ switch ( iLanguage )
+ {
+ case ELangTaiwanChinese:
+ {
+ lang = ELangEnglish_Taiwan;
+ break;
+ }
+ case ELangHongKongChinese:
+ {
+ lang = ELangEnglish_HongKong;
+ break;
+ }
+ case ELangPrcChinese:
+ {
+ lang = ELangEnglish_Prc;
+ break;
+ }
+ case ELangJapanese:
+ case ELangHindi:
{
// Chinese and Japanese languages uses always English as a latin language.
lang = ELangEnglish;
+ break;
}
- else
+ default:
{
lang = iLanguage;
+ break;
+ }
}
}
break;
--- a/fep/aknfep/src/aknfepinputstatecandidatepinyinphrasecreation.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepinputstatecandidatepinyinphrasecreation.cpp Tue May 25 13:03:44 2010 +0300
@@ -30,7 +30,7 @@
// System includes
#include <PtiEngine.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
//#include <aknquerydialog.h> //CAknQueryDialog
// User includes
--- a/fep/aknfep/src/aknfepinputstatepinyinphrasecreationbase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepinputstatepinyinphrasecreationbase.cpp Tue May 25 13:03:44 2010 +0300
@@ -30,7 +30,7 @@
#include <PtiEngine.h> //CPtiEngine
#include <PtiUserDicEntry.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "aknfepinputstatepinyinphrasecreationbase.h"
#include "AknFepPanic.h"
--- a/fep/aknfep/src/aknfepinputstatespellingpinyinphrasecreation.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepinputstatespellingpinyinphrasecreation.cpp Tue May 25 13:03:44 2010 +0300
@@ -29,7 +29,7 @@
#include <PtiEngine.h> //CPtiEngine
#include <PtiDefs.h> //keys
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <aknnotewrappers.h>
#include "AknFepPanic.h"
--- a/fep/aknfep/src/aknfepuiinputminiqwertypinyinphrasebase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputminiqwertypinyinphrasebase.cpp Tue May 25 13:03:44 2010 +0300
@@ -32,7 +32,7 @@
#include <PtiEngine.h>
#include <PtiDefs.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiUserDicEntry.h>
#include <aknnotewrappers.h> //CAknWarningNote
// User includes
--- a/fep/aknfep/src/aknfepuiinputminiqwertystrokephrasebase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputminiqwertystrokephrasebase.cpp Tue May 25 13:03:44 2010 +0300
@@ -33,7 +33,7 @@
#include <PtiEngine.h>
#include <PtiDefs.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiUserDicEntry.h>
#include <aknnotewrappers.h> //CAknWarningNote
--- a/fep/aknfep/src/aknfepuiinputminiqwertyzhuyinphrasebase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputminiqwertyzhuyinphrasebase.cpp Tue May 25 13:03:44 2010 +0300
@@ -32,7 +32,7 @@
#include <PtiEngine.h>
#include <PtiDefs.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiUserDicEntry.h>
#include <aknnotewrappers.h> //CAknWarningNote
// User includes
--- a/fep/aknfep/src/aknfepuiinputstateentryhalfqwertyphrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstateentryhalfqwertyphrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include "AknFepUICtrlInputPane.h"
#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase
#include "AknFepUiCtrlContainerChinese.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiEngine.h> //CPtiEngine
#include <e32keys.h> //keys
#include <avkon.rsg>
--- a/fep/aknfep/src/aknfepuiinputstateentrypinyinphrasecreation.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstateentrypinyinphrasecreation.cpp Tue May 25 13:03:44 2010 +0300
@@ -32,7 +32,7 @@
#include <PtiDefs.h> //keys
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <aknnotewrappers.h>
#include "AknFepPanic.h"
--- a/fep/aknfep/src/aknfepuiinputstateentryzhuyinphrasecreation.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstateentryzhuyinphrasecreation.cpp Tue May 25 13:03:44 2010 +0300
@@ -31,7 +31,7 @@
#include <PtiDefs.h> //keys
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <aknnotewrappers.h>
#include "AknFepPanic.h"
--- a/fep/aknfep/src/aknfepuiinputstateinitialindicphoneticmultitap.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstateinitialindicphoneticmultitap.cpp Tue May 25 13:03:44 2010 +0300
@@ -37,7 +37,7 @@
#include <PtiDefs.h>
#include <aknsctdialog.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <EikEnv.h>
#include <Aknutils.h>
#define PHONETIC_SEPARATOR 0x2e
--- a/fep/aknfep/src/aknfepuiinputstateminiqwertystrokephrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstateminiqwertystrokephrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -33,7 +33,7 @@
#include <PtiEngine.h>
#include <PtiUserDicEntry.h>
#include <aknnotewrappers.h> //CAknWarningNote
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// User includes
#include "AknFepUiCtrlContainerChinese.h"
--- a/fep/aknfep/src/aknfepuiinputstateminiqwertyzhuyinphrase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstateminiqwertyzhuyinphrase.cpp Tue May 25 13:03:44 2010 +0300
@@ -33,7 +33,7 @@
#include <PtiEngine.h>
#include <PtiUserDicEntry.h>
#include <aknnotewrappers.h> //CAknWarningNote
-#include <AknFep.rsg>
+#include <aknfep.rsg>
// User includes
#include "AknFepUiCtrlContainerChinese.h"
--- a/fep/aknfep/src/aknfepuiinputstatestrokephrasebase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstatestrokephrasebase.cpp Tue May 25 13:03:44 2010 +0300
@@ -31,7 +31,7 @@
// System includes
#include <PtiEngine.h>
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiUserDicEntry.h>
#include <aknnotewrappers.h> //CAknWarningNote
--- a/fep/aknfep/src/aknfepuiinputstatezhuyinphrasecreationbase.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstatezhuyinphrasecreationbase.cpp Tue May 25 13:03:44 2010 +0300
@@ -29,7 +29,7 @@
#include <PtiEngine.h> //CPtiEngine
#include <avkon.rsg>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "aknfepuiinputstatezhuyinphrasecreationbase.h"
#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface
--- a/fep/aknfep/src/aknfepuispellinputpane.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuispellinputpane.cpp Tue May 25 13:03:44 2010 +0300
@@ -41,7 +41,7 @@
// CONSTANTS
const TInt KNumberOfControl = 1;
-const TInt KSpellMaxLength = 32;
+const TInt KSpellMaxLength = 63;
const TInt KTouchSpellEditorMaxLine = 1;
// Enumarations
enum TControls
@@ -201,7 +201,15 @@
{
if (iInputWin->IsFocused())
{
- return iInputWin->OfferKeyEventL( aKeyEvent, aType );
+ TKeyResponse response = iInputWin->OfferKeyEventL( aKeyEvent, aType );
+ if ( response == EKeyWasNotConsumed )
+ {
+ if ( aType == EEventKeyDown || aType == EEventKeyUp )
+ {
+ response = EKeyWasConsumed;
+ }
+ }
+ return response;
}
return EKeyWasNotConsumed;
--- a/fep/aknfep/src/aknfepuserdbdlg.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuserdbdlg.cpp Tue May 25 13:03:44 2010 +0300
@@ -46,7 +46,7 @@
#include <f32file.h> //RFs
#include <eikedwin.h> //CEikEdwin
#include <akntitle.h> //CAknTitlePane
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "AknFep.hrh"
#include "aknfepuserdbdlg.h"
#include "dbmanagement.h"
--- a/fep/aknfep/src/aknfepuserdbquerydlg.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/aknfepuserdbquerydlg.cpp Tue May 25 13:03:44 2010 +0300
@@ -21,7 +21,7 @@
#include <aknnotewrappers.h> //CAknWarningNote
#include <eikedwin.h> //CEikEdwin
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "aknfepuserdbquerydlg.h"
#include "dbmanagement.h"
--- a/fep/aknfep/src/dbmanagement.cpp Tue May 11 16:31:42 2010 +0300
+++ b/fep/aknfep/src/dbmanagement.cpp Tue May 25 13:03:44 2010 +0300
@@ -27,7 +27,7 @@
//system include files
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <PtiUserDicEntry.h>
#include <PtiEngine.h>
#include <StringLoader.h>
--- a/inputmethods_plat/aknfep_pen_support_api/inc/aknfeppeninputenums.h Tue May 11 16:31:42 2010 +0300
+++ b/inputmethods_plat/aknfep_pen_support_api/inc/aknfeppeninputenums.h Tue May 25 13:03:44 2010 +0300
@@ -179,6 +179,9 @@
ECmdPeninputSpellLanguageMode,
ECmdPeninputSpellICFDisplayContent,
ECmdPenInputDimEnterKey,
+ ECmdPeninputEnableOwnBitmap,
+ ECmdPeninputDisableLayoutDrawing,
+ ECmdPeninputArabicNumModeChanged,
ECmdPenInputImeCmdBase = 2000
};
--- a/inputmethods_plat/aknfep_settings_api/inc/AknFepInternalCRKeys.h Tue May 11 16:31:42 2010 +0300
+++ b/inputmethods_plat/aknfep_settings_api/inc/AknFepInternalCRKeys.h Tue May 25 13:03:44 2010 +0300
@@ -361,6 +361,13 @@
*
*/
const TUint32 KAknFepKoreanCombineWordFlag = 0x00000024;
+
+/*
+ * This key is used for arabic finger hwr to set or get the default number mode.
+ * in number table.
+ * 0 is for latin number and 1 is for native number.
+ */
+const TUint32 KAknFepDefaultArabicNumberMode = 0x00000025;
#endif
// End of file
--- a/inputmethods_plat/pen_input_server_api/inc/peninputcmd.h Tue May 11 16:31:42 2010 +0300
+++ b/inputmethods_plat/pen_input_server_api/inc/peninputcmd.h Tue May 25 13:03:44 2010 +0300
@@ -103,6 +103,14 @@
ESignalChangeFeedbackType,
ESignalImmeSimulateEvent,
ESignalServerReady = 1450,
+ ESignalUpdateCursor,
+ ESignalPopupArea,
+ ESignalUpdateICFArea,
+ ESignalUpdateChangedArea,
+ ESignalUpdateBubble,
+ ESignalRegisterBkControl,
+ ESignalDisableUpdating,
+ ESignalDrawBackground,
ESignalFepEventBase = 1500, //Event base for Fep. All fep event
//is re-directed to Fep.
ESignalKeyEvent = 1501, //hwr recongition selection event.
@@ -141,6 +149,8 @@
ESignalAcceptTooltip,
ESignalCommitITIInlineText,
EPeninputOpSetDiscreeptPop,
+ ESignalDeleteLastInput,
+ ESignalArabicSCTChar,
ESignalUserEventBase = 2000
};
--- a/inputmethods_plat/ptiengine_key_definations_api/inc/PtiKeyboardDatabase.h Tue May 11 16:31:42 2010 +0300
+++ b/inputmethods_plat/ptiengine_key_definations_api/inc/PtiKeyboardDatabase.h Tue May 25 13:03:44 2010 +0300
@@ -36,7 +36,14 @@
#include "PtiDefs.h"
const TInt KKdbOpaqueDataLen = 8;
-
+
+class TPtiXt9KeyBinding
+ {
+ public:
+ TUint16 iScanCode;
+ TInt iIndex[2];
+ };
+
//
// TPtiLangDatabaseMappingOpaque
//
@@ -85,7 +92,7 @@
* @param aNumEntries Number of binding array entries will be stored here.
* @return Pointer to scan code binding table.
*/
- virtual TUint8* ScanBindingTable(TPtiKeyboardType aKeyboardType,
+ virtual TPtiXt9KeyBinding* ScanBindingTable(TPtiKeyboardType aKeyboardType,
TInt& aNumEntries) const = 0;
/**
--- a/textinput/GSLangPlugin/data/GSLangPluginRsc.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/data/GSLangPluginRsc.rss Tue May 25 13:03:44 2010 +0300
@@ -31,7 +31,7 @@
#include <avkon.rh>
#include <avkon.loc>
#include <uikon.rh>
-#include <GSApp.rsg>
+#include <gsapp.rsg>
#include <gs.loc>
#include <eikon.rh>
--- a/textinput/GSLangPlugin/src/DualLanguageDialog.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/src/DualLanguageDialog.cpp Tue May 25 13:03:44 2010 +0300
@@ -28,7 +28,7 @@
#include <AknFepGlobalEnums.h>
#include "DualLanguageDialog.h"
#include <aknnotewrappers.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include "GSLangModel.h"
#include "DualLanguageData.h"
#include <GSCommon.hrh>
--- a/textinput/GSLangPlugin/src/DualLanguageList.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/src/DualLanguageList.cpp Tue May 25 13:03:44 2010 +0300
@@ -29,7 +29,7 @@
#include "GsLangPlugin.hrh"
#include "DualLanguageList.h"
#include <aknsettingitemlist.h>
-#include <GsLangPluginRsc.rsg>
+#include <gslangpluginrsc.rsg>
#include "DualLanguageDialog.h"
CGSLanguageSettingItem::CGSLanguageSettingItem( TInt aResourceId, TBool aPrimary, CGSDualLanguageData* aData)
--- a/textinput/GSLangPlugin/src/GSLangContainer.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/src/GSLangContainer.cpp Tue May 25 13:03:44 2010 +0300
@@ -23,7 +23,7 @@
#include "GSLangModel.h"
#include <gslistbox.h> // CGSListBoxItemTextArray
#include <gscommon.hrh>
-#include <GSLangPluginRsc.rsg>
+#include <gslangpluginrsc.rsg>
#include <bldvariant.hrh>
--- a/textinput/GSLangPlugin/src/GSLangModel.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/src/GSLangModel.cpp Tue May 25 13:03:44 2010 +0300
@@ -20,7 +20,7 @@
#include "GSLangModel.h"
#include "GSLangContainer.h"
#include "GSLangPlugin.h"
-#include <GSLangPluginRsc.rsg>
+#include <gslangpluginrsc.rsg>
#include <AknFepInternalCRKeys.h>
#include <aknnotedialog.h>
--- a/textinput/GSLangPlugin/src/GSLangPlugin.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/src/GSLangPlugin.cpp Tue May 25 13:03:44 2010 +0300
@@ -21,7 +21,7 @@
#include "GSLangContainer.h"
#include "GSLangModel.h"
#include <gsfwviewuids.h>
-#include <GSLangPluginRsc.rsg>
+#include <gslangpluginrsc.rsg>
#include <gslistbox.h>
#include <gsprivatepluginproviderids.h>
@@ -45,7 +45,7 @@
#include <e32property.h>
#ifdef RD_INTELLIGENT_TEXT_INPUT
#include "PredictiveSettingDialog.h"
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <akntitle.h>
#ifdef FF_DUAL_LANGUAGE_SUPPORT
#include "DualLanguageDialog.h"
--- a/textinput/GSLangPlugin/src/PredictiveSettingDialog.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/src/PredictiveSettingDialog.cpp Tue May 25 13:03:44 2010 +0300
@@ -28,7 +28,7 @@
#include <AknFepGlobalEnums.h>
#include "PredictiveSettingDialog.h"
#include <aknnotewrappers.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <hlplch.h> // HlpLauncher
#include <csxhelp/cp.hlp.hrh>
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
--- a/textinput/GSLangPlugin/src/PredictiveSettingList.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/GSLangPlugin/src/PredictiveSettingList.cpp Tue May 25 13:03:44 2010 +0300
@@ -24,7 +24,7 @@
#include <AvkonInternalCRKeys.h>
#include <e32property.h>
#include <PtiDefs.h>
-#include <AknFep.rsg>
+#include <aknfep.rsg>
#include <AknFepGlobalEnums.h>
#include "PredictiveSettingList.h"
#include "PredictiveSettingData.h"
--- a/textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF Tue May 25 13:03:44 2010 +0300
@@ -323,7 +323,7 @@
?SignalOwner@CFepUiLayout@@QAEXHABVTDesC16@@@Z @ 322 NONAME ; void CFepUiLayout::SignalOwner(int, class TDesC16 const &)
?SizeChanged@CFepUiLayout@@EAEHPBX@Z @ 323 NONAME ; int CFepUiLayout::SizeChanged(void const *)
?UnLockArea@CFepUiLayout@@QAEXABVTRect@@PAVCFepUiBaseCtrl@@@Z @ 324 NONAME ; void CFepUiLayout::UnLockArea(class TRect const &, class CFepUiBaseCtrl *)
- ?UpdateArea@CFepUiBaseCtrl@@QAEXABVTRect@@H@Z @ 325 NONAME ; void CFepUiBaseCtrl::UpdateArea(class TRect const &, int)
+ ?UpdateArea@CFepUiBaseCtrl@@UAEXABVTRect@@H@Z @ 325 NONAME ; void CFepUiBaseCtrl::UpdateArea(class TRect const &, int)
?UpdateArea@CFepUiLayout@@QAEXPBVCFepUiBaseCtrl@@ABVTRect@@HH@Z @ 326 NONAME ; void CFepUiLayout::UpdateArea(class CFepUiBaseCtrl const *, class TRect const &, int)
?UpdateContent@CFepInputContextField@@MAEXABVTCursorSelection@@@Z @ 327 NONAME ; void CFepInputContextField::UpdateContent(class TCursorSelection const &)
?UpdateCursorSelection@CFepLayoutEditAreaBase@@QAEXABVTCursorSelection@@@Z @ 328 NONAME ; void CFepLayoutEditAreaBase::UpdateCursorSelection(class TCursorSelection const &)
@@ -569,7 +569,7 @@
?ClearStroke@CTransparentHwrWnd@@UAEXXZ @ 568 NONAME ; void CTransparentHwrWnd::ClearStroke(void)
?HideKeyCtrl@CVirtualKey@@QAEXH@Z @ 569 NONAME ; void CVirtualKey::HideKeyCtrl(int)
?HideTooltip@CFepLayoutMultiLineIcf@@QAEXXZ @ 570 NONAME ; void CFepLayoutMultiLineIcf::HideTooltip(void)
- ?ShowTooltipL@CFepLayoutMultiLineIcf@@QAEXABVTDesC16@@ABVTRect@@@Z @ 571 NONAME ; void CFepLayoutMultiLineIcf::ShowTooltipL(class TDesC16 const &, class TRect const &)
+ ?ShowTooltipL@CFepLayoutMultiLineIcf@@QAEXABVTDesC16@@ABVTRect@@H@Z @ 571 NONAME ; void CFepLayoutMultiLineIcf::ShowTooltipL(class TDesC16 const &, class TRect const &, int)
?TooltipBubbleCtrl@CFepLayoutMultiLineIcf@@QAEPAVCTooltipBubbleCtrl@@XZ @ 572 NONAME ; class CTooltipBubbleCtrl * CFepLayoutMultiLineIcf::TooltipBubbleCtrl(void)
?RegisterFeedbackArea@CFepUiLayout@@QAEXHABVTRect@@H@Z @ 573 NONAME ; void CFepUiLayout::RegisterFeedbackArea(int, class TRect const &, int)
?ChangeFeedbackType@CFepUiLayout@@QAEXHH@Z @ 574 NONAME ; void CFepUiLayout::ChangeFeedbackType(int, int)
@@ -597,4 +597,14 @@
?CancelExtResponseArea@CFepUiBaseCtrl@@QAEXXZ @ 596 NONAME ; void CFepUiBaseCtrl::CancelExtResponseArea(void)
?EnableExtResponseArea@CFepUiBaseCtrl@@QAEXHABVTRect@@@Z @ 597 NONAME ; void CFepUiBaseCtrl::EnableExtResponseArea(int, class TRect const &)
?BaseConstructL@CButtonBase@@QAEXXZ @ 598 NONAME ; void CButtonBase::BaseConstructL(void)
+ ?SetRect@CBubbleCtrl@@UAEXABVTRect@@@Z @ 599 NONAME ; void CBubbleCtrl::SetRect(class TRect const &)
+ ?HandleResourceChange@CVirtualKeyboard@@MAEXH@Z @ 600 NONAME ; void CVirtualKeyboard::HandleResourceChange(int)
+ ?BitmapDevice@CFepUiBaseCtrl@@IAEPAVCFbsBitmapDevice@@XZ @ 601 NONAME ; class CFbsBitmapDevice * CFepUiBaseCtrl::BitmapDevice(void)
+ ?BitGc@CFepUiBaseCtrl@@IAEPAVCBitmapContext@@XZ @ 602 NONAME ; class CBitmapContext * CFepUiBaseCtrl::BitGc(void)
+ ?MaskBitmapDevice@CFepUiBaseCtrl@@IAEPAVCFbsBitmapDevice@@XZ @ 603 NONAME ; class CFbsBitmapDevice * CFepUiBaseCtrl::MaskBitmapDevice(void)
+ ?NotDrawToLayoutDevice@CFepUiLayout@@QAEHXZ @ 604 NONAME ; int CFepUiLayout::NotDrawToLayoutDevice(void)
+ ?HandleResourceChange@CBubbleCtrl@@MAEXH@Z @ 605 NONAME ; void CBubbleCtrl::HandleResourceChange(int)
+ ?HandleResourceChange@CFepLayoutPopupWnd@@UAEXH@Z @ 606 NONAME ; void CFepLayoutPopupWnd::HandleResourceChange(int)
+ ?DisableLayoutDrawing@CFepUiLayout@@QAEXH@Z @ 607 NONAME ; void CFepUiLayout::DisableLayoutDrawing(int)
+ ?BkMaskBmp@CFepUiBaseCtrl@@IAEPAVCFbsBitmap@@XZ @ 608 NONAME ; class CFbsBitmap * CFepUiBaseCtrl::BkMaskBmp(void)
--- a/textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF Tue May 25 13:03:44 2010 +0300
@@ -702,7 +702,7 @@
_ZTI26CPeninputPenTraceDecorator @ 701 NONAME ; #<TI>#
_ZTV26CPeninputPenTraceDecorator @ 702 NONAME ; #<VT>#
_ZN22CFepLayoutMultiLineIcf17TooltipBubbleCtrlEv @ 703 NONAME
- _ZN22CFepLayoutMultiLineIcf12ShowTooltipLERK7TDesC16RK5TRect @ 704 NONAME
+ _ZN22CFepLayoutMultiLineIcf12ShowTooltipLERK7TDesC16RK5TRecti @ 704 NONAME
_ZN22CFepLayoutMultiLineIcf11HideTooltipEv @ 705 NONAME
_ZTI18CTooltipBubbleCtrl @ 706 NONAME
_ZTV18CTooltipBubbleCtrl @ 707 NONAME
@@ -731,4 +731,14 @@
_ZN14CFepUiBaseCtrl21CancelExtResponseAreaEv @ 730 NONAME
_ZN14CFepUiBaseCtrl21EnableExtResponseAreaEiRK5TRect @ 731 NONAME
_ZN11CButtonBase14BaseConstructLEv @ 732 NONAME
+ _ZN11CBubbleCtrl20HandleResourceChangeEi @ 733 NONAME
+ _ZN11CBubbleCtrl7SetRectERK5TRect @ 734 NONAME
+ _ZN12CFepUiLayout20DisableLayoutDrawingEi @ 735 NONAME
+ _ZN12CFepUiLayout21NotDrawToLayoutDeviceEv @ 736 NONAME
+ _ZN14CFepUiBaseCtrl12BitmapDeviceEv @ 737 NONAME
+ _ZN14CFepUiBaseCtrl16MaskBitmapDeviceEv @ 738 NONAME
+ _ZN14CFepUiBaseCtrl5BitGcEv @ 739 NONAME
+ _ZN14CFepUiBaseCtrl9BkMaskBmpEv @ 740 NONAME
+ _ZN16CVirtualKeyboard20HandleResourceChangeEi @ 741 NONAME
+ _ZN18CFepLayoutPopupWnd20HandleResourceChangeEi @ 742 NONAME
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayout.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayout.h Tue May 25 13:03:44 2010 +0300
@@ -546,6 +546,8 @@
//Advanced Tactile feedback REQ417-47932
IMPORT_C void ChangeFeedbackType(TInt aId, TInt aNewTactileType);
+ IMPORT_C TBool NotDrawToLayoutDevice();
+ IMPORT_C void DisableLayoutDrawing(TBool aFlag);
/**
* Get the layout SkinInstance
*
@@ -627,6 +629,7 @@
* @param aData Editor text and cursor pos information
*/
void SendEditorTextAndCursorPosL(TUint8* aData);
+ void SetSelfBmpDeviceFlag(TBool aFlag);
private:
NONSHARABLE_CLASS( CFepUiLayoutExt) : public CBase
@@ -644,6 +647,8 @@
*/
MTouchFeedback* iTouchFeedbackInstance;
+ TBool iSelfBmpDeviceFlag;
+ TBool iDisableDrawing;
};
private:
@@ -700,6 +705,7 @@
* Reserved item1
*/
TInt iReserved1;
+friend class CFepUiBaseCtrl;
};
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.h Tue May 25 13:03:44 2010 +0300
@@ -43,6 +43,8 @@
//base control type
typedef TInt64 TControlType;
+const TInt KPenInputOwnDeviceChange = -1;
+const TUint KFepCtrlExtId = 0x00000000;
//UI layout leave code
enum TUiLayoutErrorCode
{
@@ -200,6 +202,64 @@
friend class CControlGroup;
friend class CInsertionPoint;
public:
+ NONSHARABLE_CLASS(CFepUiBaseCtrlExtension) : public CBase
+ {
+ public:
+
+ CFepUiBaseCtrlExtension();
+
+ /**
+ * Set Tactile Feedback Type
+ * Advanced Tactile feedback REQ417-47932
+ */
+ void SetTactileFeedbackType(TInt aTactileType);
+
+ /**
+ * Return tactile feedback type
+ *
+ * Advanced Tactile feedback REQ417-47932
+ * @return the tactile feedback type
+ */
+ IMPORT_C TInt TactileFeedbackType();
+public:
+ TBool iExtResponseAreaActive;
+ TRect iExtResponseArea;
+ TBool iExtResponseAreaEnabled;
+ TRect iExtResponseAreaMargin;
+
+ private:
+ /**
+ * Tactile Feedback type
+ */
+ TInt iTactileType;
+
+ public:
+ ~CFepUiBaseCtrlExtension();
+ CFbsBitmap* Bitmap() { return iBitmap;}
+ CFbsBitmap* MaskBitmap() { return iMaskBitmap;}
+ CFbsBitGc* Gc() { return iGc;}
+ CFbsBitmapDevice* BitmapDevice() { return iBitmapDevice;}
+ CFbsBitmapDevice* MaskBitmapDevice() { return iMaskBitmapDevice;}
+
+ void SetBitmap(CFbsBitmap* aBmp) { iBitmap = aBmp;}
+ void SetGc(CFbsBitGc* aGc) { iGc = aGc;}
+ void SetBmpDevice(CFbsBitmapDevice* aDevice) { iBitmapDevice = aDevice;}
+ void SetMaskBmpDevice(CFbsBitmapDevice* aDevice) { iMaskBitmapDevice = aDevice;}
+
+ private:
+ CFbsBitmap* iBitmap; // not own, don't delete
+ CFbsBitmap* iMaskBitmap; // not own, don't delete
+ /**
+ * graphic context
+ * Not own
+ */
+ CFbsBitGc* iGc;
+ CFbsBitmapDevice* iBitmapDevice;
+ CFbsBitmapDevice* iMaskBitmapDevice;
+friend class CFepUiBaseCtrl;
+ };
+
+public:
enum TZOrder
{
EOrderBackground = 1500, //order for background control
@@ -765,7 +825,7 @@
* @param aRect the rect to be flushed in screen
* @param aUpdateFlag ETrue if full update.
*/
- IMPORT_C void UpdateArea(const TRect& aRect,TBool aUpdateFlag= EFalse);
+ IMPORT_C virtual void UpdateArea(const TRect& aRect,TBool aUpdateFlag= EFalse);
/**
* Update layout area immediately
@@ -986,28 +1046,28 @@
* @since S60 V4.0
* @return The graphic context
*/
- inline CBitmapContext* BitGc();
+ IMPORT_C CBitmapContext* BitGc();
/**
* get Bitmap device for sprite or window
* @since S60 V4.0
* @return The bitmap device
*/
- inline CFbsBitmapDevice* BitmapDevice();
+ IMPORT_C CFbsBitmapDevice* BitmapDevice();
/**
* get Mask bitmap device for sprite or window
* @since S60 V4.0
* @return The mask bitmap device
*/
- inline CFbsBitmapDevice* MaskBitmapDevice();
+ IMPORT_C CFbsBitmapDevice* MaskBitmapDevice();
/**
* get control background mask bmp
* @since S60 V4.0
* @return The background mask bitmap
*/
- inline CFbsBitmap* BkMaskBmp();
+ IMPORT_C CFbsBitmap* BkMaskBmp();
/**
* get control background bmp
@@ -1172,6 +1232,9 @@
virtual IMPORT_C void GraphicDeviceSizeChanged();
inline void SetHidenFlag(TBool aFlag);
+ void CreateOwnDeviceL(CFbsBitmap* aBmp, CFbsBitmap* aMaskBmp = 0);
+
+ void ResizeDeviceL();
private:
/**
* Draw shadow bitmap
@@ -1369,39 +1432,8 @@
TInt iOrdinalPos;
-private:
- NONSHARABLE_CLASS(CFepUiBaseCtrlExtension) : public CBase
- {
- public:
-
- CFepUiBaseCtrlExtension();
-
- /**
- * Set Tactile Feedback Type
- * Advanced Tactile feedback REQ417-47932
- */
- void SetTactileFeedbackType(TInt aTactileType);
-
- /**
- * Return tactile feedback type
- *
- * Advanced Tactile feedback REQ417-47932
- * @return the tactile feedback type
- */
- IMPORT_C TInt TactileFeedbackType();
- public:
- TBool iExtResponseAreaActive;
- TRect iExtResponseArea;
- TBool iExtResponseAreaEnabled;
- TRect iExtResponseAreaMargin;
-
- private:
- /**
- * Tactile Feedback type
- */
- TInt iTactileType;
- };
-private:
+ //class CFepUiBaseCtrlExtension;
+
/**
* Reservered
*/
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.inl Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.inl Tue May 25 13:03:44 2010 +0300
@@ -215,35 +215,7 @@
{
return iRootCtrl;
}
-
-// ---------------------------------------------------------------------------
-// get graphics context for sprite or window
-// ---------------------------------------------------------------------------
-//
-inline CBitmapContext* CFepUiBaseCtrl::BitGc()
- {
- return iLayoutOwner->BitmapContext();
- }
-
-// ---------------------------------------------------------------------------
-// get Bitmap device for sprite or window
-// ---------------------------------------------------------------------------
-//
-inline CFbsBitmapDevice* CFepUiBaseCtrl::BitmapDevice()
- {
- return iLayoutOwner->BitmapDevice();
- }
-
-// ---------------------------------------------------------------------------
-// get Mask bitmap device for sprite or window
-// ---------------------------------------------------------------------------
-//
-inline CFbsBitmapDevice* CFepUiBaseCtrl::MaskBitmapDevice()
- {
- return iLayoutOwner->MaskBmpDevice();
- }
-
// ---------------------------------------------------------------------------
// get control pointer down status
// ---------------------------------------------------------------------------
@@ -263,14 +235,6 @@
if(!aFlag)
iPointerLeft = EFalse;
}
-// ---------------------------------------------------------------------------
-// get control background maks bmp
-// ---------------------------------------------------------------------------
-//
-inline CFbsBitmap* CFepUiBaseCtrl::BkMaskBmp()
- {
- return iBkMaskBmp;
- }
// ---------------------------------------------------------------------------
// get control background bmp
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbubblectrl.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbubblectrl.h Tue May 25 13:03:44 2010 +0300
@@ -93,6 +93,9 @@
void UnFreeze( TBool aUpdate = ETrue );
inline void SetTextColorIndex( TInt aTxtClrIndex );
inline TInt TextColorIndex() const;
+
+ inline void SetLangCode( TInt aLangCode );
+
protected:
IMPORT_C CBubbleCtrl(const TRect& aRect,
CFepUiLayout* aUiLayout,
@@ -101,6 +104,9 @@
IMPORT_C void ConstructL(TInt aBmpId, TInt aMaskId);
private:
+ TRect GetRect();
+
+private:
CFbsBitmap* iForgroundBmp;
CFbsBitmap* iForgroundBmpMask;
@@ -127,8 +133,32 @@
TInt iTextColorIndex;
TSize iIconOffset;
TSize iIconSize;
+
+public:
+ IMPORT_C virtual void SetRect(const TRect& aRect);
+ void SetBmpDevice(CFbsBitGc* aGc,CFbsBitmapDevice* aDevice);
+ void CreateBmpDevL();
+ inline void SetOffset(TPoint& aPt);
+protected:
+ IMPORT_C void HandleResourceChange(TInt aType);
+private:
+
+
+private:
+ CFbsBitmap* iBitmap;
+ CFbsBitmap* iMaskBitmap;
+
+ TPoint iOffset;
+ TInt iReserved1;
+
+ TInt iLangCode;
};
-
+
+inline void CBubbleCtrl::SetOffset(TPoint& aPt)
+ {
+ iOffset = aPt;
+ }
+
inline void CBubbleCtrl::SetTextColorIndex( TInt aTxtClrIndex )
{
iTextColorIndex = aTxtClrIndex;
@@ -150,6 +180,11 @@
aText.Copy( *iText );
}
+inline void CBubbleCtrl::SetLangCode( TInt aLangCode )
+ {
+ iLangCode = aLangCode;
+ }
+
class CTooltipBubbleCtrl: public CBubbleCtrl
{
public:
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutctrlgroup.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutctrlgroup.h Tue May 25 13:03:44 2010 +0300
@@ -361,6 +361,10 @@
void AdjustBkCtrlPos();
+ inline TBool NeedRedrawBg() const;
+ inline void SetNeedRedrawBg(TBool aNeedRedrawBg);
+
+
protected:
/**
* Symbian second phrase constructor
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutctrlgroup.inl Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutctrlgroup.inl Tue May 25 13:03:44 2010 +0300
@@ -29,4 +29,15 @@
{
return iPopCtrlList;
}
+
+inline TBool CControlGroup::NeedRedrawBg() const
+ {
+ return iNeedRedrawBg;
+ }
+
+inline void CControlGroup::SetNeedRedrawBg(TBool aNeedRedrawBg)
+ {
+ iNeedRedrawBg = aNeedRedrawBg;
+ }
+
//end of file
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutcursor.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutcursor.h Tue May 25 13:03:44 2010 +0300
@@ -237,6 +237,9 @@
void UpdateCursorArea(const TRect& aRect, TBool aFlag);
TInt OrderPosL();
+ void DrawCursor(CFbsBitGc* aGc,CFbsBitmapDevice* aDevice);
+ void CreateCursorBmpL();
+ void ResizeCursorBmp();
private: // Data
/**
@@ -285,7 +288,7 @@
* graphic context
* Not own
*/
- CBitmapContext* iGc;
+ CFbsBitGc* iGc;
/**
* The timer to restore the cursor while pen is dragging.
@@ -294,6 +297,7 @@
//flag tells whether the cursor is temprary disabled
TBool iCursorTempDisabled;
+ CFbsBitmap* iBitmap;
friend class CFepUiLayoutRootCtrl;
};
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutmultilineicf.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutmultilineicf.h Tue May 25 13:03:44 2010 +0300
@@ -209,7 +209,8 @@
* @return None
*/
IMPORT_C void ShowTooltipL( const TDesC& aText,
- const TRect& aRect );
+ const TRect& aRect,
+ TInt aLangCode = ELangTest );
/**
@@ -397,7 +398,7 @@
IMPORT_C void SetInfoBubbleCtrlSize(const TSize& aSize);
// For addition of ITI features on FSQ
- void ShowTooltipL( const TDesC& aText, const TRect& aRect );
+ void ShowTooltipL( const TDesC& aText, const TRect& aRect, TInt aLangCode = ELangTest );
void HideTooltip();
/**
* Returen the auto-completion state
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutpopupwnd.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutpopupwnd.h Tue May 25 13:03:44 2010 +0300
@@ -19,6 +19,7 @@
#define C_CFEPLAYOUTPOPUPWND_H
#include <peninputlayoutctrlgroup.h>
+#include <gdi.h>
/**
* CButtonBase
*
@@ -29,6 +30,34 @@
*/
class CFepLayoutPopupWnd : public CControlGroup
{
+private:
+ class CPopupWndExt : public CBase
+ {
+ public:
+ CFbsBitmap* BackupBitmap(){ return iBitmap;}
+ CFbsBitGc* BackupGc() { return iGc;}
+ CFbsBitmapDevice* BackupDevice() { return iBitmapDevice;}
+ void SetRect(const TRect& aRect);
+ TRect Rect() { return iRect;}
+
+ static CPopupWndExt* NewL();
+ void ContructBkDeviceL(const TSize& aSize,const TDisplayMode& aMode);
+
+ ~CPopupWndExt()
+ {
+ delete iBitmapDevice;
+ delete iGc;
+ delete iBitmap;
+ }
+ private:
+ void ResizeBackupDeviceL(const TSize& s);
+ private:
+ CFbsBitmap* iBitmap;
+ CFbsBitGc* iGc;
+ CFbsBitmapDevice* iBitmapDevice;
+ TRect iRect;
+
+ };
public:
enum TDisplayPosition
{
@@ -96,6 +125,7 @@
IMPORT_C virtual void OnDeActivate();
IMPORT_C void ReDrawRect(const TRect& aRect);
+ IMPORT_C void HandleResourceChange(TInt aType);
protected:
/**
@@ -130,6 +160,8 @@
* @since S60 V4.0
*/
IMPORT_C virtual void OnDisplay();
+ void DisableDrawingInGroup();
+ void EnableDrawingInGroup();
private:
/*
* Flag tells whether the pop up window is shown
@@ -164,7 +196,7 @@
/**
* Reserved item2
*/
- TInt iReserved2;
+ CPopupWndExt* iExt;
};
#endif //C_CFEPLAYOUTPOPUPWND_H
\ No newline at end of file
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h Tue May 25 13:03:44 2010 +0300
@@ -174,7 +174,7 @@
*
* @since S60 V5.0
*/
- void DrawKeyText();
+ void DrawKeyText(CFbsBitGc* aGc);
/**
* Redraw and update the key
@@ -197,6 +197,10 @@
const CFbsBitmap* aBmp,CFbsBitmap* aMask,
TBool aInvertFlag = EFalse);
+ void DrawBmp(CFbsBitGc* aGc, const TRect& aDestRect,const TRect& aSourceRect,
+ const CFbsBitmap* aBmp,CFbsBitmap* aMask,
+ TBool aInvertFlag = EFalse);
+
/**
* Get the control event for given internal event type
*
@@ -231,7 +235,13 @@
TVirtualKeyDrawInfo iVirtualKeyDrawInfo;
-friend class CVirtualKeyboard;
+protected:
+ void UpdateChangedArea(TBool aFlag);
+private:
+ CFbsBitGc* GetGc();
+ TRect GetRect();
+
+ friend class CVirtualKeyboard;
};
inline CVirtualKeyboard* CVirtualKeyCtrl::Keyboard()
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h Tue May 25 13:03:44 2010 +0300
@@ -136,6 +136,42 @@
};
};
+class CFepUiKeyboardExt : public CBase
+ {
+public:
+ ~CFepUiKeyboardExt()
+ {
+ delete iBitmap;
+ delete iHighlightDev;
+ delete iHighlightGc;
+
+ delete iHighlightKeyBmp;
+ delete iNormalKeyBmp;
+ delete iDimmedKeyBmp;
+ delete iNormalKeyDev;
+ delete iHighlightKeyDev;
+ delete iDimmedKeyDev;
+ delete iKeyGc;
+ }
+private:
+ void CreateBmpDevL(const TDisplayMode &aMode);
+private:
+ CFbsBitmap* iBitmap;
+ CFbsBitmapDevice* iHighlightDev;
+ CFbsBitGc* iHighlightGc;
+
+ CFbsBitmap* iHighlightKeyBmp;
+ CFbsBitmap* iNormalKeyBmp;
+ CFbsBitmap* iDimmedKeyBmp;
+
+ CFbsBitmapDevice* iNormalKeyDev;
+ CFbsBitmapDevice* iHighlightKeyDev;
+ CFbsBitmapDevice* iDimmedKeyDev;
+ CFbsBitGc* iKeyGc;
+
+friend class CVirtualKeyboard;
+ };
+
//class CVirtualKeyboard
/**
* CVirtualKeyboard
@@ -814,12 +850,7 @@
* Item text display color.
*/
TRgb iFontColor;
-
- /**
- * Reserve item
- */
- TInt iReserver1;
-
+
TAknsItemID iKeyNormalSkinId;
TAknsItemID iKeyHighlightSkinId;
TAknsItemID iKeyDimSkinId;
@@ -866,13 +897,45 @@
* The shift icon showing on the key
*/
CPenInputColorIcon* iShiftIcon;
-
+
/**
* The star icon showing on the key
*/
CPenInputColorIcon* iStarIcon;
+
+ MPeninputVkbPreviewBubbleRenderer* iPreviewBubbleRenderer;
+
+ /**
+ * Reserve item
+ */
+ CFepUiKeyboardExt* iExt;
+
+
+protected:
+ //void HandleResourceChange(TInt aType);
+ virtual IMPORT_C void HandleResourceChange(TInt aType);
+private:
+ void CreateBmpDevL();
+ CFbsBitmap* Bitmap() { return iExt->iBitmap;}
+ CFbsBitmapDevice* HighlightDev() { return iExt->iHighlightDev;}
+ CFbsBitGc* HighlightGc() { return iExt->iHighlightGc;}
+ CFbsBitmap* NormalKeyBmp() { return iExt->iNormalKeyBmp;}
+ CFbsBitmap* HighightKeyBmp() { return iExt->iHighlightKeyBmp;}
+ CFbsBitmap* DimmedKeyBmp() { return iExt->iDimmedKeyBmp;}
- MPeninputVkbPreviewBubbleRenderer* iPreviewBubbleRenderer;
+ CFbsBitmapDevice* HighlightKeyDev() { return iExt->iHighlightKeyDev;}
+ CFbsBitmapDevice* NormalKeyDev() { return iExt->iNormalKeyDev;}
+ CFbsBitmapDevice* DimmedKeyDev() { return iExt->iDimmedKeyDev;}
+ CFbsBitGc* KeyGc() { return iExt->iKeyGc;}
+
+
+ CFbsBitmap* PrepareMaskBmpL(CFbsBitGc* aGc, const TDisplayMode& aMode, const TRect& aRect);
+ CFbsBitmap* PrepareKeyBmpL(CFbsBitGc* aGc, const TDisplayMode& aMode, const TRect& aRect,
+ const TRect& aInnerRect,const TAknsItemID& aFrameID, const TAknsItemID& aCenterID, const TRect& aKeyRect);
+
+ TBool PrepareKeyBmp(CFbsBitmap* aBmp,CFbsBitmapDevice* aDev,const TRect& aRect,
+ const TRect& aInnerRect,const TAknsItemID& aFrameID, const TAknsItemID& aCenterID,const TRect& aKeyRect);
+
friend class CVirtualKeyCtrl;
friend class CVirtualRawKeyCtrl;
//friend class CVirtualKey;
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.inl Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.inl Tue May 25 13:03:44 2010 +0300
@@ -180,7 +180,7 @@
inline void CVirtualKeyboard::SetDrawOpaqueBackground(TBool aNeedDraw)
{
- iNeedDrawBackground = aNeedDraw;
+ SetNeedRedrawBg(aNeedDraw);
}
inline CPenInputColorIcon* CVirtualKeyboard::ShiftIcon()
--- a/textinput/peninputarc/inc/pensrvcliinc/peninputclientimpl.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/pensrvcliinc/peninputclientimpl.h Tue May 25 13:03:44 2010 +0300
@@ -32,29 +32,6 @@
class MPenUiActivationHandler;
class CPenUiBackgroundWnd;
-NONSHARABLE_CLASS(CPeninputServerWaiter) : public CBase
- {
- public:
- static CPeninputServerWaiter* NewL();
- void Start();
- void Stop(TInt aFlag);
- TBool IsStarted()
- {
- return iWaitScheduler->IsStarted();
- }
- TInt Error()
- {
- return iError;
- }
- ~CPeninputServerWaiter();
- protected:
- private:
- //CPeninputServerWaiter();
- void ConstructL();
- TInt iError;
- CActiveSchedulerWait* iWaitScheduler;
- };
-
NONSHARABLE_CLASS(TUiNotificationHandler)
{
public:
@@ -426,7 +403,7 @@
void UpdateAppInfo(const TDesC& aInfo, TPeninputAppInfo aType);
void HandleServerExit();
- void OnServerReady(TBool aFlag = ETrue);
+ //void OnServerReady(TBool aFlag = ETrue);
TBool IsForegroundSession();
//void SetForegroundFlag(TBool aFlag);
void FinalClose();
@@ -540,9 +517,6 @@
TBool iLaunchServer;
- //CActiveSchedulerWait* iWaitScheduler;
- CPeninputServerWaiter * iWaitScheduler;
-
TInt iCurPenUiType;
CPenUiBackgroundWnd* iBackgroundCtrl;
--- a/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Tue May 25 13:03:44 2010 +0300
@@ -18,8 +18,48 @@
#define __PEN_UI_WINDOW_CONTROL__
#include <coecntrl.h>
+#include <AknIconUtils.h>
+#include <AknsUtils.h>
+#include <AknsDrawUtils.h>
+
+#ifndef FIX_FOR_NGA
+#define FIX_FOR_NGA
+#endif
+
class RAknUiServer;
class CPenUiWndCtrl;
+class CPenUiHwnWnd;
+
+struct TCommonBgCtrlSubItem
+ {
+ TRect iRect;
+ TAknsItemID iFrameID;
+ TAknsItemID iCenterID;
+ TBool iIsShow;
+ };
+class CPenUiWndCtrl;
+
+class CCursorWindow : public CCoeControl
+ {
+public: // Functions from base classes.
+
+ CCursorWindow(CPenUiWndCtrl* aParent);
+ //void ConstructL(CCoeControl* aParent);
+ /**
+ * From CCoeControl
+ * Function where control's drawing is done.
+ *
+ * @param aRect Control's area.
+ */
+ void Draw( const TRect &aRect ) const;
+
+ void SetCursorVisible(TBool aFlag);
+
+private:
+ TBool iCursorVisible;
+ CPenUiWndCtrl* iParent;
+ };
+
class CPenUiPopWnd : public CCoeControl
{
public: // Constructors and destructor
@@ -153,6 +193,14 @@
void DimPenUiForMenu();
TInt GetWndPriority();
void SetResourceChange(TBool aResourceChange);
+ void UpdateCursor(TBool aOnFlag,const CFbsBitmap* aCursorBmp,const TRect& aPos);
+ void SetPopupArea(const TRect& aRect, TBool aFlag);
+ void UpdateICFArea(const CFbsBitmap* aBmp,const TPoint& aPos);
+ void UpdateChangedArea(const CFbsBitmap* aBmp,const TRect& aRect,TBool aFlag);
+ void UpdateBubble(const CFbsBitmap* aBmp,const CFbsBitmap* aMaskBmp,const TRect& aPos,TBool aFlag);
+ void Clean();
+
+ void HandleNGASpecificSignal(TInt aEventType, const TDesC& aEventData);
public: // Functions from base classes.
/**
@@ -168,7 +216,11 @@
* Auto refresh timer callback, refresh pen ui. (for NGA)
*/
void RefreshUI();
-
+
+protected:
+ CCoeControl* ComponentControl(TInt) const;
+ TInt CountComponentControls() const;
+
private:
/**
@@ -213,6 +265,11 @@
*/
void StopRefreshTimer();
+ void DrawBkground(CWindowGc& aGc,const TRect& aRect) const;
+ void DrawFrame( CWindowGc& aGc,const TRect& aRect,TAknsItemID aFrameID,TAknsItemID aCenterID ) const;
+
+ void DrawCursor(CWindowGc& aGc) const;
+ void DrawBubbleAsBackground(CFbsBitGc* aGc, CFbsBitmap* aBmp, const TRect& aRect);
private: // Data
RWindowGroup& iWndGroup;
@@ -238,13 +295,46 @@
//TBool iUiLayoutChange;
TBool iInGlobalEditorState;
TRect iLayoutClipRect;
+
+ CFbsBitmap * iCursorBmp;
+ CFbsBitmap* iICFBmp;
+ CFbsBitmap* iChangedBmp;
+ RPointerArray<CFbsBitmap> iBubblesArea;
+ RPointerArray<CFbsBitmap> iBubblesMaskArea;
+ RArray<TRect> iBubblesPos;
+
+ TPoint iCursorPos;
+ TPoint iIcfPos;
+ TPoint iChangedPos;
+ TRect iIcfRect;
+ TRect iCursorRect;
+ CIdle *iIdle;
+ TRect iRedrawRect;
+ TInt iTouchCount;
+
+ TBool iCursorVisible;
+
+ RRegion iPopRegion;
+
+ TBool iBackground;
+ TAknsItemID iFrameID;
+ TAknsItemID iCenterID;
/**
* Auto refresh timer
* own
*/
CPeriodic* iAutoRefreshTimer;
+
+ /**
+ * The sub items of the background
+ */
+ RArray<TCommonBgCtrlSubItem> *iSubItems; //not own
+ TBool iNotUpdating;
+ CCursorWindow* iCursorWnd;
+
+friend class CCursorWindow;
};
class CInternalBkCtrl : public CCoeControl
{
--- a/textinput/peninputarc/src/peninputanim/peninputanim.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputanim/peninputanim.cpp Tue May 25 13:03:44 2010 +0300
@@ -44,7 +44,7 @@
//CONSTANT
const TInt KMsgSlot1 = 1; //msg slot 2 in IPC
const TInt KMsgSlot2 = 2; //msg slot 2 in IPC
-const TInt KFlushTimerPeriod = 1000; //1/1000 second
+const TInt KFlushTimerPeriod = 1000 * 10; //1/100 second
const TInt KResponseQueueWaitTime = 100000; //1/10 second
// ======== GLOBAL FUNCTIONS ========
--- a/textinput/peninputarc/src/peninputclient/penclientimpl.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputclient/penclientimpl.cpp Tue May 25 13:03:44 2010 +0300
@@ -77,40 +77,6 @@
}
-
-CPeninputServerWaiter* CPeninputServerWaiter::NewL()
- {
- CPeninputServerWaiter* self = new(ELeave)CPeninputServerWaiter;
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-void CPeninputServerWaiter::ConstructL()
- {
- iWaitScheduler = new(ELeave) CActiveSchedulerWait;
- }
-
-CPeninputServerWaiter::~CPeninputServerWaiter()
- {
- delete iWaitScheduler;
- }
-
-void CPeninputServerWaiter::Start()
- {
- iWaitScheduler->Start();
- }
-
-void CPeninputServerWaiter::Stop(TInt aFlag)
- {
- //if(aFlag)
- iError = aFlag ? KErrNone : aFlag;
-
- iWaitScheduler->AsyncStop();
- }
-
-
-
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
@@ -152,7 +118,6 @@
iServerExit = EFalse;
iLaunchServer = EFalse;
iCurPenUiType = -1;
- iWaitScheduler = NULL;
iAppPrefferedUiMode = EPluginInputModeNone;
iAutoOpenFlag = ETrue;
iBackgroundCtrl = 0;
@@ -1010,15 +975,15 @@
iSingletonServer->SendReceive(EPeninputRequestAddUiObserver,arg);
}
- */
+ */
+/*
void RPeninputServerImpl::OnServerReady( TBool aFlag)
- {
+ {
//iLaunchServer = EFalse;
- iWaitScheduler->Stop(aFlag);//AsyncStop();
//if(iPenUiNotificationHandler)
// DoAddPenUiActivationHandler();
- }
+ }*/
// ---------------------------------------------------------------------------
// RPeninputServerImpl::AddPenUiActivationHandler
// Add an UI activate/deactivation handler
@@ -1097,8 +1062,6 @@
{
delete iBackgroundCtrl;
- delete iWaitScheduler;
- iWaitScheduler = 0;
iPenUiNotificationHandler.Close();
delete iObserver;
iObserver = NULL;
@@ -1299,7 +1262,7 @@
{
exitReason = srvThread.ExitReason();
srvThread.Close();
- iPeninputServer->OnServerReady(-1000);
+ //iPeninputServer->OnServerReady(-1000);
}
if(err != KErrNone || exitReason != 0) //server has exited
{
@@ -1312,7 +1275,7 @@
if(iStatus.Int() == ESignalServerReady) //server has started
{
- iPeninputServer->OnServerReady();
+ //iPeninputServer->OnServerReady();
return;
}
//if there is also iUiActivationHandler, handle it first
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbasecontrol.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbasecontrol.cpp Tue May 25 13:03:44 2010 +0300
@@ -322,7 +322,7 @@
//
EXPORT_C void CFepUiBaseCtrl::DrawMaskBackground(TBool aBmpStretchFlag)
{
- DrawBackgroundToDevice(iRect,MaskBitmapDevice(), iBkMaskBmp, iMaskBkCol,
+ DrawBackgroundToDevice(iRect,MaskBitmapDevice(), BkMaskBmp(), iMaskBkCol,
iBorderColor,aBmpStretchFlag);
}
@@ -335,7 +335,7 @@
EXPORT_C void CFepUiBaseCtrl::DrawOpaqueMaskBackground(TBool aBmpStretchFlag)
{
const TRgb KOpaqueMask = TRgb(KOpaqueColor);
- DrawBackgroundToDevice(iRect,MaskBitmapDevice(), iBkMaskBmp, KOpaqueMask,
+ DrawBackgroundToDevice(iRect,MaskBitmapDevice(), BkMaskBmp(), KOpaqueMask,
KOpaqueMask,aBmpStretchFlag);
}
@@ -348,7 +348,7 @@
EXPORT_C void CFepUiBaseCtrl::DrawOpaqueMaskBackground(const TRect aRect, TBool aBmpStretchFlag)
{
const TRgb KOpaqueMask = TRgb(KOpaqueColor);
- DrawBackgroundToDevice(aRect, MaskBitmapDevice(), iBkMaskBmp,
+ DrawBackgroundToDevice(aRect, MaskBitmapDevice(), BkMaskBmp(),
KOpaqueMask, KOpaqueMask, aBmpStretchFlag);
}
@@ -362,7 +362,7 @@
TBool aBmpStretchFlag)
{
const TRgb KOpaqueMask = TRgb(KTransparentColor);
- DrawBackgroundToDevice(aRect, MaskBitmapDevice(), iBkMaskBmp, KTransparentColor,
+ DrawBackgroundToDevice(aRect, MaskBitmapDevice(), BkMaskBmp(), KTransparentColor,
KTransparentColor, aBmpStretchFlag);
}
@@ -698,7 +698,8 @@
}
TBool CFepUiBaseCtrl::IsOnTopOf(CFepUiBaseCtrl* aCtrl)
- {
+ {
+ __ASSERT_DEBUG(aCtrl,EUiNullParam);
return OrderPos() < aCtrl->OrderPos();
}
@@ -1257,7 +1258,9 @@
EXPORT_C TBool CFepUiBaseCtrl::AbleToDraw()
{
- return UiLayout()->LayoutReady() && Ready() && !WholeHiden() && Rect().Size() != TSize(0,0);
+ return UiLayout()->LayoutReady() && Ready()
+ && (!UiLayout()->iExtension->iDisableDrawing)
+ && !WholeHiden() && Rect().Size() != TSize(0,0);
}
// ---------------------------------------------------------------------------
@@ -1265,8 +1268,12 @@
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CFepUiBaseCtrl::Extension_(TUint aExtensionId, TAny *&a0, TAny *a1)
- {
- //not implemented, use CBase's
+ {
+ if( KFepCtrlExtId == aExtensionId)
+ {
+ a0 = iExtension;
+ return KErrNone;
+ }
return CBase::Extension_(aExtensionId, a0, a1);
}
@@ -1348,7 +1355,11 @@
EXPORT_C void CFepUiBaseCtrl::SetParent(CFepUiBaseCtrl* aParent)
{
- //parent control must be type of control group.
+ //parent control must be type of control group.
+ if(aParent)
+ {
+ __ASSERT_DEBUG(aParent->IsKindOfControl(ECtrlControlGroup),EUiLayoutBadParentType);
+ }
iParentCtrl = aParent;
}
@@ -1365,6 +1376,100 @@
return order;
}
+void CFepUiBaseCtrl::CreateOwnDeviceL(CFbsBitmap* aBmp, CFbsBitmap* aMaskBmp)
+ {
+ if(iExtension->iBitmap)
+ return;
+ User::LeaveIfError( aBmp->Create( Rect().Size(), iLayoutOwner->BitmapDevice()->DisplayMode() ) );
+
+ iExtension->iBitmap = aBmp;
+ CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(aBmp);
+
+ iExtension->SetBmpDevice(dev);
+
+ CFbsBitGc* gc = CFbsBitGc::NewL();
+ gc->Reset();
+ iExtension->SetGc(gc);
+
+ if(iExtension->iMaskBitmap || !aMaskBmp)
+ return;
+
+ User::LeaveIfError( aMaskBmp->Create( Rect().Size(), iLayoutOwner->MaskBmpDevice()->DisplayMode() ) );
+
+ iExtension->iMaskBitmap = aMaskBmp;
+ dev = CFbsBitmapDevice::NewL(aMaskBmp);
+
+ iExtension->SetMaskBmpDevice(dev);
+
+ }
+
+void CFepUiBaseCtrl::ResizeDeviceL()
+ {
+ if(iExtension->BitmapDevice())
+ iExtension->BitmapDevice()->Resize( Rect().Size());
+ //gc must be adjusted
+ if(iExtension->Gc())
+ {
+ iExtension->Gc()->Activate(iExtension->BitmapDevice());
+ iExtension->Gc()->Resized();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// get graphics context for sprite or window
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CBitmapContext* CFepUiBaseCtrl::BitGc()
+ {
+
+
+ if(iUiLayout->NotDrawToLayoutDevice() && iExtension->Gc())
+ return iExtension->Gc();
+ else
+ return iLayoutOwner->BitmapContext();
+ }
+
+// ---------------------------------------------------------------------------
+// get Bitmap device for sprite or window
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFbsBitmapDevice* CFepUiBaseCtrl::BitmapDevice()
+ {
+
+
+ if(iUiLayout->NotDrawToLayoutDevice() && iExtension->BitmapDevice())
+ return iExtension->BitmapDevice();
+ else
+ return iLayoutOwner->BitmapDevice();
+ }
+
+// ---------------------------------------------------------------------------
+// get Mask bitmap device for sprite or window
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFbsBitmapDevice* CFepUiBaseCtrl::MaskBitmapDevice()
+ {
+
+ if(iUiLayout->NotDrawToLayoutDevice() && iExtension->MaskBitmapDevice())
+ return iExtension->MaskBitmapDevice();
+ else
+
+ return iLayoutOwner->MaskBmpDevice();
+ }
+
+// ---------------------------------------------------------------------------
+// get control background maks bmp
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFbsBitmap* CFepUiBaseCtrl::BkMaskBmp()
+ {
+ if(iUiLayout->NotDrawToLayoutDevice() && iExtension->MaskBitmap())
+ return iExtension->MaskBitmap();
+ else
+ return iBkMaskBmp;
+ }
+
+
// ---------------------------------------------------------------------------
// CFepUiBaseCtrl::EnableExtResponseArea
// Enable/disable extra response area support
@@ -1452,6 +1557,14 @@
iExtResponseAreaMargin.SetRect( TPoint(0,0), TSize(0,0) );
}
+CFepUiBaseCtrl::CFepUiBaseCtrlExtension::~CFepUiBaseCtrlExtension()
+ {
+ //delete iBitmap;
+ delete iGc;
+ delete iBitmapDevice;
+ delete iMaskBitmapDevice;
+ }
+
void CFepUiBaseCtrl::CFepUiBaseCtrlExtension::SetTactileFeedbackType(TInt aTactileType)
{
#ifdef RD_TACTILE_FEEDBACK
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp Tue May 25 13:03:44 2010 +0300
@@ -20,10 +20,13 @@
#include <AknsUtils.h>
#include <AknUtils.h>
#include <AknsDrawUtils.h>
+#include <AknBidiTextUtils.h>
#include "peninputlayoutbubblectrl.h"
#include "peninputlayout.h"
#include <peninputpluginutils.h>
+#include <imageconversion.h>
+#include "peninputcmd.h"
const TInt KShrinkSize = 10;
const TInt KDefaultTextColorIndex = EAknsCIQsnTextColorsCG60;
@@ -75,7 +78,9 @@
{
delete iForgroundBmpMask;
iForgroundBmpMask = NULL;
- }
+ }
+ delete iBitmap;
+ delete iMaskBitmap;
}
EXPORT_C void CBubbleCtrl::SetBitmapParam(CFbsBitmap* aBmpId,
@@ -105,7 +110,21 @@
if(iFreeze)
{
iShowing = ETrue;
- SetHidenFlag(EFalse);
+ SetHidenFlag(EFalse);
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ struct SData
+ {
+ TRect rr;
+ TBool flag;
+ } data;
+ data.rr = aRect;
+ data.flag = ETrue;
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalPopupArea,ptr);
+ }
return;
}
if(!iShowing || aRect != Rect() || iNeedRedraw)
@@ -117,12 +136,107 @@
BringToTop();
//redraw the control under bubble control
if(aRect != rect)
- RootControl()->ReDrawRect(rect);
+ {
+ // signal the server to remove the pop area added before since the rect
+ // has been changed
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ struct SData
+ {
+ TRect rr;
+ TBool flag;
+ } data;
+
+ data.rr = rect;
+ data.flag = EFalse;
+ TPtrC ptr;
+
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+ UiLayout()->SignalOwner(ESignalPopupArea,ptr);
+ }
+ else
+ {
+ //redraw the control under bubble control
+ RootControl()->ReDrawRect(rect);
+ }
+ }
+
+ // signal server to add the pop area
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ struct SData
+ {
+ TRect rr;
+ TBool flag;
+ } data;
+
+ data.rr = aRect;
+ data.flag = ETrue;
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalPopupArea,ptr);
+ }
+
+ // signal server to copy the background as background bitmap for its own bitmap
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ //copy backgroud to bitmap. DrawFrame seems to have transparent effect,
+ //so we need copy the background first.
+ if(!iBitmap)
+ {
+ TRAP_IGNORE(CreateBmpDevL());
+ }
+
+ CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
+ gc->Activate( BitmapDevice() );
+ CFbsBitGc* layoutGc = static_cast<CFbsBitGc*>(
+ UiLayout()->LayoutOwner()->BitmapContext());
+ gc->BitBlt(TPoint(0,0),*layoutGc,Rect());
+
+ //ensure other pop up draws correctly on the background
+ struct SData
+ {
+ CFbsBitGc* gc;
+ CFbsBitmap* bmp;
+ TRect rect;
+ } data;
+
+ data.gc = gc;
+ data.bmp = iBitmap;
+ data.rect = Rect();
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalDrawBackground,ptr);
+ }
Draw();
- rect.BoundingRect(aRect);
- UpdateAreaImmed(rect,ETrue);
+ // notify sever to draw the bubble bitmap on the screen
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ struct SData
+ {
+ TBool flag;
+ TRect pos;
+ CFbsBitmap* bmp;
+ CFbsBitmap* mask;
+ } data;
+
+ data.flag = ETrue;
+ data.pos = Rect();
+ data.bmp = iBitmap;
+ data.mask = iMaskBitmap;
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+ UiLayout()->SignalOwner(ESignalUpdateBubble,ptr);
+ }
+ else
+ {
+ rect.BoundingRect(aRect);
+ UpdateAreaImmed(rect,ETrue);
+ }
iNeedRedraw = EFalse;
}
@@ -154,8 +268,23 @@
EXPORT_C void CBubbleCtrl::Close()
{
TRect rect = Rect();
-
- iShowing = EFalse;
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ SetHidenFlag(ETrue);
+ struct SData
+ {
+ TRect rr;
+ TBool flag;
+ } data;
+ data.rr = rect;
+ data.flag = EFalse;
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalPopupArea,ptr);
+ }
+
+ iShowing = EFalse;
if( iFreeze )
{
@@ -170,12 +299,34 @@
}
else
{
- Clear();
- SetHidenFlag(ETrue);
- BringToBack();
-
- RootControl()->ReDrawRect(rect);
- UpdateAreaImmed(rect);
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ struct SData
+ {
+ TBool flag;
+ TRect pos;
+ CFbsBitmap* bmp;
+ } data;
+
+ data.flag = EFalse;
+ data.pos = Rect();
+ data.bmp = iBitmap;
+
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+ UiLayout()->SignalOwner(ESignalUpdateBubble,ptr);
+
+ }
+ else
+ {
+
+ Clear();
+ SetHidenFlag(ETrue);
+ BringToBack();
+
+ RootControl()->ReDrawRect(rect);
+ UpdateAreaImmed(rect);
+ }
}
}
@@ -204,13 +355,17 @@
{
return;
}
-
+ if(UiLayout()->NotDrawToLayoutDevice() && !iBitmap)
+ {
+ TRAP_IGNORE(CreateBmpDevL());
+ }
+
CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
//mask bitmaps
DrawOpaqueMaskBackground();
- TRect rect = Rect();
+ TRect rect = GetRect();
TRect innerRect = rect;
if ( ( iLeftDiff == 0 ) && ( iTopDiff == 0 )
@@ -298,14 +453,35 @@
{
gc->SetBrushStyle( CGraphicsContext::ENullBrush );
TAknLayoutText textLayout;
- textLayout.LayoutText(Rect(), iTextFormat);
+ textLayout.LayoutText(GetRect(), iTextFormat);
TRgb color( KRgbBlack ); // sane default for nonskinned case
if ( AknsUtils::AvkonSkinEnabled() )
{
AknsUtils::GetCachedColor( UiLayout()->SkinInstance(),
color, KAknsIIDQsnTextColors, iTextColorIndex );
}
- textLayout.DrawText(*gc, *iText, ETrue, color);
+ if ( iLangCode == ELangArabic ||
+ iLangCode == ELangHebrew ||
+ iLangCode == ELangFarsi ||
+ iLangCode == ELangUrdu )
+ {
+ const CFont* font = textLayout.Font();
+ HBufC* visualBuf = HBufC::New( iText->Length() + KAknBidiExtraSpacePerLine );
+ *visualBuf = *iText;
+ TPtr buf = visualBuf->Des();
+
+ AknBidiTextUtils::ConvertToVisualAndClip(*iText, buf, *font,
+ textLayout.TextRect().Size().iWidth,
+ textLayout.TextRect().Size().iWidth,
+ AknBidiTextUtils::ERightToLeft );
+ textLayout.DrawText(*gc, buf, EFalse, color);
+ delete visualBuf;
+ visualBuf = NULL;
+ }
+ else
+ {
+ textLayout.DrawText(*gc, *iText, EFalse, color);
+ }
}
}
@@ -363,6 +539,55 @@
iInvalidRect = TRect();
}
+TRect CBubbleCtrl::GetRect()
+ {
+ TRect r(Rect());
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ r.Move(-Rect().iTl.iX, -Rect().iTl.iY);
+ }
+ return r;
+ }
+
+
+void CBubbleCtrl::SetBmpDevice(CFbsBitGc* aGc,CFbsBitmapDevice* aDevice)
+ {
+ TAny* extension;
+
+ if(KErrNone == Extension_(KFepCtrlExtId,extension,0))
+ {
+ static_cast<CFepUiBaseCtrl::CFepUiBaseCtrlExtension*>(extension)->SetGc(aGc);
+ static_cast<CFepUiBaseCtrl::CFepUiBaseCtrlExtension*>(extension)->SetBmpDevice(aDevice);
+ }
+ }
+void CBubbleCtrl::CreateBmpDevL()
+ {
+ iBitmap = new ( ELeave ) CFbsBitmap;
+ //iMaskBitmap = new ( ELeave ) CFbsBitmap;
+ CreateOwnDeviceL(iBitmap,0);
+ }
+
+EXPORT_C void CBubbleCtrl::HandleResourceChange(TInt aType)
+ {
+ if(aType == KPenInputOwnDeviceChange)
+ {
+ if(UiLayout()->NotDrawToLayoutDevice() && !iBitmap)
+ {
+ TRAP_IGNORE(CreateBmpDevL());
+ }
+ }
+ else
+ CFepUiBaseCtrl::HandleResourceChange(aType);
+ }
+
+EXPORT_C void CBubbleCtrl::SetRect(const TRect& aRect)
+ {
+ if(aRect == Rect())
+ return;
+ CFepUiBaseCtrl::SetRect(aRect);
+ ResizeDeviceL();
+ }
+
// ---------------------------------------------------------------------------
// CTooltipBubbleCtrl::NewL
// factory function
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbutton.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbutton.cpp Tue May 25 13:03:44 2010 +0300
@@ -358,6 +358,8 @@
//
EXPORT_C void CButtonBase::SetDimmed(TBool aDimFlag)
{
+ if(iDimmed == aDimFlag)
+ return;
//Remove its active flag if dim an active button.
if(aDimFlag && IsActive())
SetActive(EFalse);
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcursor.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcursor.cpp Tue May 25 13:03:44 2010 +0300
@@ -21,6 +21,8 @@
#include "peninputlayouteditareabase.h"
#include "peninputlayouttimer.h"
#include "peninputlayoutrootctrl.h"
+#include "peninputcmd.h"
+#include "peninputlayout.h"
const TInt KDefaultCursorHeight = 10;
// ============================ MEMBER FUNCTIONS =============================
@@ -54,6 +56,7 @@
CFepUiBaseCtrl::BaseConstructL();
iCursorBlinkingTimer = CPeriodic::NewL(CActive::EPriorityStandard);
iRestoreCursorTimer = CLayoutTimer::NewL(this,CLayoutTimer::EOthers);
+ CreateCursorBmpL();
}
// ---------------------------------------------------------------------------
@@ -84,6 +87,9 @@
}
delete iRestoreCursorTimer;
+ delete iBitmap;
+ delete iBitmapDevice;
+ delete iGc;
}
@@ -215,10 +221,35 @@
if(aReset)
iIsVisible = EFalse;
Draw();
- UpdateArea(iCursorRect,EFalse);
+ //UpdateArea(iCursorRect,EFalse);
+ UpdateCursorArea(iCursorRect,EFalse);
}
+void CFepUiCursor::DrawCursor(CFbsBitGc* aGc,CFbsBitmapDevice* aDevice)
+ {
+ aGc->Activate(aDevice);
+
+ // draw cursor by inverting colors in the selected text rectancle
+ //aGc->SetClippingRegion(ValidClipRegion());
+
+ aGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
+ aGc->SetBrushColor(KRgbBlack);
+ //aGc->SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN);
+ aGc->Clear();
+ aGc->SetPenColor(KRgbBlack);
+ aGc->SetPenStyle(CGraphicsContext::ESolidPen);
+ aGc->SetPenSize( TSize(1,1));
+ // When the blink timer out and cursor is visible, do nothing
+ // else draw the cursor and set the visible flag
+ //aGc->DrawRect(iCursorRect);
+ //iIsVisible = !iIsVisible;
+
+ // restore normal draw mode
+ aGc->SetDrawMode(CGraphicsContext::EDrawModePEN);
+ aGc->SetBrushStyle(CGraphicsContext::ENullBrush);
+ }
+
// ---------------------------------------------------------------------------
// CFepUiCursor::Draw
// Draws insertion point's Rect and starts blinking timer
@@ -231,7 +262,25 @@
{
return;
}
-
+
+//#ifdef FIX_FOR_NGA
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ if(iIsOn)
+ {
+ iIsVisible = !iIsVisible;
+ }
+ else
+ {
+ if(iIsVisible) //only do when already shown
+ {
+ iIsVisible = EFalse;
+ }
+ }
+
+ return;
+ }
+//#endif
/*if (aReset)
{
iIsVisible = EFalse;
@@ -244,7 +293,14 @@
{
// draw cursor by inverting colors in the selected text rectancle
gc->SetClippingRegion(ValidClipRegion());
-
+
+ const TRegion& tr = ValidClipRegion();
+ const TRect* rl = tr.RectangleList();
+ TRect rr;
+ for(TInt id = 0; id < tr.Count(); ++id)
+ {
+ rr = rl[id];
+ }
gc->SetBrushStyle(CGraphicsContext::ESolidBrush);
gc->SetBrushColor(KRgbBlack);
gc->SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN);
@@ -324,10 +380,12 @@
//
void CFepUiCursor::InvalidateInsertionPoint()
{
- //if(iEditor)
+ //if(AbleToDraw())
{
Draw();
- UpdateArea(iCursorRect,EFalse);
+ //UpdateArea(iCursorRect,EFalse);
+
+ UpdateCursorArea(iCursorRect,EFalse);
}
}
@@ -435,6 +493,28 @@
void CFepUiCursor::UpdateCursorArea(const TRect& aRect, TBool aFlag)
{
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ //CopyToBmp();
+ //signal special update
+
+ struct SData
+ {
+ TBool onOff;
+ CFbsBitmap* bmp;
+ TRect rect;
+ } data;
+ data.onOff = iIsVisible;
+ data.bmp = iBitmap;
+ data.rect = iCursorRect;
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalUpdateCursor,ptr);
+
+ return;
+ }
+
CFepUiBaseCtrl* parent = iEditor->ParentCtrl();
if(parent)
@@ -447,4 +527,30 @@
else
UpdateArea(aRect,aFlag);
}
+
+void CFepUiCursor::CreateCursorBmpL()
+ {
+ iBitmap = new ( ELeave ) CFbsBitmap;
+
+ TRect rect = TRect(TPoint(0,0) , TSize(KCursorWidth,iHeight));
+
+ User::LeaveIfError( iBitmap->Create( rect.Size(), BitmapDevice()->DisplayMode() ) );
+
+ iBitmapDevice = CFbsBitmapDevice::NewL(iBitmap);
+ iGc = CFbsBitGc::NewL();
+ iGc->Reset();
+ DrawCursor(iGc,iBitmapDevice);
+ }
+
+void CFepUiCursor::ResizeCursorBmp()
+ {
+ TRect rect = TRect(TPoint(0,0) , TSize(KCursorWidth,iHeight));
+ iBitmap->Resize(rect.Size());
+
+ iBitmapDevice->Resize( rect.Size());
+ //gc must be adjusted
+ iGc->Activate(iBitmapDevice);
+ iGc->Resized();
+ DrawCursor(iGc,iBitmapDevice);
+ }
// End of File
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicf.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicf.cpp Tue May 25 13:03:44 2010 +0300
@@ -448,13 +448,14 @@
// ---------------------------------------------------------------------------
//
EXPORT_C void CFepLayoutMultiLineIcf::ShowTooltipL( const TDesC& aText,
- const TRect& aRect )
+ const TRect& aRect,
+ TInt aLangCode )
{
if ( !iTooltip || !iIcfEditor )
{
return;
}
- iIcfEditor->ShowTooltipL( aText, aRect );
+ iIcfEditor->ShowTooltipL( aText, aRect, aLangCode );
}
// ---------------------------------------------------------------------------
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Tue May 25 13:03:44 2010 +0300
@@ -345,7 +345,6 @@
void CFepLayoutMultiLineIcfEditor::RecalculatePosByNewPromptTextL(const TDesC& aNewPromptText)
{
- // recalculate cursor pos
AdjustSelectionL(TCursorSelection(iTextView->Selection().iCursorPos + aNewPromptText.Length() - iPromptTextLen,
iTextView->Selection().iAnchorPos + aNewPromptText.Length() - iPromptTextLen));
@@ -357,7 +356,6 @@
iPreAutoEndPos += (aNewPromptText.Length() - iPromptTextLen);
iPreTextSelStartPos += (aNewPromptText.Length() - iPromptTextLen);
iPreTextSelEndPos += (aNewPromptText.Length() - iPromptTextLen);
-
}
const HBufC* CFepLayoutMultiLineIcfEditor::PromptText()
@@ -367,7 +365,6 @@
void CFepLayoutMultiLineIcfEditor::SetPromptTextL(const TDesC& aPromptText, TBool aCleanContent)
{
-
if ( aCleanContent )
{
//clean all the content (include prompt text) on the ICF
@@ -379,15 +376,24 @@
iNoMatchState = EFalse;
}
else
- {
- /*if ( ( ( !iInitPromptText && aPromptText.Length() == 0 ) )||
+ {
+ if ( ( ( !iInitPromptText && aPromptText.Length() == 0 ) )||
( iInitPromptText && *iInitPromptText == aPromptText &&
iPromptText && TextWidth(*iPromptText) <= iViewRect.Width()) )
{
//prompt text has not been change then need not to be reset
//but iLineSeparator may be changed, need reset prompt text
- return;
- }*/
+ TBool newLineSeparator = iLineSeparator;
+ if ( !iLineSeparator )
+ {
+ newLineSeparator = ( TBidiText::TextDirectionality( aPromptText )
+ == TBidiText:: ERightToLeft );
+ }
+ if ( newLineSeparator == iLineSeparator )
+ {
+ return;
+ }
+ }
//prompt text need to be reset and not clean the content
iRichText->DeleteL( 0, iPromptTextLen );
iTextView->HandleInsertDeleteL(TCursorSelection(0, 0), iPromptTextLen );
@@ -549,6 +555,7 @@
iRichText->DeleteL(iPromptTextLen, delLen );
iTextView->HandleInsertDeleteL(TCursorSelection(iPromptTextLen, iPromptTextLen),
delLen);
+ iTextView->SetSelectionL(TCursorSelection(iPromptTextLen, iPromptTextLen));
}
ptr.Copy(icfdata.iText);
}
@@ -1635,7 +1642,8 @@
}
void CFepLayoutMultiLineIcfEditor::ShowTooltipL( const TDesC& aText,
- const TRect& aRect )
+ const TRect& aRect,
+ TInt aLangCode )
{
if ( !iTooltip )
{
@@ -1643,6 +1651,7 @@
}
iTooltip->SetTextL( aText );
+ iTooltip->SetLangCode( aLangCode );
TPoint tl( 0, 0 ), br( 0, 0 );
InlineTextPos( tl, br );
@@ -1685,6 +1694,12 @@
tooltipRect.iTl.iX += moveX;
}
}
+
+ if (( iTooltip->Rect().iTl != tooltipRect.iTl ) && ( iTooltip->Rect().iBr != tooltipRect.iBr ))
+ {
+ iTooltip->Close();
+ }
+
iTooltip->Popup( tooltipRect );
}
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutpopupwnd.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutpopupwnd.cpp Tue May 25 13:03:44 2010 +0300
@@ -48,6 +48,7 @@
{
//do nothing
}
+ delete iExt;
}
// ---------------------------------------------------------------------------
@@ -58,6 +59,14 @@
EXPORT_C void CFepLayoutPopupWnd::ConstructL()
{
BaseConstructL();
+ iExt = CPopupWndExt::NewL();
+ //check whether we need create backup bmp. Some pop up window is created after UI layout is created
+ //If a pop up window is created during layout constructing, it will create the backup bitmap in Handleresourcechange
+ if (UiLayout()->NotDrawToLayoutDevice())
+ {
+ iExt->ContructBkDeviceL(Rect().Size(),
+ UiLayout()->LayoutOwner()->BitmapDevice()->DisplayMode());
+ }
}
EXPORT_C void CFepLayoutPopupWnd::ReDrawRect(const TRect& /*aRect*/)
@@ -258,6 +267,9 @@
RootControl()->SetActiveCtrl(this);
ReportEvent(EEventCapturePointer);
+ //When preparing the pop up window, it causes redraw the underlying control sometimes.
+ DisableDrawingInGroup();//disable any drawing during preparation to avoid it dirty the background
+
//let pop up window do preparation
OnDisplay();
@@ -359,7 +371,9 @@
//RootControl()->Clear();
DrawTransparentMaskBackground( TRect( TPoint(), rtFinal.Size() ) );
RootControl()->Move(iLayoutMoveOff);
- RootControl()->Draw();
+ EnableDrawingInGroup();
+ RootControl()->Draw();
+ DisableDrawingInGroup();
//UpdateArea( TRect( TPoint(), rtFinal.Size()), ETrue);
}
else
@@ -377,8 +391,30 @@
//iRect = rtPopup;
Move( rtPopup.iTl - Rect().iTl);
+ //copy and save the bitmap
+ if (UiLayout()->NotDrawToLayoutDevice())
+ {
+ iExt->SetRect(Rect());
+
+ CFbsBitGc* gc = iExt->BackupGc();
+ gc->Activate( iExt->BackupDevice() );
+ CFbsBitGc* layoutGc = static_cast<CFbsBitGc*>(
+ UiLayout()->LayoutOwner()->BitmapContext());
+ gc->BitBlt(TPoint(0,0),*layoutGc,Rect());
+
+ Hide(EFalse);
+ }
+
+ EnableDrawingInGroup();
+
UiLayout()->LockArea(iRect,this);
- Hide(EFalse);
+
+ SetReady(ETrue);//enalbe it as in Close, the flag is reset.
+ if (UiLayout()->NotDrawToLayoutDevice())
+ Draw();//force draw
+ else
+ Hide(EFalse);
+ UpdateArea(iRect, EFalse);
iIsShowing = ETrue;
AfterDisplayed();
@@ -434,7 +470,26 @@
iIsShowing = EFalse;
if(iWndControl)
iWndControl->MakeVisible(EFalse);
- Hide(ETrue);
+ SetReady(EFalse);//disable redraw
+ TRect popRect = iRect;
+ UiLayout()->UnLockArea(iRect, this);
+
+ //restore the background bitmap
+ TBool bRedraw = ETrue;
+ if (UiLayout()->NotDrawToLayoutDevice())
+ {
+ CFbsBitGc* layoutGc = static_cast<CFbsBitGc*>(
+ UiLayout()->LayoutOwner()->BitmapContext());
+
+ iExt->BackupGc();
+ layoutGc->Activate( UiLayout()->LayoutOwner()->BitmapDevice());
+ TRect r;
+ r.SetSize(iExt->Rect().Size());
+ layoutGc->BitBlt(iExt->Rect().iTl,iExt->BackupBitmap(),r);
+ bRedraw = EFalse;
+ }
+
+ Hide(ETrue);
UiLayout()->UnLockArea(iRect,this);
iRect.Move(-iRect.iTl);
MLayoutOwner* layoutOwner = UiLayout()->LayoutOwner();
@@ -448,12 +503,15 @@
RootControl()->GraphicDeviceSizeChanged();
}
- RootControl()->Draw();
+ if (bRedraw)
+ {
+ RootControl()->Draw();
+ }
iIsShowing = EFalse;
- TRect rect( TPoint(0,0),iPrevLayoutRect.Size() );
- UpdateArea( rect, EFalse );
+ //TRect rect(TPoint(0, 0), iPrevLayoutRect.Size());
+ UpdateArea(popRect, EFalse);
}
// ---------------------------------------------------------------------------
@@ -496,3 +554,87 @@
{
//do nothing
}
+EXPORT_C void CFepLayoutPopupWnd::HandleResourceChange(TInt aType)
+ {
+ if (aType == KPenInputOwnDeviceChange)
+ {
+ if (UiLayout()->NotDrawToLayoutDevice())
+ {
+ TRAP_IGNORE(iExt->ContructBkDeviceL(Rect().Size(),
+ UiLayout()->LayoutOwner()->BitmapDevice()->DisplayMode()));
+ }
+ }
+ else
+ CControlGroup::HandleResourceChange(aType);
+ }
+void CFepLayoutPopupWnd::DisableDrawingInGroup()
+ {
+
+ UiLayout()->DisableLayoutDrawing(ETrue);
+ SetReady(EFalse);
+ for(TInt i = 0; i < NumOfControls(); ++i)
+ {
+ //There is potential defect that if the child control is a group control, its children not set.
+ //This can be solved by locking the area so no one can update until we unlock it in Enalbegroup
+ ControlList()[i]->SetReady(EFalse);
+ }
+ }
+void CFepLayoutPopupWnd::EnableDrawingInGroup()
+ {
+ SetReady(ETrue);
+ for(TInt i = 0; i < NumOfControls(); ++i)
+ {
+ //There is potential defect that if the child control is a group control, its children not set.
+ //This can be solved by locking the area so no one can update until we unlock it in Enalbegroup
+ ControlList()[i]->SetReady(ETrue);
+ }
+ UiLayout()->DisableLayoutDrawing(EFalse);
+ }
+
+
+
+CFepLayoutPopupWnd::CPopupWndExt* CFepLayoutPopupWnd::CPopupWndExt::NewL()
+ {
+ CPopupWndExt* self = new (ELeave)CPopupWndExt();
+ return self;
+ }
+
+void CFepLayoutPopupWnd::CPopupWndExt::ContructBkDeviceL(const TSize& aSize,const TDisplayMode& aMode)
+ {
+ TBool bNewBmp = EFalse;
+ if(!iBitmap || iBitmap->DisplayMode() != aMode)
+ {
+ delete iBitmap;
+ iBitmap = 0;
+ iBitmap = new (ELeave) CFbsBitmap;
+ User::LeaveIfError( iBitmap->Create( aSize,aMode));
+ delete iBitmapDevice;
+ iBitmapDevice = 0;
+ iBitmapDevice = CFbsBitmapDevice::NewL(iBitmap);
+ bNewBmp = ETrue;
+ }
+ if(!iGc)
+ iGc = CFbsBitGc::NewL();
+
+ if(!bNewBmp && aSize != iBitmap->SizeInPixels())
+ {
+ ResizeBackupDeviceL(aSize);
+ }
+ }
+void CFepLayoutPopupWnd::CPopupWndExt::ResizeBackupDeviceL(const TSize& aSize)
+ {
+
+ iBitmap->Resize(aSize);
+ iBitmapDevice->Resize( aSize);
+ iGc->Activate(iBitmapDevice);
+ iGc->Resized();
+ }
+void CFepLayoutPopupWnd::CPopupWndExt::SetRect(const TRect& aRect)
+ {
+ iRect = aRect;
+ if(iBitmap && iBitmap->SizeInPixels() != aRect.Size())
+ {
+ ResizeBackupDeviceL(aRect.Size());
+ }
+ }
+// End of File
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutrootctrl.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutrootctrl.cpp Tue May 25 13:03:44 2010 +0300
@@ -815,7 +815,8 @@
if(!AbleToDraw())
return;
-
+
+ Clear();
CControlGroup::Draw();
if(!iShadowRect.IsEmpty())
@@ -1004,7 +1005,9 @@
{
if(aCtrl->OrderPos() <= iPopCtrlList[i]->OrderPos())
{
+ CFepUiBaseCtrl* temp = iPopCtrlList[i - 1];
iPopCtrlList[i - 1] = iPopCtrlList[i];
+ iPopCtrlList[i] = temp;
}
else
{
@@ -1142,7 +1145,10 @@
{
if(aCtrl->OrderPos() >= iPopCtrlList[i]->OrderPos())
{
- iPopCtrlList[i+1] = iPopCtrlList[i];
+ CFepUiBaseCtrl* temp = iPopCtrlList[i + 1];
+ iPopCtrlList[i + 1] = iPopCtrlList[i];
+ iPopCtrlList[i] = temp;
+
}
else
{
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp Tue May 25 13:03:44 2010 +0300
@@ -95,7 +95,6 @@
iKeyNormalSkinId(KAknsIIDNone),
iKeyHighlightSkinId(KAknsIIDNone),
iKeyDimSkinId(KAknsIIDNone),
- iNeedDrawBackground(ETrue),
iIrregularKey(aIrregular),
iBubbleCtrl(NULL),
iBubbleVerticalMargin(0),
@@ -113,6 +112,7 @@
//
EXPORT_C CVirtualKeyboard::~CVirtualKeyboard()
{
+ delete iExt;
if ( iBubbleCtrl )
delete iBubbleCtrl;
if ( iPreviewBubbleRenderer )
@@ -189,7 +189,8 @@
if (iIrregularKey)
{
ConstructIrregularBmps();
- }
+ }
+ iExt = new(ELeave) CFepUiKeyboardExt;
}
// ---------------------------------------------------------------------------
@@ -387,7 +388,12 @@
return;
const TRect& keyboardRect = Rect();
- if (iNeedDrawBackground)
+ if(UiLayout()->NotDrawToLayoutDevice() && !Bitmap())
+ {
+ TRAP_IGNORE(CreateBmpDevL());
+ }
+
+ if ( NeedRedrawBg())
{
CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
@@ -527,6 +533,10 @@
if(!flag)
{
TRAP_IGNORE(iBubbleCtrl = CBubbleCtrl::NewL(TRect(0,0,0,0),UiLayout(),-0xFFFF));
+ if(iBubbleCtrl && UiLayout()->NotDrawToLayoutDevice())
+ {
+ iBubbleCtrl->CreateBmpDevL();
+ }
iBubbleSize = TSize(KDefaultBubbleSize,KDefaultBubbleSize);
}
}
@@ -1441,4 +1451,154 @@
iKeyCtrl->Hide( aHide );
}
}
+
+void CFepUiKeyboardExt::CreateBmpDevL(const TDisplayMode &aMode )
+ {
+ if(iBitmap && iHighlightDev && iHighlightGc && iHighlightKeyBmp && iHighlightKeyDev &&
+ iNormalKeyBmp && iNormalKeyDev && iDimmedKeyBmp && iDimmedKeyDev && iKeyGc)
+ return;
+
+ delete iBitmap;
+ delete iHighlightDev;
+ delete iHighlightGc;
+ delete iHighlightKeyBmp;
+ delete iHighlightKeyDev;
+ delete iNormalKeyBmp;
+ delete iNormalKeyDev;
+ delete iDimmedKeyBmp;
+ delete iDimmedKeyDev;
+ delete iKeyGc;
+
+ iBitmap = 0;
+ iHighlightDev = 0 ;
+ iHighlightGc = 0 ;
+ iHighlightKeyBmp = 0 ;
+ iHighlightKeyDev = 0 ;
+ iNormalKeyBmp = 0 ;
+ iNormalKeyDev = 0 ;
+ iDimmedKeyBmp = 0 ;
+ iDimmedKeyDev = 0;
+ iKeyGc = 0;
+
+ iBitmap = new ( ELeave ) CFbsBitmap;
+ User::LeaveIfError( iBitmap->Create( TSize(1,1), aMode) );
+
+ iHighlightDev = CFbsBitmapDevice::NewL(iBitmap);
+
+ iHighlightGc = CFbsBitGc::NewL();
+ iHighlightGc->Reset();
+
+
+ iHighlightKeyBmp = new ( ELeave ) CFbsBitmap;
+ User::LeaveIfError( iHighlightKeyBmp->Create( TSize(1,1), aMode) );
+ iHighlightKeyDev = CFbsBitmapDevice::NewL(iHighlightKeyBmp);
+
+ iNormalKeyBmp = new ( ELeave ) CFbsBitmap;
+ User::LeaveIfError( iNormalKeyBmp->Create( TSize(1,1), aMode) );
+ iNormalKeyDev = CFbsBitmapDevice::NewL(iNormalKeyBmp);
+
+ iDimmedKeyBmp = new ( ELeave ) CFbsBitmap;
+ User::LeaveIfError( iDimmedKeyBmp->Create( TSize(1,1), aMode) );
+ iDimmedKeyDev = CFbsBitmapDevice::NewL(iDimmedKeyBmp);
+
+ iKeyGc = CFbsBitGc::NewL();
+ iKeyGc->Reset();
+ }
+
+void CVirtualKeyboard::CreateBmpDevL()
+ {
+ iExt->CreateBmpDevL(UiLayout()->LayoutOwner()->BitmapDevice()->DisplayMode());
+ }
+
+EXPORT_C void CVirtualKeyboard::HandleResourceChange(TInt aType)
+ {
+ if(aType == KPenInputOwnDeviceChange)
+ {
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ TRAP_IGNORE(CreateBmpDevL());
+ }
+ }
+ else
+ CControlGroup::HandleResourceChange(aType);
+ }
+
+CFbsBitmap* CVirtualKeyboard::PrepareMaskBmpL(CFbsBitGc* aGc, const TDisplayMode& aMode, const TRect& aRect)
+ {
+ CFbsBitmap* mask = new(ELeave) CFbsBitmap();
+ CleanupStack::PushL(mask);
+ User::LeaveIfError( mask->Create( aRect.Size(), aMode) );
+ CFbsBitmapDevice* maskDev = CFbsBitmapDevice::NewL(mask);
+ const TRgb KOpaqueMask = TRgb(KOpaqueColor);
+ DrawBackgroundToDevice(aRect,maskDev,NULL,KOpaqueMask,KOpaqueMask,EFalse);
+ delete maskDev;
+ CleanupStack::Pop(mask);
+ return mask;
+ }
+CFbsBitmap* CVirtualKeyboard::PrepareKeyBmpL(CFbsBitGc* aGc, const TDisplayMode& aMode, const TRect& aRect,
+ const TRect& aInnerRect,const TAknsItemID& aFrameID, const TAknsItemID& aCenterID, const TRect& aKeyRect)
+ {
+ CFbsBitmap* key = new(ELeave) CFbsBitmap();
+ CleanupStack::PushL(key);
+ User::LeaveIfError( key->Create( aRect.Size(), aMode) );
+
+ CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(key);
+ CleanupStack::PushL(dev);
+
+ CFbsBitGc* keyGc = CFbsBitGc::NewL();
+ keyGc->Reset();
+ CleanupStack::PushL(keyGc);
+
+ keyGc->Activate(dev);
+
+ CFbsBitGc* layoutGc = static_cast<CFbsBitGc*>(
+ UiLayout()->LayoutOwner()->BitmapContext());
+ layoutGc->Activate(UiLayout()->LayoutOwner()->BitmapDevice());
+
+ keyGc->BitBlt(TPoint(0,0),*layoutGc,aKeyRect);
+
+ AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(),
+ *keyGc,
+ aRect,
+ aInnerRect,
+ aFrameID,
+ aCenterID);
+
+ layoutGc->Activate(UiLayout()->LayoutOwner()->BitmapDevice());
+
+ CleanupStack::PopAndDestroy(2);
+ CleanupStack::Pop(key);
+
+ return key;
+ }
+
+TBool CVirtualKeyboard::PrepareKeyBmp(CFbsBitmap* aBmp,CFbsBitmapDevice* aDev,const TRect& aRect,
+ const TRect& aInnerRect,const TAknsItemID& aFrameID, const TAknsItemID& aCenterID, const TRect& aKeyRect)
+ {
+
+ aBmp->Resize(aRect.Size());
+ aDev->Resize(aRect.Size());
+ iExt->iKeyGc->Activate(aDev);
+ iExt->iKeyGc->Resized();
+
+ TRect r = aRect;
+ r.Move(-r.iTl.iX, -r.iTl.iY);
+
+ CFbsBitmap* keyBmp = NULL;
+ TRect inner = aInnerRect;
+ TPoint off = aInnerRect.iTl - aRect.iTl;
+ inner.Move(-inner.iTl.iX + off.iX, -inner.iTl.iY + off.iY);
+ TRAP_IGNORE(keyBmp = PrepareKeyBmpL(iExt->iKeyGc,
+ UiLayout()->LayoutOwner()->BitmapDevice()->DisplayMode(),
+ r,inner,aFrameID,aCenterID,aKeyRect));
+ if(!keyBmp)
+ {
+ return EFalse;
+ }
+
+ iExt->iKeyGc->BitBlt(TPoint(0,0), keyBmp,r);
+
+ delete keyBmp;
+ return ETrue;
+ }
//end of implementation of Class CVirtualKey
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp Tue May 25 13:03:44 2010 +0300
@@ -28,6 +28,7 @@
#include "peninputlayoutvkb.h"
#include "peninputlayout.h"
#include "peninputpluginutils.h"
+#include "peninputcmd.h"
_LIT( KKeyShiftCharacter, "\x2191");
_LIT( KKeyStarCharacter, "\x002a");
@@ -117,7 +118,7 @@
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
-void CVirtualKeyCtrl::DrawKeyText()
+void CVirtualKeyCtrl::DrawKeyText(CFbsBitGc* aGc)
{
TBool textlineset = EFalse;
@@ -131,7 +132,7 @@
if (iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)) != KNullDesC)
{
TAknLayoutText textLayout;
- textLayout.LayoutText(Rect(),
+ textLayout.LayoutText(GetRect(),
iKeyboard->TextLineLayout(TVirtualKeyTextPos(i)));
TRgb color( KRgbBlack ); // sane default for nonskinned case
if ( AknsUtils::AvkonSkinEnabled() )
@@ -146,22 +147,22 @@
if( iKeyboard->ShiftIcon() &&
iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)) == KKeyShiftCharacter )
{
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
+ //CFbsBitGc* gc = GetGc();//static_cast<CFbsBitGc*>(BitGc());
AknPenInputDrawUtils::DrawColorIcon( iKeyboard->ShiftIcon(),
- *gc,
+ *aGc,
textLayout.TextRect() );
}
else if(iKeyboard->StarIcon() &&
iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)) == KKeyStarCharacter )
{
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
+ //CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
AknPenInputDrawUtils::DrawColorIcon( iKeyboard->StarIcon(),
- *gc,
+ *aGc,
textLayout.TextRect() );
}
else
{
- textLayout.DrawText(*BitGc(), iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)),
+ textLayout.DrawText(*aGc, iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)),
EFalse, color);
}
}
@@ -171,9 +172,9 @@
if (!textlineset)
{
TAknLayoutText textLayout;
- textLayout.LayoutText(Rect(), iKeyboard->iVKBTextLineLayout);
+ textLayout.LayoutText(GetRect(), iKeyboard->iVKBTextLineLayout);
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
+ //CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
//charRect.Move(keyboardRect.iTl);
//if(iKeyInfo->Dimmed())
@@ -201,11 +202,11 @@
}
if( iKeyInfo->DisplayUnicode() && iKeyInfo->DisplayUnicode()->Length() != 0)
{
- textLayout.DrawText(*BitGc(), *iKeyInfo->DisplayUnicode(), EFalse, color);
+ textLayout.DrawText(*aGc, *iKeyInfo->DisplayUnicode(), EFalse, color);
}
else
{
- textLayout.DrawText(*BitGc(), iKeyInfo->KeyUnicodes(), EFalse, color);
+ textLayout.DrawText(*aGc, iKeyInfo->KeyUnicodes(), EFalse, color);
}
//if(iKeyInfo->Dimmed())
@@ -299,7 +300,7 @@
gc->SetPenColor(KRgbBlack);
gc->SetBrushStyle( CGraphicsContext::ENullBrush );
//Draw text again.
- DrawKeyText();
+ DrawKeyText(gc);
}
// ---------------------------------------------------------------------------
@@ -313,15 +314,28 @@
TBool aInvertFlag)
{
CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
+ DrawBmp(gc,aDestRect,aSourceRect,aBmp,aMask,aInvertFlag);
+ }
+
+// ---------------------------------------------------------------------------
+// CVirtualKeyCtrl::DrawBmp
+// Draw bitmap
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CVirtualKeyCtrl::DrawBmp(CFbsBitGc* aGc, const TRect& aDestRect,const TRect& aSourceRect,
+ const CFbsBitmap* aBmp,CFbsBitmap* aMask,
+ TBool aInvertFlag)
+ {
if(aMask)
{
//TRect bmpRect(TPoint(0,0),aMask->SizeInPixels());
- gc->DrawBitmapMasked(aDestRect,aBmp,aSourceRect,aMask,aInvertFlag);
+ aGc->DrawBitmapMasked(aDestRect,aBmp,aSourceRect,aMask,aInvertFlag);
}
else
{
- gc->DrawBitmap(aDestRect,aBmp,aSourceRect);
- }
+ aGc->DrawBitmap(aDestRect,aBmp,aSourceRect);
+ }
}
// ---------------------------------------------------------------------------
@@ -360,13 +374,30 @@
{
TRect innerrect = rect;
innerrect.Shrink( KDefaultKeyMargin, KDefaultKeyMargin );
-
- AknsDrawUtils::DrawFrame(UiLayout()->SkinInstance(),
- *gc,
- rect,
- innerrect,
- iKeyboard->KeySkinId(EKeyBmpNormal),
- KAknsIIDDefault);
+ TBool bHasDrawn = EFalse;
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ TBool ret = iKeyboard->PrepareKeyBmp(iKeyboard->NormalKeyBmp(),
+ iKeyboard->NormalKeyDev(),
+ rect,innerrect,
+ iKeyboard->KeySkinId(EKeyBmpNormal),
+ KAknsIIDDefault,Rect());
+ if(ret)
+ {
+ gc->BitBlt(rect.iTl,iKeyboard->NormalKeyBmp());
+ bHasDrawn = ETrue;
+ }
+ }
+
+ if(!bHasDrawn)
+ {
+ AknsDrawUtils::DrawFrame(UiLayout()->SkinInstance(),
+ *gc,
+ rect,
+ innerrect,
+ iKeyboard->KeySkinId(EKeyBmpNormal),
+ KAknsIIDDefault);
+ }
}
else if( iKeyboard->NonIrregularKeyBitmap( EKeyBmpNormal ) )
{
@@ -403,9 +434,28 @@
gc->SetPenColor( KRgbBlack );
gc->SetBrushStyle( CGraphicsContext::ENullBrush );
gc->SetFaded(EFalse);
- DrawKeyText();
+ DrawKeyText(gc);
}
-
+
+CFbsBitGc* CVirtualKeyCtrl::GetGc()
+ {
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ //draw to highligh bitmap
+ if(Keyboard()->Bitmap()->SizeInPixels() != Rect().Size())
+ {
+ Keyboard()->Bitmap()->Resize(Rect().Size());
+ Keyboard()->HighlightDev()->Resize( Rect().Size());
+ //gc must be adjusted
+ Keyboard()->HighlightGc()->Activate(Keyboard()->HighlightDev());
+ Keyboard()->HighlightGc()->Resized();
+ }
+ return Keyboard()->HighlightGc();
+ }
+ else
+ return static_cast<CFbsBitGc*>(BitGc());
+ }
+
// ---------------------------------------------------------------------------
// CVirtualKeyCtrl::DrawHighlightKey
// Draw key in highlight state
@@ -414,8 +464,11 @@
//
void CVirtualKeyCtrl::DrawHighlightKey()
{
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
- TRect rect = Rect();
+ CFbsBitGc* gc = GetGc();
+ if(UiLayout()->NotDrawToLayoutDevice())
+ gc->Activate( Keyboard()->HighlightDev() );
+ TRect rect = GetRect();
+
TPoint bmpPos = rect.iTl;
TRect bmpRect(TPoint(0,0),rect.Size());
@@ -423,12 +476,12 @@
iVirtualKeyDrawInfo.iVKPressedMiddleImgID.iMajor &&
iVirtualKeyDrawInfo.iVKPressedRightImgID.iMajor)
{
- TRect innerRect = Rect();
+ TRect innerRect = GetRect();
innerRect.Shrink( 4, 0 );
AknPenInputDrawUtils::Draw3PiecesFrame(UiLayout()->SkinInstance(),
*gc,
- Rect(),
+ GetRect(),
innerRect,
iVirtualKeyDrawInfo.iVKPressedLeftImgID,
iVirtualKeyDrawInfo.iVKPressedMiddleImgID,
@@ -444,20 +497,38 @@
else if (iKeyboard->KeySkinId(EKeyBmpHighlight) != KAknsIIDNone)
{
TRect innerrect = rect;
+
innerrect.Shrink( KDefaultKeyMargin, KDefaultKeyMargin );
-
- AknsDrawUtils::DrawFrame(UiLayout()->SkinInstance(),
- *gc,
- rect,
- innerrect,
- iKeyboard->KeySkinId(EKeyBmpHighlight),
- KAknsIIDDefault);
+ TBool bHasDrawn = EFalse;
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ TBool ret = iKeyboard->PrepareKeyBmp(iKeyboard->HighightKeyBmp(),
+ iKeyboard->HighlightKeyDev(),
+ rect,innerrect,
+ iKeyboard->KeySkinId(EKeyBmpHighlight),
+ KAknsIIDDefault,Rect());
+ if(ret)
+ {
+ gc->BitBlt(rect.iTl,iKeyboard->HighightKeyBmp());
+ bHasDrawn = ETrue;
+ }
+ }
+
+ if(!bHasDrawn)
+ {
+ AknsDrawUtils::DrawFrame(UiLayout()->SkinInstance(),
+ *gc,
+ rect,
+ innerrect,
+ iKeyboard->KeySkinId(EKeyBmpHighlight),
+ KAknsIIDDefault);
+ }
}
else if( iKeyboard->NonIrregularKeyBitmap( EKeyBmpHighlight ) )
{
TRect srcRect(TPoint(0,0),
iKeyboard->NonIrregularKeyBitmap( EKeyBmpHighlight )->SizeInPixels());
- DrawBmp(rect,
+ DrawBmp(gc, rect,
srcRect,
iKeyboard->NonIrregularKeyBitmap( EKeyBmpHighlight ),
iKeyboard->NonIrregularKeyBitmap( EKeyBmpHighlightMask ),
@@ -490,7 +561,15 @@
gc->SetBrushStyle( CGraphicsContext::ENullBrush );
gc->SetFaded(EFalse);
- DrawKeyText();
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ DrawKeyText(Keyboard()->HighlightGc());
+ UpdateChangedArea(ETrue);
+ }
+ else
+ {
+ DrawKeyText(gc);
+ }
}
@@ -554,7 +633,22 @@
//draw key new state
iKeyboard->DrawBubble(iKeyInfo);
- ReDraw();
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ if( !(iKeyInfo->Dimmed()) && (iKeyInfo->Latched() || (PointerDown()&&!iKeyInfo->IsLatchKey())) )
+ {
+ DrawHighlightKey();
+ }
+ else
+ {
+ ReDraw();
+ }
+ }
+ else
+ {
+ ReDraw();
+ UpdateArea( Rect() );
+ }
UpdateArea( Rect() );
if(iKeyInfo->IsLatchKey())
@@ -593,8 +687,17 @@
// When key down, latch key won't generate event.
eventType = iKeyInfo->Latched() ? EEventVirtualKeyLatched : EEventVirtualKeyUnLatched;
}
- ReDraw();
- UpdateAreaImmed( Rect() );
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ //no need to draw again, just remove the highlight bitmap
+ UpdateChangedArea(EFalse);
+ Draw();
+ }
+ else
+ {
+ ReDraw();
+ UpdateAreaImmed( Rect() );
+ }
ReportKeyEvent(eventType);
@@ -628,7 +731,12 @@
iKeyboard->DrawBubble(iKeyInfo);
ReDraw();
- UpdateArea( Rect() );
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ UpdateChangedArea(ETrue);
+ }
+ else
+ UpdateArea( Rect() );
}
@@ -651,8 +759,15 @@
}
iKeyboard->ClearBubble(ETrue);
- ReDraw();
- UpdateArea( Rect() );
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ UpdateChangedArea(EFalse);
+ }
+ else
+ {
+ ReDraw();
+ UpdateArea( Rect() );
+ }
#ifdef RD_TACTILE_FEEDBACK
if ( iKeyboard->GowithPointerDown() )
@@ -673,8 +788,15 @@
{
CFepUiBaseCtrl::CancelPointerDownL();
iKeyboard->ClearBubble(ETrue);
- ReDraw();
- UpdateArea( Rect() );
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ UpdateChangedArea(EFalse);
+ }
+ else
+ {
+ ReDraw();
+ UpdateArea( Rect() );
+ }
}
// ---------------------------------------------------------------------------
// CVirtualKeyCtrl::ReDraw
@@ -684,8 +806,24 @@
//
void CVirtualKeyCtrl::ReDraw()
{
- Draw();
- UpdateArea(Rect(), EFalse);
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ if(iKeyInfo->Latched()||(PointerDown()&&!iKeyInfo->IsLatchKey()))
+ {
+ DrawHighlightKey();
+ UpdateChangedArea(ETrue);
+ }
+ else
+ {
+ Draw();
+ UpdateArea(Rect(), EFalse);
+ }
+ }
+ else
+ {
+ Draw();
+ UpdateArea(Rect(), EFalse);
+ }
}
// ---------------------------------------------------------------------------
@@ -903,6 +1041,10 @@
//
void CVirtualRawKeyCtrl::HandlePointerLeave(const TPoint& aPoint)
{
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ UpdateChangedArea(EFalse);
+ }
TRawEvent event;
event.Set(TRawEvent::EButton1Up,aPoint.iX,aPoint.iY);
@@ -919,4 +1061,34 @@
}
#endif //RD_TACTILE_FEEDBACK
}
+
+TRect CVirtualKeyCtrl::GetRect()
+ {
+ TRect r(Rect());
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ if(iKeyInfo->Latched()||(PointerDown()&&!iKeyInfo->IsLatchKey()))
+ {
+ r.Move(-r.iTl.iX, -r.iTl.iY);
+ }
+ }
+ return r;
+ }
+
+void CVirtualKeyCtrl::UpdateChangedArea(TBool aFlag)
+ {
+ struct SData
+ {
+ TBool flag;
+ CFbsBitmap* bmp;
+ TRect pos;
+ } data;
+ data.flag = aFlag;
+ data.bmp = Keyboard()->Bitmap();//aFlag ? Keyboard()->iBitmap : 0;
+ data.pos = Rect();
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalUpdateChangedArea,ptr);
+ }
//end of file
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputuilayout.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputuilayout.cpp Tue May 25 13:03:44 2010 +0300
@@ -28,8 +28,8 @@
#include <AknDef.h>
#include <AknsConstants.h>
#include <coemain.h>
-#include <aknsutils.h>
-#include <aknsskininstance.h>
+#include <AknsUtils.h>
+#include <AknsSkinInstance.h>
#ifdef RD_TACTILE_FEEDBACK
#include <touchfeedback.h>
@@ -84,6 +84,7 @@
#endif // RD_TACTILE_FEEDBACK
iExtension->iSkinInstance = AknsUtils::SkinInstance();
iExtension->iTouchFeedbackInstance = MTouchFeedback::Instance();
+ iExtension->iDisableDrawing = EFalse;
}
// ---------------------------------------------------------------------------
@@ -175,6 +176,17 @@
TRAP_IGNORE(SendEditorTextAndCursorPosL(aData));
}
break;
+ case ECmdPeninputEnableOwnBitmap:
+ {
+ SetSelfBmpDeviceFlag(*(reinterpret_cast<TBool*>(aData)));
+ OnResourceChange(KPenInputOwnDeviceChange);
+ }
+ break;
+ case ECmdPeninputDisableLayoutDrawing:
+ {
+ DisableLayoutDrawing(*(reinterpret_cast<TBool*>(aData)));
+ }
+ break;
default:
{
ret = -1;
@@ -572,6 +584,8 @@
const TRect& aRect,TBool aUpdateFlag,TBool aImmedFlag)
{
//do nothing if it's locked and aCtrl is not the owner.
+ if(!iLayoutReady || iExtension->iDisableDrawing)
+ return;
TBool bUpdate = ETrue;
if(!iLockedArea.IsEmpty() )
{
@@ -876,4 +890,27 @@
{
return iRootCtrl->CreateCursor();
}
+
+EXPORT_C TBool CFepUiLayout::NotDrawToLayoutDevice()
+ {
+ return iExtension->iSelfBmpDeviceFlag;
+ }
+
+void CFepUiLayout::SetSelfBmpDeviceFlag(TBool aFlag)
+ {
+ iExtension->iSelfBmpDeviceFlag = aFlag;
+ }
+
+
+EXPORT_C void CFepUiLayout::DisableLayoutDrawing(TBool aFlag)
+ {
+ if(iExtension->iDisableDrawing == aFlag)
+ return;
+ iExtension->iDisableDrawing = aFlag;
+ TPtrC ptr;
+ ptr.Set(reinterpret_cast<const TUint16*>(&aFlag),sizeof(aFlag)/sizeof(TUint16));
+
+ SignalOwner(ESignalDisableUpdating,ptr);
+ }
+
//end of file
--- a/textinput/peninputarc/src/peninputserverapp/keyrotator.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/keyrotator.cpp Tue May 25 13:03:44 2010 +0300
@@ -18,7 +18,7 @@
#include "keyrotator.h"
#include <UikonInternalPSKeys.h>
#include <PSVariables.h>
-#include <AknPriv.rsg>
+#include <aknpriv.rsg>
#include <barsread.h>
#include <barsc.h>
#include <bautils.h>
--- a/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Tue May 25 13:03:44 2010 +0300
@@ -528,7 +528,10 @@
if(!iUiLayout)
return;
-
+
+ TBool notDraw = EFalse;
+ iUiLayout->HandleCommand(ECmdPeninputDisableLayoutDrawing,(unsigned char*)¬Draw);
+
// move it out from if(!iActive) to make sure that msg bubble can be
// shown if fast swap from other application to msg application.
TBool bNeedWait = AnimOpNeedWaiting(ESignalPenUiActivated);
@@ -1204,6 +1207,13 @@
ClearSpriteGc();
DeactivateSprite();
iDestroyingLayout = ETrue;
+ if(iUseWindowCtrl)
+ {
+ if(iPenUiCtrl)
+ {
+ iPenUiCtrl->Clean();
+ }
+ }
iUiLayout->Destroy();
iUiLayout = NULL;
iDestroyingLayout = EFalse;
@@ -1307,8 +1317,12 @@
iUseWindowCtrl = ETrue;
if(iUseWindowCtrl)
- {
- iPenUiCtrl->SetExtent(layoutRect.iTl,layoutSize);
+ {
+#ifdef FIX_FOR_NGA
+ TBool flag = ETrue;
+ iUiLayout->HandleCommand(ECmdPeninputEnableOwnBitmap,reinterpret_cast<TUint8*>(&flag));
+#endif
+ iPenUiCtrl->SetExtent(layoutRect.iTl,layoutSize);
if(iAnimObj)
{
iAnimObj->AddEnalbeSpriteCmd(EFalse);
@@ -1563,10 +1577,6 @@
return;
}
-#ifndef FIX_FOR_NGA
-#define FIX_FOR_NGA
-#endif
-
//MLayoutOwner
// ---------------------------------------------------------------------------
// CPeninputServer::UpdateArea
@@ -1901,15 +1911,11 @@
}
break;
- case ESignalPopupWndClosed:
- {
- if(iUseWindowCtrl)
+ default:
+ if(iUseWindowCtrl)
{
- iPenUiCtrl->ClosePopup();
+ iPenUiCtrl->HandleNGASpecificSignal(aEventType, aEventData);
}
- }
- break;
- default:
break;
}
}
@@ -2117,9 +2123,17 @@
}
return;
}
-*/ if(iActive && !iPrevActive &&
- iUiLayout->PenInputType() != EPluginInputModeFSQ &&
- iBackgroudDefaultOri == CAknAppUiBase::EAppUiOrientationUnspecified )
+*/
+ TInt inputMode = iUiLayout ? iUiLayout->PenInputType() : EPluginInputModeNone;
+
+ TBool isArabicFingerInput = (inputMode == EPluginInputModeFingerHwr && iInputLanguage == ELangArabic);
+
+ if(isArabicFingerInput)
+ {
+ return;
+ }
+
+ if(iActive && !iPrevActive && inputMode != EPluginInputModeFSQ && iBackgroudDefaultOri == CAknAppUiBase::EAppUiOrientationUnspecified )
{
iPrevActive = ETrue;
--- a/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Tue May 25 13:03:44 2010 +0300
@@ -29,10 +29,7 @@
#include <e32property.h>
#include <avkondomainpskeys.h>
#endif
-
-#ifndef FIX_FOR_NGA
-#define FIX_FOR_NGA
-#endif
+#include "peninputcmd.h"
const TInt KAknCapServerUid = 0x10207218;
const TInt KAknNotifySrvUid = 0x10281EF2;
@@ -74,7 +71,13 @@
{
iAutoRefreshTimer->Cancel();
}
- delete iAutoRefreshTimer;
+ delete iAutoRefreshTimer;
+ iPopRegion.Close();
+ iBubblesArea.Close();
+ iBubblesMaskArea.Close();
+ iBubblesPos.Close();
+
+ delete iCursorWnd;
}
void CPenUiWndCtrl::ConstructL()
@@ -84,7 +87,7 @@
Window().SetRequiredDisplayMode( EColor16MA );
iIncallBubble = CAknIncallBubble::NewL();
- MakeVisible( EFalse );
+
#ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
// only change registration, if not registered, don't register
if (!GfxTransEffect::IsRegistered( this ) )
@@ -96,24 +99,39 @@
iPopupWnd = CPenUiPopWnd::NewL(iWndGroup,iBitmap,this);
iAutoRefreshTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+
+ iCursorWnd = new (ELeave) CCursorWindow(this);
+ //iCursorWnd->ConstructL(this);
+ iCursorWnd->SetContainerWindowL(*this);
+
+ MakeVisible( EFalse );
}
void CPenUiWndCtrl::Draw(const TRect& aRect) const
{
+ if(iNotUpdating)
+ return;
+
CWindowGc& gc = SystemGc();
if ( iShowPopup )
{
//layout is extended by popup
- TRect rect = aRect;
- rect.Intersection( iLayoutClipRect );
- TPoint pos = rect.iTl - iLayoutClipRect.iTl;
- gc.BitBlt( pos, iBitmap, rect );
- return;
+ gc.SetClippingRect( iLayoutClipRect );
}
-
- gc.BitBlt(aRect.iTl,iBitmap,aRect);
+
+ #ifdef FIX_FOR_NGA
+ gc.BitBlt(TPoint(0,0),iBitmap,Rect());
+
+ //draw bubble
+ for(TInt i = 0 ; i < iBubblesArea.Count(); ++i)
+ {
+ gc.BitBlt(iBubblesPos[i].iTl,iBubblesArea[i]);
+ }
+ #else
+ gc.BitBlt(aRect.iTl,iBitmap,aRect);
+ #endif
}
void CPenUiWndCtrl::RefreshUI()
@@ -133,6 +151,152 @@
}
+void CPenUiWndCtrl::Clean()
+ {
+ iCursorBmp = NULL;
+ iBubblesArea.Reset();
+ iBubblesPos.Reset();
+ iBubblesMaskArea.Close();
+ iPopRegion.Close();
+ iChangedBmp= NULL;
+ iBackground = EFalse;
+ iNotUpdating = EFalse;
+ }
+
+CCursorWindow::CCursorWindow(CPenUiWndCtrl* aParent)
+ :iParent(aParent)
+ {
+ }
+
+void CCursorWindow::SetCursorVisible(TBool aFlag)
+ {
+ iCursorVisible = aFlag;
+ DrawNow();
+ }
+void CCursorWindow::Draw(const TRect &aRect ) const
+ {
+ if(!iCursorVisible)
+ return;
+
+ CWindowGc& gc = SystemGc();
+ iParent->DrawCursor(gc);
+ }
+
+void CPenUiWndCtrl::DrawCursor(CWindowGc& aGc) const
+ {
+ aGc.SetPenColor(KRgbBlack);
+ aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+ aGc.SetBrushColor(KRgbBlack);
+ aGc.SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN);
+ aGc.SetPenStyle(CGraphicsContext::ESolidPen);
+ aGc.SetPenSize( TSize(1,1));
+
+ TRect drawRect = iCursorRect;
+ if(!iPopRegion.IsEmpty() && iPopRegion.Intersects(iCursorRect))
+ {
+ RRegion r;
+ r.AddRect(iCursorRect);
+ const TRect* rl = iPopRegion.RectangleList();
+
+ for(TInt i = 0 ; i < iPopRegion.Count(); ++i)
+ {
+ drawRect = iCursorRect;
+ drawRect.Intersection(rl[i]);
+ if(!drawRect.IsEmpty())
+ r.SubRect(drawRect);
+ }
+
+ for(TInt ii = 0; ii < r.Count(); ++ii)
+ {
+ aGc.DrawRect(r.RectangleList()[ii]);
+ }
+ r.Close();
+ }
+ else
+ aGc.DrawRect(iCursorRect);
+
+ // restore normal draw mode
+ aGc.SetDrawMode(CGraphicsContext::EDrawModePEN);
+ aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
+
+ }
+void CPenUiWndCtrl::UpdateCursor(TBool aOnFlag,const CFbsBitmap* aCursorBmp,const TRect& aRect)
+ {
+ if(iNotUpdating || !IsReadyToDraw())
+ {
+ //some times when layout is diabled, the cursor is still change its pos, and draw to the last place
+ //when layout enabled. So we set the cursor invisible, and wait for next cursor updating event.
+ iCursorWnd->SetCursorVisible(EFalse);
+ return;
+ }
+
+ iCursorBmp = const_cast<CFbsBitmap*>(aCursorBmp);
+ iCursorPos = aRect.iTl;
+
+ if(iCursorRect != aRect)
+ {
+ iCursorRect = aRect;
+ iCursorWnd->SetRect(iCursorRect);
+ }
+ iCursorWnd->SetCursorVisible(aOnFlag);
+ }
+
+void CPenUiWndCtrl::UpdateBubble(const CFbsBitmap* aBmp,const CFbsBitmap* aMask,
+ const TRect& aPos,TBool aFlag)
+ {
+ TInt idx = iBubblesArea.Find(aBmp);
+
+ if(aFlag)
+ {
+ if(KErrNotFound == idx)
+ {
+ iBubblesArea.Append(aBmp);
+ iBubblesMaskArea.Append(aMask);
+ iBubblesPos.Append(aPos);
+ }
+ else
+ {
+ iBubblesPos[idx] = aPos;
+ }
+
+ }
+ else
+ {
+ //remove
+ if(idx != KErrNotFound)
+ {
+ iBubblesArea.Remove(idx);
+ iBubblesMaskArea.Remove(idx);
+ iBubblesPos.Remove(idx);
+ }
+ }
+ Invalidate(Rect(), ETrue);
+ }
+void CPenUiWndCtrl::UpdateICFArea(const CFbsBitmap* aBmp,const TPoint& aPos)
+ {
+ iICFBmp = const_cast<CFbsBitmap*>(aBmp);
+ iIcfPos = aPos;
+ Invalidate(Rect(), ETrue);
+ }
+void CPenUiWndCtrl::UpdateChangedArea(const CFbsBitmap* aBmp,const TRect& aPos,TBool aFlag)
+ {
+ UpdateBubble(aBmp,0,aPos,aFlag);
+ return;
+
+
+ }
+void CPenUiWndCtrl::SetPopupArea(const TRect& aRect, TBool aFlag)
+ {
+ if(aFlag) //add pop area
+ {
+ iPopRegion.AddRect(aRect);
+ }
+ else
+ {
+ iPopRegion.SubRect(aRect);
+ }
+ }
+
TInt CPenUiWndCtrl::WndPriority()
{
return iPriority;
@@ -232,6 +396,7 @@
void CPenUiWndCtrl::ClosePenUi(TBool aResChanging)
{
+ iCursorBmp = NULL;
if (aResChanging)
{
TRAP_IGNORE(iIncallBubble->SetIncallBubbleFlagsL( EAknStatusBubbleInputHide ));
@@ -271,13 +436,10 @@
}
#endif // RD_UI_TRANSITION_EFFECTS_POPUPS
- //iResourceChange = EFalse;
iShowPopup = EFalse;
iWndGroup.SetOrdinalPosition( -1, ECoeWinPriorityNormal-1 );
DrawableWindow()->SetOrdinalPosition(-1, ECoeWinPriorityNormal-1 );
TRAP_IGNORE(iIncallBubble->SetIncallBubbleFlagsL( EAknStatusBubbleInputHide ));
- //MakeVisible( EFalse );
-
}
@@ -465,6 +627,181 @@
iResourceChange = aResourceChange;
}
+void CPenUiWndCtrl::HandleNGASpecificSignal(TInt aEventType, const TDesC& aEventData)
+ {
+ switch(aEventType)
+ {
+ case ESignalPopupWndClosed:
+ {
+ ClosePopup();
+ }
+ break;
+ case ESignalUpdateCursor :
+ {
+ struct SData
+ {
+ TBool onOff;
+ CFbsBitmap* bmp;
+ TRect rect;
+ } data;
+
+ data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ UpdateCursor(data.onOff,data.bmp,data.rect);
+
+ }
+ break;
+ case ESignalPopupArea:
+ {
+ struct SData
+ {
+ TRect rr;
+ TBool flag;
+ } data;
+
+ data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ SetPopupArea(data.rr,data.flag);
+ }
+ break;
+ case ESignalUpdateICFArea:
+ {
+ struct SData
+ {
+ CFbsBitmap* bmp;
+ TPoint pos;
+ } data;
+
+ data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ UpdateICFArea(data.bmp,data.pos);
+ }
+ break;
+ case ESignalUpdateBubble:
+ {
+ struct SData
+ {
+ TBool flag;
+ TRect pos;
+ CFbsBitmap* bmp;
+ CFbsBitmap* mask;
+ } data;
+ data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ UpdateBubble(data.bmp,data.mask,data.pos,data.flag);
+ }
+ break;
+ case ESignalUpdateChangedArea:
+ {
+ struct SData
+ {
+ TBool flag;
+ CFbsBitmap* bmp;
+ TRect pos;
+ } data;
+ data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ UpdateChangedArea(data.bmp,data.pos,data.flag);
+ }
+ break;
+ case ESignalRegisterBkControl:
+ {
+
+ struct SData
+ {
+ //TBool bChangeFrameId;
+
+ TAknsItemID frameID;
+ TAknsItemID centerID;
+ RArray<TCommonBgCtrlSubItem> *subItems;
+ } data;
+ data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ iSubItems = data.subItems;
+ iFrameID = data.frameID;
+ iCenterID = data.centerID;
+ iBackground = ETrue;
+ }
+ break;
+ case ESignalDisableUpdating:
+ {
+ iNotUpdating = * (reinterpret_cast<TBool*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ }
+ break;
+ case ESignalDrawBackground:
+ {
+ struct SData
+ {
+ CFbsBitGc* gc;
+ CFbsBitmap* bmp;
+ TRect rect;
+ } data;
+ data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
+ DrawBubbleAsBackground(data.gc,data.bmp,data.rect);
+ }
+ break;
+ default:
+ break;
+ }
+
+ }
+
+void CPenUiWndCtrl::DrawBkground(CWindowGc& aGc,const TRect& aRect) const
+ {
+
+ DrawFrame(aGc,aRect, iFrameID, iCenterID);
+
+ for( TInt i = 0; i < (*iSubItems).Count(); i++ )
+ {
+ if( (*iSubItems)[i].iIsShow )
+ {
+ DrawFrame(aGc, (*iSubItems)[i].iRect,
+ (*iSubItems)[i].iFrameID,
+ (*iSubItems)[i].iCenterID );
+ }
+ }
+
+ }
+
+void CPenUiWndCtrl::DrawBubbleAsBackground(CFbsBitGc* aGc, CFbsBitmap* aBmp, const TRect& aRect)
+ {
+ for(TInt i = 0 ; i < iBubblesArea.Count(); ++i)
+ {
+ if(iBubblesArea[i] != aBmp) //not draw same bitmap
+ {
+ //gc.BitBlt(iBubblesPos[i],iBubblesArea[i]);
+ TRect r = aRect;
+ TRect rect2 = iBubblesPos[i];
+ r.Intersection(rect2);
+ if(!r.IsEmpty())
+ {
+ TRect src = r;
+ r.Move(TPoint(-aRect.iTl.iX,-aRect.iTl.iY));
+ src.Move(TPoint(-rect2.iTl.iX,-rect2.iTl.iY));
+ aGc->BitBlt(r.iTl, iBubblesArea[i], src);
+ }
+ }
+ }
+
+ }
+
+
+CCoeControl* CPenUiWndCtrl::ComponentControl(TInt) const
+ {
+ return iCursorWnd;
+ }
+TInt CPenUiWndCtrl::CountComponentControls() const
+ {
+ return 1;
+ }
+
+
+void CPenUiWndCtrl::DrawFrame(CWindowGc& aGc, const TRect& aRect,TAknsItemID aFrameID,
+ TAknsItemID aCenterID ) const
+ {
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRect innerRect = aRect;
+ innerRect.Shrink( 4, 4 );
+
+ AknsDrawUtils::DrawFrame(
+ skin, aGc,
+ aRect, innerRect,
+ aFrameID, aCenterID);
+ }
void CPenUiWndCtrl::RestartRefreshTimer()
{
--- a/textinput/peninputcommonctrls/bwins/peninputcommonctrlsU.DEF Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonctrls/bwins/peninputcommonctrlsU.DEF Tue May 25 13:03:44 2010 +0300
@@ -347,3 +347,15 @@
?CancelPointerDownL@CAknFepCtrlCommonButton@@UAEXXZ @ 346 NONAME ; void CAknFepCtrlCommonButton::CancelPointerDownL(void)
?SetHighlightCell@CFepCtrlDropdownList@@QAEXHHH@Z @ 347 NONAME ; void CFepCtrlDropdownList::SetHighlightCell(int, int, int)
?Hide@CFepCtrlDropdownList@@UAEXH@Z @ 348 NONAME ; void CFepCtrlDropdownList::Hide(int)
+ ?HandleResourceChange@CPeninputVkbCtrlExt@@MAEXH@Z @ 349 NONAME ; void CPeninputVkbCtrlExt::HandleResourceChange(int)
+ ?CancelPointerDownL@CAknFepCtrlLongPressButton@@MAEXXZ @ 350 NONAME ; void CAknFepCtrlLongPressButton::CancelPointerDownL(void)
+ ?HandlePointerLeave@CAknFepCtrlLongPressButton@@MAEXABVTPoint@@@Z @ 351 NONAME ; void CAknFepCtrlLongPressButton::HandlePointerLeave(class TPoint const &)
+ ?ConstructL@CAknFepCtrlLongPressButton@@IAEXXZ @ 352 NONAME ; void CAknFepCtrlLongPressButton::ConstructL(void)
+ ?HandlePointerDownEventL@CAknFepCtrlLongPressButton@@MAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 353 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlLongPressButton::HandlePointerDownEventL(class TPoint const &)
+ ??0CAknFepCtrlLongPressButton@@IAE@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 354 NONAME ; CAknFepCtrlLongPressButton::CAknFepCtrlLongPressButton(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID)
+ ?NewLC@CAknFepCtrlLongPressButton@@SAPAV1@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 355 NONAME ; class CAknFepCtrlLongPressButton * CAknFepCtrlLongPressButton::NewLC(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID)
+ ?HandlePointerUpEventL@CAknFepCtrlLongPressButton@@MAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 356 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlLongPressButton::HandlePointerUpEventL(class TPoint const &)
+ ?NewL@CAknFepCtrlLongPressButton@@SAPAV1@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 357 NONAME ; class CAknFepCtrlLongPressButton * CAknFepCtrlLongPressButton::NewL(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID)
+ ??1CAknFepCtrlLongPressButton@@UAE@XZ @ 358 NONAME ; CAknFepCtrlLongPressButton::~CAknFepCtrlLongPressButton(void)
+ ?HandleTimerOut@CAknFepCtrlLongPressButton@@UAEXPBVCAknFepTimer@@@Z @ 359 NONAME ; void CAknFepCtrlLongPressButton::HandleTimerOut(class CAknFepTimer const *)
+ ?CancelTimer@CAknFepCtrlLongPressButton@@QAEXXZ @ 360 NONAME ; void CAknFepCtrlLongPressButton::CancelTimer(void)
--- a/textinput/peninputcommonctrls/eabi/peninputcommonctrlsU.DEF Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonctrls/eabi/peninputcommonctrlsU.DEF Tue May 25 13:03:44 2010 +0300
@@ -473,4 +473,22 @@
_ZN20CFepCtrlDropdownList10ReDrawRectERK5TRect @ 472 NONAME
_ZN23CAknFepCtrlCommonButton18CancelPointerDownLEv @ 473 NONAME
_ZN20CFepCtrlDropdownList4HideEi @ 474 NONAME
+ _ZN19CPeninputVkbCtrlExt20HandleResourceChangeEi @ 475 NONAME
+ _ZN26CAknFepCtrlLongPressButton10ConstructLEv @ 476 NONAME
+ _ZN26CAknFepCtrlLongPressButton11CancelTimerEv @ 477 NONAME
+ _ZN26CAknFepCtrlLongPressButton14HandleTimerOutEPK12CAknFepTimer @ 478 NONAME
+ _ZN26CAknFepCtrlLongPressButton18CancelPointerDownLEv @ 479 NONAME
+ _ZN26CAknFepCtrlLongPressButton18HandlePointerLeaveERK6TPoint @ 480 NONAME
+ _ZN26CAknFepCtrlLongPressButton21HandlePointerUpEventLERK6TPoint @ 481 NONAME
+ _ZN26CAknFepCtrlLongPressButton23HandlePointerDownEventLERK6TPoint @ 482 NONAME
+ _ZN26CAknFepCtrlLongPressButton4NewLEP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 483 NONAME
+ _ZN26CAknFepCtrlLongPressButton5NewLCEP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 484 NONAME
+ _ZN26CAknFepCtrlLongPressButtonC1EP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 485 NONAME
+ _ZN26CAknFepCtrlLongPressButtonC2EP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 486 NONAME
+ _ZN26CAknFepCtrlLongPressButtonD0Ev @ 487 NONAME
+ _ZN26CAknFepCtrlLongPressButtonD1Ev @ 488 NONAME
+ _ZN26CAknFepCtrlLongPressButtonD2Ev @ 489 NONAME
+ _ZTI26CAknFepCtrlLongPressButton @ 490 NONAME
+ _ZTV26CAknFepCtrlLongPressButton @ 491 NONAME
+ _ZThn804_N26CAknFepCtrlLongPressButton14HandleTimerOutEPK12CAknFepTimer @ 492 NONAME
--- a/textinput/peninputcommonctrls/group/bld.inf Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonctrls/group/bld.inf Tue May 25 13:03:44 2010 +0300
@@ -43,6 +43,7 @@
../inc/peninputbuttons/peninputrawkeybutton.inl |../../../inc/peninputrawkeybutton.inl
../inc/peninputbuttons/peninputcommonbutton.h |../../../inc/peninputcommonbutton.h
../inc/peninputbuttons/peninputmultiimagebutton.h |../../../inc/peninputmultiimagebutton.h
+../inc/peninputbuttons/peninputlongpressbutton.h |../../../inc/peninputlongpressbutton.h
// From peninputbasewindow
../inc/peninputbasewindow/peninputbasewindow.h |../../../inc/peninputbasewindow.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputcommonctrls/inc/peninputbuttons/peninputlongpressbutton.h Tue May 25 13:03:44 2010 +0300
@@ -0,0 +1,192 @@
+/*
+* 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: Interface of normal button and multidisplay button
+*
+*/
+
+
+#ifndef C_CAKNFEPCTRLLONGPRESSBUTTON_H
+#define C_CAKNFEPCTRLLONGPRESSBUTTON_H
+
+// system includes
+#include <peninputlayoutbasecontrol.h>
+#include <peninputlayoutbutton.h>
+#include <peninputpluginutils.h>
+#include <peninputeventbutton.h>
+
+// forward declarations
+class TResourceReader;
+
+/**
+ * CAknFepCtrlLongPressButton
+ *
+ * @lib fepcommonctrls.lib
+ * @since S60 v3.2
+ */
+class CAknFepCtrlLongPressButton: public CAknFepCtrlEventButton, public MAknFepTimerHandler
+{
+public:
+
+ /**
+ * Symbian constructor.
+ *
+ * @since S60 v3.2
+ * @param aUiLayout The layout
+ * @param aControlId The control id
+ * @param aEvent An event to be sent
+ * @param aUnicode A Unicode value to be sent
+ * @return Pointer to created CAknFepCtrlLongPressButton object
+ */
+ IMPORT_C static CAknFepCtrlLongPressButton* NewL(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aEvent = 0xFFFF,
+ TInt aUnicode = 0,
+ TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal,
+ TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed,
+ TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive);
+
+ /**
+ * Symbian constructor.
+ *
+ * @since S60 v3.2
+ * @param aUiLayout The layout
+ * @param aControlId The control id
+ * @param aEvent An event to be sent
+ * @param aUnicode A Unicode value to be sent
+ * @return Pointer to created CAknFepCtrlLongPressButton object
+ */
+ IMPORT_C static CAknFepCtrlLongPressButton* NewLC(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aEvent = 0xFFFF,
+ TInt aUnicode = 0,
+ TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal,
+ TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed,
+ TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive);
+ /**
+ * destructor.
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ IMPORT_C virtual ~CAknFepCtrlLongPressButton();
+
+ /**
+ * Cancel long press timer
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ IMPORT_C void CancelTimer();
+
+// from base class MAknFepHwrTimerHandler
+
+ /**
+ * from MAknFepHwrTimerHandler
+ * HandleTimerOut. Handling time out event
+ *
+ * @since S60 v3.2
+ * @param aTimer The timer which sending the request
+ * @return None
+ */
+ IMPORT_C void HandleTimerOut(const CAknFepTimer* aTimer);
+
+protected:
+
+ /**
+ * C++ constructor.
+ *
+ * @since S60 v3.2
+ * @param aUiLayout Ui Layout who contains this control
+ * @param aCtrlId Control Id
+ * @param aEvent An event to be sent
+ * @param aUnicode A Unicode value to be sent
+ * @return None
+ */
+ IMPORT_C CAknFepCtrlLongPressButton(CFepUiLayout* aUiLayout,
+ TInt aCtrlId,
+ TInt aEvent,
+ TInt aUnicode,
+ TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal,
+ TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed,
+ TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive);
+
+// from base class CButtonBase
+
+ /**
+ * From CButtonBase
+ * Handle button down event. start long press timer
+ *
+ * @since S60 v3.2
+ * @param aPt Point position
+ * @return The control who handles the event
+ */
+ IMPORT_C CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPt);
+
+ /**
+ * From CButtonBase
+ * Handle button up event. cancel the timer
+ *
+ * @since S60 v3.2
+ * @param aPt Point position
+ * @return The control who handles the event
+ */
+ IMPORT_C CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPt);
+
+ /**
+ * From CButtonBase
+ * Handle pointer leave event.
+ *
+ * @since S60 v3.2
+ * @param aPoint current pointer position
+ * @return Nothing
+ */
+ IMPORT_C void HandlePointerLeave(const TPoint& aPoint);
+
+ /**
+ * From CButtonBase
+ * Cancel pointer down event.
+ *
+ * @since S60 v3.2
+ * @param aPoint current pointer position
+ * @return Nothing
+ */
+ IMPORT_C void CancelPointerDownL();
+
+ /**
+ * Symbian 2nd phase constructor.
+ */
+ IMPORT_C void ConstructL();
+
+private:
+
+ /**
+ * interval of long press
+ */
+ TTimeIntervalMicroSeconds32 iLongPressInterval;
+
+ /**
+ * long press timer (Own)
+ */
+ CAknFepTimer* iLongPressTimer;
+
+ /**
+ * indicates whether long press has occurred
+ */
+ TBool iIsLongPress;
+
+};
+
+#endif // C_CAKNFEPCTRLLONGPRESSBUTTON_H
+
+// End Of File
--- a/textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrlext.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrlext.h Tue May 25 13:03:44 2010 +0300
@@ -186,6 +186,8 @@
* The left top point
*/
TPoint iLeftTopPoint;
+protected:
+ virtual IMPORT_C void HandleResourceChange(TInt aType);
};
#endif // C_CPENINPUTVKBCTRLEXT_H
--- a/textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp Tue May 25 13:03:44 2010 +0300
@@ -35,6 +35,7 @@
#include <peninputmultiimagebutton.h>
#include <peninputcommonctrls.hrh>
#include <peninputcommonlayoutglobalenum.h>
+#include <peninputlongpressbutton.h>
const TInt KInvalidBmp = -1 ;
@@ -2454,6 +2455,10 @@
//PRINTF((_L("CAknFepCtrlRepeatButton::HandleButtonDown()\n")));
//PRINTF((_L("Set long press Timer\n")));
+ if( IsDimmed() )
+ {
+ return NULL;
+ }
iLongPressTimer->SetTimer(iLongPressInterval);
TInt unicode = Unicode();
TPtrC ptr = (TUint16*)(&unicode);
@@ -4099,4 +4104,188 @@
iForground2BmpRect.Move( aOffset );
}
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+EXPORT_C CAknFepCtrlLongPressButton* CAknFepCtrlLongPressButton::NewLC(CFepUiLayout* aUiLayout,
+ TInt aCtrlId,
+ TInt aEvent,
+ TInt aUnicode,
+ TAknsItemID aNormalID,
+ TAknsItemID aPressedID,
+ TAknsItemID aInactiveID)
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::NewLC(), aCtrlId = %d\n"), aCtrlId));
+ CAknFepCtrlLongPressButton *self = new(ELeave) CAknFepCtrlLongPressButton(aUiLayout,
+ aCtrlId,
+ aEvent,
+ aUnicode,
+ aNormalID,
+ aPressedID,
+ aInactiveID);
+
+ CleanupStack::PushL(self);
+ self->ConstructL();
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+EXPORT_C CAknFepCtrlLongPressButton* CAknFepCtrlLongPressButton::NewL(CFepUiLayout* aUiLayout,
+ TInt aCtrlId,
+ TInt aEvent,
+ TInt aUnicode,
+ TAknsItemID aNormalID,
+ TAknsItemID aPressedID,
+ TAknsItemID aInactiveID)
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::NewL(), aCtrlId = %d\n"), aCtrlId));
+ CAknFepCtrlLongPressButton *self = NewLC(aUiLayout, aCtrlId, aEvent, aUnicode,
+ aNormalID, aPressedID, aInactiveID);
+ CleanupStack::Pop(self);
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+EXPORT_C CAknFepCtrlLongPressButton::~CAknFepCtrlLongPressButton()
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::~CAknFepCtrlLongPressButton()\n")));
+ CancelTimer();
+
+ delete iLongPressTimer;
+ }
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+EXPORT_C CAknFepCtrlLongPressButton::CAknFepCtrlLongPressButton(CFepUiLayout* aUiLayout,
+ TInt aCtrlId,
+ TInt aEvent,
+ TInt aUnicode,
+ TAknsItemID aNormalID,
+ TAknsItemID aPressedID,
+ TAknsItemID aInactiveID)
+ :CAknFepCtrlEventButton(aUiLayout, aCtrlId, aEvent, aUnicode,
+ aNormalID,
+ aPressedID,
+ aInactiveID)
+ {
+ iLongPressInterval = KLongPressInterval;
+ }
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+EXPORT_C void CAknFepCtrlLongPressButton::ConstructL()
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::ConstructL()\n")));
+ BaseConstructL();
+ iIsLongPress = EFalse;
+ iLongPressTimer = CAknFepTimer::NewL(this);
+ }
+
+// ---------------------------------------------------------
+// Time out event handler of long press timer
+// ---------------------------------------------------------
+//
+EXPORT_C void CAknFepCtrlLongPressButton::HandleTimerOut(const CAknFepTimer* aTimer)
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::HandleTimerOut()--")));
+ if (aTimer == iLongPressTimer)
+ {
+ iIsLongPress = ETrue;
+ CancelTimer();
+ TInt unicode = Unicode();
+ TPtrC ptr = (TUint16*)(&unicode);
+ ReportEvent(EPeninputLayoutEventMultiRangeLongPress, ptr);
+ }
+ }
+
+// ---------------------------------------------------------
+// Handle button down start long press timer
+// ---------------------------------------------------------
+//
+EXPORT_C CFepUiBaseCtrl* CAknFepCtrlLongPressButton::HandlePointerDownEventL(const TPoint& aPt)
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::HandleButtonDown()\n")));
+ //PRINTF((_L("Set long press Timer\n")));
+ if ( IsDimmed() )
+ {
+ return;
+ }
+
+ iLongPressTimer->SetTimer(iLongPressInterval);
+
+ return CAknFepCtrlCommonButton::HandlePointerDownEventL(aPt);
+ }
+
+// ---------------------------------------------------------
+// Handle button up cancel timer
+// ---------------------------------------------------------
+//
+EXPORT_C CFepUiBaseCtrl* CAknFepCtrlLongPressButton::HandlePointerUpEventL(const TPoint& aPt)
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::HandleButtonUp()\n")));
+
+ if ( IsDimmed() )
+ {
+ return;
+ }
+
+ CancelTimer();
+
+ if (!iIsLongPress)
+ {
+ TInt unicode = Unicode();
+ TPtrC ptr = (TUint16*)(&unicode);
+ ReportEvent(EPeninputLayoutEventMultiRange, ptr);
+ }
+
+ iIsLongPress = EFalse;
+
+
+ return CAknFepCtrlCommonButton::HandlePointerUpEventL(aPt);
+ }
+
+// ---------------------------------------------------------
+// Handle pointer leave event cancel timer
+// ---------------------------------------------------------
+//
+EXPORT_C void CAknFepCtrlLongPressButton::HandlePointerLeave(const TPoint& aPoint)
+ {
+ CAknFepCtrlCommonButton::HandlePointerLeave(aPoint);
+
+ CancelTimer();
+ }
+
+// ---------------------------------------------------------------------------
+// CAknFepCtrlLongPressButton::CancelPointerDownL
+// Cancel pointer down event
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAknFepCtrlLongPressButton::CancelPointerDownL()
+ {
+ // No implementation needed
+ }
+
+// ---------------------------------------------------------
+// Cancel timer
+// ---------------------------------------------------------
+//
+EXPORT_C void CAknFepCtrlLongPressButton::CancelTimer()
+ {
+ //PRINTF((_L("CAknFepCtrlLongPressButton::CancelTimer()\n")));
+ iLongPressTimer->Cancel();
+ }
// End Of File
--- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputscrollablelist.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonctrls/src/peninputselectionlist/peninputscrollablelist.cpp Tue May 25 13:03:44 2010 +0300
@@ -489,8 +489,17 @@
gc->SetPenSize(PenSize());
TBuf<KDisplayTextLen> buf;
- AknBidiTextUtils::ConvertToVisualAndClip(item->iText, buf, *iFont,
- itemRect.Width(), itemRect.Width());
+ if ( iAlign == CGraphicsContext::ERight )
+ {
+ AknBidiTextUtils::ConvertToVisualAndClip(item->iText, buf, *iFont,
+ itemRect.Width(), itemRect.Width(),
+ AknBidiTextUtils::ERightToLeft );
+ }
+ else
+ {
+ AknBidiTextUtils::ConvertToVisualAndClip(item->iText, buf, *iFont,
+ itemRect.Width(), itemRect.Width());
+ }
gc->DrawText(buf, itemRect, baseLine, iAlign);
gc->DiscardFont();
}
--- a/textinput/peninputcommonctrls/src/peninputvkbctrl/peninputvkbctrlext.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonctrls/src/peninputvkbctrl/peninputvkbctrlext.cpp Tue May 25 13:03:44 2010 +0300
@@ -392,3 +392,8 @@
}
CleanupStack::PopAndDestroy( 1 );
}
+
+EXPORT_C void CPeninputVkbCtrlExt::HandleResourceChange(TInt aType)
+ {
+ CVirtualKeyboard::HandleResourceChange(aType);
+ }
--- a/textinput/peninputcommonlayout/inc/peninputcommonlayoutglobalenum.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputcommonlayout/inc/peninputcommonlayoutglobalenum.h Tue May 25 13:03:44 2010 +0300
@@ -71,6 +71,7 @@
EPeninputLayoutEventRightArrow,
EPeninputLayoutEventMultiRange,
+ EPeninputLayoutEventMultiRangeLongPress,
EPeninputLayoutEventLast = 2000 // user event starts from here, same as base control
};
--- a/textinput/peninputfingerhwr/data/peninputfingerhwrcn.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwr/data/peninputfingerhwrcn.rss Tue May 25 13:03:44 2010 +0300
@@ -251,7 +251,7 @@
colormajorskinid=EAknsMajorSkin;
textcolorgrp=EAknsMinorQsnTextColors;
- textcoloridx=59;
+ textcoloridx=64;
bordercolormajorskinid=EAknsMajorSkin;
bordercolorgrp=EAknsMinorQsnOtherColors;
@@ -315,7 +315,7 @@
colormajorskinid=EAknsMajorSkin;
textcolorgrp=EAknsMinorQsnTextColors;
- textcoloridx=59;
+ textcoloridx=64;
bordercolormajorskinid=EAknsMajorSkin;
bordercolorgrp=EAknsMinorQsnOtherColors;
--- a/textinput/peninputfingerhwr/src/peninputfingerhwrlayout.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwr/src/peninputfingerhwrlayout.cpp Tue May 25 13:03:44 2010 +0300
@@ -1035,13 +1035,6 @@
// The default candidate cell is not highlight
iDataStore->SetHighlight(EFalse);
-
- iHwrWnd->UpdateLayout(EFalse);
-
- // Show two empty dropdown list
- iHwrWnd->CandidateList()->ResetAndClear();
- iHwrWnd->PredictiveList()->ResetAndClear();
-
#else
if(iDataStore->PrimaryRange() == ERangeEnglish)
{
@@ -1052,18 +1045,6 @@
// The default candidate cell is not highlight
iDataStore->SetHighlight(EFalse);
- iHwrWnd->UpdateLayout(EFalse);
-
- // Show empty upper row in Native range
- // Show fix English Symbol in English range
- if(iDataStore->PrimaryRange() != ERangeEnglish)
- {
- iHwrWnd->CandidateList()->ResetAndClear();
- }
-
- // Show empty lower row
- iHwrWnd->PredictiveList()->ResetAndClear();
-
#endif
}
--- a/textinput/peninputfingerhwr/src/peninputfingerhwrrangeselector.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwr/src/peninputfingerhwrrangeselector.cpp Tue May 25 13:03:44 2010 +0300
@@ -111,7 +111,7 @@
CapturePointer( EFalse );
iPopupVisible = EFalse;
- RootControl()->Draw();
+
UpdateArea( extendRect, EFalse );
}
@@ -183,11 +183,6 @@
CFepUiBaseCtrl* CPeninputFingerHwrRangeSelector::HandlePointerDownEventL(
const TPoint& aPoint )
{
- // Cancel all highlighted button, when pressing down
- iRangeChBtn->SetHighlight( EFalse );
- iRangeEnBtn->SetHighlight( EFalse );
- iRangeNumBtn->SetHighlight( EFalse );
-
CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerDownEventL( aPoint );
if ( !ctrl )
@@ -208,16 +203,26 @@
CFepUiBaseCtrl* CPeninputFingerHwrRangeSelector::HandlePointerUpEventL(
const TPoint& aPoint )
{
+ if(IsPopup())
+ {
+ if(iCurRangeActive)
+ {
+ if(iCurRange == EFingerHwrNativeRange)
+ {
+ iRangeChBtn->SetHighlight(EFalse);
+ }
+ else if(iCurRange == EFingerHwrEnglishRange)
+ {
+ iRangeEnBtn->SetHighlight(EFalse);
+ }
+ else
+ {
+ iRangeNumBtn->SetHighlight(EFalse);
+ }
+ }
+ }
CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerUpEventL( aPoint );
- // When upCtrl does not equal to down ctrl, restore the highlight button state.
- if (ctrl != iCtrlWithPointerDown)
- {
- iRangeChBtn->SetHighlight( iCurRange == EFingerHwrNativeRange );
- iRangeEnBtn->SetHighlight( iCurRange == EFingerHwrEnglishRange );
- iRangeNumBtn->SetHighlight( iCurRange == EFingerHwrNumberRange );
- }
-
iRangeChBtn->CancelPointerDownL();
iRangeEnBtn->CancelPointerDownL();
iRangeNumBtn->CancelPointerDownL();
--- a/textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp Tue May 25 13:03:44 2010 +0300
@@ -1781,6 +1781,9 @@
{
rect = iLafManager->CtrlRect( iVirtualNumpad->ControlId() );
iVirtualNumpad->SetRect( rect );
+
+ TAknTextLineLayout txtlayout = iLafManager->NumpadKeyTxtLayout();
+ iVirtualNumpad->SetTextLineLayout( txtlayout );
const RPointerArray<CVirtualKey>& keys = iVirtualNumpad->KeyArray();
RArray<TRect> rects;
@@ -1802,6 +1805,9 @@
rect = iLafManager->CtrlRect( iVirtualSctpad->ControlId() );
iVirtualSctpad->SetRect( rect );
+ TAknTextLineLayout txtlayout = iLafManager->SctpadKeyTxtLayout();
+ iVirtualSctpad->SetTextLineLayout( txtlayout );
+
const RPointerArray<CVirtualKey>& keys = iVirtualSctpad->KeyArray();
RArray<TRect> rects;
iLafManager->GetVirtualKeyRects( rects );
@@ -1821,6 +1827,9 @@
{
rect = iLafManager->CtrlRect( iVirtualSctpadFix->ControlId() );
iVirtualSctpadFix->SetRect( rect );
+
+ TAknTextLineLayout txtlayout = iLafManager->FixSctpadKeyTxtLayout();
+ iVirtualSctpadFix->SetTextLineLayout( txtlayout );
const RPointerArray<CVirtualKey>& keys = iVirtualSctpadFix->KeyArray();
RArray<TRect> rects;
--- a/textinput/peninputfingerhwrar/data/peninputfingerhwrarwnd.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/data/peninputfingerhwrarwnd.rss Tue May 25 13:03:44 2010 +0300
@@ -446,20 +446,20 @@
imgmajorskinid=EAknsMajorGeneric;
- nactive=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter;
- nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask;
+ nactive=EMbmPeninputfingerhwrarQgn_indi_input_enter;
+ nactivemsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask;
- nactivep=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter;
- nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask;
+ nactivep=EMbmPeninputfingerhwrarQgn_indi_input_enter;
+ nactivepmsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask;
- active=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter;
- activemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask;
+ active=EMbmPeninputfingerhwrarQgn_indi_input_enter;
+ activemsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask;
- activep=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter;
- activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask;
+ activep=EMbmPeninputfingerhwrarQgn_indi_input_enter;
+ activepmsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask;
- disable=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter;
- disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_arabic_enter_mask;
+ disable=EMbmPeninputfingerhwrarQgn_indi_input_enter;
+ disablemsk=EMbmPeninputfingerhwrarQgn_indi_input_enter_mask;
}
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_arabic_backspace.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
-<defs>
-</defs>
-<polygon fill="none" points="22,22 2,22 2,1.999 22,1.999 "/>
-<rect fill="none" width="24" height="24"/>
-<polygon points="15.908,15.528 15.908,13.102 2,13.102 2,10.749 15.908,10.749 15.908,8.474 22,12.001 "/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_arabic_enter.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="24" height="24"/>
-<polygon fill="none" points="22,22.002 2,22.002 2,1.999 22,1.999 "/>
-<polygon points="16.014,15.654 16.014,18.033 22,14.566 16.014,11.104 16.014,13.342 4.165,13.342 4.165,5.965 2,5.965 2,15.654 "/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_close.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="24" height="24"/>
-<polygon fill="none" points="22,22.001 2,22.001 2,2 22,2 "/>
-<polygon fill="#28B304" points="18.383,2.377 10.146,15.546 3.887,9.787 2,12.324 12.157,21.625 22,4.679 "/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_1_2.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="48px" height="24px" viewBox="0 0 48 24" enable-background="new 0 0 48 24" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="48" height="24"/>
-<polygon points="41.865,7.944 46,12 41.865,16.057 "/>
-<path d="M35.072,5.766l-0.367,0.021c-0.09,0.753-0.221,1.273-0.393,1.56c-0.303,0.527-0.855,0.792-1.646,0.792
- c-0.752,0-1.465-0.296-2.139-0.887c-0.371-0.322-0.791-0.818-1.27-1.488l-0.691,2.11c0.932,1.151,1.629,2.159,2.096,3.027
- c0.465,0.864,0.871,1.882,1.211,3.045c0.178,0.598,0.537,2.025,1.078,4.291h0.314c0-0.043,0.006-0.307,0.021-0.805
- c0.016-0.49,0.023-0.846,0.023-1.063c0-1.246-0.051-2.238-0.15-2.982c-0.1-0.739-0.246-1.384-0.436-1.939
- c-0.113-0.329-0.307-0.773-0.576-1.331c0.398,0.055,0.645,0.082,0.736,0.082c0.738,0,1.311-0.252,1.717-0.758
- c0.369-0.463,0.555-1.078,0.555-1.852c0-0.316-0.006-0.64-0.021-0.965C35.119,6.299,35.098,6.012,35.072,5.766z"/>
-<path d="M16.327,10.237c-0.25-0.898-0.615-1.748-1.097-2.555C14.89,7.119,14.439,6.5,13.878,5.834l-1.036,2.277
- c0.527,0.631,0.934,1.17,1.218,1.617c0.564,0.881,1.005,1.821,1.325,2.824c0.414,1.288,0.62,2.67,0.62,4.153
- c-0.029,0.809-0.044,1.293-0.044,1.459h0.365c0.178-1.26,0.277-1.992,0.299-2.195c0.099-0.832,0.149-1.564,0.149-2.193
- C16.775,12.479,16.626,11.301,16.327,10.237z"/>
-<path d="M20.211,18.526l5.023-13.053h1.225l-5.042,13.053H20.211z"/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_1_3.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="48px" height="24px" viewBox="0 0 48 24" enable-background="new 0 0 48 24" xml:space="preserve">
-<defs>
-</defs>
-<path d="M37.436,5.763H37.07c-0.144,1.169-0.584,1.751-1.328,1.751c-0.369,0-0.648-0.128-0.847-0.391
- c-0.201-0.258-0.326-0.712-0.384-1.36h-0.365c-0.115,0.648-0.316,1.145-0.609,1.498c-0.341,0.408-0.813,0.612-1.42,0.612
- c-0.581,0-1.111-0.171-1.589-0.512c-0.427-0.305-0.825-0.759-1.194-1.358l-0.768,2.494c0.93,1.35,1.576,2.376,1.946,3.082
- c0.481,0.933,0.822,1.889,1.021,2.872c0.197,0.987,0.299,2.248,0.299,3.786h0.438c0.171-1.069,0.275-1.81,0.316-2.218
- c0.037-0.411,0.056-0.834,0.056-1.276c0-0.789-0.056-1.465-0.166-2.021c-0.111-0.561-0.271-1.087-0.478-1.587
- c-0.116-0.271-0.307-0.664-0.57-1.176c0.521,0,0.967-0.098,1.338-0.298c0.373-0.201,0.678-0.5,0.922-0.896
- c0.143,0.26,0.363,0.451,0.664,0.576c0.3,0.128,0.653,0.188,1.062,0.188c0.705,0,1.23-0.231,1.568-0.694
- c0.339-0.463,0.509-1.133,0.509-2.01c0-0.042-0.011-0.192-0.027-0.448C37.444,6.122,37.436,5.918,37.436,5.763z"/>
-<rect fill="none" width="48" height="24"/>
-<polygon points="41.866,7.944 46,12 41.866,16.057 "/>
-<path d="M16.327,10.237c-0.25-0.898-0.615-1.748-1.097-2.555C14.89,7.119,14.439,6.5,13.878,5.834l-1.036,2.277
- c0.527,0.631,0.934,1.17,1.218,1.617c0.564,0.881,1.005,1.821,1.325,2.824c0.414,1.288,0.62,2.67,0.62,4.153
- c-0.029,0.808-0.044,1.292-0.044,1.459h0.365c0.178-1.261,0.277-1.992,0.299-2.196c0.099-0.831,0.149-1.564,0.149-2.192
- C16.775,12.479,16.626,11.301,16.327,10.237z"/>
-<path d="M20.211,18.526l5.023-13.054h1.225l-5.042,13.054H20.211z"/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_2_2.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="48px" height="24px" viewBox="0 0 48 24" enable-background="new 0 0 48 24" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="48" height="24"/>
-<polygon points="6.135,7.944 2,12 6.135,16.056 "/>
-<path d="M35.072,5.766l-0.367,0.021c-0.09,0.753-0.221,1.273-0.393,1.56c-0.303,0.527-0.855,0.792-1.646,0.792
- c-0.752,0-1.465-0.296-2.139-0.887c-0.371-0.322-0.791-0.818-1.27-1.488l-0.691,2.11c0.932,1.151,1.629,2.159,2.096,3.027
- c0.465,0.864,0.871,1.882,1.211,3.046c0.178,0.596,0.537,2.025,1.078,4.291h0.314c0-0.043,0.006-0.309,0.021-0.805
- c0.016-0.49,0.023-0.848,0.023-1.063c0-1.246-0.051-2.238-0.15-2.982c-0.1-0.74-0.246-1.385-0.436-1.94
- c-0.113-0.329-0.307-0.773-0.576-1.331c0.398,0.055,0.645,0.082,0.736,0.082c0.738,0,1.311-0.252,1.717-0.758
- c0.369-0.463,0.555-1.078,0.555-1.852c0-0.316-0.006-0.64-0.021-0.965C35.119,6.299,35.098,6.012,35.072,5.766z"/>
-<path d="M20.211,18.527l5.023-13.054h1.225l-5.042,13.054H20.211z"/>
-<path d="M19.348,5.766l-0.366,0.021c-0.091,0.753-0.222,1.273-0.393,1.56c-0.304,0.527-0.856,0.792-1.647,0.792
- c-0.752,0-1.465-0.296-2.138-0.887c-0.371-0.322-0.792-0.818-1.269-1.488l-0.692,2.11c0.932,1.151,1.629,2.159,2.095,3.027
- c0.466,0.864,0.871,1.882,1.212,3.046c0.177,0.596,0.536,2.025,1.077,4.291h0.315c0-0.043,0.006-0.309,0.022-0.805
- c0.014-0.49,0.023-0.848,0.023-1.063c0-1.246-0.052-2.238-0.151-2.982c-0.099-0.74-0.246-1.385-0.437-1.94
- c-0.113-0.329-0.305-0.773-0.576-1.331c0.399,0.055,0.646,0.082,0.737,0.082c0.739,0,1.311-0.252,1.716-0.758
- c0.37-0.463,0.556-1.078,0.556-1.852c0-0.316-0.006-0.64-0.022-0.965C19.395,6.299,19.375,6.012,19.348,5.766z"/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_2_3.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="48px" height="24px" viewBox="0 0 48 24" enable-background="new 0 0 48 24" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="48" height="24"/>
-<path d="M37.436,5.763h-0.365c-0.145,1.169-0.584,1.751-1.328,1.751c-0.369,0-0.648-0.128-0.848-0.39
- c-0.201-0.258-0.326-0.712-0.383-1.361h-0.365c-0.115,0.649-0.316,1.145-0.609,1.498c-0.342,0.408-0.813,0.612-1.42,0.612
- c-0.582,0-1.111-0.17-1.59-0.512c-0.426-0.305-0.824-0.758-1.193-1.358l-0.768,2.494c0.93,1.349,1.576,2.375,1.945,3.082
- c0.482,0.932,0.822,1.889,1.021,2.872c0.197,0.987,0.299,2.247,0.299,3.786h0.438c0.17-1.07,0.275-1.81,0.316-2.218
- c0.037-0.411,0.055-0.835,0.055-1.276c0-0.789-0.055-1.465-0.166-2.021c-0.111-0.561-0.27-1.087-0.477-1.587
- c-0.117-0.271-0.307-0.665-0.57-1.176c0.521,0,0.967-0.097,1.338-0.298c0.373-0.201,0.678-0.5,0.922-0.896
- c0.143,0.259,0.363,0.451,0.664,0.576c0.299,0.127,0.652,0.188,1.061,0.188c0.705,0,1.23-0.231,1.568-0.694
- c0.34-0.463,0.51-1.133,0.51-2.01c0-0.042-0.012-0.192-0.027-0.448C37.444,6.122,37.436,5.918,37.436,5.763z"/>
-<polygon points="41.866,7.944 46,12 41.866,16.056 "/>
-<polygon points="6.135,7.944 2,12 6.135,16.056 "/>
-<path d="M20.211,18.527l5.023-13.054h1.225l-5.042,13.054H20.211z"/>
-<path d="M17.889,5.693l-0.366,0.021c-0.091,0.753-0.222,1.273-0.393,1.56c-0.304,0.527-0.856,0.792-1.647,0.792
- c-0.752,0-1.465-0.296-2.138-0.887c-0.371-0.322-0.792-0.818-1.269-1.488l-0.692,2.11c0.932,1.151,1.629,2.159,2.095,3.027
- c0.466,0.864,0.871,1.882,1.212,3.046c0.177,0.596,0.536,2.025,1.077,4.291h0.315c0-0.043,0.006-0.309,0.022-0.805
- c0.014-0.49,0.023-0.848,0.023-1.063c0-1.246-0.052-2.238-0.151-2.982c-0.099-0.74-0.246-1.385-0.437-1.94
- c-0.113-0.329-0.305-0.773-0.576-1.331c0.399,0.055,0.646,0.082,0.737,0.082c0.739,0,1.311-0.252,1.716-0.758
- c0.37-0.463,0.556-1.078,0.556-1.852c0-0.316-0.006-0.64-0.022-0.965C17.936,6.227,17.916,5.939,17.889,5.693z"/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_page_3_3.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="48px" height="24px" viewBox="0 0 48 24" enable-background="new 0 0 48 24" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="48" height="24"/>
-<polygon points="6.135,7.944 2,12 6.135,16.057 "/>
-<path d="M20.211,18.526l5.023-13.054h1.225l-5.042,13.054H20.211z"/>
-<path d="M20.253,5.69h-0.366c-0.143,1.169-0.583,1.751-1.328,1.751c-0.369,0-0.649-0.128-0.847-0.39
- c-0.201-0.258-0.326-0.712-0.384-1.361h-0.365c-0.114,0.649-0.316,1.145-0.609,1.498c-0.341,0.408-0.813,0.612-1.419,0.612
- c-0.582,0-1.112-0.17-1.589-0.512c-0.427-0.305-0.826-0.758-1.195-1.358l-0.767,2.494c0.929,1.349,1.577,2.375,1.946,3.082
- c0.481,0.932,0.822,1.888,1.02,2.872c0.198,0.987,0.299,2.248,0.299,3.786h0.438c0.17-1.069,0.274-1.81,0.315-2.218
- c0.038-0.41,0.056-0.834,0.056-1.275c0-0.789-0.055-1.465-0.166-2.022c-0.111-0.561-0.27-1.087-0.478-1.587
- c-0.116-0.271-0.307-0.665-0.57-1.176c0.521,0,0.966-0.097,1.338-0.298c0.372-0.201,0.678-0.5,0.922-0.896
- c0.142,0.259,0.363,0.451,0.664,0.576c0.3,0.127,0.653,0.188,1.062,0.188c0.705,0,1.23-0.231,1.568-0.694
- c0.338-0.463,0.508-1.133,0.508-2.01c0-0.042-0.01-0.192-0.027-0.448C20.262,6.05,20.253,5.846,20.253,5.69z"/>
-<path d="M37.436,5.763H37.07c-0.144,1.169-0.584,1.751-1.328,1.751c-0.369,0-0.648-0.128-0.847-0.39
- c-0.201-0.258-0.326-0.712-0.384-1.361h-0.365c-0.115,0.649-0.316,1.145-0.609,1.498c-0.341,0.408-0.813,0.612-1.42,0.612
- c-0.581,0-1.111-0.17-1.589-0.512c-0.427-0.305-0.825-0.758-1.194-1.358l-0.768,2.494c0.93,1.349,1.576,2.375,1.946,3.082
- c0.481,0.932,0.822,1.888,1.021,2.872c0.197,0.987,0.299,2.248,0.299,3.786h0.438c0.171-1.069,0.275-1.81,0.316-2.218
- c0.037-0.41,0.056-0.834,0.056-1.275c0-0.789-0.056-1.465-0.166-2.022c-0.111-0.561-0.271-1.087-0.478-1.587
- c-0.116-0.271-0.307-0.665-0.57-1.176c0.521,0,0.967-0.097,1.338-0.298c0.373-0.201,0.678-0.5,0.922-0.896
- c0.143,0.259,0.363,0.451,0.664,0.576c0.3,0.127,0.653,0.188,1.062,0.188c0.705,0,1.23-0.231,1.568-0.694
- c0.339-0.463,0.509-1.133,0.509-2.01c0-0.042-0.011-0.192-0.027-0.448C37.444,6.122,37.436,5.918,37.436,5.763z"/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_symbol_table.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
-<defs>
-</defs>
-<rect fill="none" width="24" height="24"/>
-<polygon fill="none" points="22,22 2,22 2,2 22,2 "/>
-<path d="M7.408,9.259h1.547c-0.27,1.672-0.404,2.826-0.404,3.463c0,0.395,0.037,0.692,0.111,0.891s0.256,0.299,0.545,0.299
- c0.34,0,0.613-0.193,0.82-0.578c0.207-0.384,0.311-0.911,0.311-1.579c0-1.207-0.291-2.14-0.873-2.798S8.055,7.97,6.98,7.97
- c-1.133,0-2.053,0.347-2.76,1.04S3.16,10.666,3.16,11.896c0,1.375,0.327,2.405,0.981,3.09s1.636,1.029,2.944,1.029
- c0.754,0,1.537-0.145,2.35-0.434v0.938c-0.309,0.121-0.696,0.225-1.163,0.311s-0.882,0.129-1.245,0.129
- c-1.539,0-2.762-0.434-3.668-1.299S2,13.561,2,11.955c0-1.008,0.209-1.882,0.627-2.622s1.01-1.308,1.775-1.702
- s1.615-0.592,2.549-0.592c1.43,0,2.531,0.407,3.305,1.222s1.16,1.958,1.16,3.431c0,0.969-0.216,1.721-0.647,2.258
- s-1.011,0.807-1.737,0.807c-0.348,0-0.648-0.104-0.902-0.311s-0.422-0.496-0.504-0.867c-0.367,0.785-0.891,1.178-1.57,1.178
- c-0.484,0-0.882-0.191-1.192-0.572s-0.466-0.906-0.466-1.579c0-1.047,0.273-1.866,0.82-2.458S6.494,9.259,7.408,9.259z
- M7.408,11.896l0.217-1.775H7.232c-0.473,0-0.865,0.212-1.178,0.636s-0.469,1.009-0.469,1.755c0,0.512,0.063,0.874,0.19,1.084
- s0.327,0.316,0.601,0.316C6.9,13.912,7.244,13.24,7.408,11.896z"/>
-<path d="M20.403,16.689c-0.182-0.182-0.272-0.402-0.272-0.66s0.091-0.475,0.272-0.656c0.182-0.178,0.401-0.27,0.659-0.27
- c0.262,0,0.483,0.092,0.665,0.27C21.909,15.555,22,15.771,22,16.029c0,0.256-0.092,0.475-0.275,0.656
- c-0.184,0.184-0.404,0.275-0.662,0.275S20.585,16.871,20.403,16.689z"/>
-<path d="M15.698,9.057c-0.445,0-0.779,0.099-1.002,0.293c-0.223,0.196-0.334,0.489-0.334,0.879c0,0.188,0.046,0.38,0.138,0.574
- c0.092,0.196,0.331,0.48,0.718,0.855c0.367,0.349,0.639,0.667,0.814,0.955c0.176,0.29,0.264,0.632,0.264,1.025v0.615h-1.488v-0.533
- c0-0.236-0.062-0.447-0.188-0.629c-0.125-0.181-0.372-0.456-0.744-0.824c-0.507-0.507-0.829-0.914-0.964-1.221
- s-0.202-0.607-0.202-0.9c0-0.694,0.233-1.22,0.7-1.576c0.467-0.354,1.143-0.533,2.024-0.533c0.531,0,1.135,0.093,1.811,0.275v1.008
- C16.647,9.145,16.132,9.057,15.698,9.057z M14.898,16.689c-0.182-0.182-0.272-0.402-0.272-0.66s0.091-0.475,0.27-0.656
- c0.18-0.178,0.398-0.27,0.656-0.27s0.478,0.092,0.656,0.27c0.18,0.182,0.27,0.398,0.27,0.656s-0.09,0.479-0.27,0.66
- c-0.179,0.182-0.398,0.271-0.656,0.271C15.298,16.961,15.08,16.871,14.898,16.689z"/>
-</svg>
--- a/textinput/peninputfingerhwrar/data/qgn_indi_input_hwr_arabic_writing_area.svg Tue May 11 16:31:42 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
-<defs>
-</defs>
-<polygon fill="none" points="22,22.001 2,22.001 2,1.999 22,1.999 "/>
-<rect fill="none" width="24" height="24"/>
-<path fill="#FFFDFD" d="M20.756,21.087l-2.26-10.469c-0.033-0.15-0.115-0.281-0.23-0.373c0,0-6.611-7.95-6.68-7.998
- c-0.116-0.083-0.255-0.129-0.395-0.129c-0.068,0-0.137,0.011-0.202,0.034c0,0-3.022,1.072-3.081,1.12L5.072,5.577
- C5.016,5.624,3.326,8.34,3.326,8.34C3.262,8.444,3.229,8.563,3.229,8.685c0,0.155,0.055,0.328,0.156,0.447l6.976,8.255
- c0.101,0.118,0.236,0.195,0.384,0.222l9.094,4.213c0.088,0.041,0.184,0.061,0.277,0.061c0.146,0,0.291-0.049,0.41-0.145
- C20.719,21.582,20.809,21.33,20.756,21.087z"/>
-<path fill-opacity="0.5" d="M16.607,19.548l3.508,1.677l-0.943-4.046C19.172,17.177,18.579,18.808,16.607,19.548z"/>
-<path fill="#E5E5E5" d="M16.607,19.548c1.972-0.74,2.564-2.371,2.564-2.369l0.943,4.046l-2.262-10.468l-1.233,3.125l-2.618,2.268
- l-3.141,0.79l9.254,4.285L16.607,19.548z"/>
-<polygon fill="#E5E5E5" points="6.465,7.337 9.238,5.026 11.206,2.772 8.322,3.781 5.486,6.087 3.885,8.685 6.452,7.323 "/>
-<polygon fill="#CCCCCC" points="11.206,2.793 9.238,5.047 16.62,13.902 17.854,10.777 "/>
-<polygon fill-opacity="0.3" points="9.225,5.036 6.451,7.348 13.988,16.159 16.607,13.892 "/>
-<polygon fill-opacity="0.5" points="6.465,7.36 6.452,7.347 3.885,8.708 10.861,16.962 14.002,16.173 "/>
-</svg>
--- a/textinput/peninputfingerhwrar/group/bld.inf Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/group/bld.inf Tue May 25 13:03:44 2010 +0300
@@ -21,17 +21,6 @@
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
peninputfingerhwrar.mmp
--- a/textinput/peninputfingerhwrar/group/iconlist.txt Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/group/iconlist.txt Tue May 25 13:03:44 2010 +0300
@@ -64,4 +64,4 @@
-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
+-c8,8 qgn_indi_input_enter.svg
\ No newline at end of file
--- a/textinput/peninputfingerhwrar/group/peninputfingerhwrar.mmp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/group/peninputfingerhwrar.mmp Tue May 25 13:03:44 2010 +0300
@@ -42,6 +42,7 @@
SOURCE peninputfingerhwrarindicator.cpp
SOURCE hbufcarrayar.cpp
SOURCE peninputfingerhwrarwritingwnd.cpp
+SOURCE peninputfingerhwrarnumsymboltable.cpp
USERINCLUDE ../inc
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrar.hrh Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrar.hrh Tue May 25 13:03:44 2010 +0300
@@ -19,7 +19,7 @@
#ifndef PENINPUTFINGERHWRAR_HRH
#define PENINPUTFINGERHWRAR_HRH
-#include <aknfepglobalenums.h>
+#include <AknFepGlobalEnums.h>
/**
* special scancode as virtual key mark.
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarcontrolid.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarcontrolid.h Tue May 25 13:03:44 2010 +0300
@@ -47,16 +47,16 @@
EHwrCtrlIdArrowLeft,
EHwrCtrlIdArrowRight,
- EHwrCtrlIdArrowUp,
- EHwrCtrlIdArrowDown,
+ EHwrCtrlIdBtnEnter,
+ EHwrCtrlIdBtnSpace,
- EHwrCtrlIdBtnEnter,
- EHwrCtrlIdBtnSpace,
EHwrCtrlId3Page1Btn,
EHwrCtrlId3Page2Btn,
EHwrCtrlId3Page3Btn,
EHwrCtrlId2Page1Btn,
- EHwrCtrlId2Page2Btn
+ EHwrCtrlId2Page2Btn,
+ EHwrCtrlIdNumSymbolTableVkb,
+ EHwrCtrlIdNumSymbolTableVkbGroup
};
#endif //PENINPUTFINGERHWRARCONTROLID_H
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrardatastore.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrardatastore.h Tue May 25 13:03:44 2010 +0300
@@ -23,10 +23,10 @@
#include <e32def.h>
#include <w32std.h>
#include <eikon.hrh>
-#include <aknutils.h>
+#include <AknUtils.h>
//FEP INCLUDES
-#include <ptiengine.h>
+#include <PtiEngine.h>
#include <peninputpluginutils.h>
@@ -311,22 +311,6 @@
*/
TBool Highlight();
- /**
- * Remove duplicate candidate from predictive candidate list
- *
- * @since Symbian TB9.2
- * @param aSrc The punctuation candidate list
- * @param aTgt The predicative candidate list
- * @param aSrcStartIdx
- * @param aTgtStartIdx
- * @return last overlap index
- */
- TInt RemoveDuplicateCand(const RPointerArray<HBufC>& aSrc,
- RPointerArray<HBufC>& aTgt,
- TInt aSrcStartIdx,
- TInt aTgtStartIdx);
-
-
/**
* Get top guide line from hwr engine
*
@@ -373,6 +357,24 @@
* @return ETrue if it is, EFalse otherwise
*/
TBool IsArabicNumber(TUint16 aChar);
+
+ /**
+ * Check if it is in number only mode.
+ *
+ * @since s60 v5.2
+ * @param None
+ * @return ETrue if it is, EFalse otherwise
+ */
+ TBool IsNumberOnlyMode();
+
+ /**
+ * check if it is native number mode.
+ *
+ * @since s60 v5.2
+ * @param None
+ * @return ETrue if it is, EFalse otherwise
+ */
+ TBool IsNativeNumMode();
private:
/**
@@ -489,6 +491,11 @@
CRepository* iRepositoryFep;
/**
+ * repository object.
+ */
+ CRepository* iCommonEngineRepository;
+
+ /**
* The engine (Own);
*/
CPeninputFingerHwrArEngine* iHwrEngine;
@@ -553,6 +560,11 @@
* First candidate type.
*/
TFirstCandidateType iFirstCandidateType;
+
+ /**
+ * the number mode flag
+ */
+ TBool iIsNativeNumMode;
};
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarengine.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarengine.h Tue May 25 13:03:44 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32cmn.h>
#include <eikon.hrh>
-#include <ptiengine.h>
+#include <PtiEngine.h>
class CPeninputFingerHwrArDataStore;
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlafmanager.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlafmanager.h Tue May 25 13:03:44 2010 +0300
@@ -182,6 +182,21 @@
TInt VirtualSctpadColCount();
/**
+ * get row count of virtual number sctpad.
+ *
+ * @since Symbian TB9.2
+ * @return row count of virtual number sctpad.
+ */
+ TInt VirtualNumSctpadRowCount();
+
+ /**
+ * get column count of virtual number sctpad.
+ *
+ * @since Symbian TB9.2
+ * @return column count of virtual number sctpad.
+ */
+ TInt VirtualNumSctpadColCount();
+ /**
* get cell size of virtual sctpad.
*
* @since Symbian TB9.2
@@ -199,6 +214,15 @@
void GetVirtualKeyRects( RArray<TRect>& aArrayRects );
/**
+ * get cell rect of virtual sctpad.
+ *
+ * @since Symbian TB9.2
+ * @param aArrayRects a TRect array to receive cell rect.
+ * @return none.
+ */
+ void GetNumVirtualKeyRects( RArray<TRect>& aArrayRects );
+
+ /**
* get text layout of virtual sctpad.
*
* @since Symbian TB9.2
@@ -207,6 +231,14 @@
TAknTextLineLayout SctpadKeyTxtLayout();
/**
+ * get text layout of virtual numpad.
+ *
+ * @since Symbian TB9.2
+ * @return a TAknTextLineLayout object to layout cell text.
+ */
+ TAknTextLineLayout NumpadKeyTxtLayout();
+
+ /**
* get preview bubble rect.
*
* @since Symbian TB9.2
@@ -323,6 +355,10 @@
* Get virtual key pad rect
*/
TRect GetVirtualKeyRect();
+ /**
+ * Get virtual number key pad rect
+ */
+ TRect GetVirtualNumKeyRect();
private:
/**
@@ -368,7 +404,12 @@
*/
void RetrieveLafDataForSymbolTable();
- /**
+ /**
+ * Retrieve the laf data for symbol table
+ */
+ void RetrieveLafDataForNumSymbolTable();
+
+ /**
* Retrieve the landscape laf data for symbol table
*/
void RetrieveLandscapeLafDataForSymbolTable();
@@ -379,6 +420,16 @@
void RetrievePortraitLafDataForSymbolTable();
/**
+ * Retrieve the landscape laf data for number symbol table
+ */
+ void RetrieveLandscapeLafDataForNumSymbolTable();
+
+ /**
+ * Retrieve the portrait laf data for number symbol table
+ */
+ void RetrievePortraitLafDataForNumSymbolTable();
+
+ /**
* Retrieve the laf data for HWR writing box
*/
void RetrieveLafDataForHwrBox();
@@ -402,8 +453,8 @@
TRect iRectWritingBox;
TRect iRectNumpad;
TRect iRectSctpad;
- TRect iRectSpase;
- TRect iRectEnter;
+ TRect iRectBtnSpace;
+ TRect iRectBtnEnter;
TRect iIndicatorRect;
/**
@@ -418,6 +469,7 @@
TRect iRectBtnArrowDown;
TRect iRectBtnOption;
TRect iRectBtnSctPage;
+ TRect iRectBtnNumType;
TSize iArrowPaddingSize;
TSize iSizeBtnPadding;
@@ -457,7 +509,13 @@
* virtual key rects array
*/
RArray<TRect> iSCTrectArray;
-
+ // Number symbol table laf data
+ TRect iRectOfNumSymbolTable;
+ TInt iNumSctpadRowCount;
+ TInt iNumSctpadColCount;
+ TSize iSizeNumSctpadCell;
+// RArray<TRect> iNumSymBtnRectArray;
+ RArray<TRect> iNumSCTrectArray;
/**
* Preview bubble
*/
@@ -469,4 +527,4 @@
#endif // C_PENINPUTFINGERHWRARLAFMANAGER_H
-// End Of File
\ No newline at end of file
+// End Of File
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlayout.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlayout.h Tue May 25 13:03:44 2010 +0300
@@ -30,6 +30,7 @@
class CPeninputFingerHwrArDataStore;
class CRepository;
class CPeninputFingerHwrArWnd;
+class CPeninputFingerHwrArCallBack;
// class DECLARATIONS
@@ -155,7 +156,13 @@
* @return none
*/
void OnDeActivate();
-
+ void CallBackL();
+
+ /**
+ * Check if the First string will be allowed to submitted directly to editor without selection
+ */
+ TBool IsAllowedToSubmitDefaultCandiate();
+
public:
//from MEventObserver;
/**
@@ -453,6 +460,21 @@
*/
void ChangeCurStateToStandby();
+ /**
+ * handler of NumMapping changed event.
+ *
+ * @since S60 5.0
+ * @return none
+ */
+ void OnNumMappingChangedL();
+ /**
+ * revert special characters direction before sending to editor.
+ *
+ * @since S60 v5.2
+ * @return none
+ */
+ TBool RevertSymbolDirection(TInt aInChar, TInt & aOutChar);
+
private:
/**
@@ -489,12 +511,24 @@
*/
CRepository* iRepositorySetting;
+ /**
+ * repository object.
+ */
+// CRepository* iCommonEngineRepository;
+
/**
* Check if the stroke of drawing the character on the
* HWR box is started
*/
TBool iIsStrokeOfDrawingCharacerStarted;
+ CPeninputFingerHwrArCallBack* iCallBack;
+
+ /**
+ * Check if the editor is MFNE
+ */
+ TBool iIsEditorMFNE;
+
/**
* Last overlap index.
*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarnumsymboltable.h Tue May 25 13:03:44 2010 +0300
@@ -0,0 +1,269 @@
+/*
+* Copyright (c) 2009-2010 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 of number mode symbol table.
+*
+*/
+
+
+#ifndef C_PENINPUTARABICFINGERHWRNUMSYMBOLTABLE_H
+#define C_PENINPUTARABICFINGERHWRNUMSYMBOLTABLE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <e32cmn.h>
+
+#include <peninputlayoutctrlgroup.h>
+
+// FORWARD DECLARATIONS
+class CAknFepCtrlEventButton;
+class CVirtualKeyboard;
+
+// CLASS DECLARATION
+
+/**
+ * class CPeninputArabicFingerHwrNumSymbolTable.
+ *
+ * The symbol table control for arabic input
+ *
+ * @lib peninputfingerhwrar.lib
+ * @since Symbian TB9.2
+ */
+class CPeninputArabicFingerHwrNumSymbolTable : public CControlGroup
+ {
+public:
+ /**
+ * Symbian constructor
+ *
+ * @since Symbian TB9.2
+ * @param aUiLayout The layout
+ * @param aId The control id
+ * @return pointer of created object.
+ */
+ static CPeninputArabicFingerHwrNumSymbolTable* NewL( CFepUiLayout* aUiLayout, TInt aId );
+
+ /**
+ * Symbian constructor
+ *
+ * @since Symbian TB9.2
+ * @param aUiLayout The layout
+ * @param aId The control id
+ * @return pointer of created object.
+ */
+ static CPeninputArabicFingerHwrNumSymbolTable* NewLC( CFepUiLayout* aUiLayout, TInt aId );
+
+ /**
+ * standard c++ destructor.
+ *
+ * @since Symbian TB9.2
+ */
+ ~CPeninputArabicFingerHwrNumSymbolTable();
+
+public:
+ /**
+ * open the symbol table.
+ *
+ * @since Symbian TB9.2
+ *
+ * @return None
+ */
+ void OpenSymbolTable();
+
+ /**
+ * cancel the popup.
+ *
+ * @since Symbian TB9.2
+ * @return None
+ *
+ */
+ void CloseSymbolTable();
+
+ /**
+ * get visibility of popup.
+ * @since Symbian TB9.2
+ * @return ETrue if the popup is visible
+ */
+ TBool IsPopup();
+
+ /**
+ * sizechanged
+ *
+ */
+ void SizeChanged(const TRect aVirtualKeypadRect, const RArray<TRect> aBtnRects,
+ const TInt aKeypadRow, const TInt aKeypadCol, TBool aIsLandscape = ETrue);
+
+ /**
+ * Load VKB image
+ *
+ */
+ void LoadVkbKeyImageL(TInt aResId, const TSize& aKeySize);
+
+ /**
+ * Load virutal Key and set key rects.
+ *
+ */
+ void LoadVirtualKeypadKeyL(const TInt aResId, const RArray<TRect>& aCellRects);
+
+ /**
+ * Return keypad control
+ *
+ */
+ inline CVirtualKeyboard* KeyPad(){return iNumKeypad;}
+
+ /**
+ * Navigate page
+ *
+ */
+ void UpdateNumSymbolTable(TInt aNumSctType = ENumSCTLatin);
+
+ /**
+ * Construct from resource
+ * This funciton will be called when the resource has changed for example skin was changed
+ */
+ void ConstructFromResourceL();
+
+ /**
+ * accept editor's number mapping restriction.
+ *
+ * @since S60 v5.0
+ * @param aNumMapping a string contains numbers and related char. max length is 16.
+ * @return none
+ */
+ void SetNumericMapping( const TDesC& aNumMapping );
+
+ /*
+ * set arabic number mode.
+ * @since s60 v5.2
+ * @param aIsNativeNumMode a flag to indicate whether it is native number mode.
+ * @return none.
+ */
+ void SetNativeNumMode(const TBool aIsNativeNumMode);
+protected: //virtuals from CControlGroup (CFepUiBaseCtrl)
+
+ /**
+ * From CControlGroup
+ * Handle pointer down event
+ *
+ * @since Symbian TB9.2
+ * @param aPoint The point position relative the layout
+ * @return The control which handles the event.
+ */
+ CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
+
+ /**
+ * From CControlGroup
+ * Handle pointer up event
+ *
+ * @since Symbian TB9.2
+ * @param aPoint The point position relative the layout
+ * @return The control which handles the event.
+ */
+ CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
+
+ /**
+ * From CControlGroup
+ * Handle pointer move event
+ *
+ * @since S60 54.0
+ * @param aPoint The point position relative the layout
+ * @return The control which handles the event.
+ */
+ CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint);
+
+ /**
+ * C++ constructor
+ *
+ * @since Symbian TB9.2
+ * @param aFepUiLayout A Ui Layout environment (CFepUiLayout)
+ * @param aControlId Control id
+ * @return none.
+ */
+ CPeninputArabicFingerHwrNumSymbolTable(CFepUiLayout* aFepUiLayout, TInt aControlId);
+
+ /**
+ * Symbian second-phase constructor
+ *
+ * @since Symbian TB9.2
+ * @return None
+ */
+ void ConstructL();
+
+ /**
+ * create a virtual keypad
+ *
+ * @since Symbian TB9.2
+ * @return None
+ */
+ void CreateVirtualKeypadL();
+
+ /**
+ * create a new virtual key
+ *
+ */
+ CVirtualKey* CreateVkbKeyL(TResourceReader& aReader, const TRect aKeyRect);
+
+ /**
+ * update the virtal key
+ *
+ */
+ void UpdateVkbKeyL( CVirtualKey* aVirtualKey, TResourceReader& aReader,
+ const TRect aKeyRect );
+ void OnActivate();
+
+ /**
+ * Update the virtual key feedback
+ *
+ */
+ void UpdateAllVirtualKeysFeedback();
+
+ /**
+ * Draw group control
+ */
+ void Draw();
+
+ /**
+ * Load background from resource
+ *
+ */
+ void LoadBackgroundFromResourceL(const TInt aResId);
+
+ /*
+ * map latin number to arabic number.
+ */
+ TInt16 MapLatinNumAccordingToNumMode(TInt16 aUnicode);
+private:
+ /**
+ * multipage viritual keyboard
+ * not own.
+ */
+ CVirtualKeyboard* iNumKeypad;
+
+ /**
+ * visibility of popup list.
+ */
+ TBool iPopupVisible;
+
+ /**
+ * store the layout mode
+ */
+ TBool iIsLandscape;
+
+ TInt iCurrentNumSCTType;
+ /*
+ * Default number mode.
+ */
+ TBool iIsNativeNumMode;
+ };
+
+#endif // C_PENINPUTARABICFINGERHWRNUMSYMBOLTABLE_H
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarstoreconstants.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarstoreconstants.h Tue May 25 13:03:44 2010 +0300
@@ -71,7 +71,12 @@
EPagePosLastPage,
EPagePosFirstPage,
};
-
+
+enum TNumSCTType
+ {
+ ENumSCTLatin,
+ ENumSCTArabic
+ };
// the default end mark
const TInt KDefaultStrokeEndMarkX = -65536;
const TInt KDefaultStrokeEndMarkY = -65536;
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarsymboltable.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarsymboltable.h Tue May 25 13:03:44 2010 +0300
@@ -260,7 +260,7 @@
*
*/
void LoadBackgroundFromResourceL(const TInt aResId);
-
+
private:
/**
* multipage viritual keyboard
@@ -268,18 +268,6 @@
*/
CMultiPageVirtualKeyboard* iMutiPageKeypad;
- /**
- * Enter button.
- * not own.
- */
- CAknFepCtrlEventButton* iEnterBtn;
-
- /**
- * space button.
- * not own.
- */
- CAknFepCtrlEventButton* iSpaceBtn;
-
/**
* Sct page 0 selction button control.
* Not own.
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarwnd.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarwnd.h Tue May 25 13:03:44 2010 +0300
@@ -31,6 +31,7 @@
class CPeninputArabicFingerHwrSymbolTable;
class CPeninputArabicFingerHwrIndicator;
class CPeninputArabicFingerHwrWritingWnd;
+class CPeninputArabicFingerHwrNumSymbolTable;
/**
* class CPeninputFingerHwrArWnd.
@@ -240,7 +241,16 @@
* @return none
*/
void ShowSymbolPage( TInt aPageNo, TInt aPos );
-
+ /**
+ * accept editor's number mapping restriction.
+ *
+ * @since S60 v5.0
+ * @param aNumMapping a string contains numbers and related char. max length is 16.
+ * @return none
+ */
+ void SetNumericMapping( const TDesC& aNumMapping );
+
+
public: //child control access
/**
@@ -260,13 +270,13 @@
*/
CFepCtrlDropdownList* CandidateList();
- /**
- * retrieve the number candicate list control.
- *
- * @since Symbian TB9.2
- * @return pointer to candicate list
- */
- CFepCtrlDropdownList* NumCandidateList();
+// /**
+// * retrieve the number candicate list control.
+// *
+// * @since Symbian TB9.2
+// * @return pointer to candicate list
+// */
+// CFepCtrlDropdownList* NumCandidateList();
/**
* dim arrow buttons
@@ -327,7 +337,8 @@
*/
TBool IsSymbolTableShowingUp();
- /**
+
+ /**
* Check if the candidate list was opened up
*
* @since Symbian TB9.2
@@ -356,7 +367,21 @@
* Handle window open
*/
void HandleWindowOpenCommandL();
-
+ /*
+ * set arabic number mode.
+ * @since s60 v5.2
+ * @param aIsNativeNumMode a flag to indicate whether it is native number mode.
+ * @return none.
+ */
+ void SetNativeNumMode(const TBool aIsNativeNumMode);
+
+ /*
+ * set icf language.
+ * @since s60 v5.2
+ * @param aLang language id.
+ * @return none.
+ */
+ void SetIcfLanguage( TInt aLang );
protected:
/**
@@ -395,13 +420,13 @@
* @return None
*/
void CreateCandidateListL();
- /**
- * create number candidate lists.
- *
- * @since Symbian TB9.2
- * @return None
- */
- void CreateNumCandidateListL();
+// /**
+// * create number candidate lists.
+// *
+// * @since Symbian TB9.2
+// * @return None
+// */
+// void CreateNumCandidateListL();
/**
* create writing box.
@@ -428,6 +453,14 @@
void CreateSymbolTableL();
/**
+ * create virtual number modesct pad.
+ *
+ * @since Symbian TB9.2
+ * @return None
+ */
+ void CreateNumSymbolTableL();
+
+ /**
* EventButton creation helper.
*
* @since Symbian TB9.2
@@ -464,6 +497,16 @@
void LoadSymbolVirtualKeysL( const TInt aResId, const RArray<TRect>& aCellRects );
/**
+ * load virtual number mode sct keys.
+ *
+ * @since Symbian TB9.2
+ * @param aResId resource id.
+ * @param aCellRects rects of virtual keys.
+ * @return None
+ */
+ void LoadNumSymbolVirtualKeysL( const TInt aResId, const RArray<TRect>& aCellRects );
+
+ /**
* relayout full ui, reset all controls position.
*
* @since Symbian TB9.2
@@ -550,7 +593,7 @@
* @return None
*/
void DrawGuideLine();
-
+
private: // datas
/**
@@ -568,11 +611,6 @@
/**
- * number Candidate list control.
- * Not own.
- */
- CFepCtrlDropdownList* iNumCandidateList;
- /**
* Writing box control.
* Not own.
*/
@@ -630,12 +668,28 @@
* Not own.
*/
CAknFepCtrlEventButton* iSymbolTableBtn;
+ /**
+ * enter button control.
+ * Not own.
+ */
+ CAknFepCtrlEventButton* iEnterBtn;
+ /**
+ * space button control.
+ * Not own.
+ */
+ CAknFepCtrlEventButton* iSpaceBtn;
/**
* Symbol table control.
* Not own.
*/
CPeninputArabicFingerHwrSymbolTable* iSymbolTable;
+
+ /**
+ * Number mode Symbol table control.
+ * Not own.
+ */
+ CPeninputArabicFingerHwrNumSymbolTable* iNumSymbolTable;
/**
* L&F manager.
--- a/textinput/peninputfingerhwrar/rom/peninputfingerhwrar_variant.iby Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/rom/peninputfingerhwrar_variant.iby Tue May 25 13:03:44 2010 +0300
@@ -24,7 +24,7 @@
#ifdef __PEN_SUPPORT
#ifdef FF_CAPACITIVE_DISPLAY
-#ifdef __HANDWRITING_RECOGNITION_INPUT
+#ifdef FF_ARABIC_HANDWRITING_RECOGNITION_INPUT
data = DATAZ_\RESOURCE_FILES_DIR\peninputfingerhwrarwnd.rsc RESOURCE_FILES_DIR\peninputfingerhwrarwnd.rsc
@@ -33,7 +33,7 @@
ECOM_PLUGIN(peninputfingerhwrar.dll, peninputfingerhwrar.rsc)
-#endif //__HANDWRITING_RECOGNITION_INPUT
+#endif //FF_ARABIC_HANDWRITING_RECOGNITION_INPUT
#endif //FF_CAPACITIVE_DISPLAY
#endif // __PEN_SUPPORT
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrardatastore.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrardatastore.cpp Tue May 25 13:03:44 2010 +0300
@@ -18,11 +18,12 @@
//SYSTEM INCLUDE
#include <centralrepository.h>
#include <settingsinternalcrkeys.h>
+#include <CommonEngineDomainCRKeys.h>
//FEP INCLUDE
#include <aknfeppeninputenums.h>
-#include <aknfepglobalenums.h>
-#include <aknfepinternalcrkeys.h>
+#include <AknFepGlobalEnums.h>
+#include <AknFepInternalCRKeys.h>
//USER INCLUDE
#include "peninputfingerhwrarlayout.h"
@@ -70,6 +71,7 @@
iKeyMappingStringList.Close();
delete iRepositoryFep;
+ delete iCommonEngineRepository;
// delete iTriggerStr;
delete iHwrEngine;
delete iUserDefinedResource;
@@ -449,49 +451,17 @@
return iIsHighlightCell;
}
-// -----------------------------------------------------------------------------
-// CPeninputFingerHwrArDataStore::RemoveDuplicateCand
-// -----------------------------------------------------------------------------
-//
-TInt CPeninputFingerHwrArDataStore::RemoveDuplicateCand(const RPointerArray<HBufC>& aSrc,
- RPointerArray<HBufC>& aTgt,
- TInt aSrcStartIdx,
- TInt aTgtStartIdx)
- {
- TInt lastOverlapIdx = KInvalidIndex;
-
- // on the assumption that if candidate overlap,
- // it is overlap only once
- TInt srccandcnt = aSrc.Count();
-
- for (TInt i = aSrcStartIdx; i < srccandcnt; i++)
- {
- for (TInt j = aTgtStartIdx; j < aTgt.Count(); j++)
- {
- if (aTgt[j]->Compare(*(aSrc[i])) == 0)
- {
- lastOverlapIdx = i;
- delete aTgt[j];
- aTgt.Remove(j);
- j--;
- break;
- }
- }
- }
-
- return lastOverlapIdx;
- }
-
// ----------------------------------------------------------------------------
// C++ constructor
// ----------------------------------------------------------------------------
//
CPeninputFingerHwrArDataStore::CPeninputFingerHwrArDataStore(CPeninputFingerHwrArLayout* aLayout)
- :iLayout( aLayout )
+ :iLanguage(ELangNone),
+ iCurrentNumberMode(EAknEditorStandardNumberModeKeymap),
+ iLayout( aLayout ),
+ iIsHighlightCell(ETrue),
+ iIsNativeNumMode(EFalse)
{
- iLanguage = ELangNone;
- iCurrentNumberMode = EAknEditorStandardNumberModeKeymap;
- iIsHighlightCell = ETrue;
}
// ----------------------------------------------------------------------------
@@ -511,6 +481,26 @@
//initialize the key mapping list
InitKeyMappingListL();
+
+ // read number mode flag.
+ //create the repository for common engine.
+ iCommonEngineRepository = CRepository::NewL(KCRUidCommonEngineKeys);
+ TInt displayLang = 0;
+ iCommonEngineRepository->Get(KGSDisplayTxtLang,displayLang);
+ if( displayLang == ELangTest )
+ {
+ displayLang = User::Language();
+ }
+ if(displayLang == ELangArabic)
+ {
+ iIsNativeNumMode = ETrue;
+ }
+ else
+ {
+ iIsNativeNumMode = EFalse;
+ }
+ iRepositoryFep->Set(KAknFepDefaultArabicNumberMode,iIsNativeNumMode);
+
}
// ----------------------------------------------------------------------------
@@ -701,12 +691,33 @@
//
TBool CPeninputFingerHwrArDataStore::IsArabicNumber(TUint16 aChar)
{
- if(aChar >= 0x0661 && aChar <= 0x0669)
+ if(aChar >= 0x0660 && aChar <= 0x0669)
{
return ETrue;
}
return EFalse;
}
-
+
+// ----------------------------------------------------------------------------
+// CPeninputFingerHwrArDataStore::IsNumberOnlyMode
+// ----------------------------------------------------------------------------
+//
+TBool CPeninputFingerHwrArDataStore::IsNumberOnlyMode()
+ {
+ if(PrimaryRange() == ERangeNumber)
+ {
+ return ETrue;
+ }
+ return EFalse;
+ }
+
+// ----------------------------------------------------------------------------
+// CPeninputFingerHwrArDataStore::IsNativeNumMode
+// ----------------------------------------------------------------------------
+//
+TBool CPeninputFingerHwrArDataStore::IsNativeNumMode()
+ {
+ return iIsNativeNumMode;
+ }
// End Of File
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarengine.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarengine.cpp Tue May 25 13:03:44 2010 +0300
@@ -17,9 +17,9 @@
//FEP INCLUDES
-#include <aknfepglobalenums.h>
+#include <AknFepGlobalEnums.h>
#include <aknfeppeninputenums.h>
-#include <ptihwrrecognizer.h>
+#include <PtiHwrRecognizer.h>
#include <e32property.h>
#include "ptidefs.h"
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarindicator.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarindicator.cpp Tue May 25 13:03:44 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-#include <aknsutils.h>
+#include <AknsUtils.h>
#include <barsread.h>
#include "peninputfingerhwrarindicator.h"
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Tue May 25 13:03:44 2010 +0300
@@ -19,7 +19,7 @@
// INCLUDES
#include <aknlayoutscalable_avkon.cdl.h>
#include <aknlayoutscalable_apps.cdl.h>
-#include <aknutils.h>
+#include <AknUtils.h>
#include "peninputfingerhwrarlafmanager.h"
#include "peninputfingerhwrarcontrolid.h"
@@ -32,6 +32,8 @@
const TInt KFuncButtonColNum = 4;
const TInt KLandscapeVirtualKeypadRow = 4;
const TInt KLandscapeVirtualKeypadCol = 6;
+const TInt KLandscapeNumpadRow = 4;
+const TInt KLandscapeNumpadCol = 4;
// ---------------------------------------------------------------------------
// Symbian Constructor
@@ -81,6 +83,8 @@
{
iSCTrectArray.Close();
iSymBtnRectArray.Close();
+ iNumSCTrectArray.Close();
+// iNumSymBtnRectArray.Close();
}
// ---------------------------------------------------------------------------
@@ -268,7 +272,7 @@
{
candRowPane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, row).LayoutLine();
candRowPaneRect.LayoutRect( rect, candRowPane );
-
+
for(TInt col = 0; col < KFuncButtonColNum; col++)
{
// cell pane
@@ -288,14 +292,17 @@
iRectBtnOption = buttonRect[i++];
iRectBtnRangeSmb = buttonRect[i++];
iRectBtnBackspace = buttonRect[i++];
- iRectBtnArrowUp = buttonRect[i++];
- iRectBtnArrowDown = buttonRect[i++];
- iRectBtnArrowLeft = buttonRect[i++];
- iRectBtnArrowRight = buttonRect[i++];
+ iRectBtnArrowLeft = buttonRect[i++];
+ iRectBtnArrowRight = buttonRect[i++];
+ iRectBtnSpace = buttonRect[i++];
+ iRectBtnEnter = buttonRect[i++];
buttonRect.Close();
// padding size of Btn
- iSizeBtnPadding = TSize(6, 6);
+ TInt xpad = iRectBtnOption.iTl.iX - iRectBtnClose.iBr.iX;
+ TInt ypad = iRectBtnArrowLeft.iTl.iY - iRectBtnClose.iBr.iY;
+
+ iSizeBtnPadding = TSize(xpad, ypad);
// padding size of arrow button
if(iIsLandscape)
@@ -345,6 +352,23 @@
}
// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForNumSymbolTable()
+// Retrieve the laf data for number symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForNumSymbolTable()
+ {
+ if(iIsLandscape)
+ {
+ RetrieveLandscapeLafDataForNumSymbolTable();
+ }
+ else
+ {
+ RetrievePortraitLafDataForNumSymbolTable();
+ }
+ }
+
+// ---------------------------------------------------------------------------
// CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForSymbolTable()
// Retrieve the landscape laf data for symbol table area
// ---------------------------------------------------------------------------
@@ -363,53 +387,45 @@
candpaneRect.LayoutRect( iLayoutRect, candlistpane );
iRectOfSymbolTable = candpaneRect.Rect();
- // get candidate row1 pane
+ // get 1st row pane in button area
TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 0).LayoutLine();
TAknLayoutRect candrow1paneRect;
candrow1paneRect.LayoutRect( iRectOfSymbolTable, candRow1Pane );
iSymBtnRectArray.Reset();
- for(TInt i = 0; i < 2; i++)
- {
- // get candidate cell pane with row 0 and col i
- TAknWindowLineLayout cellPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0, i , 0 ).
- LayoutLine();
- TAknLayoutRect cellPaneRect;
- cellPaneRect.LayoutRect( candrow1paneRect.Rect(), cellPane );
+ TAknWindowLineLayout cellPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 5, 0, 0 ).
+ LayoutLine();
+ TAknLayoutRect cellPaneRect;
+ cellPaneRect.LayoutRect( candrow1paneRect.Rect(), cellPane );
- // get the candidate cell bg pane with row 0 and col i
- TAknWindowLineLayout candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).LayoutLine();
- TAknLayoutRect BgRect;
- BgRect.LayoutRect( cellPaneRect.Rect(), candbgpane );
- iSymBtnRectArray.Append(BgRect.Rect());
- }
-
- TInt xGap = iSymBtnRectArray[1].iTl.iX - iSymBtnRectArray[0].iBr.iX;
- TRect thirdBtn(iSymBtnRectArray[1]);
- thirdBtn.Move(TPoint(iSymBtnRectArray[1].Width(),0));
- iSymBtnRectArray.Append(thirdBtn);
-
- TAknWindowLineLayout rowPane, key1bgpane, keypane;
- TAknLayoutRect rowRect, key1bgRect, keyRect;
-
+ // get the candidate cell bg pane with row 0 and col i
+ TAknWindowLineLayout cellbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(5).LayoutLine();
+ TAknLayoutRect cellbgRect;
+ cellbgRect.LayoutRect( cellPaneRect.Rect(), cellbgpane );
+ iSymBtnRectArray.Append(cellbgRect.Rect());
+ //get 1st row pane in SCT area
TAknWindowLineLayout row1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 1).LayoutLine();
TAknLayoutRect row1Rect;
row1Rect.LayoutRect(iRectOfSymbolTable,row1Pane);
iRectSctpad.iTl = row1Rect.Rect().iTl;
- iRectSctpad.iBr = iRectOfSymbolTable.iBr;
+// iRectSctpad.iBr = iRectOfSymbolTable.iBr;
+
+ TAknWindowLineLayout key1bgpane, keypane;
+ TAknLayoutRect key1bgRect, keyRect;
+
- keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 0 , 0 ).
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 0 , 0 ).
LayoutLine();
keyRect.LayoutRect(row1Rect.Rect(), keypane);
- key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
+ key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine();
key1bgRect.LayoutRect(keyRect.Rect(), key1bgpane);
- keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 1 , 0 ).
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 1 , 0 ).
LayoutLine();
keyRect.LayoutRect(row1Rect.Rect(), keypane);
- TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
+ TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine();
TAknLayoutRect key2bgRect;
key2bgRect.LayoutRect(keyRect.Rect(), key2bgpane);
@@ -417,10 +433,10 @@
TAknLayoutRect row2Rect;
row2Rect.LayoutRect(iRectOfSymbolTable,row2Pane);
- keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 0 , 0 ).LayoutLine();
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 0 , 0 ).LayoutLine();
keyRect.LayoutRect(row2Rect.Rect(), keypane);
- TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
+ TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine();
TAknLayoutRect key3bgRect;
key3bgRect.LayoutRect(keyRect.Rect(), key3bgpane);
@@ -444,6 +460,9 @@
iSCTrectArray.Append(cursorRect);
}
}
+ iRectOfSymbolTable.iBr = cursorRect.iBr;
+ iRectSctpad.iBr = iRectOfSymbolTable.iBr;
+
}
// ---------------------------------------------------------------------------
@@ -519,6 +538,144 @@
}
// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForNumSymbolTable()
+// Retrieve the landscape laf data for number symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForNumSymbolTable()
+ {
+// TAknLayoutScalableParameterLimits candiPaneVariety = AknLayoutScalable_Avkon::fshwr2_func_candi_pane_ParamLimits(2);
+
+ iNumSctpadRowCount = KLandscapeNumpadRow;
+ iNumSctpadColCount = KLandscapeNumpadCol;
+
+ // get the functional buttons laf data for symbol table
+ // candidate list
+ TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(2).LayoutLine();
+ TAknLayoutRect candpaneRect;
+ candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+ iRectOfNumSymbolTable = candpaneRect.Rect();
+
+ // get candidate row1 pane
+ TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(2, 0, 0).LayoutLine();
+ TAknLayoutRect candrow1paneRect;
+ candrow1paneRect.LayoutRect( candpaneRect.Rect(), candRow1Pane );
+
+ TAknWindowLineLayout rowPane, key1bgpane, keypane;
+ TAknLayoutRect rowRect, key1bgRect, keyRect;
+
+ iRectNumpad.iTl = candpaneRect.Rect().iTl;
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 0 , 0 ).
+ LayoutLine();
+ keyRect.LayoutRect(candrow1paneRect.Rect(), keypane);
+
+ key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine();
+ key1bgRect.LayoutRect(keyRect.Rect(), key1bgpane);
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 1 , 0 ).
+ LayoutLine();
+ keyRect.LayoutRect(candrow1paneRect.Rect(), keypane);
+
+ TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine();
+ TAknLayoutRect key2bgRect;
+ key2bgRect.LayoutRect(keyRect.Rect(), key2bgpane);
+
+ TAknWindowLineLayout row2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(2, 0, 1).LayoutLine();
+ TAknLayoutRect row2Rect;
+ row2Rect.LayoutRect(candpaneRect.Rect(),row2Pane);
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 1, 0 ).LayoutLine();
+ keyRect.LayoutRect(row2Rect.Rect(), keypane);
+
+ TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine();
+ TAknLayoutRect key3bgRect;
+ key3bgRect.LayoutRect(keyRect.Rect(), key3bgpane);
+
+ TInt keyHorizontalGap = key2bgRect.Rect().iTl.iX - key1bgRect.Rect().iBr.iX;
+ TInt keyVerticalGap = key3bgRect.Rect().iTl.iY - key1bgRect.Rect().iBr.iY;
+
+ TRect cursorRect(key1bgRect.Rect());
+ TRect originRect(key1bgRect.Rect());
+ TInt rectHeight = cursorRect.Height();
+ TInt rectWidth = cursorRect.Width();
+
+ iNumSCTrectArray.Reset();
+ for(TInt i = 0; i < iNumSctpadRowCount; i++)
+ {
+ cursorRect = originRect;
+ cursorRect.Move(0,i*(rectHeight+keyVerticalGap));
+ iNumSCTrectArray.Append(cursorRect);
+ for(TInt j = 1; j < iNumSctpadColCount; j++)
+ {
+ cursorRect.Move((rectWidth+keyHorizontalGap),0);
+ iNumSCTrectArray.Append(cursorRect);
+ }
+ }
+
+ // calculate the symbol table rect
+ iRectOfNumSymbolTable.iBr = cursorRect.iBr;
+ iRectNumpad.iBr = iRectOfNumSymbolTable.iBr;
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForNumSymbolTable()
+// Retrieve the portrait laf data for number symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForNumSymbolTable()
+ {
+
+ // get the functional buttons laf data for number symbol table
+ // candidate list
+ TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).LayoutLine();
+
+ TAknLayoutRect candpaneRect;
+ candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+ TRect rect = candpaneRect.Rect();
+
+ // get candidate row2 pane
+ TAknWindowLineLayout candRow2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
+ LayoutLine();
+ TAknLayoutRect candrow2paneRect;
+ candrow2paneRect.LayoutRect( rect, candRow2Pane );
+ iRectOfNumSymbolTable.iTl = candrow2paneRect.Rect().iTl;
+
+ // get the virtual key rects
+ TAknWindowLineLayout writingBoxPane;
+ TAknLayoutRect boxRect;
+ writingBoxPane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(0).LayoutLine();
+ boxRect.LayoutRect(iLayoutRect, writingBoxPane);
+ iRectNumpad = boxRect.Rect();
+
+ TAknWindowLineLayout keypane, keybgpane;
+ TAknLayoutRect keyRect, keybgRect;
+
+ TAknLayoutScalableParameterLimits sctPaneVariety =
+ AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0);
+
+ iNumSctpadRowCount = sctPaneVariety.LastRow() + 1;
+ iNumSctpadColCount = sctPaneVariety.LastColumn() + 1;
+
+ iNumSCTrectArray.Reset();
+ for(TInt i = 0; i < iNumSctpadRowCount; i++)
+ {
+ for ( TInt j = 0; j < iNumSctpadColCount; j++ )
+ {
+ keypane = AknLayoutScalable_Avkon::cell_fshwr2_syb_pane(0, j, i).LayoutLine();
+ keyRect.LayoutRect(iRectNumpad, keypane);
+ keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(0).LayoutLine();
+ keybgRect.LayoutRect(keyRect.Rect(), keybgpane);
+ iNumSCTrectArray.Append( keybgRect.Rect());
+ }
+ }
+ iSizeNumSctpadCell = keybgRect.Rect().Size();
+
+ // calculate the symbol table rect
+ iRectOfNumSymbolTable.iBr = iRectNumpad.iBr;
+ }
+
+// ---------------------------------------------------------------------------
// CPeninputFingerHwrArLafManager::RetrieveLafDataForPreviewBubble()
// Retrieve the laf data for preview bubble
// ---------------------------------------------------------------------------
@@ -566,6 +723,9 @@
// retrieve the laf data of symbol table
RetrieveLafDataForSymbolTable();
+ // retrieve the laf data of number symbol table
+ RetrieveLafDataForNumSymbolTable();
+
// retrieve the laf data of hwr box
RetrieveLafDataForHwrBox();
#endif
@@ -624,11 +784,11 @@
iSizeBtnPadding = TSize(6,6);
iArrowPaddingSize = TSize(8,8);
- iRectSpase = iRectBtnClose;
- iRectSpase.Move(TPoint(0,buttonHight));
+ iRectBtnSpace = iRectBtnClose;
+ iRectBtnSpace.Move(TPoint(0,buttonHight));
- iRectEnter = iRectSpase;
- iRectEnter.Move(TPoint(buttonWidth,0));
+ iRectBtnEnter = iRectBtnSpace;
+ iRectBtnEnter.Move(TPoint(buttonWidth,0));
// candate position
iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight);
@@ -814,6 +974,10 @@
{
return iRectOfSymbolTable;
}
+ case EHwrCtrlIdNumSymbolTableVkbGroup:
+ {
+ return iRectOfNumSymbolTable;
+ }
case EHwrCtrlIdClose:
{
return iRectBtnClose;
@@ -826,14 +990,6 @@
{
return iRectBtnBackspace;
}
- case EHwrCtrlIdArrowUp:
- {
- return iRectBtnArrowUp;
- }
- case EHwrCtrlIdArrowDown:
- {
- return iRectBtnArrowDown;
- }
case EHwrCtrlIdArrowLeft:
{
return iRectBtnArrowLeft;
@@ -842,6 +998,14 @@
{
return iRectBtnArrowRight;
}
+ case EHwrCtrlIdBtnEnter:
+ {
+ return iRectBtnEnter;
+ }
+ case EHwrCtrlIdBtnSpace:
+ {
+ return iRectBtnSpace;
+ }
case EHwrCtrlIdLanguageOption:
{
return iRectBtnOption;
@@ -853,7 +1017,7 @@
case EHwrCtrlId2Page2Btn:
{
return iRectBtnSctPage;
- }
+ }
}
return TRect();
}
@@ -960,6 +1124,24 @@
}
// ---------------------------------------------------------------------------
+// get row count of virtual number sctpad.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::VirtualNumSctpadRowCount()
+ {
+ return iNumSctpadRowCount;
+ }
+
+// ---------------------------------------------------------------------------
+// get column count of virtual number sctpad.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::VirtualNumSctpadColCount()
+ {
+ return iNumSctpadColCount;
+ }
+
+// ---------------------------------------------------------------------------
// get cell size of virtual sctpad.
// ---------------------------------------------------------------------------
//
@@ -1022,13 +1204,58 @@
}
// ---------------------------------------------------------------------------
+// get cell rect of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::GetNumVirtualKeyRects( RArray<TRect>& aArrayRects )
+ {
+ aArrayRects.Reset();
+
+ for(TInt i = 0; i < iNumSCTrectArray.Count(); i++)
+ {
+ TRect absoluteRect = iNumSCTrectArray[i];
+ absoluteRect.Move(-iRectNumpad.iTl.iX, -iRectNumpad.iTl.iY);
+ aArrayRects.Append(absoluteRect);
+ }
+ }
+
+// ---------------------------------------------------------------------------
// get text layout of virtual sctpad.
// ---------------------------------------------------------------------------
//
TAknTextLineLayout CPeninputFingerHwrArLafManager::SctpadKeyTxtLayout()
{
- TAknTextLineLayout layout = AknLayoutScalable_Avkon::
- cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
+ TAknTextLineLayout layout;
+ if(iIsLandscape)
+ {
+ layout = AknLayoutScalable_Avkon::
+ fshwr2_func_candi_cell_pane_t1(4).LayoutLine();
+ }
+ else
+ {
+ layout = AknLayoutScalable_Avkon::
+ cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
+ }
+ return layout;
+ }
+
+// ---------------------------------------------------------------------------
+// get text layout of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+TAknTextLineLayout CPeninputFingerHwrArLafManager::NumpadKeyTxtLayout()
+ {
+ TAknTextLineLayout layout;
+ if(iIsLandscape)
+ {
+ layout = AknLayoutScalable_Avkon::
+ fshwr2_func_candi_cell_pane_t1(6).LayoutLine();
+ }
+ else
+ {
+ layout = AknLayoutScalable_Avkon::
+ cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
+ }
return layout;
}
@@ -1105,6 +1332,15 @@
}
// ---------------------------------------------------------------------------
+// get rect for virtual number keypad
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::GetVirtualNumKeyRect()
+ {
+ return iRectNumpad;
+ }
+
+// ---------------------------------------------------------------------------
// get rect for hwr indicator
// ---------------------------------------------------------------------------
//
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Tue May 25 13:03:44 2010 +0300
@@ -18,9 +18,9 @@
//SYSTEM INCLUDES
#include <bautils.h>
#include <coemain.h>
-
+#include <CommonEngineDomainCRKeys.h>
//FEP Includes
-#include <aknfepglobalenums.h>
+#include <AknFepGlobalEnums.h>
#include <aknfeppeninputenums.h>
#include <peninputlayoutchoicelist.h>
#include <settingsinternalcrkeys.h>
@@ -49,6 +49,46 @@
const TInt16 KEmotionKeyMark = 0xFFFE;
+class CPeninputFingerHwrArCallBack : public CActive
+ {
+ friend class CPeninputFingerHwrArLayout;
+public:
+ void IssueRequestL();
+private:
+ CPeninputFingerHwrArCallBack(CPeninputFingerHwrArLayout* aHwrArLayout);
+ void RunL();
+ void DoCancel();
+private:
+ CPeninputFingerHwrArLayout* iHwrArLayout;
+ };
+
+CPeninputFingerHwrArCallBack::CPeninputFingerHwrArCallBack(CPeninputFingerHwrArLayout* aHwrArLayout)
+ :CActive(EPriorityHigh)
+ {
+ CActiveScheduler::Add(this);
+ iHwrArLayout = aHwrArLayout;
+ }
+void CPeninputFingerHwrArCallBack::IssueRequestL()
+ {
+ if(!IsActive())
+ {
+ iStatus=KRequestPending;
+ SetActive();
+ TRequestStatus *pS=(&iStatus);
+
+ User::RequestComplete(pS,0);
+ }
+ }
+void CPeninputFingerHwrArCallBack::RunL()
+ {
+ iHwrArLayout->CallBackL();
+ }
+
+void CPeninputFingerHwrArCallBack::DoCancel()
+ {
+
+ }
+
// ============================ MEMBER FUNCTIONS =============================
// ---------------------------------------------------------------------------
@@ -87,7 +127,6 @@
//create the repository for gereral settings
iRepositorySetting = CRepository::NewL( KCRUidPersonalizationSettings );
-
//create the repository watcher for general settings
iGSRepositoryWatcher = CAknFepRepositoryWatcher::NewL(
KCRUidPersonalizationSettings,
@@ -103,6 +142,8 @@
//retrieve the settings
LoadAndPublishDefaultL();
+ //iCallBack = new (ELeave) CPeninputFingerHwrArCallBack(this);
+
//set screen layout extent
SetRect( TRect( TPoint( 0, 0 ), ScreenSize() ) );
}
@@ -142,6 +183,7 @@
case ECmdPenInputEditorNumericKeyMap:
{
iDataStore->SetNumberMode( *(TAknEditorNumericKeymap*)aData );
+ OnNumMappingChangedL();
}
break;
case ECmdPenInputEditorCustomNumericKeyMap:
@@ -161,6 +203,10 @@
{
TInt language = *( TInt* )aData;
iDataStore->SetLanguageL( language );
+ if(iHwrWnd)
+ {
+ iHwrWnd->SetIcfLanguage(language);
+ }
}
break;
case ECmdPenInputPermittedCase:
@@ -225,6 +271,12 @@
iHwrWnd->SetEnableSettingBtn(isEnableSetting);
}
break;
+ case ECmdPeninputArabicNumModeChanged:
+ {
+ TBool isArabicNativeNum = *aData;
+ iHwrWnd->SetNativeNumMode(isArabicNativeNum);
+ }
+ break;
default:
ret = KErrUnknown;
break;
@@ -276,14 +328,16 @@
// but ICF does not offer such API
if(aData.iFlag & EFepICFDataDirectionMFNE )
{
+ iIsEditorMFNE = ETrue;
return KErrNone;
}
-
+
+ iIsEditorMFNE = EFalse;
iDataStore->SetFirstCandidateType(ECandDefaultFirst);
- if(iDataStore->PrimaryRange() == ERangeEnglish)
- {
- return KErrNone;
- }
+// if(iDataStore->PrimaryRange() == ERangeEnglish)
+// {
+// return KErrNone;
+// }
TUint16 charBeforeCursor = 0;
if(iHwrWnd->GetCharBeforeCursor(aData.iCurSel.LowerPos()-1, charBeforeCursor))
@@ -461,7 +515,7 @@
// ---------------------------------------------------------------------------
//
void CPeninputFingerHwrArLayout::Replace( const TDesC& aOldCharCode,
- const TDesC& aNewCharCode, const TBool aIsPart )
+ const TDesC& aNewCharCode, const TBool aIsPart)
{
// user tries to correct the previous selection
// Delete the previous character and append the new one
@@ -573,7 +627,18 @@
iRepositorySetting->Get( KSettingsPenInputLang, newValue );
iDataStore->SetLanguageL( newValue );
-
+
+// TInt displayLang = 0;
+// iCommonEngineRepository->Get(KGSDisplayTxtLang,displayLang);
+// if(displayLang == ELangArabic)
+// {
+// iHwrWnd->SetNativeNumMode(ETrue);
+// }
+// else
+// {
+// iHwrWnd->SetNativeNumMode(EFalse);
+// }
+ iHwrWnd->SetNativeNumMode(iDataStore->IsNativeNumMode());
}
// ---------------------------------------------------------------------------
@@ -609,6 +674,8 @@
delete iStateMgr;
delete iGSRepositoryWatcher;
delete iRepositorySetting;
+// delete iCommonEngineRepository;
+ //delete iCallBack;
}
// ---------------------------------------------------------------------------
@@ -706,7 +773,7 @@
}
break;
case EHwrCtrlIdBtnEnter:
- {
+ {
TBuf<1> bufEnter;
bufEnter.Append( EKeyEnter );
SubmitStringToFep( bufEnter );
@@ -749,16 +816,6 @@
SignalOwner( ESignalKeyEvent, aData );
}
break;
- case EHwrCtrlIdArrowDown:
- {
- iHwrWnd->Icf()->HandleArrowBtnEventL( CFepLayoutMultiLineIcf::EArrowDown );
- }
- break;
- case EHwrCtrlIdArrowUp:
- {
- iHwrWnd->Icf()->HandleArrowBtnEventL( CFepLayoutMultiLineIcf::EArrowUp );
- }
- break;
default:
break;
}
@@ -773,7 +830,11 @@
iHwrWnd->CancelWriting();
if (iHwrWnd->IsCandidateShowup())
{
- // goto standby and clear screen
+ // goto standby and clear screen
+ if(IsAllowedToSubmitDefaultCandiate())
+ {
+ SignalOwner( ESignalDeleteLastInput, KNullDesC );
+ }
ChangeCurStateToStandby();
}
else
@@ -818,8 +879,19 @@
else
{
TBuf<1> bufBck;
- bufBck.Append( keydata->iScanCode );
- SignalOwner( ESignalKeyEvent, bufBck );
+ TInt convertedCode;
+ TBool converted = EFalse;
+ converted = RevertSymbolDirection(keydata->iScanCode,convertedCode);
+ bufBck.Append(convertedCode);
+// bufBck.Append(keydata->iScanCode);
+ if(converted)
+ {
+ SignalOwner(ESignalArabicSCTChar,bufBck);
+ }
+ else
+ {
+ SignalOwner( ESignalKeyEvent, bufBck );
+ }
}
// close the symbol table
@@ -860,6 +932,7 @@
//
void CPeninputFingerHwrArLayout::OnHwrStrokeStartedL()
{
+ //iCallBack->IssueRequestL();
iHwrWnd->HideIndicator();
// The default candidate cell is not highlight
@@ -877,6 +950,25 @@
iStateMgr->HandleEventL( EEventHwrStrokeStarted, KNullDesC );
}
+void CPeninputFingerHwrArLayout::CallBackL()
+ {
+ iHwrWnd->HideIndicator();
+
+ // The default candidate cell is not highlight
+ iDataStore->SetHighlight(EFalse);
+
+ // close the candidate list if it's currently showing up
+ if(iHwrWnd->IsCandidateShowup())
+ {
+ iHwrWnd->CloseCandidateList();
+ }
+
+ // remember the start writing position.
+ iIsStrokeOfDrawingCharacerStarted = ETrue;
+
+ iStateMgr->HandleEventL( EEventHwrStrokeStarted, KNullDesC );
+ }
+
// ---------------------------------------------------------------------------
// handler of StrokeFinished event.
// ---------------------------------------------------------------------------
@@ -908,6 +1000,15 @@
// ---------------------------------------------------------------------------
// get value from repository.
// ---------------------------------------------------------------------------
+//
+TBool CPeninputFingerHwrArLayout::IsAllowedToSubmitDefaultCandiate()
+ {
+ return (!iIsEditorMFNE);
+ }
+
+// ---------------------------------------------------------------------------
+// get value from repository.
+// ---------------------------------------------------------------------------
//
TInt CPeninputFingerHwrArLayout::GetNewValue(
CAknFepRepositoryWatcher* aWatcher, const TInt aId )
@@ -1033,5 +1134,73 @@
// set the state to be standby
iStateMgr->SetState( CPeninputFingerHwrArStateManagerBase::EStateStandBy );
}
+// ---------------------------------------------------------------------------
+// handler of NumMapping changed event.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLayout::OnNumMappingChangedL()
+ {
+ HBufC* mapping = iDataStore->KeyMappingStringL();
+
+ iHwrWnd->SetNumericMapping( *mapping );
+
+ delete mapping;
+ }
+// ---------------------------------------------------------------------------
+// revert special characters direction before sending to editor.
+// ---------------------------------------------------------------------------
+//
+TBool CPeninputFingerHwrArLayout::RevertSymbolDirection(TInt aInChar, TInt & aOutChar)
+ {
+ TBool converted = ETrue;
+ switch(aInChar)
+ {
+ case 0x0028:
+ {
+ aOutChar = 0x0029;//convert ( to ).
+ }
+ break;
+ case 0x0029:
+ {
+ aOutChar = 0x0028;//convert ) to (.
+ }
+ break;
+ case 0x005B:
+ {
+ aOutChar = 0x005D;//convert [ to ].
+ }
+ break;
+ case 0x005D:
+ {
+ aOutChar = 0x005B;//convert ] to [.
+ }
+ break;
+ case 0x003C:
+ {
+ aOutChar = 0x003E;//convert < to >.
+ }
+ break;
+ case 0x003E:
+ {
+ aOutChar = 0x003C;//convert > to <.
+ }
+ break;
+ case 0x007B:
+ {
+ aOutChar = 0x007D;//convert { to }.
+ }
+ break;
+ case 0x007D:
+ {
+ aOutChar = 0x007B;//convert } to {.
+ }
+ break;
+ default:
+ aOutChar = aInChar;
+ converted = EFalse;
+ break;
+ }
+ return converted;
+ }
//End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarnumsymboltable.cpp Tue May 25 13:03:44 2010 +0300
@@ -0,0 +1,645 @@
+/*
+* Copyright (c) 2009-2010 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 symbol table.
+*
+*/
+
+
+// INCLUDE
+#include <peninputfingerhwrarwnd.rsg>
+
+#include <coemain.h>
+#include <s32mem.h>
+#include <barsread.h>
+
+#include <aknlayoutscalable_apps.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <AknLayoutDef.h>
+#include <AknUtils.h>
+#include <AknsUtils.h>
+#include <akniconutils.h>
+#include <aknfeppeninputenums.h>
+#include <AknFepGlobalEnums.h>
+
+#include <peninputlayout.h>
+#include <peninputrepeatbutton.h>
+
+#include "hbufcarrayar.h"
+#include "peninputfingerhwrarevent.h"
+#include "peninputfingerhwrarcontrolid.h"
+#include "peninputfingerhwrarstoreconstants.h"
+#include "peninputlayoutvkb.h"
+#include "peninputfingerhwrarnumsymboltable.h"
+
+
+// ---------------------------------------------------------------------------
+// Symbian Constructor
+// ---------------------------------------------------------------------------
+//
+CPeninputArabicFingerHwrNumSymbolTable* CPeninputArabicFingerHwrNumSymbolTable::NewL(
+ CFepUiLayout* aUiLayout, TInt aId )
+ {
+ CPeninputArabicFingerHwrNumSymbolTable* self = CPeninputArabicFingerHwrNumSymbolTable::NewLC(
+ aUiLayout, aId );
+
+ CleanupStack::Pop( self ); // self;
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian Constructor
+// ---------------------------------------------------------------------------
+//
+CPeninputArabicFingerHwrNumSymbolTable* CPeninputArabicFingerHwrNumSymbolTable::NewLC(
+ CFepUiLayout* aUiLayout, TInt aId )
+ {
+ CPeninputArabicFingerHwrNumSymbolTable* self = new (ELeave) CPeninputArabicFingerHwrNumSymbolTable(
+ aUiLayout, aId );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CPeninputArabicFingerHwrNumSymbolTable::CPeninputArabicFingerHwrNumSymbolTable(
+ CFepUiLayout* aFepUiLayout, TInt aControlId )
+ : CControlGroup( aFepUiLayout, aControlId ),iIsNativeNumMode(EFalse)
+ {
+ SetControlType(ECtrlControlGroup|ECtrlTactileFeedback);
+ SetTactileFeedbackType(ETouchFeedbackSensitiveInput);
+ }
+
+// ---------------------------------------------------------------------------
+// c++ destructor
+// ---------------------------------------------------------------------------
+//
+CPeninputArabicFingerHwrNumSymbolTable::~CPeninputArabicFingerHwrNumSymbolTable()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// popup the list.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::OpenSymbolTable()
+ {
+ CapturePointer( ETrue );
+ iPopupVisible = ETrue;
+ iCurrentNumSCTType = ENumSCTLatin;
+ UiLayout()->LockArea(UiLayout()->Rect(),this);
+ UpdateNumSymbolTable(ENumSCTLatin);
+ }
+
+// ---------------------------------------------------------------------------
+// cancel the popup.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::CloseSymbolTable()
+ {
+ CapturePointer( EFalse );
+ iPopupVisible = EFalse;
+ UiLayout()->UnLockArea(UiLayout()->Rect(),this);
+ }
+
+// ---------------------------------------------------------------------------
+// get visibility of popup.
+// ---------------------------------------------------------------------------
+//
+TBool CPeninputArabicFingerHwrNumSymbolTable::IsPopup()
+ {
+ return iPopupVisible;
+ }
+
+// ---------------------------------------------------------------------------
+// Handle pointer down event.
+// ---------------------------------------------------------------------------
+//
+CFepUiBaseCtrl* CPeninputArabicFingerHwrNumSymbolTable::HandlePointerDownEventL(
+ const TPoint& aPoint )
+ {
+ CancelPointerDownL();
+ CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerDownEventL( aPoint );
+
+ if(!ctrl)
+ {
+ ReportEvent(EHwrEventOutsideEvent);
+ }
+ else
+ {
+ #ifdef RD_TACTILE_FEEDBACK
+ if (UiLayout()->SupportTactileFeedback())
+ {
+ UiLayout()->DoTactileFeedback(ETouchFeedbackSensitiveInput);
+ }
+ #endif //RD_TACTILE_FEEDBACK
+ ctrl->UpdateArea(ctrl->Rect(),EFalse);
+ }
+
+ return ctrl;
+ }
+
+// ---------------------------------------------------------------------------
+// Handle pointer up event.
+// ---------------------------------------------------------------------------
+//
+CFepUiBaseCtrl* CPeninputArabicFingerHwrNumSymbolTable::HandlePointerUpEventL(
+ const TPoint& aPoint )
+ {
+ CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerUpEventL( aPoint );
+
+ if(ctrl)
+ {
+ ctrl->UpdateArea(ctrl->Rect(),EFalse);
+ }
+
+ return ctrl;
+ }
+
+// ---------------------------------------------------------------------------
+// Handle pointer move event.
+// ---------------------------------------------------------------------------
+//
+CFepUiBaseCtrl* CPeninputArabicFingerHwrNumSymbolTable::HandlePointerMoveEventL(
+ const TPoint& aPoint )
+ {
+ CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerMoveEventL( aPoint );
+ if(ctrl)
+ {
+ HandlePointerEnter(aPoint);
+ ctrl->UpdateArea(ctrl->Rect(),EFalse);
+ }
+ else
+ {
+ HandlePointerLeave(aPoint);
+ UpdateArea(iRect,EFalse);
+ }
+
+ return ctrl;
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian second-phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::ConstructL()
+ {
+ BaseConstructL();
+
+ // disable border
+ SetBorderSize( TSize(0,0) );
+
+ // construct virtual keypad
+ CreateVirtualKeypadL();
+ }
+
+// ---------------------------------------------------------------------------
+// SizeChanged
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::SizeChanged(
+ const TRect aVirtualKeypadRect, const RArray<TRect> /*aBtnRects*/,
+ const TInt /*aKeypadRow*/, const TInt /*aKeypadCol*/, TBool aIsLandscape)
+ {
+ iIsLandscape = aIsLandscape;
+
+ // relayout the virtual key pad
+ iNumKeypad->SetRect(aVirtualKeypadRect);
+
+ }
+
+// ---------------------------------------------------------------------------
+// create symbol table keypad.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::CreateVirtualKeypadL()
+ {
+ TFontSpec spec;
+
+ iNumKeypad = CVirtualKeyboard::NewL(
+ TRect(0,0,0,0),
+ UiLayout(),
+ EHwrCtrlIdNumSymbolTableVkb,
+ spec );
+
+ AddControlL( iNumKeypad );
+ iNumKeypad->AddEventObserver( UiLayout() );
+
+ iNumKeypad->SetKeySkinId( EKeyBmpNormal, KAknsIIDQsnFrKeypadButtonFrNormal );
+ iNumKeypad->SetKeySkinId( EKeyBmpHighlight, KAknsIIDQsnFrKeypadButtonFrPressed );
+ iNumKeypad->SetKeySkinId( EKeyBmpDim, KAknsIIDQsnFrKeypadButtonFrInactive );
+ iNumKeypad->SetResourceId( KInvalidResId );
+
+ iNumKeypad->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG68 );
+ iNumKeypad->SetDrawOpaqueBackground( EFalse );
+ }
+
+void CPeninputArabicFingerHwrNumSymbolTable::OnActivate()
+ {
+ CControlGroup::OnActivate();
+ }
+
+// ---------------------------------------------------------------------------
+// Read control's background info.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::ConstructFromResourceL()
+ {
+ if ( iResourceId == KInvalidResId )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TResourceReader reader;
+ CCoeEnv::Static()->CreateResourceReaderLC( reader, iResourceId );
+
+ const TInt32 bgImageResId = reader.ReadInt32();
+ LoadBackgroundFromResourceL(bgImageResId);
+
+ CleanupStack::PopAndDestroy( 1 ); //reader
+
+
+ CControlGroup::ConstructFromResourceL();
+ }
+
+// ---------------------------------------------------------------------------
+// Read control's background info.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::LoadBackgroundFromResourceL( const TInt aResId )
+ {
+ if ( aResId == 0 )
+ return;
+
+ if ( BackgroundBmp() )
+ {
+ CFbsBitmap* bkBmp = BackgroundBmp();
+ delete bkBmp;
+ SetBackgroundBmp( NULL );
+ }
+ if ( BkMaskBmp() )
+ {
+ CFbsBitmap* bkMaskBmp = BkMaskBmp();
+ delete bkMaskBmp;
+ SetBackgroundMaskBmp( NULL );
+ }
+
+ TResourceReader resReader;
+ CCoeEnv::Static()->CreateResourceReaderLC( resReader, aResId );
+
+ TPtrC bmpFileName = resReader.ReadTPtrC();
+ TInt32 imgMajorSkinId = resReader.ReadInt32();
+
+ TAknsItemID id;
+ TInt skinitemid;
+
+ MAknsSkinInstance* skininstance = AknsUtils::SkinInstance();
+ const TInt16 bmpId = resReader.ReadInt16();
+ const TInt16 bmpMskId = resReader.ReadInt16();
+ skinitemid = resReader.ReadInt16();
+ id.Set( TInt( imgMajorSkinId ), skinitemid );
+
+ if ( bmpId != KInvalidImg )
+ {
+ CFbsBitmap* backgroundImg = NULL;
+ CFbsBitmap* backgroundMaskImg = NULL;
+ if ( bmpMskId != KInvalidImg )
+ {
+ AknsUtils::CreateIconL( skininstance, id, backgroundImg,
+ backgroundMaskImg, bmpFileName, bmpId, bmpMskId );
+ }
+ else
+ {
+ AknsUtils::CreateIconL( skininstance, id, backgroundImg,
+ bmpFileName, bmpId );
+ }
+
+ SetBackgroundBmp( backgroundImg );
+ SetBackgroundMaskBmp( backgroundMaskImg );
+ }
+ CleanupStack::PopAndDestroy( 1 ); //reader
+ }
+
+// ---------------------------------------------------------------------------
+// Load virtual keys image
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::LoadVkbKeyImageL(TInt aResId, const TSize& aKeySize)
+ {
+ TResourceReader reader;
+ CCoeEnv::Static()->CreateResourceReaderLC( reader, aResId );
+
+ TPtrC bmpFileName = reader.ReadTPtrC();
+ TInt32 imgMajorSkinId = reader.ReadInt32();
+ TAknsItemID id;
+
+ TSize keySize = aKeySize;
+
+ for ( TInt index = 0; index <= EKeyBmpLastType ; index += 2 )
+ {
+ // Get the image ids and mask ids from resource
+ TInt bmpId = reader.ReadInt16();
+ TInt bmpMskId = reader.ReadInt16();
+
+ // read skin item id
+ const TInt skinitemid = reader.ReadInt16();
+ id.Set( TInt( imgMajorSkinId ), skinitemid );
+
+ if ( bmpId != KInvalidImg )
+ {
+ CFbsBitmap* bmp = NULL;
+ CFbsBitmap* maskbmp = NULL;
+
+ if ( bmpMskId != KInvalidImg )
+ {
+ AknsUtils::CreateIconL( AknsUtils::SkinInstance(),
+ id, bmp, maskbmp, bmpFileName, bmpId, bmpMskId );
+
+ // set maskbmp and size
+ AknIconUtils::SetSize( maskbmp, keySize, EAspectRatioNotPreserved );
+ iNumKeypad->SetNonIrregularKeyBitmapL(
+ TVirtualKeyBmpType( EKeyBmpNormal + index + 1 ), maskbmp );
+ }
+ else
+ {
+ AknsUtils::CreateIconL( AknsUtils::SkinInstance(), id,
+ bmp, bmpFileName, bmpId );
+ }
+ // set bmp and size
+ AknIconUtils::SetSize( bmp, keySize, EAspectRatioNotPreserved );
+ iNumKeypad->SetNonIrregularKeyBitmapL(
+ TVirtualKeyBmpType( EKeyBmpNormal + index ), bmp );
+ }
+ }
+ // Pop and destroy reader
+ CleanupStack::PopAndDestroy( 1 );
+ }
+
+// ---------------------------------------------------------------------------
+// Load virtual keys
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::LoadVirtualKeypadKeyL(const TInt aResId, const RArray<TRect>& aCellRects)
+ {
+ iNumKeypad->SetResourceId(aResId);
+
+ TResourceReader reader;
+ CCoeEnv::Static()->CreateResourceReaderLC( reader, aResId );
+
+ // construct keys
+ TInt resKeyCount = reader.ReadInt16();
+ TInt existsKeyCount = iNumKeypad->KeyArray().Count();
+ TInt rectCount = aCellRects.Count();
+
+ for ( TInt i = 0; i < resKeyCount; i++ )
+ {
+ if ( i < existsKeyCount )
+ {
+ CVirtualKey* vk = iNumKeypad->KeyArray()[i];
+ UpdateVkbKeyL( vk, reader, aCellRects[i%rectCount] );
+ }
+ else
+ {
+ CVirtualKey* vk = CreateVkbKeyL( reader, aCellRects[i%rectCount] );
+ CleanupStack::PushL( vk );
+ iNumKeypad->AddKeyL( vk );
+
+ CleanupStack::Pop( vk );
+ }
+ }
+
+ CleanupStack::PopAndDestroy( 1 ); // reader
+
+ iNumKeypad->Draw();
+ iNumKeypad->UpdateArea( iNumKeypad->Rect() );
+ }
+
+// ---------------------------------------------------------------------------
+// create virtual key.
+// ---------------------------------------------------------------------------
+//
+CVirtualKey* CPeninputArabicFingerHwrNumSymbolTable::CreateVkbKeyL( TResourceReader& aReader,
+ const TRect aKeyRect )
+ {
+ CHBufCArray* keytexts = CHBufCArray::NewL();
+ CleanupStack::PushL( keytexts );
+
+ for ( TInt i = 0; i <= EPosLast; i++ )
+ {
+ HBufC* unicode = aReader.ReadHBufCL();
+ keytexts->Array().AppendL( unicode );
+ }
+
+ TInt keyscancode = aReader.ReadInt16();
+
+ HBufC* text = keytexts->Array()[0];
+
+ CVirtualKey* vk = NULL;
+ if ( text )
+ {
+ vk = CVirtualKey::NewL( *text, keyscancode, aKeyRect, aKeyRect, 0 );
+ }
+ else
+ {
+ vk = CVirtualKey::NewL( KNullDesC, keyscancode, aKeyRect, aKeyRect, 0 );
+ }
+
+ CleanupStack::PopAndDestroy( keytexts ); //keytexts
+
+
+ TRect innerrect = aKeyRect;
+ innerrect.Shrink( TSize(10, 10) );
+ vk->SetInnerRect( innerrect );
+
+ return vk;
+ }
+
+// ---------------------------------------------------------------------------
+// update virtual key info.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::UpdateVkbKeyL( CVirtualKey* aVirtualKey,
+ TResourceReader& aReader, const TRect aKeyRect )
+ {
+ CHBufCArray* keytexts = CHBufCArray::NewL();
+ CleanupStack::PushL( keytexts );
+
+ for ( TInt i = 0; i <= EPosLast; i++ )
+ {
+ HBufC* unicode = aReader.ReadHBufCL();
+ keytexts->Array().AppendL( unicode );
+ }
+
+ TInt keyscancode = aReader.ReadInt16();
+
+ HBufC* text = keytexts->Array()[0];
+ if ( text )
+ {
+ aVirtualKey->SetKeyData( *text );
+ }
+ else
+ {
+ aVirtualKey->SetKeyData( KNullDesC );
+ }
+
+ aVirtualKey->SetKeyScancode( keyscancode );
+
+ CleanupStack::PopAndDestroy( keytexts ); //keytexts
+
+ aVirtualKey->SetRect(aKeyRect);
+ TRect innerrect = aKeyRect;
+ innerrect.Shrink( TSize(10,10) );
+ aVirtualKey->SetInnerRect( innerrect );
+ }
+
+// ---------------------------------------------------------------------------
+// accept editor's number mapping restriction.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::SetNumericMapping( const TDesC& aNumMapping )
+ {
+ //format of aNumMapping is "0123456789******"
+
+ //char offset in aNumMapping
+ //cell 0 using aNumMapping[KNumOffsets[0]]
+ //cell 1 using aNumMapping[KNumOffsets[1]]
+ const TInt KNumOffsets[] =
+ {
+ 12, 1, 2, 3,
+ 13, 4, 5, 6,
+ 14, 7, 8, 9,
+ 15, 10, 0, 11
+ };
+
+ TInt maxMappingItemCount = sizeof(KNumOffsets)/sizeof(TInt);
+ TInt mappingItemCount = aNumMapping.Length();
+
+ //numberpad
+ TInt keyCount = iNumKeypad->KeyArray().Count();
+ for ( TInt i = 0; i < keyCount; i++ )
+ {
+ CVirtualKey* vk = iNumKeypad->KeyArray()[i];
+
+ TInt offset = ( i < maxMappingItemCount ) ? KNumOffsets[i] : -1;
+
+ if ( offset > -1 && offset < mappingItemCount )
+ {
+ TUint16 unicode = aNumMapping[offset];
+ TUint16 mappedCode = MapLatinNumAccordingToNumMode(unicode);
+ TBuf<1> keydata;
+ keydata.Append(mappedCode);
+ vk->SetKeyData(keydata);
+ vk->SetKeyScancode( mappedCode);
+ vk->SetDimmed( EFalse );
+ }
+ else
+ {
+ vk->SetKeyData( KNullDesC );
+ vk->SetKeyScancode( 0xFFFF );
+ vk->SetDimmed( EFalse );
+ }
+ }
+
+
+ //sync feedback
+ UpdateAllVirtualKeysFeedback();
+ }
+
+// ---------------------------------------------------------------------------
+// Navigate the symbol page
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::UpdateNumSymbolTable( TInt aNumSctType)
+ {
+
+ iCurrentNumSCTType = aNumSctType;
+ // Draw the symbol table
+ Draw();
+
+ // Update the feedback for the virtual key
+ UpdateAllVirtualKeysFeedback();
+
+ // Bitblt the whole symbol table to screen
+ UpdateArea(iRect);
+ }
+
+// ---------------------------------------------------------------------------
+// update feedback state of all virtual keys.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::UpdateAllVirtualKeysFeedback()
+ {
+ //update sctpad keys
+ TInt keyCount = iNumKeypad->KeyArray().Count();
+ for ( TInt i = 0; i < keyCount; i++ )
+ {
+ CVirtualKey* vk = iNumKeypad->KeyArray()[i];
+ TBool enable = !vk->Dimmed();
+ iNumKeypad->EnableKeyFeedback( vk, enable );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Draw new content to the screen
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::Draw()
+ {
+ if(AbleToDraw())
+ {
+ DrawOpaqueMaskBackground( Rect() );
+
+ if( BackgroundBmp() && BackgroundBmp()->SizeInPixels() != Rect().Size() )
+ {
+ AknIconUtils::SetSize(BackgroundBmp(), Rect().Size(), EAspectRatioNotPreserved);
+ }
+ // draw background
+ DrawBackground();
+
+ // draw group
+ CControlGroup::Draw();
+
+ // bitblt the new content to screen
+ UpdateArea(iRect);
+ }
+ }
+// ---------------------------------------------------------------------------
+// set native number mode on or off.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::SetNativeNumMode(
+ const TBool aIsNativeNumMode)
+ {
+ iIsNativeNumMode = aIsNativeNumMode;
+ }
+// ---------------------------------------------------------------------------
+// map latin number to arabic native number.
+// ---------------------------------------------------------------------------
+//
+TInt16 CPeninputArabicFingerHwrNumSymbolTable:: MapLatinNumAccordingToNumMode(
+ TInt16 aUnicode)
+ {
+ TInt16 ret = aUnicode;
+ if(aUnicode >= 0x30 && aUnicode <= 0x39)
+ {
+ if(iIsNativeNumMode)
+ {
+ ret = aUnicode + 0x0660 - 0x30;
+ }
+ }
+ return ret;
+ }
+// End Of File
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarstatemanager.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarstatemanager.cpp Tue May 25 13:03:44 2010 +0300
@@ -404,9 +404,10 @@
RPointerArray<HBufC> candidates = iDataStore.Candidate();
if ( candidates.Count() > 0 )
{
- HBufC* defaultCandiate = candidates[0];
- iStateManager.HwrLayout().SubmitStringToFep( *defaultCandiate );
-
+ if(iStateManager.HwrLayout().IsAllowedToSubmitDefaultCandiate())
+ {
+ iStateManager.HwrLayout().SubmitStringToFep( *candidates[0]);
+ }
iStateManager.SetState( CPeninputFingerHwrArStateManager::
EPeninputFingerHwrArStateCandidateSelecting );
@@ -516,14 +517,21 @@
TPtrC ptr;
ptr.Set( ( aEventData.Left( aEventData.Length() - 1 ) ) );
- RPointerArray<HBufC> candidates = iDataStore.Candidate();
- //the selected char is not same as default
- //replace the default candidate
- HBufC* defaultCandidate = candidates[0];
- if( *defaultCandidate != ptr )
+ if(!iStateManager.HwrLayout().IsAllowedToSubmitDefaultCandiate())
+ {
+ iStateManager.HwrLayout().SubmitStringToFep( ptr);
+ }
+ else
{
- iStateManager.HwrLayout().Replace( *defaultCandidate, ptr );
- }
+ RPointerArray<HBufC> candidates = iDataStore.Candidate();
+ //the selected char is not same as default
+ //replace the default candidate
+ HBufC* defaultCandidate = candidates[0];
+ if( *defaultCandidate != ptr )
+ {
+ iStateManager.HwrLayout().Replace( *defaultCandidate, ptr, EFalse);
+ }
+ }
iDataStore.SetArabicSymbolL();
}
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarsymboltable.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarsymboltable.cpp Tue May 25 13:03:44 2010 +0300
@@ -25,12 +25,12 @@
#include <aknlayoutscalable_apps.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>
-#include <aknlayoutdef.h>
-#include <aknutils.h>
-#include <aknsutils.h>
+#include <AknLayoutDef.h>
+#include <AknUtils.h>
+#include <AknsUtils.h>
#include <akniconutils.h>
#include <aknfeppeninputenums.h>
-#include <aknfepglobalenums.h>
+#include <AknFepGlobalEnums.h>
#include <peninputlayout.h>
#include <peninputrepeatbutton.h>
@@ -221,29 +221,8 @@
{
iIsLandscape = aIsLandscape;
- // relayout the button group
- TRect spaceBtnRect(aBtnRects[0]);
-
- TInt pdx = (spaceBtnRect.Size().iWidth/3)/2;
- MoveIconButton(iSpaceBtn,spaceBtnRect,pdx,KSymbolButtonInnerPadding);
-
- TRect pieceInnerRect = spaceBtnRect;
- pieceInnerRect.Shrink(pdx*2,KSymbolButtonInnerPadding);
-
- // that's a not good algrithm in funciton AknPenInputDrawUtils::Draw3PiecesColorIcon for drawing 3Pieces icons
- // as when the outter rect's height was not equal to the inter rect's height, the target rects the left icons and right icons
- // would be bitblited onto are set to be Rect(0.0.0.0.0) [[which should not be that behavior]].
- // Please theck the codes: AknPenInputDrawUtils::Draw3PiecesColorIcon: this function should be Updated.
- iSpaceBtn->SetDraw3PieceFrameInfo(
- TDraw3PiecesFrame(KAknsIIDQgnIndiInputSpaceL,
- KAknsIIDQgnIndiInputSpaceMiddle,
- KAknsIIDQgnIndiInputSpaceR,
- pieceInnerRect));
- TRect enterBtnRect(aBtnRects[1]);
-
- MoveIconButton(iEnterBtn,enterBtnRect,pdx,KSymbolButtonInnerPadding);
-
- TRect pageBtnRect(aBtnRects[2]);
+ // relayout the button
+ TRect pageBtnRect(aBtnRects[0]);
if(aIsLandscape)
{
@@ -303,15 +282,6 @@
void CPeninputArabicFingerHwrSymbolTable::CreateButtonGroupL()
{
- iEnterBtn = CreateEventBtnL(EHwrCtrlIdBtnEnter,R_AKN_FEP_HWR_ENTER);
- iSpaceBtn = CreateEventBtnL(EHwrCtrlIdBtnSpace,R_AKN_FEP_HWR_SPACE);
- // Create 3-pieces color icon for space button
- CPenInput3PiecesColorIcons* colorIcons =
- CPenInput3PiecesColorIcons::NewL( R_AKN_FEP_VKB_SPACE_ICON1,
- R_AKN_FEP_VKB_SPACE_ICON2,
- R_AKN_FEP_VKB_SPACE_ICON3 );
- iSpaceBtn->Set3PiecesColorIcons( colorIcons );
-
// create the page button for portrait
i3Page1Btn = CreateEventBtnL(EHwrCtrlId3Page1Btn, R_AKN_FEP_ARABIC_3PAGE_HWR_SCT_PAGE_1);
i3Page2Btn = CreateEventBtnL(EHwrCtrlId3Page2Btn, R_AKN_FEP_ARABIC_3PAGE_HWR_SCT_PAGE_2);
@@ -574,7 +544,7 @@
TRect innerrect = aKeyRect;
- innerrect.Shrink( TSize(10, 10) );
+ innerrect.Shrink( TSize(2, 2) );
vk->SetInnerRect( innerrect );
return vk;
@@ -614,7 +584,7 @@
aVirtualKey->SetRect(aKeyRect);
TRect innerrect = aKeyRect;
- innerrect.Shrink( TSize(10,10) );
+ innerrect.Shrink( TSize(2,2) );
aVirtualKey->SetInnerRect( innerrect );
}
@@ -721,15 +691,17 @@
{
if(AbleToDraw())
{
- DrawOpaqueMaskBackground( Rect() );
-
+ //Draw button area background.
+// DrawOpaqueMaskBackground( Rect() );
+// DrawOpaqueMaskBackground();
+ DrawOpaqueMaskBackground(iMutiPageKeypad->Rect());
if( BackgroundBmp() && BackgroundBmp()->SizeInPixels() != Rect().Size() )
{
AknIconUtils::SetSize(BackgroundBmp(), Rect().Size(), EAspectRatioNotPreserved);
}
// draw background
- DrawBackground();
-
+// DrawBackground();
+ DrawBackground(iMutiPageKeypad->Rect());
// draw group
CControlGroup::Draw();
@@ -737,5 +709,4 @@
UpdateArea(iRect);
}
}
-
// End Of File
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp Tue May 25 13:03:44 2010 +0300
@@ -21,11 +21,11 @@
#include <aknlayoutscalable_apps.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>
-#include <aknlayoutdef.h>
-#include <aknutils.h>
-#include <aknsutils.h>
+#include <AknLayoutDef.h>
+#include <AknUtils.h>
+#include <AknsUtils.h>
#include <akniconutils.h>
-#include <aknfepglobalenums.h>
+#include <AknFepGlobalEnums.h>
#include <aknfeppeninputenums.h>
#include <peninputfingerhwrarwnd.rsg>
@@ -44,6 +44,7 @@
#include "peninputfingerhwrarlayout.h"
#include "peninputfingerhwrardatastore.h"
#include "peninputfingerhwrarsymboltable.h"
+#include "peninputfingerhwrarnumsymboltable.h"
#include "peninputfingerhwrarindicator.h"
#include "peninputfingerhwrarwritingwnd.h"
@@ -85,9 +86,12 @@
//
CPeninputFingerHwrArWnd::~CPeninputFingerHwrArWnd()
{
- #ifdef RD_TACTILE_FEEDBACK
- UiLayout()->DeRegisterFeedbackArea(reinterpret_cast<TInt>(iWritingBox),
+ #ifdef RD_TACTILE_FEEDBACK
+ if(UiLayout())
+ {
+ UiLayout()->DeRegisterFeedbackArea(reinterpret_cast<TInt>(iWritingBox),
iWritingBox->Rect());
+ }
#endif
delete iLafManager;
}
@@ -141,6 +145,38 @@
}
CleanupStack::PopAndDestroy(); // reader
+
+ // read keypad image info
+ if ( iNumSymbolTable )
+ {
+ TSize keysize = iLafManager->VirtualSctpadCellSize().Size();
+ iNumSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_NUMPAD_IMAGE, keysize );
+
+ RArray<TRect> rects;
+ CleanupClosePushL( rects );
+ iLafManager->GetVirtualKeyRects( rects );
+ LoadNumSymbolVirtualKeysL( R_FINGER_HWR_NUMPAD, rects );
+ CleanupStack::PopAndDestroy(); //rects
+ }
+
+ if ( iSymbolTable )
+ {
+ TSize keysize = iLafManager->VirtualSctpadCellSize().Size();
+ iSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_SCTPAD_IMAGE, keysize );
+
+ RArray<TRect> rects;
+ CleanupClosePushL( rects );
+ iLafManager->GetVirtualKeyRects( rects );
+ if(iLafManager->IsLandscape())
+ {
+ LoadSymbolVirtualKeysL(R_ARABIC_FINGER_HWR_LANDSCAPE_SYMBOL_TABLE, rects);
+ }
+ else
+ {
+ LoadSymbolVirtualKeysL(R_ARABIC_FINGER_HWR_PORTRAIT_SYMBOL_TABLE, rects);
+ }
+ CleanupStack::PopAndDestroy(); //rects
+ }
if (!iFirstTimeConstruct)
{
@@ -191,12 +227,6 @@
iLafManager->CandidateLTPos(),
3/*KCandidateCountPerRow*/,
2 );
- iNumCandidateList->SizeChanged( iLafManager->CandidateUnitWidth(),
- iLafManager->CandidateUnitHeight(),
- iLafManager->CandidateUnitWidth(),
- iLafManager->CandidateLTPos(),
- 3/*KCandidateCountPerRow*/,
- 1 );
iContextField->SetTextMargin ( iLafManager->IcfLeftMargin(),
iLafManager->IcfRightMargin(),
iLafManager->IcfTopMargin(),
@@ -434,14 +464,6 @@
{
return iCandidateList;
}
-// ---------------------------------------------------------------------------
-// retrieve the number candicate list control.
-// ---------------------------------------------------------------------------
-//
-CFepCtrlDropdownList* CPeninputFingerHwrArWnd::NumCandidateList()
- {
- return iNumCandidateList;
- }
// ---------------------------------------------------------------------------
// Open the candidate list
@@ -449,34 +471,24 @@
//
void CPeninputFingerHwrArWnd::OpenCandidateList()
{
- CPeninputFingerHwrArLayout* hwrLayout = NULL;
- hwrLayout = static_cast<CPeninputFingerHwrArLayout*>( UiLayout() );
- CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore();
-
- const RPointerArray<HBufC>& candidates = datastore.Candidate();
-
- if(candidates.Count() > 0)
+ CPeninputFingerHwrArLayout* hwrLayout = NULL;
+ hwrLayout = static_cast<CPeninputFingerHwrArLayout*>( UiLayout() );
+ CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore();
+
+ const RPointerArray<HBufC>& candidates = datastore.Candidate();
+
+ if(candidates.Count() > 0)
{
- CFepCtrlDropdownList::TListType 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);
- }
+ CFepCtrlDropdownList::TListType unexpandable = CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble;
+
+ iCandidateList->Hide( EFalse );
+ TRAP_IGNORE(iCandidateList->SetCandidatesL( candidates, unexpandable ));
+ iCandidateList->SetHighlightCell( 0, datastore.Highlight() );
+ iArrowLeftBtn->Hide(ETrue);
+ iArrowRightBtn->Hide(ETrue);
+ iSpaceBtn->Hide(ETrue);
+ iEnterBtn->Hide(ETrue);
+ }
}
// ---------------------------------------------------------------------------
@@ -486,15 +498,12 @@
void CPeninputFingerHwrArWnd::CloseCandidateList()
{
iCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble);
- iNumCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble);
// hide all the dropdown list in standby state
iCandidateList->Hide( ETrue );
- iNumCandidateList->Hide( ETrue );
-
iArrowLeftBtn->Hide(EFalse);
iArrowRightBtn->Hide(EFalse);
- iArrowUpBtn->Hide(EFalse);
- iArrowDownBtn->Hide(EFalse);
+ iSpaceBtn->Hide(EFalse);
+ iEnterBtn->Hide(EFalse);
}
// ---------------------------------------------------------------------------
@@ -505,8 +514,8 @@
{
iArrowLeftBtn->SetDimmed( aDimArrow );
iArrowRightBtn->SetDimmed( aDimArrow );
- iArrowUpBtn->SetDimmed( aDimArrow );
- iArrowDownBtn->SetDimmed( aDimArrow );
+ iSpaceBtn->SetDimmed( aDimArrow );
+ iEnterBtn->SetDimmed( aDimArrow );
}
// ---------------------------------------------------------------------------
@@ -544,11 +553,11 @@
//create candidate lists
CreateCandidateListL();
- //create number candidate lists.
- CreateNumCandidateListL();
-
//create virtual sct pad
CreateSymbolTableL();
+
+ //create number mode virtual sct pad
+ CreateNumSymbolTableL();
//create control buttons
CreateButtonsL();
@@ -675,58 +684,6 @@
}
// ---------------------------------------------------------------------------
-// create candidate lists.
-// ---------------------------------------------------------------------------
-//
-void CPeninputFingerHwrArWnd::CreateNumCandidateListL()
- {
- TDropdownListDrawInfo candiDrawInfo(
- KAknsIIDQsnFrFunctionButtonInactive,
- KAknsIIDQsnFrFunctionButtonNormal,
- KAknsIIDQsnFrFunctionButtonPressed,
- KAknsIIDQsnFrItutButtonCandiSideL,
- KAknsIIDQsnFrItutButtonCandiMiddle,
- KAknsIIDQsnFrItutButtonCandiSideR,
- KAknsIIDQsnFrItutButtonCandiPressedSideL,
- KAknsIIDQsnFrItutButtonCandiPressedMiddle,
- KAknsIIDQsnFrItutButtonCandiPressedSideR,
- TRgb( 194, 221, 242 ),
- ETrue );
-
- TInt unitWidth = iLafManager->CandidateUnitWidth();
- TInt unitHeight = iLafManager->CandidateUnitHeight();
- TPoint ltPosition = iLafManager->CandidateLTPos();
- const CFont *font = iLafManager->CandidateFont();
- TInt horizontalMargin = iLafManager->CandidateHorizontalMargin();
- TInt verticalMargin = iLafManager->CandidateVerticalMargin();
-
- iNumCandidateList = CFepCtrlDropdownList::NewL(UiLayout(),
- EHwrCtrlIdNumCandidateList,
- R_FSHWR_CANDIDATE_DROP_DOWN_LIST,
- ltPosition,
- font ,
- TSize(unitWidth,unitHeight),
- unitWidth,
- 3,1,
- unitHeight,
- 0,
- 0,
- CFepCtrlDropdownList::ECandFromRToL,
- EFalse);
- AddControlL( iNumCandidateList );
- iNumCandidateList->SetCellMargin( horizontalMargin, verticalMargin );
- iNumCandidateList->SetFont( font );
-
- // set the needed events
- iNumCandidateList->SetEventIdForCandidateSelected( EHwrEventCandidateSelected );
- iNumCandidateList->AddEventObserver( UiLayout() );
-
- // hide the candidate list
- iNumCandidateList->Hide( ETrue );
- iNumCandidateList->SetDropdownListImgID( candiDrawInfo );
-
- }
-// ---------------------------------------------------------------------------
// create writing box.
// ---------------------------------------------------------------------------
//
@@ -762,10 +719,14 @@
EHwrEventNavKeyClicked, EKeyLeftArrow );
iArrowRightBtn = CreateRepBtnL( EHwrCtrlIdArrowRight, R_AKN_FEP_HWR_ARROWRIGHT,
EHwrEventNavKeyClicked, EKeyRightArrow );
- iArrowUpBtn = CreateRepBtnL( EHwrCtrlIdArrowUp, R_AKN_FEP_HWR_ARROWUP,
- EHwrEventNavKeyClicked, EKeyUpArrow );
- iArrowDownBtn = CreateRepBtnL( EHwrCtrlIdArrowDown, R_AKN_FEP_HWR_ARROWDOWN,
- EHwrEventNavKeyClicked, EKeyDownArrow );
+ iEnterBtn = CreateEventBtnL(EHwrCtrlIdBtnEnter,R_AKN_FEP_HWR_ENTER);
+ iSpaceBtn = CreateEventBtnL(EHwrCtrlIdBtnSpace,R_AKN_FEP_HWR_SPACE);
+ // Create 3-pieces color icon for space button
+ CPenInput3PiecesColorIcons* colorIcons =
+ CPenInput3PiecesColorIcons::NewL( R_AKN_FEP_VKB_SPACE_ICON1,
+ R_AKN_FEP_VKB_SPACE_ICON2,
+ R_AKN_FEP_VKB_SPACE_ICON3 );
+ iSpaceBtn->Set3PiecesColorIcons( colorIcons );
iSymbolTableBtn = CreateEventBtnL( EHwrCtrlIdSymbolButton, R_AKN_FEP_HWR_SYMBOL_TABLE_BUTTON );
}
@@ -784,6 +745,20 @@
}
// ---------------------------------------------------------------------------
+// create virtual number mode sct pad.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::CreateNumSymbolTableL()
+ {
+ iNumSymbolTable = CPeninputArabicFingerHwrNumSymbolTable::NewL(UiLayout(),EHwrCtrlIdNumSymbolTableVkbGroup);
+ iNumSymbolTable->Hide(ETrue);
+ iNumSymbolTable->SetResourceId(R_FINGERHWR_ARABIC_SYMBOLTABLE);
+ iNumSymbolTable->ConstructFromResourceL();
+ AddControlL( iNumSymbolTable );
+ iNumSymbolTable->AddEventObserver( UiLayout() );
+ }
+
+// ---------------------------------------------------------------------------
// EventButton creation helper.
// ---------------------------------------------------------------------------
//
@@ -842,6 +817,23 @@
}
// ---------------------------------------------------------------------------
+// load virtual number mode sct keys.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::LoadNumSymbolVirtualKeysL( const TInt aResId,
+ const RArray<TRect>& aCellRects )
+ {
+ TAknTextLineLayout txtlayout = iLafManager->NumpadKeyTxtLayout();
+ iNumSymbolTable->KeyPad()->SetTextLineLayout( txtlayout );
+
+ TInt fontid = txtlayout.FontId();
+ const CFont* font = AknLayoutUtils::FontFromId( fontid );
+ iNumSymbolTable->KeyPad()->SetFont( font );
+
+ iNumSymbolTable->LoadVirtualKeypadKeyL(aResId,aCellRects);
+ }
+
+// ---------------------------------------------------------------------------
// relayout full ui, reset all controls position.
// ---------------------------------------------------------------------------
//
@@ -884,18 +876,31 @@
pdx = iLafManager->GetArrowPaddingSize().iWidth;
pdy = iLafManager->GetArrowPaddingSize().iHeight;
- rect = iLafManager->CtrlRect( iArrowUpBtn->ControlId() );
- MoveIconButton( iArrowUpBtn, rect, pdx, pdy, ETrue );
-
rect = iLafManager->CtrlRect( iArrowLeftBtn->ControlId() );
MoveIconButton( iArrowLeftBtn, rect, pdx, pdy, ETrue );
rect = iLafManager->CtrlRect( iArrowRightBtn->ControlId() );
MoveIconButton( iArrowRightBtn, rect, pdx, pdy, ETrue );
- rect = iLafManager->CtrlRect( iArrowDownBtn->ControlId() );
- MoveIconButton( iArrowDownBtn, rect, pdx, pdy, ETrue );
-
+ rect = iLafManager->CtrlRect( iSpaceBtn->ControlId() );
+ MoveIconButton( iSpaceBtn, rect, pdx, pdy, ETrue );
+
+ TRect pieceInnerRect = rect;
+ pieceInnerRect.Shrink(pdx*2,pdy);
+
+ // that's a not good algrithm in funciton AknPenInputDrawUtils::Draw3PiecesColorIcon for drawing 3Pieces icons
+ // as when the outter rect's height was not equal to the inter rect's height, the target rects the left icons and right icons
+ // would be bitblited onto are set to be Rect(0.0.0.0.0) [[which should not be that behavior]].
+ // Please theck the codes: AknPenInputDrawUtils::Draw3PiecesColorIcon: this function should be Updated.
+ iSpaceBtn->SetDraw3PieceFrameInfo(
+ TDraw3PiecesFrame(KAknsIIDQgnIndiInputSpaceL,
+ KAknsIIDQgnIndiInputSpaceMiddle,
+ KAknsIIDQgnIndiInputSpaceR,
+ pieceInnerRect));
+
+ rect = iLafManager->CtrlRect( iEnterBtn->ControlId() );
+ MoveIconButton( iEnterBtn, rect, pdx, pdy, ETrue );
+
// load vkb key image
TSize keysize = iLafManager->VirtualSctpadCellSize().Size();
iSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_SCTPAD_IMAGE, keysize );
@@ -927,6 +932,31 @@
iSymbolTable->SizeChanged(iLafManager->GetVirtualKeyRect(),
iLafManager->GetSymBtnArray(), rows, cols,
iLafManager->IsLandscape());
+ //number mode symbol table
+ // load number mode vkb key image
+ TSize numkeysize = iLafManager->VirtualSctpadCellSize().Size();
+ iNumSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_NUMPAD_IMAGE, numkeysize );
+
+ // get the key rect
+ RArray<TRect> numrects;
+ CleanupClosePushL( numrects );
+ iLafManager->GetNumVirtualKeyRects( numrects );
+
+ // load keys
+ LoadNumSymbolVirtualKeysL(R_FINGER_HWR_NUMPAD, numrects);
+
+ CleanupStack::PopAndDestroy();//rects
+
+ //move virtual Sctpad
+ TInt numpadrows = iLafManager->VirtualNumSctpadRowCount();
+ TInt numpadcols = iLafManager->VirtualNumSctpadColCount();
+
+ rect = iLafManager->CtrlRect(iNumSymbolTable->ControlId());
+ iNumSymbolTable->SetRect(rect);
+
+ iNumSymbolTable->SizeChanged(iLafManager->GetVirtualNumKeyRect(),
+ iLafManager->GetSymBtnArray(), numpadrows, numpadcols,
+ iLafManager->IsLandscape());
}
@@ -938,14 +968,14 @@
{
// hide following controls
iCandidateList->Hide( ETrue );
- iNumCandidateList->Hide( ETrue );
iSymbolTable->Hide( ETrue);
+ iNumSymbolTable->Hide(ETrue);
// show following controls
iArrowLeftBtn->Hide( EFalse );
iArrowRightBtn->Hide( EFalse );
- iArrowUpBtn->Hide( EFalse );
- iArrowDownBtn->Hide( EFalse );
+ iSpaceBtn->Hide( EFalse );
+ iEnterBtn->Hide( EFalse );
iOptionBtn->Hide( EFalse );
iSymbolTableBtn->SetHighlight( EFalse);
iContextField->SetReady(ETrue);
@@ -958,18 +988,30 @@
//
void CPeninputFingerHwrArWnd::SwitchToSymbolTableView()
{
+ CPeninputFingerHwrArLayout* hwrLayout = NULL;
+ hwrLayout = static_cast<CPeninputFingerHwrArLayout*>( UiLayout() );
+ CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore();
+ TBool IsNumberOnly = datastore.IsNumberOnlyMode();
// show following controls
iWritingBox->Hide( EFalse );
- iSymbolTable->Hide( EFalse );
+ if(IsNumberOnly)
+ {
+ iSymbolTable->Hide( ETrue );
+ iNumSymbolTable->Hide(EFalse);
+ }
+ else
+ {
+ iSymbolTable->Hide( EFalse );
+ iNumSymbolTable->Hide(ETrue);
+ }
iOptionBtn->Hide( EFalse );
// hide follwing controls
iCandidateList->Hide( ETrue );
- iNumCandidateList->Hide( ETrue );
iArrowLeftBtn->Hide( ETrue );
iArrowRightBtn->Hide( ETrue );
- iArrowUpBtn->Hide( ETrue );
- iArrowDownBtn->Hide( ETrue );
+ iSpaceBtn->Hide( ETrue );
+ iEnterBtn->Hide( ETrue );
// set the symboltable button highlighted
iSymbolTableBtn->SetHighlight( ETrue );
@@ -978,8 +1020,16 @@
// so set this control to be not ready
iContextField->SetReady(EFalse);
- iSymbolTable->OpenSymbolTable();
- iSymbolTable->BringToTop();
+ if(IsNumberOnly)
+ {
+ iNumSymbolTable->OpenSymbolTable();
+ iNumSymbolTable->BringToTop();
+ }
+ else
+ {
+ iSymbolTable->OpenSymbolTable();
+ iSymbolTable->BringToTop();
+ }
}
@@ -1256,39 +1306,26 @@
{
if (aShow > 0)
{
- TRect outrect,innerrect;
+ TRect outrect,innerrect;
iCandidateList->ShowBubble(ETrue);
-
- // Set priview popup size
+
+ // Set priview popup size
iCandidateList->SetBubbleBitmapParam(NULL,NULL,KAknsIIDQsnFrInputCharPreview);
-
- outrect = iLafManager->PreviewBubbleRect();
- innerrect = iLafManager->PreviewBubbleInnerRect();
- iCandidateList->SetTextFormat(iLafManager->PreviewBubbleTextLayout());
- iCandidateList->SetBubbleTextFont(iLafManager->PreviewBubbleFont());
- iCandidateList->SetBubbleSize(TSize(outrect.Width(),outrect.Height())); // Read laf
- iCandidateList->SetFrameDiff(innerrect.iTl.iX - outrect.iTl.iX,
- innerrect.iTl.iY - outrect.iTl.iY,
- outrect.iBr.iX - innerrect.iBr.iX,
- outrect.iBr.iY - innerrect.iBr.iY);
-
- iNumCandidateList->ShowBubble(ETrue);
-
- // Set priview popup size
- iNumCandidateList->SetBubbleBitmapParam(NULL,NULL,KAknsIIDQsnFrInputCharPreview);
- iNumCandidateList->SetTextFormat(iLafManager->PreviewBubbleTextLayout());
- iNumCandidateList->SetBubbleTextFont(iLafManager->PreviewBubbleFont());
- iNumCandidateList->SetBubbleSize(TSize(outrect.Width(),outrect.Height())); // Read laf
- iNumCandidateList->SetFrameDiff(innerrect.iTl.iX - outrect.iTl.iX,
+
+ outrect = iLafManager->PreviewBubbleRect();
+ innerrect = iLafManager->PreviewBubbleInnerRect();
+ iCandidateList->SetTextFormat(iLafManager->PreviewBubbleTextLayout());
+ iCandidateList->SetBubbleTextFont(iLafManager->PreviewBubbleFont());
+ iCandidateList->SetBubbleSize(TSize(outrect.Width(),outrect.Height())); // Read laf
+ iCandidateList->SetFrameDiff(innerrect.iTl.iX - outrect.iTl.iX,
innerrect.iTl.iY - outrect.iTl.iY,
outrect.iBr.iX - innerrect.iBr.iX,
outrect.iBr.iY - innerrect.iBr.iY);
-
+
}
else
{
iCandidateList->ShowBubble(EFalse);
- iNumCandidateList->ShowBubble(EFalse);
}
}
@@ -1349,7 +1386,7 @@
//
void CPeninputFingerHwrArWnd::OpenSymbolTable()
{
- if(!iSymbolTable->IsPopup())
+ if(!iSymbolTable->IsPopup() && !iNumSymbolTable->IsPopup())
{
SwitchToSymbolTableView();
}
@@ -1367,7 +1404,13 @@
iSymbolTable->CloseSymbolTable();
iSymbolTable->BringToBack();
SwitchToStandbyView();
- }
+ }
+ else if(iNumSymbolTable->IsPopup())
+ {
+ iNumSymbolTable->CloseSymbolTable();
+ iNumSymbolTable->BringToBack();
+ SwitchToStandbyView();
+ }
}
// --------------------------------------------------------------------------
@@ -1377,7 +1420,8 @@
//
TBool CPeninputFingerHwrArWnd::IsSymbolTableShowingUp()
{
- return iSymbolTable->IsPopup();
+ TBool ret = iSymbolTable->IsPopup() | iNumSymbolTable->IsPopup();
+ return ret;
}
// --------------------------------------------------------------------------
@@ -1387,7 +1431,7 @@
//
TBool CPeninputFingerHwrArWnd::IsCandidateShowup()
{
- if(!iCandidateList->Hiden() || !iNumCandidateList->Hiden())
+ if(!iCandidateList->Hiden())
{
return ETrue;
}
@@ -1423,5 +1467,30 @@
return isFound;
}
-
+
+// ---------------------------------------------------------------------------
+// accept editor's number mapping restriction.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::SetNumericMapping( const TDesC& aNumMapping )
+ {
+ iNumSymbolTable->SetNumericMapping(aNumMapping);
+ }
+// ---------------------------------------------------------------------------
+// set native number mode on or off.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::SetNativeNumMode(const TBool aIsNativeNumMode)
+ {
+ iNumSymbolTable->SetNativeNumMode(aIsNativeNumMode);
+ }
+// ---------------------------------------------------------------------------
+// set icf language.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::SetIcfLanguage( TInt aLang )
+ {
+ iContextField->SetLanguageId(aLang);
+ }
+
// End Of File
--- a/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp Tue May 25 13:03:44 2010 +0300
@@ -1250,7 +1250,9 @@
iDataMgr->RequestData( ESpellIndiPaneWithoutTextRect ));
TRect iconRect = TItutDataConverter::AnyToRect(
iDataMgr->RequestData( ESpellIndiIconWithoutTextRect ));
- TSize offset( 0, 6 );
+ TSize offset;
+ offset.iHeight = iconRect.iTl.iY - bubbleRect.iTl.iY;
+ offset.iWidth = iconRect.iTl.iX - bubbleRect.iTl.iX;
TSize size( iconRect.Width(), iconRect.Height());
iICF->MsgBubbleCtrl()->SetRect( bubbleRect );
@@ -1856,7 +1858,6 @@
// reconstruct shift icon when skin changed
TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ReConstructL());
- TRAP_IGNORE(iStandardItutKp->StarIcon()->ReConstructL());
if ( iDataMgr->IsPortraitWest())
{
TRAP_IGNORE(iStandardItutKp->StarIcon()->ReConstructL());
@@ -2152,7 +2153,9 @@
iDataMgr->RequestData( EIndiPaneWithTextRect ));
TRect iconRect = TItutDataConverter::AnyToRect(
iDataMgr->RequestData( EIndiIconWithTextRect ));
- TSize offset( 60, 6 );
+ TSize offset;
+ offset.iHeight = iconRect.iTl.iY - bubbleRect.iTl.iY;
+ offset.iWidth = iconRect.iTl.iX - bubbleRect.iTl.iX;
TSize size( iconRect.Width(), iconRect.Height());
iICF->MsgBubbleCtrl()->SetRect( bubbleRect );
@@ -2170,7 +2173,9 @@
iDataMgr->RequestData( EIndiPaneWithoutTextRect ));
TRect iconRect = TItutDataConverter::AnyToRect(
iDataMgr->RequestData( EIndiIconWithoutTextRect ));
- TSize offset( 0, 6 );
+ TSize offset;
+ offset.iHeight = iconRect.iTl.iY - bubbleRect.iTl.iY;
+ offset.iWidth = iconRect.iTl.iX - bubbleRect.iTl.iX;
TSize size( iconRect.Width(), iconRect.Height());
iICF->MsgBubbleCtrl()->SetRect( bubbleRect );
--- a/textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp Tue May 25 13:03:44 2010 +0300
@@ -359,7 +359,9 @@
iOwner->DataMgr()->RequestData( ESpellIndiPaneWithoutTextRect ));
TRect iconRect = TItutDataConverter::AnyToRect(
iOwner->DataMgr()->RequestData( ESpellIndiIconWithoutTextRect ));
- TSize offset( 0, 6 );
+ TSize offset;
+ offset.iHeight = iconRect.iTl.iY - bubbleRect.iTl.iY;
+ offset.iWidth = iconRect.iTl.iX - bubbleRect.iTl.iX;
TSize size( iconRect.Width(), iconRect.Height());
iICF->MsgBubbleCtrl()->SetRect( bubbleRect );
--- a/textinput/peninputgenericitut/srcdata/peninputitutconfig_chinese.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericitut/srcdata/peninputitutconfig_chinese.rss Tue May 25 13:03:44 2010 +0300
@@ -912,7 +912,7 @@
colormajorskinid=EAknsMajorSkin;
textcolorgrp=EAknsMinorQsnTextColors;
- textcoloridx=59;
+ textcoloridx=64;
bordercolormajorskinid=EAknsMajorSkin;
bordercolorgrp=EAknsMinorQsnOtherColors;
@@ -979,7 +979,7 @@
colormajorskinid=EAknsMajorSkin;
textcolorgrp=EAknsMinorQsnTextColors;
- textcoloridx=59;
+ textcoloridx=64;
bordercolormajorskinid=EAknsMajorSkin;
bordercolorgrp=EAknsMinorQsnOtherColors;
@@ -1051,7 +1051,7 @@
colormajorskinid=EAknsMajorSkin;
textcolorgrp=EAknsMinorQsnTextColors;
- textcoloridx=59;
+ textcoloridx=64;
bordercolormajorskinid=EAknsMajorSkin;
bordercolorgrp=EAknsMinorQsnOtherColors;
@@ -1120,7 +1120,7 @@
colormajorskinid=EAknsMajorSkin;
textcolorgrp=EAknsMinorQsnTextColors;
- textcoloridx=59;
+ textcoloridx=64;
bordercolormajorskinid=EAknsMajorSkin;
bordercolorgrp=EAknsMinorQsnOtherColors;
--- a/textinput/peninputgenericvkb/inc/peninputgenericvkblayout.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericvkb/inc/peninputgenericvkblayout.h Tue May 25 13:03:44 2010 +0300
@@ -194,6 +194,8 @@
* @return pointer of a HBufC storing the string in it
*/
HBufC* ReadTextInfoHBufCL( TUint16* aStartPtr, TInt aLength );
+
+ TBool TranslateMirrorUnicode( TUint16 aInputCode, TUint16& aOutputCode );
private:
--- a/textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h Tue May 25 13:03:44 2010 +0300
@@ -342,7 +342,7 @@
* @param aText The text to be displayed in ICF
* @return None
*/
- void ShowTooltipL( const TDesC& aText );
+ void ShowTooltipL( const TDesC& aText, TInt aLangCode = ELangTest );
/**
* Hide tooltip of ICF
--- a/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp Tue May 25 13:03:44 2010 +0300
@@ -48,6 +48,8 @@
const TUint16 thaiUnicodeNew[KNumberOfDottedChar] = {0xF731,0xF733,0xF734,0xF735,0xF736,0xF737,0xF738,0xF739,
0xF73A,0xF747,0xF748,0xF749,0xF74A,0xF74B,0xF74C,0xF74D};
+const TInt KNumberOfMirrorChar = 6;
+const TUint16 mirrorUnicode[KNumberOfMirrorChar] = {0x0029,0x005D,0x003E,0x003C,0x005B,0x0028};
_LIT(KDisplaySpace, "\x0020");
_LIT(KEmptyString, "");
@@ -221,6 +223,7 @@
break;
case ECmdPenInputLanguage:
{
+ iDataMgr->SetData( EPeninputDataTypeInputLanguage, aData );
vkbWindow->SetSwitchlistLanguage(*aData);
vkbWindow->SetDeadKey();
if ( iLayoutType == EPluginInputModeFSQ )
@@ -493,6 +496,9 @@
break;
}
}
+
+ isDottedChar = TranslateMirrorUnicode( inputCode, outputCode );
+
if (isDottedChar)
{
number->Des().Append( outputCode );
@@ -505,6 +511,29 @@
}
}
+TBool CPeninputGenericVkbLayout::TranslateMirrorUnicode( TUint16 aInputCode, TUint16& aOutputCode )
+ {
+ TBool isMirrorChar = EFalse;
+ TInt langCode = *( ( TInt* )(iDataMgr->RequestData( EPeninputDataTypeInputLanguage )));
+ if (( langCode != ELangArabic ) &&
+ ( langCode != ELangHebrew ) &&
+ ( langCode != ELangFarsi ) &&
+ ( langCode != ELangUrdu ))
+ {
+ return isMirrorChar;
+ }
+ for (TInt i = 0; i < KNumberOfMirrorChar; i++)
+ {
+ if (mirrorUnicode[i] == aInputCode)
+ {
+ aOutputCode = mirrorUnicode[KNumberOfMirrorChar - i - 1];
+ isMirrorChar = ETrue;
+ break;
+ }
+ }
+ return isMirrorChar;
+ }
+
// ---------------------------------------------------------------------------
// Handle show tooltip command.
// ---------------------------------------------------------------------------
@@ -531,7 +560,7 @@
if (tooltipText)
{
CleanupStack::PushL(tooltipText);
- vkbWindow->ShowTooltipL(*tooltipText);
+ vkbWindow->ShowTooltipL(*tooltipText, *( ( TInt* )(iDataMgr->RequestData( EPeninputDataTypeInputLanguage ))));
CleanupStack::PopAndDestroy(tooltipText);
}
}
--- a/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Tue May 25 13:03:44 2010 +0300
@@ -36,6 +36,7 @@
#include <peninputdataprovider.h>
#include <peninputclientlayoutinfo.h>
#include <peninputlayoutchoicelist.h>
+#include <peninputlongpressbutton.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <peninputlayoutbubblectrl.h>
@@ -167,6 +168,81 @@
}
}
break;
+ case EPeninputLayoutEventMultiRangeLongPress:
+ {
+ const TInt range = CPeninputDataConverter::AnyToInt(
+ iLayoutContext->RequestData(EPeninputDataTypeCurrentRange));
+
+ const TInt langId = IntContext( EPeninputDataTypeInputLanguage );
+
+ if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn )
+ {
+
+ if ( range == ERangeAccent )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
+ {
+ ChangeRange(ERangeNative);
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
+ {
+ ChangeRange(ERangeEnglish);
+ }
+ }
+ else if ( range == ERangeNative )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) )
+ {
+
+ if ( langId != ELangArabic && langId != ELangFarsi
+ && langId != ELangUrdu && langId != ELangThai )
+ {
+ ChangeRange(ERangeNativeNumber);
+ }
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
+ {
+ if ( langId != ELangArabic && langId != ELangFarsi
+ && langId != ELangUrdu && langId != ELangThai )
+ {
+ ChangeRange(ERangeNumber);
+ }
+ }
+ }
+ else if ( range == ERangeEnglish )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
+ {
+ ChangeRange(ERangeNumber);
+ }
+ }
+ else if ( range == ERangeNativeNumber )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
+ {
+ ChangeRange(ERangeNative);
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
+ {
+ ChangeRange(ERangeEnglish);
+ }
+ }
+ else if ( range == ERangeNumber )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
+ {
+ ChangeRange(ERangeNative);
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
+ {
+ ChangeRange(ERangeEnglish);
+ }
+ }
+
+ TRAP_IGNORE( UpdateRangeCtrlsL() );
+ }
+ }
+ break;
case EPeninputLayoutVkbEventResetShift:
{
HandleShiftAndCapslockBtnClicked();
@@ -1150,8 +1226,12 @@
resId = numberRangeResId;
}
- rangeBtn->SetResourceId( resId );
- rangeBtn->ConstructFromResourceL();
+ if( rangeBtn->ResourceId() != resId )
+ {
+ rangeBtn->SetResourceId( resId );
+ rangeBtn->ConstructFromResourceL();
+ }
+
rangeBtn->SetDimmed( count < 1 );
}
@@ -1496,11 +1576,22 @@
}
else
{
- button = CAknFepCtrlEventButton::NewL( UiLayout(), aControlId,
- aEventId, aUnicode,
- KAknsIIDQsnFrFunctionButtonNormal,
- KAknsIIDQsnFrFunctionButtonPressed,
- KAknsIIDQsnFrFunctionButtonInactive );
+ if ( aControlId == EPeninutWindowCtrlIdMultiRangeBtn )
+ {
+ button = CAknFepCtrlLongPressButton::NewL( UiLayout(), aControlId,
+ aEventId, aUnicode,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+ }
+ else
+ {
+ button = CAknFepCtrlEventButton::NewL( UiLayout(), aControlId,
+ aEventId, aUnicode,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+ }
}
CleanupStack::PushL( button );
@@ -2479,7 +2570,7 @@
// Show tooltip of ICF
// --------------------------------------------------------------------------
//
-void CPeninputGenericVkbWindow::ShowTooltipL( const TDesC& aText )
+void CPeninputGenericVkbWindow::ShowTooltipL( const TDesC& aText, TInt aLangCode )
{
CFepLayoutMultiLineIcf* icf = static_cast<CFepLayoutMultiLineIcf*>
(Control(EPeninputWindowCtrlIdMultiLineICF));
@@ -2506,7 +2597,7 @@
tooltipRect.iBr
= innerRect.iBr + TPoint( KTooltipRightMargin, KTooltipBottomMargin );
// Set tooltip rect in terms of inner rect
- icf->ShowTooltipL( aText, tooltipRect );
+ icf->ShowTooltipL( aText, tooltipRect, aLangCode );
}
// --------------------------------------------------------------------------
@@ -2801,7 +2892,9 @@
TAknTextLineLayout textLine = iLafMgr->IndiText();
TRect bubbleRect = iLafMgr->IndiPaneRectWithText();
TRect iconRect = iLafMgr->IndiIconRectWithText();
- TSize offset( 60, 6 );
+ TSize offset;
+ offset.iHeight = iconRect.iTl.iY - bubbleRect.iTl.iY;
+ offset.iWidth = iconRect.iTl.iX - bubbleRect.iTl.iX;
TSize size( iconRect.Width(), iconRect.Height());
icf->MsgBubbleCtrl()->SetRect( bubbleRect );
@@ -2819,7 +2912,9 @@
{
TRect bubbleRect = iLafMgr->IndiPaneRectWithoutText();
TRect iconRect = iLafMgr->IndiIconRectWithoutText();
- TSize offset( 0, 6 );
+ TSize offset;
+ offset.iHeight = iconRect.iTl.iY - bubbleRect.iTl.iY;
+ offset.iWidth = iconRect.iTl.iX - bubbleRect.iTl.iX;
TSize size( iconRect.Width(), iconRect.Height());
icf->MsgBubbleCtrl()->SetRect( bubbleRect );
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_50.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_50.rss Tue May 25 13:03:44 2010 +0300
@@ -775,8 +775,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x200C>;
- scancode=0x200C;
+ unicode=<0x0631>;
+ scancode=0x0631;
beginrow=2;
begincolumn=4;
highlightbmpindex=0;
@@ -784,8 +784,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x200D>;
- scancode=0x200D;
+ unicode=<0x0630>;
+ scancode=0x0630;
beginrow=2;
begincolumn=5;
highlightbmpindex=0;
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_94.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_94.rss Tue May 25 13:03:44 2010 +0300
@@ -739,8 +739,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x200C>;
- scancode=0x200C;
+ unicode=<0x0642>;
+ scancode=0x0642;
beginrow=2;
begincolumn=0;
highlightbmpindex=0;
@@ -748,8 +748,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x200D>;
- scancode=0x200D;
+ unicode=<0x0641>;
+ scancode=0x0641;
beginrow=2;
begincolumn=1;
highlightbmpindex=0;
@@ -766,8 +766,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x200E>;
- scancode=0x200E;
+ unicode=<0x0633>;
+ scancode=0x0633;
beginrow=2;
begincolumn=3;
highlightbmpindex=0;
@@ -793,8 +793,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x200F>;
- scancode=0x200F;
+ unicode=<0x0639>;
+ scancode=0x0639;
beginrow=2;
begincolumn=6;
highlightbmpindex=0;
--- a/textinput/peninputsplititut/src/peninputsplititutwindow.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputsplititut/src/peninputsplititutwindow.cpp Tue May 25 13:03:44 2010 +0300
@@ -1683,7 +1683,9 @@
TRect iconRect = TItutDataConverter::AnyToRect(
iDataMgr->RequestData( EIndiIconWithoutTextRect ));
- TSize offset( 0, 6 );
+ TSize offset;
+ offset.iHeight = iconRect.iTl.iY - bubbleRect.iTl.iY;
+ offset.iWidth = iconRect.iTl.iX - bubbleRect.iTl.iX;
TSize size( iconRect.Width(), iconRect.Height());
iICF->MsgBubbleCtrl()->SetRect( bubbleRect );
--- a/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Tue May 25 13:03:44 2010 +0300
@@ -57,6 +57,7 @@
#include "peninputsplitqwertylayout.h"
#include <peninputaknvkbpreviewbubblerenderer.h>
+#include <peninputlongpressbutton.h>
// Constants
const TInt KPeninputVkbWndInvalidIndex = -1;
@@ -481,7 +482,82 @@
switch ( aEventType )
{
- case EEventButtonUp:
+ case EPeninputLayoutEventMultiRangeLongPress:
+ {
+ const TInt range = CPeninputDataConverter::AnyToInt(
+ iLayoutContext->RequestData(EPeninputDataTypeCurrentRange));
+
+ const TInt langId = CPeninputDataConverter::AnyToInt(
+ iLayoutContext->RequestData(EPeninputDataTypeInputLanguage));
+
+ if ( aCtrl->ControlId() == EPeninutWindowCtrlIdRangeBtn )
+ {
+ if ( range == ERangeAccent )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
+ {
+ ChangeRange(ERangeNative);
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
+ {
+ ChangeRange(ERangeEnglish);
+ }
+ }
+ else if ( range == ERangeNative )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) )
+ {
+
+ if ( langId != ELangArabic && langId != ELangFarsi
+ && langId != ELangUrdu && langId != ELangThai )
+ {
+ ChangeRange(ERangeNativeNumber);
+ }
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
+ {
+ if ( langId != ELangArabic && langId != ELangFarsi
+ && langId != ELangUrdu && langId != ELangThai )
+ {
+ ChangeRange(ERangeNumber);
+ }
+ }
+ }
+ else if ( range == ERangeEnglish )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
+ {
+ ChangeRange(ERangeNumber);
+ }
+ }
+ else if ( range == ERangeNativeNumber )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
+ {
+ ChangeRange(ERangeNative);
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
+ {
+ ChangeRange(ERangeEnglish);
+ }
+ }
+ else if ( range == ERangeNumber )
+ {
+ if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
+ {
+ ChangeRange(ERangeNative);
+ }
+ else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
+ {
+ ChangeRange(ERangeEnglish);
+ }
+ }
+
+ TRAP_IGNORE( UpdateRangeCtrlsL() );
+ }
+ }
+ break;
+ case EPeninputLayoutEventMultiRange:
{
if ( ctrlId == EPeninutWindowCtrlIdRangeBtn )
{
@@ -1293,12 +1369,13 @@
//
void CPeninputSplitQwertyWindow::AddRangeBarL()
{
- CAknFepCtrlCommonButton* button = CAknFepCtrlCommonButton::NewL(
- UiLayout(),
- EPeninutWindowCtrlIdRangeBtn,
- KAknsIIDQsnFrFunctionButtonNormal,
- KAknsIIDQsnFrFunctionButtonPressed,
- KAknsIIDQsnFrFunctionButtonInactive );
+ CAknFepCtrlLongPressButton* button = CAknFepCtrlLongPressButton::NewL(
+ UiLayout(),
+ EPeninutWindowCtrlIdRangeBtn,
+ 0xffff, 0,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
CleanupStack::PushL( button );
button->SetResourceId( R_PENINPUT_LAYOUT_VKB_RANGE_DEFAULT );
--- a/textinput/peninputvkbcn/ctrlsrc/peninputvkbcompositionfield.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputvkbcn/ctrlsrc/peninputvkbcompositionfield.cpp Tue May 25 13:03:44 2010 +0300
@@ -783,7 +783,7 @@
UpdateTextL();
Draw();
- UpdateArea(Rect(),EFalse);
+ //UpdateArea(Rect(),EFalse);
}
// ---------------------------------------------------------
--- a/textinput/peninputvkbcn/ctrlsrc/peninputvkbwindow.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputvkbcn/ctrlsrc/peninputvkbwindow.cpp Tue May 25 13:03:44 2010 +0300
@@ -206,6 +206,7 @@
//
void CAknFepVkbWindow::ChangeImLayout(TInt aRange, TBool aChangeVkb)
{
+ UiLayout()->DisableLayoutDrawing(ETrue);
TInt imLayout = iDataProvider->RequestData(EAknFepDataTypeIMLayout);
if ( iArrowLeftButton )
@@ -219,6 +220,7 @@
iClientArea->ChangeImLayout(aRange, aChangeVkb);
SizeChangedForTitle();
+ UiLayout()->DisableLayoutDrawing(EFalse);
Draw();
}
--- a/textinput/peninputvkbcn/src/peninputvkblayout.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputvkbcn/src/peninputvkblayout.cpp Tue May 25 13:03:44 2010 +0300
@@ -254,6 +254,7 @@
case ECmdPenInputWindowClose:
iVkbWindow->Hide(ETrue);
LayoutOwner()->Hide(ETrue);
+ iVkbWindow->HideTooltipOnFSQ();
break;
case ECmdPenInputRange:
SetCurrentRange(*data);
@@ -605,6 +606,13 @@
case EVkbEventCompFieldNoChars:
SendEventToVkbControl(EVkbEventComposition2Standby,NULL);
+ SendEventToVkbControl( aEventType, aCtrl, aEventData );
+ if ( iUiStateMgr )
+ {
+ iUiStateMgr->SetCurrentUiState( iUiStateMgr->UiStateStandbycn());
+ ForceEditGainFocus( EInputContextFieldGetFocus );
+ }
+ break;
case EVkbEventClearContent:
SendEventToVkbControl(aEventType,aCtrl,aEventData);
break;
--- a/textinput/peninputvkbcn/src/peninputvkbuistatecompositionwithchars.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputvkbcn/src/peninputvkbuistatecompositionwithchars.cpp Tue May 25 13:03:44 2010 +0300
@@ -124,27 +124,9 @@
// -----------------------------------------------------------------------------
//
TBool CAknFepVkbUiStateCompositionWithChars::HandleBackEvent(TInt /*aEventType*/,
- const TDesC& aEventData)
- {
- TInt lengthPendown = iContext->RequestData(EAknFepDataTypeLengthWhenButtondownOnBack);
-
- TInt* data = (TInt*) aEventData.Ptr();
-
- //Get the flag of pen up or timer out, true when timer out, false when pen up
- data++;
-
- if ( 1 >= iContext->CompositionFieldStringLength() ) // if no chars
- {
- iContext->SendEventToVkbControl(EVkbEventComposition2Standby,NULL);
-
- if ( *data == EFalse ) // pen up
- {
- iUiStateMgr->SetCurrentUiState(iUiStateMgr->UiStateStandbycn());
- iContext->ForceEditGainFocus(EInputContextFieldGetFocus);
- }
- }
- return EFalse; // If no chars, needn't send to composition again
-
+ const TDesC& /*aEventData*/)
+ {
+ return EFalse; // If no chars, needn't send to composition again
}
// -----------------------------------------------------------------------------
--- a/textinput/peninputvkbkr/src/PeninputVkbKrWindow.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputvkbkr/src/PeninputVkbKrWindow.cpp Tue May 25 13:03:44 2010 +0300
@@ -15,8 +15,8 @@
*
*/
-#include <PeninputVkbKrWindowConfigInfo_65.rsg>
-#include <PeninputVkbKrWindowKr.rsg>
+#include <peninputvkbkrwindowconfiginfo_65.rsg>
+#include <peninputvkbkrwindowkr.rsg>
#include <aknlayoutscalable_apps.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>
--- a/textinput/ptienginev2/languages/102072F3.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102072F3.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818A5.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818A5.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818A6.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818A6.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818A7.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818A7.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818A8.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818A8.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818A9.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818A9.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818AA.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818AA.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818AB.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818AB.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818AC.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818AC.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818AD.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818AD.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818AE.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818AE.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818AF.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818AF.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818B0.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818B0.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818B1.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818B1.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818B2.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818B2.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818B9.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818B9.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818BA.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818BA.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818BB.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818BB.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/102818BC.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/102818BC.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B72.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B72.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B74.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B74.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B76.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B76.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B78.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B78.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B7A.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B7A.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B7C.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B7C.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B7E.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B7E.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B80.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B80.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B82.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B82.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B84.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B84.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B88.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B88.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B89.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B89.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B8D.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B8D.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B8E.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B8E.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B8F.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B8F.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B90.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B90.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B92.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B92.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B93.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B93.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B94.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B94.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B95.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B95.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B96.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B96.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10281B97.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10281B97.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10282545.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10282545.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10282547.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10282547.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10282549.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10282549.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/1028255C.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/1028255C.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10282562.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10282562.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/10282568.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/10282568.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/2000B17D.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/2000B17D.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/2001FDFA.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/2001FDFA.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/2002BC83.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/2002BC83.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/languages/2002BC85.rss Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/languages/2002BC85.rss Tue May 25 13:03:44 2010 +0300
@@ -26,8 +26,8 @@
-#include <Eikon.rh>
-#include <ecom/RegistryInfo.rh>
+#include <eikon.rh>
+#include <ecom/registryinfo.rh>
RESOURCE REGISTRY_INFO theInfo
--- a/textinput/ptienginev2/src/PtiDefaultCore.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/src/PtiDefaultCore.cpp Tue May 25 13:03:44 2010 +0300
@@ -22,7 +22,7 @@
#include "PtiLanguage.h"
#include "PtiEngine.h"
#include "PtiKeyMappings.h"
-#include <PtiEngine.rsg>
+#include <ptiengine.rsg>
#include "PtiDefaultNumberModeMappingdata.h"
#include <data_caging_path_literals.hrh>
--- a/textinput/ptienginev2/src/PtiEngineImpl.cpp Tue May 11 16:31:42 2010 +0300
+++ b/textinput/ptienginev2/src/PtiEngineImpl.cpp Tue May 25 13:03:44 2010 +0300
@@ -23,7 +23,7 @@
#include "PtiEngineImpl.h"
#include "PtiDefaultCore.h"
#include "PtiLanguage.h"
-#include <PtiEngine.rsg>
+#include <ptiengine.rsg>
#include "PtiUserDicEntry.h"
#include "PtiEngine.h"
#include "PtiKeyMappings.h"
@@ -149,6 +149,8 @@
aMainCode = ELangSpanish;
break;
case ELangEnglish_Taiwan:
+ case ELangEnglish_HongKong:
+ case ELangEnglish_Prc:
aMainCode = ELangEnglish;
break;
default: