--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -36,12 +36,15 @@
#include <PtiDefs.h>
#include <aknfep.rsg>
#include <AknFepGlobalEnums.h>
-#include <featmgr.h>
+#include <featmgr.h>
+#include <AknFepInternalPSKeys.h>
#include "AknFepPredictiveSettingList.h"
#include "AknFepPredictiveSettingData.h"
#include "AknFepPredictiveSettingDialog.h"
+const TInt KFSQMode = 2;
+
CAknFepMultiSelectionSettingItem::CAknFepMultiSelectionSettingItem (
TInt aResourceId, CAknFepPredictiveSettingData &aData, CCoeEnv* aCoeEnv )
: CAknBigSettingItemBase(aResourceId), iData(aData), iCoeEnv(aCoeEnv)
@@ -289,37 +292,56 @@
switch (aIdentifier)
{
case EAknFepCmdPredAutoComplSetting:
+ {
settingItem = new (ELeave) CAknBinaryPopupSettingItem (
aIdentifier, iSettingsData.AutoWordCompl());
if(DeviceHasMultipleKeyboards())
{
settingItem->SetHidden(ETrue);
}
+ }
break;
case EAknFepCmdPredAutoComplMultiSetting:
+ {
settingItem = new (ELeave) CAknFepMultiSelectionSettingItem (
aIdentifier, iSettingsData, iCoeEnv );
if(!DeviceHasMultipleKeyboards())
{
settingItem->SetHidden(ETrue);
}
+ }
break;
case EAknFepCmdPredNumberCandidateSetting:
+ {
settingItem = new (ELeave) CAknBinaryPopupSettingItem (
aIdentifier,
iSettingsData.NumberCandidates());
- if(keyboardLayout == EPtiKeyboard12Key || keyboardLayout == EPtiKeyboardHalfQwerty)
+
+ TInt dialogState = 0;
+ RProperty::Get( KPSUidAknFep, KAknFepSettingDialogState, dialogState );
+ //Remove Number Candidate item from setting dialog
+ if ( dialogState == KFSQMode ||
+ keyboardLayout == EPtiKeyboard12Key ||
+ keyboardLayout == EPtiKeyboardHalfQwerty)
+ {
+ // When dialog state is 2, it means that the setting dialog is opened
+ // for virtual qwerty keyboard
settingItem->SetHidden(ETrue);
+ }
+ }
break;
case EAknFepCmdPredTypingCorrectionSetting:
+ {
settingItem = new (ELeave) CAknEnumeratedTextPopupSettingItem (
aIdentifier,
iSettingsData.TypingCorrection());
// Disabled for ITU-T
if(keyboardLayout == EPtiKeyboard12Key || keyboardLayout == EPtiKeyboardHalfQwerty)
settingItem->SetHidden(ETrue);
+ }
break;
case EAknFepCmdPredPrimaryCandidateSetting:
+ {
settingItem = new (ELeave) CAknBinaryPopupSettingItem (
aIdentifier,
iSettingsData.PrimaryCandidate());
@@ -327,6 +349,7 @@
if(keyboardLayout == EPtiKeyboardHalfQwerty ||
keyboardLayout == EPtiKeyboard12Key)
settingItem->SetHidden(ETrue);
+ }
break;
default:
break;
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepQuery.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepQuery.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -79,7 +79,15 @@
{
underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
}
- }
+ }
+ else if (FeatureManager::FeatureSupported(KFeatureIdKorean))
+ {
+ // Use the special sct resource file for Korean variant.
+ if (!underlyingEditorSCTResId || underlyingEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
+ {
+ underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN;
+ }
+ }
else if (!underlyingEditorSCTResId)
{
underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG;
Binary file fep/aknfep/conf/aknfep.confml has changed
Binary file fep/aknfep/conf/aknfep_101F876D.crml has changed
--- a/fep/aknfep/inc/AknFepLanguageManager.h Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/inc/AknFepLanguageManager.h Thu Aug 19 10:15:25 2010 +0300
@@ -55,6 +55,7 @@
class RPeninputServer;
class TImePlguinImplDetail;
class CAknFepPluginManager;
+class CAknFepSharedDataInterface;
/**
* CAknFepLanguageManager is a part of Japanese FEP.
@@ -84,8 +85,10 @@
* @param aCaseMan
* @param aLanguage
*/
- static CAknFepLanguageManager* NewL(MAknFepManagerUIInterface* aFepMan,
- CAknFepCaseManager* aCaseMan);
+ static CAknFepLanguageManager* NewL( MAknFepManagerUIInterface* aFepMan,
+ CAknFepCaseManager* aCaseMan,
+ CAknFepSharedDataInterface* aSharedData = NULL );
+
/**
* Destructor.
@@ -187,8 +190,9 @@
*
* @since 2.6
*/
- CAknFepLanguageManager(MAknFepManagerUIInterface* aFepManager,
- CAknFepCaseManager* aCaseManager);
+ CAknFepLanguageManager( MAknFepManagerUIInterface* aFepManager,
+ CAknFepCaseManager* aCaseManager,
+ CAknFepSharedDataInterface* aSharedData = NULL );
/**
* Second phase construction
@@ -258,6 +262,12 @@
* @since S60 v3.2
*/
TBool iIsSplitView;
+
+ /**
+ * Shared data manager
+ */
+ CAknFepSharedDataInterface* iSharedData;
+
};
inline CAknFepPenInputImePlugin* CAknFepLanguageManager::CurrentImePlugin()
--- a/fep/aknfep/inc/AknFepManager.h Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/inc/AknFepManager.h Thu Aug 19 10:15:25 2010 +0300
@@ -131,6 +131,7 @@
};
const TInt KChrKeyMultitapTimeout = 1000000;
+const TInt KFnKeyLongPressTimeout = 600000;
/**
* Translates ET9Eng language codes into localised descriptors and command Id's
*/
@@ -1364,6 +1365,32 @@
* @return none
*/
void SetChangeModeByShiftAndSpace( TBool aFlag );
+
+ /**
+ * Handle the Fn Key Monitor
+ *
+ * @since 3.0
+ * @return KErrNone if succeed, KErrDied if failed
+ */
+ static TInt HandleFnKeyPressMonitorCallback(TAny* aObj);
+
+ /**
+ * Handle the Fn Key Monitor
+ * for Qwerty only.
+ *
+ * @since 3.0
+ */
+ void HandleFnKeyPressMonitor();
+
+ /**
+ * Activate fn key press monitor to detect long pressing event
+ */
+ void ActivateFnkeyPressMonitor();
+
+ /**
+ * Deactivate fn key press monitor
+ */
+ void DeactivateFnkeyPressMonitor();
public:
//Hash Key Manager Interface
@@ -2836,7 +2863,12 @@
* when rotating the screen, we need to consider it, e.g V-ITUT to FSQ
*/
TBool iMatchesListLaunched;
-
+
+ /**
+ * monitor the long press event from Fn key
+ * when long press event occurs, Fn key will be set to Lock state
+ */
+ CPeriodic* iFnKeypressMonitor;
public:
@@ -2895,6 +2927,10 @@
* @param aCallback, the callback when the timer expires
*/
void MultitapThroughSCTCharL(TCallBack aCallBack);
+ /**
+ * Notify mfne editor to toggle AM or PM for 12-hour time
+ */
+ void ChangeMfneAmPm();
private:
TBool NumericResourceMultiTapTimerTimeoutL();
--- a/fep/aknfep/inc/AknFepManagerUIInterface.h Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/inc/AknFepManagerUIInterface.h Thu Aug 19 10:15:25 2010 +0300
@@ -401,6 +401,13 @@
* An editor of unlimited length will return its maximum size as zero
*/
virtual TBool EditorHasFreeSpace( TInt aNumberOfCharacter = 0 ) const = 0;
+
+ /**
+ * Check whether the editor is a Java number editor
+ * Return ETrue if the editor is a Java number editor
+ */
+ virtual TBool IsSpecialNumericEditor() = 0;
+
virtual void RedecorateAfterDeletionL( const TDesC& aTextThatWasDeleted ) = 0;
--- a/fep/aknfep/inc/AknFepPluginManager.h Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/inc/AknFepPluginManager.h Thu Aug 19 10:15:25 2010 +0300
@@ -448,6 +448,24 @@
*/
void RemoveLastFocusedWinFromOpenList();
+ /**
+ * Set the editor pointer to NULL
+ *
+ * @since v5.0
+ * @param none
+ * @return void
+ */
+ void ClearDestroyedEditorPointer();
+
+ /**
+ * Get the editor state
+ *
+ * @since v5.0
+ * @param none
+ * @return the pointer of editor state
+ */
+ CAknEdwinState* EdwinState();
+
public: // inline
/**
@@ -758,6 +776,24 @@
void InformMfneUiStatusL( TBool aOpened );
+ /**
+ * Update editor state according to current ui state
+ *
+ * @since Symbian^3
+ * @param aOpened specifies current ui is opened or closed
+ */
+ void SetEdwinFlagsByUiStatus( TBool aOpened );
+
+ /**
+ * Update state flags of specified editor
+ *
+ * @since Symbian^3
+ * @param aEdwin specifies the editor to be updated
+ * @param aFlags editor state flags
+ * @param aSet ETrue to add flags, or EFalse to remove flags.
+ */
+ void SetAknEdwinFlags( MCoeFepAwareTextEditor* aEdwin, TInt aFlags, TBool aSet );
+
void UpdatePredicState();
TBool NotifyInGlobalNoteEditorL();
@@ -856,6 +892,14 @@
* @CAknFepUiInterfaceMenuPane* aMenuPane The menu pane used to add more menu items
*/
void InitMenuItemForArabicFingerHwrL(CAknFepUiInterfaceMenuPane* aMenuPane);
+
+ /**
+ * andling the menu cmd for changing the input mode
+ *
+ * @param aInputMode: the inputmode should be activate
+ * @return None
+ */
+ void ProcessChangingInputModeCmdL(TInt aInputMode);
private: // Data
@@ -1030,6 +1074,13 @@
TBool iLaunchHelp;
TInt iCurPermittedModes;
MCoeFepAwareTextEditor* iMfne;
+
+ /**
+ * current focused editor
+ * not own
+ */
+ MCoeFepAwareTextEditor* iEdwin;
+
TBool iMfneChanged;
TBool iIsInEditWordQueryDlg;
@@ -1083,6 +1134,11 @@
TBool iLaunchSCTInSpell;
TBool iFocuschangedForSpellEditor;
+
+ /**
+ * Indicate whether portrait FSQ feature is enabled
+ */
+ TBool iPortraitFSQEnabled;
};
class CConnectAo : public CActive
--- a/fep/aknfep/inc/AknFepSharedDataInterface.h Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/inc/AknFepSharedDataInterface.h Thu Aug 19 10:15:25 2010 +0300
@@ -34,6 +34,7 @@
#include <e32property.h>
#include <cenrepnotifyhandler.h>
#include <pslninternalcrkeys.h>
+#include <AknFepGlobalEnums.h> // for TPluginInputMode
class CRepository;
@@ -567,6 +568,22 @@
* 1 is arabic native number.
*/
void SetDefaultArabicNumberMode(TInt aValue);
+
+ /**
+ * Get the last used plugin input mode for portrait orientation
+ *
+ * @since 5.2
+ * @return value of KAknFepLastUsedPortraitInput value.
+ */
+ TPluginInputMode PluginPortraitInputMode() const;
+
+ /**
+ * Replaces the last used plugin input mode for portrait orientation
+ *
+ * @since 5.2
+ * @param Replace value of KAknFepLastUsedPortraitInput value.
+ */
+ void SetPluginPortraitInputMode( TPluginInputMode aLastUsedPortraitInputMode );
private:
/**
* C++ Constructor
--- a/fep/aknfep/inc/AknFepUiInputStateQwertyKorean.h Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/inc/AknFepUiInputStateQwertyKorean.h Thu Aug 19 10:15:25 2010 +0300
@@ -38,9 +38,7 @@
private:
virtual TBool HandleKeyL(TInt aKey, TKeyPressLength aLength);
-
- void KeyTimerExpired();
-
+
private:
};
--- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerBase.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerBase.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -539,13 +539,9 @@
// Not derived from edwin
if ( aPermittedMode == EAknEditorNumericInputMode )
{
- if ( SupportNativeNumberRange() )
- {
- iPermittedRange = ERangeNativeNumber;
- }
- iPermittedRange |= ERangeNumber;
+ // Only number range is supported in Korean Variant
+ iPermittedRange = ERangeNumber;
}
-
else if ( aPermittedMode & EAknEditorTextInputMode )
{
// Derived from edwin and EAknEditorTextInputMode
--- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.inl Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.inl Thu Aug 19 10:15:25 2010 +0300
@@ -33,6 +33,7 @@
const TInt KVkbUiId = 0x10282359;
const TInt KFsqUiId = 0x2001114D;
const TInt KSsqUiId = 0x2001E2BB;
+const TInt KPrtFsqUiId = 0x20026837;
const TInt KFingerHwrUiId = 0x2001E2C4;
inline CPluginFepManagerBase* CPenInputImePluginGeneric::GetCurrentUi()
{
@@ -42,6 +43,8 @@
case EPluginInputModeVkb:
case EPluginInputModeFingerHwr:
case EPluginInputModeFSQ:
+ // Portrait FSQ is added as a new mode
+ case EPluginInputModePortraitFSQ:
return iPluginUiManager;
default:
return NULL;
--- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingeneric.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingeneric.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -49,6 +49,7 @@
_LIT(KHwrImeName, "Generic HWR");
_LIT(KVkbImeName, "Generic VKB");
_LIT(KFSQImeName, "Generic FSQ");
+_LIT(KPrtFSQImeName, "Portrait QWERTY");
_LIT(KSSQImeName, "Split View Qwerty");
_LIT(KFingerHwrImeName, "Generic Fingerhwr");
_LIT(KHwrResourceFormatPattern, "peninputhwrwindowconfiginfo_*.rsc");
@@ -207,6 +208,16 @@
}
}
break;
+ case EPluginInputModePortraitFSQ:
+ {
+ // UI layout for portrait FSQ.
+ // Note: Don't need to check whether portrait QWERTY feature is
+ // enabled. Because otherwise, aMode can not have
+ // EPluginInputModePortraitFSQ.
+ layoutId.iUid = KPrtFsqUiId;
+ }
+ break;
+
case EPluginInputModeFingerHwr:
{
layoutId.iUid = KFingerHwrUiId;
@@ -271,6 +282,13 @@
{
mode = EPluginInputModeFSQ;
}
+ // If full screen portrait QWERTY feature is enabled, portrait QWERTY UI
+ // layout is used.
+ else if( aLayoutId == KPrtFsqUiId )
+ {
+ mode = EPluginInputModePortraitFSQ;
+ }
+
else if( aLayoutId == KFingerHwrUiId )
{
mode = EPluginInputModeFingerHwr;
@@ -365,6 +383,11 @@
id = KFsqUiId;
}
break;
+ case EPluginInputModePortraitFSQ:
+ {
+ id = KPrtFsqUiId;
+ }
+ break;
case EPluginInputModeFingerHwr:
{
id = KFingerHwrUiId;
@@ -465,6 +488,7 @@
TBool hwr = EFalse;
TBool vkb = EFalse;
TBool fsq = EFalse;
+ TBool prtfsq = EFalse;
TBool ssq = EFalse;
TBool fingerhwr = EFalse;
CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) );
@@ -489,6 +513,14 @@
fsq = ETrue;
}
+ // If full screen portrait QWERTY feature is enabled, set the mode is enabled.
+ if ( infoArray[i]->ImplementationUid().iUid == KPrtFsqUiId
+ && FeatureManager::FeatureSupported(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput ) )
+ {
+ prtfsq = ETrue;
+ }
+
if (infoArray[i]->ImplementationUid().iUid == KSsqUiId
&& FeatureManager::FeatureSupported(KFeatureIdVirtualFullscrQwertyInput))
{
@@ -533,7 +565,7 @@
delete dir;
}
- if( vkb || fsq )
+ if( vkb || fsq || prtfsq )
{
TFindFile fileFinder(CCoeEnv::Static()->FsSession());
TFileName resName;
@@ -571,6 +603,34 @@
j <= KSupportLanguages[i].iLangEnd; ++j)
{
VkbResNameFromLangId( resName, j);
+
+ if( IsFileInDir( dir, resName ) )
+ {
+ detail.iLanguage = j;
+ detail.iMeritValue = KSupportLanguages[i].iMerit;
+ aSupportList.Append(detail);
+ }
+ }
+ }
+ }
+
+ // Add portrait full qwerty as the supported mode.
+ // Note: Feature flag check is not needed here because prtfsq should be
+ // EFalse if the feature flag is not enabled.
+ // Note: We share the same layout for portrait FSQ with landscape FSQ.
+ if( prtfsq )
+ {
+ detail.iMode = EPluginInputModePortraitFSQ;
+ // Display name is "Portrait QWERTY".
+ detail.iDisplayName.Copy( KPrtFSQImeName() );
+ // Add all the support languages. They are defined in 10282358.rss.
+ for ( TInt i = 0; i < sizeof( KSupportLanguages ) / sizeof( TLangMeritPair ); ++i )
+ {
+ for ( TInt j = KSupportLanguages[i].iLangStart;
+ j <= KSupportLanguages[i].iLangEnd; ++j )
+ {
+ VkbResNameFromLangId( resName, j );
+
if( IsFileInDir( dir, resName ) )
{
detail.iLanguage = j;
@@ -768,6 +828,7 @@
}
case EPluginInputModeVkb:
case EPluginInputModeFSQ:
+ case EPluginInputModePortraitFSQ:
{
return iPluginUiManager = CPluginFepManagerVkb::NewL(*this, iPenInputServer);
}
--- a/fep/aknfep/src/AknFepFnKeyManager.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepFnKeyManager.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -130,6 +130,21 @@
iFepMan.SetCase(EFnKeyLowerCase);
iFepMan.UpdateIndicators();
}
+ else if( keyboardType == EPtiKeyboardQwerty4x10 && (EFnKeyPressed == iFnKeyState || EFnKeyPressedAgain == iFnKeyState)
+ && aState == EFnKeyLock )
+ {
+ UpdatePreviousCase();
+ iFepMan.SetCase(EFnKeyLowerCase);
+ iFnKeyState = aState;
+ iFepMan.UpdateIndicators();
+ }
+ else if( keyboardType == EPtiKeyboardQwerty4x10 && EFnKeyDown == iFnKeyState
+ && aState == EFnKeyNone )
+ {
+ iFepMan.SetCase( (TCase)iPreviousCase );
+ iFnKeyState = aState;
+ iFepMan.UpdateIndicators();
+ }
#endif // RD_INTELLIGENT_TEXT_INPUT
#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
#ifdef RD_INTELLIGENT_TEXT_INPUT
--- a/fep/aknfep/src/AknFepLanguageManager.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepLanguageManager.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -38,6 +38,7 @@
#include "AknFepUiManagerWestern.h" // CAknFepUIManagerWestern
#include "AknFepUiManagerChinese.h" // CAknFepUIManagerChinese
#include "AknFepLanguageManager.h" // this class
+#include "AknFepSharedDataInterface.h" // CAknFepSharedDataInterface
#include "AknFepUiManagerKorean.h" // CAknFepUIManagerKorean
#include <uikon.hrh> // TAknEditorNumericKeymap
@@ -47,6 +48,7 @@
#include "AknFepPluginManager.h"
#include <peninputcmd.h>
#include <peninputclient.h>
+#include <featmgr.h>
void Cleanup( TAny* aAny )
{
@@ -67,10 +69,11 @@
// first phase construction.
// -----------------------------------------------------------------------------
//
-CAknFepLanguageManager* CAknFepLanguageManager::NewL(MAknFepManagerUIInterface* aFepMan,
- CAknFepCaseManager* aCaseMan)
+CAknFepLanguageManager* CAknFepLanguageManager::NewL( MAknFepManagerUIInterface* aFepMan,
+ CAknFepCaseManager* aCaseMan,
+ CAknFepSharedDataInterface* aSharedData )
{
- CAknFepLanguageManager* self = new(ELeave) CAknFepLanguageManager(aFepMan, aCaseMan);
+ CAknFepLanguageManager* self = new(ELeave) CAknFepLanguageManager(aFepMan, aCaseMan, aSharedData);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop(); // self
@@ -199,12 +202,14 @@
// -----------------------------------------------------------------------------
//
CAknFepLanguageManager::CAknFepLanguageManager(MAknFepManagerUIInterface* aFepManager,
- CAknFepCaseManager* aCaseManager)
+ CAknFepCaseManager* aCaseManager,
+ CAknFepSharedDataInterface* aSharedData )
:iInputLanguage(ELangEnglish),
iFepManager(aFepManager),
iCaseManager(aCaseManager),
- iPluginManager(NULL)
+ iPluginManager(NULL),
+ iSharedData(aSharedData)
{
}
@@ -310,7 +315,8 @@
}
else // Portrait
{
- secondMode = EPluginInputModeItut;
+ secondMode = ( iSharedData )
+ ? iSharedData->PluginPortraitInputMode() : EPluginInputModeItut;
}
TPluginInputMode curMode = aPreferedMode;
TInt language = aPenInputLang;
--- a/fep/aknfep/src/AknFepManager.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepManager.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -522,7 +522,7 @@
}
#endif
iCaseMan = CAknFepCaseManager::NewL(*this);
- iLangMan = CAknFepLanguageManager::NewL(this, iCaseMan);
+ iLangMan = CAknFepLanguageManager::NewL( this, iCaseMan, iSharedDataInterface );
iPtiEngine->ActivateLanguageL(inputLanguage);
#ifdef RD_INTELLIGENT_TEXT_INPUT
#ifdef FF_DUAL_LANGUAGE_SUPPORT
@@ -575,6 +575,8 @@
iIsFnKeyMapped = IsFnKeyMappedL();
iKeyboardType = (TPtiKeyboardType)iSharedDataInterface->KeyboardLayout();
#endif
+
+ iFnKeypressMonitor = CPeriodic::NewL(CActive::EPriorityStandard);
}
CAknFepManager::~CAknFepManager()
@@ -703,6 +705,8 @@
iNumericResourceTimer = NULL;
}
#endif
+ delete iFnKeypressMonitor;
+ iFnKeypressMonitor = NULL;
}
#ifdef RD_INTELLIGENT_TEXT_INPUT
@@ -3126,6 +3130,24 @@
FepUI()->HandleKeyL(EKeyLeftCtrl, EShortKeyPress);
}*/
+ //The default value of response is EKeyWasConsumed. So in some case, fep don¡¯t
+ //do anything, but it return Consumed.
+ //This make app miss the event EEventKeyUp.
+ //As per the logic of the function, the combine about ctrl key including:
+ // Ctrl key + C; Ctrl key + V; Ctrl + X
+ // Ctrl key + Shift key
+ // Ctrl key + space
+ // Ctrl key + Function key
+ //In above cases, it return EKeyWasConsumed, it is correct.
+ //The function for Ctrl Key as pressing the only one key ctrl at one time is to
+ //do something if the flag EFlagQwertyShiftMode is set
+ //In this case, it return EKeyWasConsumed, it is correct.
+ //In other case, it should return EKeyWasNotConsumed
+ if( ( aKeyEvent.iScanCode == EStdKeyRightCtrl || aKeyEvent.iScanCode==EStdKeyLeftCtrl )
+ && !IsFlagSet(EFlagQwertyShiftMode) )
+ {
+ response = EKeyWasNotConsumed;
+ }
return response;
}
@@ -3602,6 +3624,17 @@
// Delete anu UI components launched by Fep.
iUiInterface->DeleteDialogs();
}
+
+ if ( iFepPluginManager )
+ {
+ // Check whether the destroyed editor is the editor that stored in fep
+ // according to the editor state
+ if ( aAknEdwinState == iFepPluginManager->EdwinState())
+ {
+ // Set the editor pointer to NULL to avoid wild pointer exist
+ iFepPluginManager->ClearDestroyedEditorPointer();
+ }
+ }
}
if ( IsFepAwareTextEditor() )
{
@@ -4622,7 +4655,8 @@
if (iFepPluginManager &&
(iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
- iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr))
+ iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr ||
+ iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) )
{
iFepPluginManager->SetMenuState();
}
@@ -4806,7 +4840,8 @@
if (iFepPluginManager &&
(iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
- iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr))
+ iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr ||
+ iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) )
{
iFepPluginManager->SetMenuState(EFalse);
}
@@ -5518,10 +5553,17 @@
}
}
TInt inputOptionsPos = 0;
- if ( aMenuPane->MenuItemExists( EEikCmdEditPaste, inputOptionsPos ) )
- {
- inputOptionsPos++;
- }
+ TInt pastePos = 0;
+
+ if ( aMenuPane->MenuItemExists( EEikCmdEditPaste, pastePos ) )
+ {
+ CEikMenuPaneItem::SData& itemData = aMenuPane->GetMenuPane()->ItemDataByIndexL( pastePos );
+ if ( !( itemData.iFlags & EEikMenuItemDimmed ) )
+ {
+ inputOptionsPos = pastePos + 1;
+ }
+ }
+
//Now we have the position at which we need to insert the menu item.
if (
#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
@@ -6383,14 +6425,6 @@
aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
- if( iMode == EHangul || inputLanguage == ELangKorean)
- {
- TInt index;
- if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index ) )
- {
- aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse);
- }
- }
}
if ( IsModePermitted(ENumber) )
@@ -7545,6 +7579,7 @@
TRAP_IGNORE( NumericResourceMultiTapTimerTimeoutL());
}
#endif
+ DeactivateFnkeyPressMonitor();
}
TBool CAknFepManager::IsModePermitted(TInt aMode, TWidthChar aWidth) const
@@ -8767,15 +8802,7 @@
void CAknFepManager::LaunchInsertWordQueryL(const TDesC& aInitialText,
TCursorSelection aTextSpanToReplace)
{
- TInt recourceId;
- if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen)
- {
- recourceId = R_AVKON_INSERT_WORD_FS_QUERY;
- }
- else
- {
- recourceId = R_AVKON_INSERT_WORD_QUERY;
- }
+ TInt recourceId = R_AVKON_INSERT_WORD_QUERY;
LaunchFepQueryDialogL(recourceId, aInitialText, aTextSpanToReplace);
}
@@ -8793,15 +8820,7 @@
iUncommittedText.iAnchorPos,
iUncommittedText.Length());
- TInt recourceId;
- if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen)
- {
- recourceId = R_AVKON_INSERT_WORD_FS_QUERY;
- }
- else
- {
- recourceId = R_AVKON_INSERT_WORD_QUERY;
- }
+ TInt recourceId = R_AVKON_INSERT_WORD_QUERY;
LaunchFepQueryDialogL(recourceId, newText, iUncommittedText);
}
@@ -9985,7 +10004,8 @@
}
else
{
- if(IsKoreanInputLanguage( ) && IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
+ if(IsKoreanInputLanguage( ) && !IsQwerty() &&
+ IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
{
showCursor = EFalse;
}
@@ -10360,7 +10380,6 @@
//maxLength of 0 means the editor has no limit
TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
- TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
TCursorSelection currentSelection;
iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection);
@@ -10371,16 +10390,19 @@
{
return 0;
}
- else
- {
- if( isToCountUncommittedTextLength )
- {
- return ( maxEdSize - edSize +
- currentSelection.Length() + UncommittedText().Length() );
- }
- return (maxEdSize - edSize + currentSelection.Length());
- }
- }
+
+ TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
+
+ if( isToCountUncommittedTextLength )
+ {
+ return ( maxEdSize - edSize +
+ currentSelection.Length() + UncommittedText().Length() );
+ }
+
+ return (maxEdSize - edSize + currentSelection.Length());
+
+ }
+
#ifdef RD_INTELLIGENT_TEXT_INPUT
TInt CAknFepManager::EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit,
TBool /* isToCountUncommittedTextLength = EFalse*/ ) const
@@ -10657,12 +10679,13 @@
// Any latin input mode is not permitted by the editor.
// For compatibility permitted japanese input modes are checked and
// corresponding latin input modes are allowed.
- if ( iPermittedInputModes & (EAknEditorKatakanaInputMode |
+ if ( iPermittedInputModes & ( EAknEditorKatakanaInputMode |
EAknEditorHalfWidthTextInputMode |
EAknEditorFullWidthTextInputMode |
EAknEditorFullWidthKatakanaInputMode |
EAknEditorHiraganaKanjiInputMode |
- EAknEditorHiraganaInputMode))
+ EAknEditorHiraganaInputMode
+ | EAknEditorHangulInputMode ) )
{
iPermittedInputModes |= EAknEditorTextInputMode;
}
@@ -10673,12 +10696,13 @@
if ( !(defaultInputMode & (EAknEditorTextInputMode | EAknEditorNumericInputMode)))
{
- if (defaultInputMode & (EAknEditorKatakanaInputMode |
+ if ( defaultInputMode & ( EAknEditorKatakanaInputMode |
EAknEditorHalfWidthTextInputMode|
EAknEditorFullWidthTextInputMode |
EAknEditorFullWidthKatakanaInputMode |
EAknEditorHiraganaKanjiInputMode |
- EAknEditorHiraganaInputMode))
+ EAknEditorHiraganaInputMode
+ | EAknEditorHangulInputMode ) )
{
defaultInputMode = EAknEditorTextInputMode;
}
@@ -10766,7 +10790,7 @@
{
if (IsKoreanInputLanguage())
{
- if(iMode == EHangul || iMode == ENumber || iMode == EAknEditorNullInputMode )
+ if( iMode == EAknEditorNullInputMode )
{
SetWesternPredictive(EFalse);
TryChangeModeL(EHangul);
@@ -10782,6 +10806,12 @@
TryChangeModeL(ELatin);
}
}
+ else if ( editorMode == EAknEditorHangulInputMode )
+ {
+ // Choose EHangul as the current fep mode
+ // if the editor mode stored in editor state is EAknEditorHangulInputMode.
+ TryChangeModeL(EHangul);
+ }
else if (!iStrokeUsedInQWERTY)
{
if (editorMode == EStroke && sharedDataMode == ECangJie)
@@ -11392,7 +11422,7 @@
}
break;
case EHangul:
- editorMode = EAknEditorTextInputMode;
+ editorMode = EAknEditorHangulInputMode;
break;
default:
if (IsFeatureSupportedJapanese())
@@ -12802,8 +12832,10 @@
#ifdef RD_SCALABLE_UI_V2
TBool fingerItutIndicator = ( iFepPluginManager &&
iFepPluginManager->PluginInputMode() == EPluginInputModeItut );
+ // Portrait FSQ is added.
TBool fingerFSQIndicator = ( iFepPluginManager &&
- iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ );
+ ( iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
+ iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) );
#else
TBool fingerItutIndicator = EFalse;
TBool fingerFSQIndicator = EFalse;
@@ -13043,9 +13075,12 @@
}
// 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.
+ // Portrait FSQ is added.
if (!(editingStateIndicator == (MAknEditingStateIndicator*)iIndicator &&
- ( iFepPluginManager && ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut
- || iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ) ) &&
+ ( iFepPluginManager &&
+ ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut
+ || iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ
+ || iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) ) &&
IsFindPaneEditor()))
{
editingStateIndicator->SetState(newState);
@@ -13829,6 +13864,16 @@
}
}
}
+
+ if ( FeatureManager::FeatureSupported(KFeatureIdKorean) )
+ {
+ // Use the special sct resource file for Korean variant.
+ if (currentEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
+ {
+ currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN;
+ }
+ }
+
if (currentEditorSCTResId == EDefaultSCTResourceId) // -1 forces the default in SCT resource definition
{
if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)
@@ -13863,7 +13908,12 @@
if ( FeatureManager::FeatureSupported(KFeatureIdChinese) )
{
currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
- }
+ }
+ else if( FeatureManager::FeatureSupported(KFeatureIdKorean) )
+ {
+ // Use the special sct resource file for Korean variant.
+ currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN;
+ }
else
{
currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG;
@@ -15178,6 +15228,26 @@
{
return response;
}
+
+ // You will not understand the flowing lines,
+ // for it is just a "hole stem" than normal logic.
+ //
+ // Let me explain:
+ // In HWR, 4x12 keyboard is used, and predictive should be disabled for it.
+ // unfortunately, the existed codes enable predictive in some special case.
+ // when you switch from FSQ to HWR, with ITI on, you will get that.
+ // then if you press arrow key,
+ // the code blow of "HandlePredictiveNaviEventOutsideInlineEditL" will be called.
+ // which is writen for FSQ, not HWR, that finally cause navi-event being consumed.
+ // No navigation action being performed.
+ //
+ // It is not a complete fix, just for simplicity.
+ if (iFepPluginManager &&
+ iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
+ {
+ return EKeyWasNotConsumed;
+ }
+
if (WesternPredictive())
{
response = HandlePredictiveNaviEventOutsideInlineEditL(aCode, aLength);
@@ -15531,7 +15601,24 @@
// we have text selected - set cursor to start/end of current selection
TTmDocPosSpec newPos;
aResponse = NavigateFromSelectionL( currentEditorSelection, naviEvent, newPos );
- if ( aCode != EKeyBackspace && WesternPredictive() )
+
+ // You will not understand the following lines,
+ // for it is just a "hole stem" than normal logic.
+ //
+ // Let me explain:
+ // In HWR, 4x12 keyboard is used, and predictive should be disabled for it.
+ // unfortunately, the existing codes enable predictive in some special case.
+ // when you switch from FSQ to HWR, with ITI on, you will get that.
+ // then if you select some words and press arrow key,
+ // the if bratch of the code blow will be excuted.
+ // which is writen for FSQ, not HWR,
+ // MoveCursorToEndOfWordL or MoveCursorToStartOfWordL is called unexpected
+ //
+ // It is not a complete fix, just for simplicity.
+ TBool isFingerHwr = ( iFepPluginManager != NULL ) &&
+ ( iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr );
+
+ if ( aCode != EKeyBackspace && !isFingerHwr && WesternPredictive() )
{
if (CursorInsideWord())
{
@@ -15765,7 +15852,8 @@
if( iFepPluginManager->PluginInputMode() != EPluginInputModeNone &&
iFepPluginManager->PluginInputMode() != EPluginInputModeItut
// Add this condition for correction of dim features on FSQ
- && iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ )
+ && iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ
+ && iFepPluginManager->PluginInputMode() != EPluginInputModePortraitFSQ )
{
iFepPluginManager->LaunchPenInputLanguageSelectionL(aLaunchedByTouchWin);
return;
@@ -17414,6 +17502,14 @@
void CAknFepManager::CalculateEditorDigitType(TDigitType& aDestination)
{
+ // When current range is latin number mode
+ if ( iMode == ENumber )
+ {
+ // Set the Local Digit Type flag to EDigitTypeWestern
+ aDestination = EDigitTypeWestern;
+ return;
+ }
+
TBool ASCIIDigits = EFalse;
MObjectProvider* mop = iInputCapabilities.ObjectProvider();
@@ -18294,6 +18390,14 @@
charMap = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
}
}
+ else if ( FeatureManager::FeatureSupported(KFeatureIdKorean) )
+ {
+ // Use the special sct resource file for Korean variant.
+ if (charMap == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
+ {
+ charMap = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN;
+ }
+ }
if (!charMap)
{
// override numeric keymap if necessary. flag is for non standard charmaps
@@ -18313,10 +18417,7 @@
{
currentEditorSCTResId = charMap;
}
- 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_URL_SPECIAL_CHARACTER_TABLE_DIALOG == currentEditorSCTResId) )
+ if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == charMap)
{
TBool isEmpty = ETrue;
TRAP_IGNORE(isEmpty = GetSctLengthL(charMap));
@@ -18424,11 +18525,13 @@
{
if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
- iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
+ iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr ||
+ iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ )
+
{
SetStopProcessFocus(ETrue, EFalse);
iFepPluginManager->SetMenuState();
- }
+ }
else if (!iFepPluginManager->IsGlobleNotes())
{
iFepPluginManager->ClosePluginInputUiL( ETrue );
@@ -18484,10 +18587,11 @@
{
if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
- iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
+ iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr ||
+ iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ )
{
SetStopProcessFocus(EFalse);
- }
+ }
else
{
HandleChangeInFocus();
@@ -18894,42 +18998,42 @@
TEventCode aEventCode,
TKeyResponse& aRetCode)
{
- TCursorSelection currentEditorSelection(0,0);
- if(iInputCapabilities.FepAwareTextEditor())
- {
- iInputCapabilities.FepAwareTextEditor()->
- GetCursorSelectionForFep(currentEditorSelection);
- }
-
- 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))
- {
- if (!(aKeyEvent.iModifiers & EModifierShift))
+ aRetCode = EKeyWasNotConsumed;
+ TBool used = EFalse;
+
+ // only arrow keys are potentially handled
+ if ( ( aKeyEvent.iScanCode == EStdKeyLeftArrow
+ || aKeyEvent.iScanCode == EStdKeyRightArrow )
+ && iInputCapabilities.FepAwareTextEditor() )
+ {
+ TInt inputMode = PluginInputMode();
+ TBool isArabicFingerHwr = ( inputMode == EPluginInputModeFingerHwr &&
+ GetInputLanguageFromSharedDataInterface() == ELangArabic );
+ TCursorSelection currentEditorSelection( 0, 0 );
+
+ iInputCapabilities.FepAwareTextEditor()->
+ GetCursorSelectionForFep( currentEditorSelection );
+
+ if ( !IsMfneEditor() && ( inputMode == EPluginInputModeItut ||
+ inputMode == EPluginInputModeFSQ ||
+ inputMode == EPluginInputModePortraitFSQ ||
+ isArabicFingerHwr )
+ && currentEditorSelection.Length() != 0 )
+ {
+ used = ETrue;
+
+ if ( !( aKeyEvent.iModifiers & EModifierShift ) )
{
TKeyEvent ccpuStart = aKeyEvent;
ccpuStart.iModifiers |= EModifierShift;
ccpuStart.iModifiers |= EModifierRightShift;
- CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode);
-
+ CCoeEnv::Static()->SimulateKeyEventL( ccpuStart, aEventCode );
aRetCode = EKeyWasConsumed;
- return ETrue;
- }
- else
- {
- aRetCode = EKeyWasNotConsumed;
- return ETrue;
}
- }
- }
- aRetCode = EKeyWasNotConsumed;
- return EFalse;
+ }
+ }
+
+ return used;
}
#else // !RD_SCALABLE_UI_V2
@@ -19897,7 +20001,31 @@
}
else
{
-
+ //Handle Fn key and consider long press case
+ if( EStdKeyRightFunc == aKeyEvent.iScanCode )
+ {
+ switch(aEventCode)
+ {
+ case EEventKeyDown:
+ ActivateFnkeyPressMonitor();
+ break;
+ case EEventKeyUp:
+ {
+ if(!iFnKeypressMonitor->IsActive())
+ {
+ //when long pressing event occurrs,
+ //event has been already handled in HandleFnKeyPressMonitorCallback()
+ return EKeyWasConsumed;
+ }
+ //when short pressing event occurs,
+ //only deactive fn Key press monitor and normal event handle flow will work
+ DeactivateFnkeyPressMonitor();
+ }
+ break;
+ default:
+ break;
+ }
+ }
ret = iFnKeyManager->HandleFnKeyEventL( aKeyEvent, aEventCode,
iInputCapabilities ) ;
}
@@ -20679,7 +20807,25 @@
}
return EFalse;
}
-
+void CAknFepManager::ChangeMfneAmPm()
+ {
+ //trigger when touch at "AM" or "PM" in ICF
+ if (iInputCapabilities.FepAwareTextEditor() && IsMfneEditor() )
+ {
+ MObjectProvider* mop = iInputCapabilities.ObjectProvider();
+ if ( mop && iInputCapabilities.FepAwareTextEditor() )
+ {
+ CAknExtendedInputCapabilities* extendedInputCapabilities =
+ mop->MopGetObject( extendedInputCapabilities );
+ if ( extendedInputCapabilities->Capabilities() && CAknExtendedInputCapabilities::EInputEditorAmPm )// if support AM/PM toggle
+ {
+ extendedInputCapabilities->ReportEventL(
+ CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm, NULL);
+ }
+ }
+ }
+ }
+
//-------------------------------------------------------------------
//
@@ -20853,7 +20999,8 @@
// temporary solution for Entering key on virtual QWERTY not working
// like enter on virtual ITU-T or on external keyboard
if ( iOptionsMenuBar && !( iFepPluginManager &&
- iFepPluginManager->CurrentPluginInputMode() == EPluginInputModeFSQ ) )
+ ( iFepPluginManager->CurrentPluginInputMode() == EPluginInputModeFSQ ||
+ iFepPluginManager->CurrentPluginInputMode() == EPluginInputModePortraitFSQ ) ) )
{
iOptionsMenuBar->StopDisplayingMenuBar();
iOptionsMenuBar = NULL;
@@ -21078,6 +21225,75 @@
// ---------------------------------------------------------------------------
+// CAknFepManager::HandleFnKeyPressMonitorCallback
+// Handle fnkey press monitor callback
+// static function
+// ---------------------------------------------------------------------------
+//
+TInt CAknFepManager::HandleFnKeyPressMonitorCallback(TAny* aObj)
+ {
+ TRAPD(err, static_cast<CAknFepManager*>(aObj)->HandleFnKeyPressMonitor());
+ if (err)
+ {
+ static_cast<CAknFepManager*>(aObj)->CleanUpFep();
+ return KErrDied;
+ }
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CAknFepManager::HandleFnKeyPressMonitor
+// Handle fnkey press monitor callback
+// ---------------------------------------------------------------------------
+//
+void CAknFepManager::HandleFnKeyPressMonitor()
+ {
+ DeactivateFnkeyPressMonitor();
+
+ //if previous state of fn key is EFnKeyNone or EFnKeyNext, EFnKeyLock will be set;
+ //otherwise, if previous state is EFnKeyLock, EFnKeyNone will be set.
+ switch(iFnKeyManager->FnKeyState())
+ {
+ case CAknFepFnKeyManager::EFnKeyPressed:
+ case CAknFepFnKeyManager::EFnKeyPressedAgain:
+ iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyLock);
+ break;
+ case CAknFepFnKeyManager::EFnKeyDown:
+ iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone);
+ break;
+ default:
+ break;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAknFepManager::ActivateFnkeyPressMonitor
+// Activate Fnkey press Monitor
+// ---------------------------------------------------------------------------
+//
+void CAknFepManager::ActivateFnkeyPressMonitor()
+ {
+ if( iFnKeypressMonitor )
+ {
+ iFnKeypressMonitor->Start(KFnKeyLongPressTimeout, KFnKeyLongPressTimeout,
+ TCallBack(HandleFnKeyPressMonitorCallback, this));
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAknFepManager::DeactivateFnkeyPressMonitor
+// Deactivate Fnkey press Monitor
+// ---------------------------------------------------------------------------
+//
+void CAknFepManager::DeactivateFnkeyPressMonitor()
+ {
+ if( iFnKeypressMonitor && iFnKeypressMonitor->IsActive())
+ {
+ iFnKeypressMonitor->Cancel();
+ }
+ }
+
+// ---------------------------------------------------------------------------
// LOCAL METHODS
//
// ---------------------------------------------------------------------------
--- a/fep/aknfep/src/AknFepPluginManager.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepPluginManager.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -288,6 +288,10 @@
iAvkonRepository = CRepository::NewL( KCRUidAvkon );
iConnectAo = new (ELeave)CConnectAo(this);
+
+ // iPortraitFSQEnabled indicates whether portrait FSQ feature is enabled.
+ iPortraitFSQEnabled = FeatureManager::FeatureSupported(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput );
}
// -----------------------------------------------------------------------------
@@ -489,8 +493,13 @@
case ESignalKeyEvent:
{
TPtr ptr( const_cast<TUint16*>(pBuf.Ptr()), pBuf.Length(), pBuf.Length() );
- if(iFepMan.InputMode() == ELatin && (iPluginInputMode == EPluginInputModeVkb ||
- iPluginInputMode == EPluginInputModeFSQ))
+
+ // If input mode is latin and Vkb or FSQ (landscape or portrait),
+ // data case is adjusted.
+ if( iFepMan.InputMode() == ELatin &&
+ ( iPluginInputMode == EPluginInputModeVkb ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModePortraitFSQ ) )
{
AdjustDataCase( ptr );
}
@@ -505,7 +514,12 @@
break;
case ESignalHwNotifySctPopup:
iFepMan.LaunchSpecialCharacterTableL( 0,ETrue );//possible?
- break;
+ break;
+ case ESignalChangeAmPm:
+ {
+ iFepMan.ChangeMfneAmPm();
+ }
+ break;
case ESignalSetAppEditorCursor:
{
TInt8 *ptrData = (TInt8* )(pBuf.Ptr());
@@ -534,9 +548,10 @@
break;
}
iLaunchMenu = ETrue;
- if (PluginInputMode() == EPluginInputModeItut ||
- PluginInputMode() == EPluginInputModeFSQ ||
- PluginInputMode() == EPluginInputModeFingerHwr)
+ if ( PluginInputMode() == EPluginInputModeItut ||
+ PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModeFingerHwr ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
SetMenuState();
}
@@ -598,7 +613,9 @@
subrange);
}
SyncIndicatorWithPluginRangeL();
- if ( PluginInputMode() == EPluginInputModeFSQ )
+ // If input mode is FSQ, update indicator accordingly.
+ if ( PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
UpdateFSQIndicator();
}
@@ -862,6 +879,36 @@
}
// -----------------------------------------------------------------------------
+// CAknFepPluginManager::ClearDestroyedEditorPointer
+// Set the editor pointer to NULL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CAknFepPluginManager::ClearDestroyedEditorPointer()
+ {
+ iEdwin = NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknFepPluginManager::EdwinState
+// Get the editor state
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CAknEdwinState* CAknFepPluginManager::EdwinState()
+ {
+ CAknEdwinState* edwinState( NULL );
+ if ( iEdwin && iEdwin->Extension1())
+ {
+ // Get the editor state
+ edwinState = static_cast<CAknEdwinState*>(
+ iEdwin->Extension1()->State( KNullUid ));
+ }
+
+ return edwinState;
+ }
+
+// -----------------------------------------------------------------------------
// CAknFepPluginManager::HandleEventsFromFepL
// Handle events from FEP
// (other items were commented in a header).
@@ -912,6 +959,7 @@
if( iFepMan.FepAwareTextEditor() )
{
iMfne = NULL;
+ iEdwin = NULL;
if ( !aEventData )
{
RemoveLastFocusedWinFromOpenList();
@@ -983,7 +1031,9 @@
case EPluginUpdateIndicator:
{
UpdateITUTIndicator();
- if ( PluginInputMode() == EPluginInputModeFSQ )
+ // Update indicator for FSQ (landscape or portrait).
+ if ( PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
UpdateFSQIndicator();
}
@@ -1050,7 +1100,8 @@
}
else
{
- defaultMode = EPluginInputModeItut;
+ // Use the last used portrait input mode.
+ defaultMode = iSharedData.PluginPortraitInputMode();
}
}
else
@@ -1061,7 +1112,8 @@
}
else
{
- defaultMode = EPluginInputModeItut;
+ // Use the last used portrait input mode.
+ defaultMode = iSharedData.PluginPortraitInputMode();
}
}
TryChangePluginInputModeByModeL(defaultMode,
@@ -1185,8 +1237,11 @@
CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight;
// For portrait only mode, need to disable FSQ.
- TBool disableFSQ = iDefaultOrientation == CAknAppUiBase::EAppUiOrientationPortrait
- || ( !landscape && !iAvkonAppUi->OrientationCanBeChanged() );
+ TBool disableFSQ = iDefaultOrientation == CAknAppUiBase::EAppUiOrientationPortrait
+ || ( !iSharedData.AutoRotateEnabled()
+ && !landscape
+ && !iAvkonAppUi->OrientationCanBeChanged() );
+
if ( disableFSQ )
{
iPenInputServer.SetDisabledLayout( EPluginInputModeFSQ );
@@ -1203,30 +1258,64 @@
}
}
- TBool disableITUT =
- ( iDefaultOrientation == CAknAppUiBase::EAppUiOrientationLandscape ||
- ( landscape && !iAvkonAppUi->OrientationCanBeChanged() ) ) ;
+ // Both ITU-T and portrait FSQ are handled here. Because getting and setting
+ // disabled layout separately caused issues.
+ TBool disablePortraitInputMode =
+ iDefaultOrientation == CAknAppUiBase::EAppUiOrientationLandscape
+ || ( !iSharedData.AutoRotateEnabled()
+ && 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;
- }
- }
+ if ( disablePortraitInputMode )
+ {
+ // Disable V-ITUT and portrait FSQ, and if current aSuggestMode is
+ // EPluginInputModeItut or EPluginInputModePortraitFSQ, replace it with
+ // EPluginInputModeFSQ.
+ iPenInputServer.SetDisabledLayout(
+ EPluginInputModeItut | EPluginInputModePortraitFSQ );
+ if( aSuggestMode == EPluginInputModeItut ||
+ aSuggestMode == EPluginInputModePortraitFSQ )
+ {
+ 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 V-ITUT had been disabled before, enable it now;
+ TInt disableMode = iPenInputServer.DisabledLayout();
+ if ( ( disableMode & EPluginInputModeItut ) ||
+ ( disableMode & EPluginInputModePortraitFSQ ) )
+ {
+ iPenInputServer.SetDisabledLayout( -1 ); // Reset
+ TInt enableMode( 0 );
+ if ( disableMode & EPluginInputModeItut )
+ {
+ enableMode |= EPluginInputModeItut;
+ }
+ if ( disableMode & EPluginInputModePortraitFSQ )
+ {
+ enableMode |= EPluginInputModePortraitFSQ;
+ }
+ iPenInputServer.SetDisabledLayout( disableMode & ~enableMode );
+ }
+ }
+
+ if(aSuggestMode == EPluginInputModeFingerHwr
+ && iSharedData.InputTextLanguage() == ELangArabic)
+ {
+ if(IsEditorSupportSplitIme())
+ {
+ if(landscape)
+ {
+ aSuggestMode = EPluginInputModeFSQ;
+ }
+ else
+ {
+ aSuggestMode = iSharedData.PluginPortraitInputMode();
+ }
+ }
+ }
if ( aSuggestMode == EPluginInputModeFSQ)
{
@@ -1236,7 +1325,7 @@
if (disableFSQ && (aSuggestMode != EPluginInputModeFingerHwr))
{
iPluginInputMode = tempInputMode;
- aSuggestMode = EPluginInputModeItut;
+ aSuggestMode = iSharedData.PluginPortraitInputMode();
}
else
{
@@ -1347,6 +1436,15 @@
{
//do not remember application set input mode
iSharedData.SetPluginInputMode(iPluginInputMode);
+
+ // Refresh landscape value
+ CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation( size );
+ landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight;
+ // Remember portrait input mode.
+ if ( !landscape )
+ {
+ iSharedData.SetPluginPortraitInputMode( iPluginInputMode );
+ }
}
if (CurrentFepInputUI())
@@ -1359,11 +1457,11 @@
iFepMan.UpdateCbaL( NULL );
}
+ // inform edwin that Touch Input is opened.
if ( iFepMan.EditorState() )
{
- iFepMan.EditorState()->SetFlags(
- iFepMan.EditorState()->Flags() | EAknEditorFlagTouchInputModeOpened );
- }
+ SetEdwinFlagsByUiStatus( ETrue );
+ }
// Notify application touch window state
NotifyAppUiImeTouchWndStateL( ETrue );
@@ -1447,11 +1545,8 @@
iFepMan.UiInterface()->TouchPaneSetInputMethodIconActivated(EFalse);
- if ( iFepMan.EditorState() )
- {
- iFepMan.EditorState()->SetFlags(
- iFepMan.EditorState()->Flags() & ~EAknEditorFlagTouchInputModeOpened );
- }
+ // inform edwin that Touch Input is closed.
+ SetEdwinFlagsByUiStatus( EFalse );
if ( prePluginInputMode == EPluginInputModeVkb )
{
@@ -1479,19 +1574,20 @@
{
//Change for finger support of MFNE editor, it is a requirement for Tube
InformMfneUiStatusL( EFalse );
+ SetAknEdwinFlags( iEdwin, EAknEditorFlagHideTextView, EFalse );
iPenInputServer.ClearServerEvent();
- 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(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);
@@ -1506,12 +1602,27 @@
}
}
}
-
+
+ // iITISettingDialogOpen = ETrue: ITI setting dialog is opened.
+ // iOrientationChanged = ETrue: Phone is forcibly rotated.
+ // iSharedData.AutoRotateEnabled() = ETrue: Sensor is on.
+ // ITI setting dialog should be close by restoring orientation.
+ // Known case:
+ // When sensor is off, ITI setting dialog is opened on FSQ,
+ // and then sensor is set to on, back to ITI setting dialog,
+ // ITI setting dialog should be closed and Virtual ITU-T should be launched.
+ if ( iITISettingDialogOpen && iSharedData.AutoRotateEnabled() && iOrientationChanged)
+ {
+ iITISettingDialogOpen = EFalse;
+ }
+
+ // The orientation should not be restored if ITI setting dialog is opened.
+ // Otherwise, the orientation should be restored.
if ( (iPluginInputMode == EPluginInputModeFSQ || (iPluginInputMode == EPluginInputModeFingerHwr
- && iSharedData.InputTextLanguage() == ELangArabic)) && iOrientationChanged
- && !iITISettingDialogOpen )
- {
- // This TRAP_IGNORE is essential , never delete it
+ && iSharedData.InputTextLanguage() == ELangArabic)) && iOrientationChanged
+ && !iITISettingDialogOpen )
+ {
+ // This TRAP_IGNORE is essential , never delete it
TRAP_IGNORE( iAvkonAppUi->SetOrientationL( (CAknAppUiBase::TAppUiOrientation)iDefaultOrientation ) );
iOrientationChanged = EFalse;
}
@@ -1548,7 +1659,8 @@
TInt preInputMode = iPluginInputMode;
if ( iSharedData.AutoRotateEnabled() &&
- ( preInputMode == EPluginInputModeFSQ || preInputMode == EPluginInputModeItut ) )
+ ( preInputMode == EPluginInputModeFSQ || preInputMode == EPluginInputModeItut ||
+ preInputMode == EPluginInputModePortraitFSQ ) )
{
// Calculate current input mode by orientation.
// even though peninputserver is brought to backgroud,
@@ -1560,7 +1672,7 @@
TPixelsTwipsAndRotation size;
CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
iPluginInputMode = ( size.iPixelSize.iWidth < size.iPixelSize.iHeight ) ?
- EPluginInputModeItut : EPluginInputModeFSQ;
+ iSharedData.PluginPortraitInputMode() : EPluginInputModeFSQ;
}
if ( !iPenInputServer.IsForeground() )
@@ -1571,8 +1683,9 @@
TBool setResChange = EFalse;
if ( preInputMode == EPluginInputModeItut ||
- preInputMode == EPluginInputModeFSQ ||
- preInputMode == EPluginInputModeFingerHwr )
+ preInputMode == EPluginInputModeFSQ ||
+ preInputMode == EPluginInputModePortraitFSQ ||
+ preInputMode == EPluginInputModeFingerHwr )
{
setResChange = ETrue;
iPenInputServer.SetResourceChange(ETrue);
@@ -1582,7 +1695,9 @@
TBool needToChangeInputMode = ETrue;
if ( iSharedData.AutoRotateEnabled() &&
- ( preInputMode == EPluginInputModeFSQ || preInputMode == EPluginInputModeItut ) )
+ ( preInputMode == EPluginInputModeFSQ ||
+ preInputMode == EPluginInputModePortraitFSQ ||
+ preInputMode == EPluginInputModeItut ) )
{
if ( IsSpellVisible() )
{
@@ -1724,44 +1839,34 @@
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,
- EPenInputOpenManually,
- ERangeInvalid);
+ ProcessChangingInputModeCmdL(EPluginInputModeItut);
}
break;
case EPeninputCmdFSQ:
+ // "Edit portrait" menu - switch to portrait FSQ
+ case EPeninputCmdPortraitEditor:
{
- //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,
- EPenInputOpenManually,
- ERangeInvalid);
+ if ( iPortraitFSQEnabled )
+ {
+ ProcessChangingInputModeCmdL(EPluginInputModePortraitFSQ);
+ }
+ else
+ {
+ ProcessChangingInputModeCmdL(EPluginInputModeFSQ);
+ }
+ }
+
+ break;
+ // "Edit landscape" menu - switch to landscape FSQ
+ case EPeninputCmdLandscapeEditor:
+
+ {
+ ProcessChangingInputModeCmdL(EPluginInputModeFSQ);
}
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,
- EPenInputOpenManually,
- ERangeInvalid );
+ ProcessChangingInputModeCmdL(EPluginInputModeFingerHwr);
}
break;
case EFepInputCmdHelp:
@@ -2036,9 +2141,10 @@
}
//For Preview bubble
- if (!(iPluginInputMode == EPluginInputModeVkb ||
- iPluginInputMode == EPluginInputModeFSQ ||
- iPluginInputMode == EPluginInputModeFingerHwr ))
+ if ( ! (iPluginInputMode == EPluginInputModeVkb ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModeFingerHwr ||
+ iPluginInputMode == EPluginInputModePortraitFSQ ) )
{
if(!(iPluginInputMode == EPluginInputModeItut &&
(iSharedData.InputTextLanguage() == ELangPrcChinese ||
@@ -2081,9 +2187,11 @@
}
}
- if (iPluginInputMode == EPluginInputModeItut ||
- iPluginInputMode == EPluginInputModeVkb ||
- iPluginInputMode == EPluginInputModeFSQ )
+ // Add Insert Symbol for valid input modes.
+ if ( iPluginInputMode == EPluginInputModeItut ||
+ iPluginInputMode == EPluginInputModeVkb ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModePortraitFSQ )
{
TInt index = 0;
if (isLanuchSCT && aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index))
@@ -2113,26 +2221,120 @@
TInt disabledInputMode = iPenInputServer.DisabledLayout();
TInt curInputMode = iLangMan.CurrentImePlugin()->CurrentMode();
TBool isChinese = iFepMan.IsChineseInputLanguage();
-
- if ( !isChinese && ( curInputMode != EPluginInputModeFSQ )
- && !( disabledInputMode & EPluginInputModeFSQ ))
- {
- aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse );
- }
+ TBool isKorean = iFepMan.IsKoreanInputLanguage();
+ // similar with chinese layout, there is a switching button,so when writing language is korean
+ // no need to insert 'Qwerty' or 'Alphabet keypad' item into option menu
- if ( !isChinese && ( curInputMode != EPluginInputModeItut )
- && !( disabledInputMode & EPluginInputModeItut ))
- {
- aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse);
- }
-
- if ( FeatureManager::FeatureSupported( KFeatureIdArabicHandwritingRecognitionInput )
- &&iFepMan.IsArabicInputLanguage()
- && ( curInputMode != EPluginInputModeFingerHwr )
- && !( disabledInputMode & EPluginInputModeFingerHwr ))
- {
- aMenuPane->SetItemDimmed( EPeninputCmdHwr, EFalse );
- }
+ /* US2/US4/US5
+ 1. Orientation sensor off
+
+ 1-1. Portrait orientation
+ If currently ITU-T mode
+ “QWERTY keyboard?-> Port fsq
+ “Edit landscape?-> Land fsq
+
+ If currently Portrait FSQ mode
+ “Alphanumeric keypad?
+ “Edit landscape?-> Land fsq
+
+ 1-2. Landscape orientation
+ “Alphanumeric keypad?
+ “Edit portrait?- Port fsq
+
+ 2. Orientation sensor on
+
+ 2-1.Portrait orientation
+ If currently ITU-T mode
+ “QWERTY keyboard?-> Port fsq
+
+ If currently Portrait FSQ mode
+ “Alphanumeric keypad?
+
+ 2-2. Landscape orientation
+ --- No input switch menu
+*/
+
+ // Get the current phone's orientation
+ TPixelsTwipsAndRotation size;
+ CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
+ TBool isPortrait = size.iPixelSize.iWidth < size.iPixelSize.iHeight;
+
+ // "QWERTY keyboard" - EPeninputCmdFSQ menu
+ if ( iPortraitFSQEnabled )
+ {
+ // "QWERTY keyboard" - EPeninputCmdFSQ menu is shown in these conditions
+ // if portrait FSQ feature flag is enabled
+ // 1) Non-Chinese language
+ // 2) Current input mode is not portrait FSQ and also the mode is not disabled
+ // 3) Current orientation is portrait
+ if ( !isKorean && !isChinese
+ && ( curInputMode != EPluginInputModePortraitFSQ )
+ && !( disabledInputMode & EPluginInputModePortraitFSQ )
+ && isPortrait )
+ {
+ aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse );
+ }
+
+ }
+ else
+ {
+ if ( !isKorean && !isChinese && ( curInputMode != EPluginInputModeFSQ )
+ && !( disabledInputMode & EPluginInputModeFSQ )
+ && FeatureManager::FeatureSupported( KFeatureIdVirtualFullscrQwertyInput ) )
+ {
+ aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse );
+ }
+ }
+
+ // "Alphanumeric keypad" - EPenInputCmdVITUT menu is shown in these conditions.
+ // 1) Non-Chinese language
+ // 2) Current input mode is not ITU-T and also the mode is not disabled
+ // 3) ITU-T feature flag is enabled
+ if ( !isKorean && !isChinese
+ && ( curInputMode != EPluginInputModeItut )
+ && !( disabledInputMode & EPluginInputModeItut )
+ && FeatureManager::FeatureSupported( KFeatureIdVirtualItutInput ) )
+ {
+ aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse);
+ }
+ // "Edit portrait" - EPeninputCmdPortraitEditor menu is shown in these conditions.
+ // 1) Portrait FSQ feature flag is enabled
+ // 2) Non-Chinese language
+ // 3) Current input mode is not portrait FSQ and also the mode is not disabled
+ // 4) Current orientation is landscape
+ if ( iPortraitFSQEnabled
+ && !isKorean && !isChinese
+ && ( curInputMode != EPluginInputModePortraitFSQ )
+ && !( disabledInputMode & EPluginInputModePortraitFSQ )
+ && !isPortrait )
+ {
+ aMenuPane->SetItemDimmed(EPeninputCmdPortraitEditor, EFalse);
+ }
+
+ // "Edit landscape" - EPeninputCmdLandscapeEditor menu is shown in these conditions.
+ // 1) Portrait FSQ feature flag is enabled
+ // This menu needed only when the feature is turned on.
+ // 2) Landscape FSQ feature flag is enabled
+ // 3) Non-Chinese language
+ // 4) Current input mode is not landscape FSQ and also the mode is not disabled
+ // 5) Current orientation is portrait
+ if ( iPortraitFSQEnabled
+ && FeatureManager::FeatureSupported( KFeatureIdVirtualFullscrQwertyInput )
+ && !isKorean && !isChinese
+ && ( curInputMode != EPluginInputModeFSQ )
+ && !( disabledInputMode & EPluginInputModeFSQ )
+ && isPortrait )
+ {
+ aMenuPane->SetItemDimmed(EPeninputCmdLandscapeEditor, EFalse);
+ }
+
+ 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
@@ -2188,15 +2390,31 @@
//Show number mode menu item.
if(iFepMan.InputMode() == ENumber || iFepMan.InputMode() == ENativeNumber)
{
- if(iSharedData.DefaultArabicNumberMode())
+ CAknEdwinState* editorState = iFepMan.EditorState();
+ TUint permittedInputModes;
+ if( editorState )
{
- aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse);
+ permittedInputModes= editorState->PermittedInputModes();
}
else
{
- aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, EFalse);
+ permittedInputModes = EAknEditorNumericInputMode;
+ }
+ TBool IsOnlyNumericPermitted = !(permittedInputModes
+ &(EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode));
+ if(IsOnlyNumericPermitted)
+ {
+ if(iSharedData.DefaultArabicNumberMode())
+ {
+ aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse);
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, EFalse);
+ }
}
}
+
// add the writing speed menu
index = 0;
if(aMenuPane->MenuItemExists(EPenInputCmdWritingSpeed, index))
@@ -2251,12 +2469,16 @@
return;
}
- if( !iLaunchMenu && IsGlobalNotesApp(focusAppId))
-
- {
- if( iPluginInputMode == EPluginInputModeItut ||
- iPluginInputMode == EPluginInputModeFSQ ||
- iPluginInputMode == EPluginInputModeFingerHwr)
+ // if pen ui is being opened on a non-global editor, which popped by capserver or notify server,
+ // and also other global notes from capserver or notify server pop up at the moment,
+ // pen ui should be dimmed as the definitino of dim feature.
+ // Set bClose = EFalse is used to prevent from closing pen ui later.
+ if( !iLaunchMenu && IsGlobalNotesApp(focusAppId) && !IsInGlobleNoteEditor() )
+ {
+ if ( iPluginInputMode == EPluginInputModeItut ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModeFingerHwr ||
+ iPluginInputMode == EPluginInputModePortraitFSQ )
{
bClose = EFalse;
}
@@ -2269,9 +2491,10 @@
IsGlobalNotesApp(appId) &&
!iFepMan.IsFepAwareTextEditor())
{
- if( iPluginInputMode == EPluginInputModeItut ||
- iPluginInputMode == EPluginInputModeFSQ ||
- iPluginInputMode == EPluginInputModeFingerHwr)
+ if ( iPluginInputMode == EPluginInputModeItut ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModeFingerHwr ||
+ iPluginInputMode == EPluginInputModePortraitFSQ )
{
ClosePluginInputUiL(ETrue);
if(iPenInputSvrConnected ) //lost foreground
@@ -2314,8 +2537,9 @@
{
iLaunchSCTInSpell = EFalse;
#ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
- if ( PluginInputMode() == EPluginInputModeFSQ
- && iSharedData.ThemeEffectsEnabled())
+ if ( ( PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
+ && iSharedData.ThemeEffectsEnabled() )
{
User::After(1);//waiting for menu cancel effect
}
@@ -2346,9 +2570,11 @@
iAvkonRepository->Get( KAknAvkonAdaptiveSearchEnabled, enableAdaptiveSearch );
if ( enableAdaptiveSearch )
{
- if(!(iInMenu && ( iPluginInputMode == EPluginInputModeItut ||
- iPluginInputMode == EPluginInputModeFSQ ||
- iPluginInputMode ==EPluginInputModeFingerHwr)))
+ if ( !(iInMenu &&
+ ( iPluginInputMode == EPluginInputModeItut ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode ==EPluginInputModeFingerHwr ||
+ iPluginInputMode == EPluginInputModePortraitFSQ ) ) )
{
ClosePluginInputModeL(ETrue);
if(iPenInputSvrConnected ) //lost foreground
@@ -2364,7 +2590,7 @@
TPluginInputMode inputMode = (TPluginInputMode)iSharedData.PluginInputMode();
if ((inputMode == EPluginInputModeFSc || inputMode == EPluginInputModeHwr ||
inputMode == EPluginInputModeFingerHwr) &&
- iFepMan.IsSupportsSecretText())
+ iFepMan.IsSupportsSecretText())
{
openMode = EPenInputOpenManually;
}
@@ -2387,9 +2613,10 @@
iAvkonRepository->Get( KAknAvkonAdaptiveSearchEnabled, enableAdaptiveSearch );
if ( enableAdaptiveSearch )
{
- if(iInMenu && ( iPluginInputMode == EPluginInputModeItut ||
- iPluginInputMode == EPluginInputModeFSQ ||
- iPluginInputMode == EPluginInputModeFingerHwr))
+ if ( iInMenu && ( iPluginInputMode == EPluginInputModeItut ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModeFingerHwr ||
+ iPluginInputMode == EPluginInputModePortraitFSQ ) )
{
//iPenInputServer.DimUiLayout(ETrue); //dim the ui
return;
@@ -2405,9 +2632,10 @@
if ( !enableAdaptiveSearch )
{
- if(iInMenu && ( iPluginInputMode == EPluginInputModeItut ||
- iPluginInputMode == EPluginInputModeFSQ ||
- iPluginInputMode == EPluginInputModeFingerHwr))
+ if( iInMenu && ( iPluginInputMode == EPluginInputModeItut ||
+ iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModeFingerHwr ||
+ iPluginInputMode == EPluginInputModePortraitFSQ ) )
{
//iPenInputServer.DimUiLayout(ETrue); //dim the ui
return;
@@ -3122,10 +3350,11 @@
TBool previousSCT = isLanuchSCT;
TInt inputmode = PluginInputMode();
- if (R_AVKON_PENINPUT_OPTION_MENU_BAR == aResourceId &&
- (inputmode == EPluginInputModeItut ||
- inputmode == EPluginInputModeVkb ||
- inputmode == EPluginInputModeFSQ))
+ if ( R_AVKON_PENINPUT_OPTION_MENU_BAR == aResourceId &&
+ ( inputmode == EPluginInputModeItut ||
+ inputmode == EPluginInputModeVkb ||
+ inputmode == EPluginInputModeFSQ ||
+ inputmode == EPluginInputModePortraitFSQ ) )
{
isLanuchSCT = EFalse;
iCurPermitModes = iFepMan.PermittedModes();
@@ -3817,6 +4046,10 @@
{
TInt fepDisableLayoouts = 0;
TInt disableLayouts = iPenInputServer.DisabledLayout();
+ // Get the current phone orientation.
+ TPixelsTwipsAndRotation size;
+ CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
+ TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight;
switch(aSuggestMode)
{
@@ -3833,7 +4066,12 @@
((aSuggestMode == EPluginInputModeFingerHwr &&
iSharedData.InputTextLanguage() != ELangArabic))))
{
- aSuggestMode = EPluginInputModeItut;
+ // If full screen portrait QWERTY feature is enabled, use it
+ // instead of ITU-T.
+ aSuggestMode = iSharedData.PluginPortraitInputMode();
+
+ // If portrait FSQ or ITU-T is disabled, use landscape FSQ.
+ // If they are disabled, most likely the orientation is landscape.
if ((disableLayouts & aSuggestMode))
{
aSuggestMode = EPluginInputModeFSQ;
@@ -3849,16 +4087,14 @@
// So we use FSQ for Landscape mode and ITUT for Portrait instead.
if( FeatureManager::FeatureSupported( KFeatureIdFfCapacitiveDisplay ))
{
- TPixelsTwipsAndRotation size;
- CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
- TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight;
if ( landscape ) // LandScape
{
aSuggestMode = EPluginInputModeFSQ;
}
else // Portrait
{
- aSuggestMode = EPluginInputModeItut;
+ // Use the last used portrait input mode.
+ aSuggestMode = iSharedData.PluginPortraitInputMode();
}
}
}
@@ -3867,11 +4103,14 @@
{
if ((disableLayouts & aSuggestMode))
{
- aSuggestMode = EPluginInputModeItut;
+ // Use the last used portrait input mode.
+ aSuggestMode = iSharedData.PluginPortraitInputMode();
}
}
break;
+ // If ITU-T or portrait FSQ are disabled, use landscape FSQ.
case EPluginInputModeItut:
+ case EPluginInputModePortraitFSQ:
{
if ((disableLayouts & aSuggestMode))
{
@@ -3881,12 +4120,27 @@
break;
default:
{
- aSuggestMode = EPluginInputModeItut;
- if ((disableLayouts & aSuggestMode))
- {
- aSuggestMode = EPluginInputModeFSQ;
- }
- }
+ // Landscape FSQ is used in landscape orientation.
+ if ( landscape )
+ {
+ aSuggestMode = EPluginInputModeFSQ;
+ }
+ // If the current orientation is portrait, use the last used portrait input mode.
+ else
+ {
+ aSuggestMode = iSharedData.PluginPortraitInputMode();
+
+ // If the suggested mode is EPluginInputModeNone or disabled, use
+ // EPluginInputModeFSQ.
+ // Note: If the suggested mode is landscape FSQ and it it also disabled,
+ // still we use landscape FSQ because there is no choice.
+ if ( ( aSuggestMode == EPluginInputModeNone ) ||
+ ( disableLayouts & aSuggestMode ) )
+ {
+ aSuggestMode = EPluginInputModeFSQ;
+ }
+ }
+ }
break;
}
@@ -4062,9 +4316,10 @@
else
{
HideSpellEditor();
- if (PluginInputMode() == EPluginInputModeFSQ ||
- PluginInputMode() == EPluginInputModeVkb ||
- PluginInputMode() == EPluginInputModeFingerHwr)
+ if ( PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModeVkb ||
+ PluginInputMode() == EPluginInputModeFingerHwr ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCharacterPreview,
iFepMan.FepShowVkbPreviewStatus());
@@ -4109,7 +4364,8 @@
iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode,
iCaseMan.CurrentCase());
if ( PluginInputMode() == EPluginInputModeFSQ ||
- PluginInputMode() == EPluginInputModeFingerHwr)
+ PluginInputMode() == EPluginInputModeFingerHwr ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
SetPromptText( aCleanContent );
}
@@ -4145,7 +4401,8 @@
iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputDimArrowKeys,
enableArrowBtn);
- if ( PluginInputMode() == EPluginInputModeFSQ )
+ if ( PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputDimEnterKey,
iFepMan.IsFindPaneEditor() );
@@ -4170,13 +4427,16 @@
{
iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputWindowOpen, aOpenMode);
}
- if(PluginInputMode() == EPluginInputModeItut
- || PluginInputMode() == EPluginInputModeFSQ
- || PluginInputMode() == EPluginInputModeFingerHwr)
+ if ( PluginInputMode() == EPluginInputModeItut
+ || PluginInputMode() == EPluginInputModeFSQ
+ || PluginInputMode() == EPluginInputModeFingerHwr
+ || PluginInputMode() == EPluginInputModePortraitFSQ )
{
iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputInEditWordQueryDlg, iIsInEditWordQueryDlg);
}
- if ( PluginInputMode() == EPluginInputModeFSQ )
+ // For both landscape portrait FSQ mode, update FSQ indicator.
+ if ( PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
UpdateFSQIndicator();
}
@@ -4627,7 +4887,9 @@
void CAknFepPluginManager::UpdateFSQIndicator()
{
- if ( EPluginInputModeFSQ != PluginInputMode() )
+ // If it is not either portrait or landscape FSQ, return.
+ if ( !( EPluginInputModeFSQ == PluginInputMode() ||
+ EPluginInputModePortraitFSQ == PluginInputMode() ) )
{
return;
}
@@ -4800,7 +5062,15 @@
{
editorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
}
- }
+ }
+ else if (FeatureManager::FeatureSupported(KFeatureIdKorean))
+ {
+ // Use the special sct resource file for Korean variant.
+ if (!editorSCTResId || editorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
+ {
+ editorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN;
+ }
+ }
else if (!editorSCTResId)
{
editorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG;
@@ -5118,7 +5388,8 @@
TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode,
iCaseMan.CurrentCase()));
UpdateITUTIndicator();
- if ( PluginInputMode() == EPluginInputModeFSQ )
+ if ( PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModePortraitFSQ )
{
UpdateFSQIndicator();
}
@@ -5188,6 +5459,7 @@
break;
case EPluginInputModeVkb:
case EPluginInputModeFSQ:
+ case EPluginInputModePortraitFSQ:
{
context.iContext = KVQWERTY_HLP_MAIN_VIEW;
}
@@ -5243,9 +5515,10 @@
return;
}
- if (!(PluginInputMode() == EPluginInputModeItut ||
- PluginInputMode() == EPluginInputModeFSQ ||
- PluginInputMode() == EPluginInputModeFingerHwr))
+ if ( ! ( PluginInputMode() == EPluginInputModeItut ||
+ PluginInputMode() == EPluginInputModeFSQ ||
+ PluginInputMode() == EPluginInputModeFingerHwr ||
+ PluginInputMode() == EPluginInputModePortraitFSQ ) )
{
return;
}
@@ -5362,6 +5635,66 @@
}
#endif // RD_SCALABLE_UI_V2
+// -----------------------------------------------------------------------------
+// Update editor state according to current ui state
+// -----------------------------------------------------------------------------
+//
+void CAknFepPluginManager::SetEdwinFlagsByUiStatus( TBool aOpened )
+ {
+ MCoeFepAwareTextEditor* edwin( iFepMan.FepAwareTextEditor() );
+
+ TInt uiStatusFlags( EAknEditorFlagTouchInputModeOpened
+ | EAknEditorFlagHideTextView );
+
+ if ( aOpened )
+ {
+ // if another editor gets focus, remove flags from previous editor.
+ if ( iEdwin != edwin )
+ {
+ SetAknEdwinFlags( iEdwin, uiStatusFlags, EFalse );
+ }
+
+ // set flags to current focused editor
+ SetAknEdwinFlags( edwin, uiStatusFlags, ETrue );
+
+ //save reference to focused editor
+ iEdwin = edwin;
+ }
+ else
+ {
+ SetAknEdwinFlags( edwin, uiStatusFlags, EFalse );
+ iEdwin = NULL;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// Update state flags of specified editor
+// -----------------------------------------------------------------------------
+//
+void CAknFepPluginManager::SetAknEdwinFlags( MCoeFepAwareTextEditor* aEdwin,
+ TInt aFlags, TBool aSet )
+ {
+ if ( aEdwin && aEdwin->Extension1() )
+ {
+ CAknEdwinState* edwinState ( static_cast<CAknEdwinState*>(
+ aEdwin->Extension1()->State( KNullUid ) ) );
+ if ( edwinState )
+ {
+ TInt edwinFlags( edwinState->Flags() );
+ if ( aSet )
+ {
+ edwinFlags |= aFlags;
+ }
+ else
+ {
+ edwinFlags &= ~aFlags;
+ }
+
+ edwinState->SetFlags( edwinFlags );
+ }
+ }
+ }
+
void CAknFepPluginManager::InformMfneUiStatusL( TBool aOpened )
{
if ( iMfne && ( iMfneChanged || !aOpened ))
@@ -5422,9 +5755,10 @@
}
//if it's in global notes, show it.
- if(EPluginInputModeItut == PluginInputMode() ||
- EPluginInputModeFSQ == PluginInputMode() ||
- EPluginInputModeFingerHwr == PluginInputMode())
+ if ( EPluginInputModeItut == PluginInputMode() ||
+ EPluginInputModeFSQ == PluginInputMode() ||
+ EPluginInputModeFingerHwr == PluginInputMode() ||
+ EPluginInputModePortraitFSQ == PluginInputMode() )
{
if(iInGlobleNoteEditor && iPenInputSvrConnected)
{
@@ -5674,7 +6008,8 @@
TBool CAknFepPluginManager::IsSupportITIOnFSQ()
{
#ifdef RD_INTELLIGENT_TEXT_INPUT
- if ( iPluginInputMode == EPluginInputModeFSQ
+ if ( ( iPluginInputMode == EPluginInputModeFSQ ||
+ iPluginInputMode == EPluginInputModePortraitFSQ )
// Exclude non Latin mode
&& iFepMan.InputMode() == ELatin
// Exclude accent range
@@ -6076,6 +6411,50 @@
TRAP_IGNORE(ActivatePenInputL());
}
+// -----------------------------------------------------------------------------
+// Handling the menu cmd for changing the input mode
+// -----------------------------------------------------------------------------
+//
+void CAknFepPluginManager::ProcessChangingInputModeCmdL(TInt aInputMode)
+ {
+ // Save iCurEditor and iCurMFNECap to temp variable the curEditor
+ // and CurMFNECap respectively before calling ResetMenuState
+ // since this function will reset iCurEditor
+ // but later TryChangePluginInputModeByModeL() will use this as
+ // an flag to identify whether the mode to be opened is split one.
+ MCoeFepAwareTextEditor* savedCurEditor = iCurEditor;
+ TUint savedCurMFNECap = iCurMFNECap;
+
+
+ //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.
+
+ // Reset the menu state to clear iInMenu to process focus change message
+ // following funciton will set iCurEditor to NULL
+ ResetMenuState(EFalse);
+ ClosePluginInputModeL(ETrue);
+ iFepMan.TryCloseUiL();
+
+ // we have to resore iCurEditor's value which was saved before calling
+ // ResetMenuState since the iCurEditor will be used as a falg to identify
+ // whether the the mode to be opened is split one.
+ // if it would be NULL, TryChangePluginInputModeByModeL will first open
+ // the Normal FSQ/VITUT, and then after a focus change
+ // [the menu is really dismissed],
+ // the correct Split FSQ/VITT will be opened, so the flicker will be seen.
+ iCurEditor = savedCurEditor;
+ iCurMFNECap = savedCurMFNECap;
+
+ TryChangePluginInputModeByModeL((TPluginInputMode)aInputMode,
+ EPenInputOpenManually,
+ ERangeInvalid);
+ iCurMFNECap = 0;
+ iCurEditor = NULL;
+ }
+
CConnectAo::CConnectAo(CAknFepPluginManager* aClient)
: CActive(CActive::EPriorityStandard),
iClient(aClient)
--- a/fep/aknfep/src/AknFepSharedDataInterface.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepSharedDataInterface.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -45,6 +45,7 @@
#include <AvkonInternalCRKeys.h> // KAknQwertyInputModeActive
#include <settingsinternalcrkeys.h> //Pen related settings
#include <sensorplugindomaincrkeys.h> // KCRUidSensorSettings
+#include <featmgr.h> // Feature Manager
// TODO: include CommonengineInternalCRKeys.h
const TUid KCRUidCommonEngineKeys = {0x1020503B};
@@ -359,6 +360,32 @@
void CAknFepSharedDataInterface::SetPluginInputMode(TInt aDevice)
{
+ // Check validity of the input mode to be set.
+ if ( aDevice == EPluginInputModeItut )
+ {
+ __ASSERT_DEBUG( FeatureManager::FeatureSupported(
+ KFeatureIdVirtualItutInput ),
+ User::Panic( _L( "Wrong input mode - ITU-T" ), __LINE__ ) );
+ }
+ else if ( aDevice == EPluginInputModeFSQ )
+ {
+ __ASSERT_DEBUG( FeatureManager::FeatureSupported(
+ KFeatureIdVirtualFullscrQwertyInput ),
+ User::Panic( _L( "Wrong input mode - Landscape FSQ" ),
+ __LINE__ ) );
+ }
+ else if ( aDevice == EPluginInputModePortraitFSQ )
+ {
+ __ASSERT_DEBUG( FeatureManager::FeatureSupported(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput ),
+ User::Panic( _L( "Wrong input mode - Portrait FSQ" ),
+ __LINE__ ) );
+ }
+ else
+ {
+ // Do nothing.
+ }
+
if (iAknFepRepository)
{
iAknFepRepository->Set(KAknFepLastUsedInput, aDevice);
@@ -1891,4 +1918,94 @@
}
#endif
+/**
+ * Get the last used plugin input mode for portrait orientation
+ *
+ * @since 5.2
+ * @return Value of KAknFepLastUsedPortraitInput setting.
+ */
+TPluginInputMode CAknFepSharedDataInterface::PluginPortraitInputMode() const
+ {
+ TInt cenRepValue( 0 );
+ if ( iAknFepRepository )
+ {
+ iAknFepRepository->Get( KAknFepLastUsedPortraitInput, cenRepValue );
+ }
+
+ TPluginInputMode lastUsedPortraitInputMode =
+ static_cast<TPluginInputMode>( cenRepValue );
+
+ // Check portrait FSQ and ITU-T feature are enabled.
+ TBool isPortraitFSQEnabled = FeatureManager::FeatureSupported(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput );
+ TBool isITUTEnabled = FeatureManager::FeatureSupported(
+ KFeatureIdVirtualItutInput );
+
+ // If both ITU-T and portrait FSQ features are enabled, use the saved
+ // portrait input mode.
+ if ( isITUTEnabled && isPortraitFSQEnabled )
+ {
+ // If the saved portrait input mode is not valid, use the default
+ // value, EPluginInputModeItut.
+ if ( ! ( lastUsedPortraitInputMode == EPluginInputModeItut ||
+ lastUsedPortraitInputMode == EPluginInputModePortraitFSQ ) )
+ {
+ lastUsedPortraitInputMode = EPluginInputModeItut;
+ }
+ }
+ // If only ITU-T feature is enabled, use the mode.
+ else if ( isITUTEnabled )
+ {
+ lastUsedPortraitInputMode = EPluginInputModeItut;
+ }
+ // If only portrait FSQ feature is enabled, use the mode.
+ else if ( isPortraitFSQEnabled )
+ {
+ lastUsedPortraitInputMode = EPluginInputModePortraitFSQ;
+ }
+ // If none of the features are enabled, EPluginInputModeNone is assigned
+ // for exception handling.
+ else
+ {
+ lastUsedPortraitInputMode = EPluginInputModeNone;
+ }
+
+ return lastUsedPortraitInputMode;
+ }
+
+/**
+ * Replaces the last used plugin input mode for portrait orientation
+ *
+ * @since 5.2
+ * @return Replace value of KAknFepLastUsedPortraitInput setting.
+ */
+void CAknFepSharedDataInterface::SetPluginPortraitInputMode(
+ TPluginInputMode aLastUsedPortraitInputMode )
+ {
+ // Check validity of the input mode to be set. The input mode is not
+ // valid if,
+ // i) The input mode is not neither ITU-T nor portrait FSQ.
+ if ( !( aLastUsedPortraitInputMode == EPluginInputModeItut ||
+ aLastUsedPortraitInputMode == EPluginInputModePortraitFSQ ) ||
+ // ii) The input mode is ITU-T but the feature is disabled.
+ ( aLastUsedPortraitInputMode == EPluginInputModeItut &&
+ !FeatureManager::FeatureSupported( KFeatureIdVirtualItutInput ) ) ||
+ // iii) The input mode is portrait FSQ but the feature is disabled.
+ ( aLastUsedPortraitInputMode == EPluginInputModePortraitFSQ &&
+ !FeatureManager::FeatureSupported(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput ) ) )
+ {
+ __ASSERT_DEBUG( 0,
+ User::Panic( _L( "Wrong portrait input mode" ), __LINE__ ) );
+ // Return without saving the value if the portrait input is invalid.
+ return;
+ }
+
+ if ( iAknFepRepository )
+ {
+ TInt err = iAknFepRepository->Set( KAknFepLastUsedPortraitInput,
+ static_cast<TInt>( aLastUsedPortraitInputMode ) );
+ }
+ }
+
// End of File
--- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyWesternPredictive.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateEntryQwertyWesternPredictive.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -265,14 +265,20 @@
{
shiftedCase= EPtiCaseLower;
}
-
+
+ TBool portraitFSQ = FeatureManager::FeatureSupported(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput )
+ && fepMan->PluginUIManager()
+ && fepMan->PluginUIManager()->PluginInputMode() == EPluginInputModePortraitFSQ;
+
// For addition of ITI features.
// When FSQ is opened wiht ITI features enabled,
// after pressing keys, don't need to re-set current text case by editor's text or FN key state.
// Because FSQ's case doesn't obey editor's case and there is no fn key on FSQ.
if ( fepMan->PluginUIManager()
- && fepMan->PluginUIManager()->PluginInputMode() == EPluginInputModeFSQ
- && fepMan->WesternPredictive() )
+ && ( fepMan->PluginUIManager()->PluginInputMode() == EPluginInputModeFSQ
+ || portraitFSQ )
+ && fepMan->WesternPredictive() )
{
return;
}
--- a/fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -128,22 +128,25 @@
fepMan->NewCharacterL(aChr);
fepMan->CommitInlineEditL();
- if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT())
- {
- fepMan->LaunchSpecialCharacterTableL();
- return ETrue;
- }
+ if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT())
+ {
+ fepMan->LaunchSpecialCharacterTableL();
+ return ETrue;
+ }
}
- else if (fepMan->EditSubmenuInUse())
- {
- aLength = ELongKeyPress;
- }
+ else if (fepMan->EditSubmenuInUse())
+ {
+ aLength = ELongKeyPress;
+ }
}
}
// Implementation for the Vietnamese back deletion
if (aKey == EKeyBackspace)
{
+ // Key looping should be cancelled as pressing backspace key
+ toneMgr->StopKeyLooping();
+
TBuf<2> newText;
// Get the last character from the current editor
TText prevChar = fepMan->PreviousChar();
@@ -155,11 +158,11 @@
((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
fepMan->NewCharacterL(newText);
fepMan->CommitInlineEditL();
- // Stop looping for backspace operation
- if( toneMgr->IsLooping() )
- {
- toneMgr->StopToneMarkLooping();
- }
+ // Stop looping for backspace operation
+ if( toneMgr->IsLooping() )
+ {
+ toneMgr->StopToneMarkLooping();
+ }
return ETrue;
}
else
@@ -177,65 +180,79 @@
}
}
- if( toneMgr->IsKeyLooping( aKey ) )
+ if( aLength == EShortKeyPress )
{
- if( toneMgr->ToneMarkIndex() != KErrNotFound )
+ if( toneMgr->IsKeyLooping( aKey ) )
{
- // Get current tone mark
- TText toneVowel;
- if( toneMgr->GetLoopingToneMarkVowel( toneVowel ) )
+ if( toneMgr->ToneMarkIndex() != KErrNotFound )
{
- // remove two previous chars
- ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
- ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
-
- TBuf<CAknFepManager::ESingleCharacter> aChr;
- aChr.Append(toneVowel);
+ // Get current tone mark
+ TText toneVowel;
+ if( toneMgr->GetLoopingToneMarkVowel( toneVowel ) )
+ {
+ // remove two previous chars
+ ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
+ ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
+
+ TBuf<CAknFepManager::ESingleCharacter> aChr;
+ aChr.Append(toneVowel);
+
+ // Update inline character(s)
+ fepMan->CancelInlineEdit();
+ fepMan->NewCharacterL(aChr);
+
+ toneMgr->SetLoopingCombined( ETrue );
+ bHandled = ETrue;
+ }
- // Update inline character(s)
- fepMan->CancelInlineEdit();
- fepMan->NewCharacterL(aChr);
+ // Reset the engine timer so that we can get timer expired message
+ // We send the * key, and clear it in the next loop
+ ptiEng->ClearCurrentWord();
+ ptiEng->AppendKeyPress((TPtiKey)EPtiKeyStar);
+ }
+ else
+ {
+ if( toneMgr->IsLoopingCombined() )
+ {
+ // remove tone mark
+ TBuf<2> newText;
+ // Get the last character from the current editor
+ TText prevChar = fepMan->PreviousChar();
+
+ // Judge if the last character needs to be converted
+ if ( NeedsVietnameseBkDelSupport(prevChar, newText) )
+ {
+ // Delete the prev character and send the new character to editor
+ ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
+ fepMan->NewCharacterL(newText);
+ fepMan->CommitInlineEditL();
+ }
- toneMgr->SetLoopingCombined( ETrue );
- bHandled = ETrue;
+ toneMgr->SetLoopingCombined( EFalse );
+ }
}
-
- // Reset the engine timer so that we can get timer expired message
- // We send the * key, and clear it in the next loop
- ptiEng->ClearCurrentWord();
- ptiEng->AppendKeyPress((TPtiKey)EPtiKeyStar);
}
else
{
- if( toneMgr->IsLoopingCombined() )
+ // Key looping is not supported with Backspace key
+ // Otherwise the process of deleting a2222 is wrong
+ if ( aKey != EKeyBackspace )
{
- // remove tone mark
- TBuf<2> newText;
- // Get the last character from the current editor
- TText prevChar = fepMan->PreviousChar();
-
- // Judge if the last character needs to be converted
- if ( NeedsVietnameseBkDelSupport(prevChar, newText) )
- {
- // Delete the prev character and send the new character to editor
- ((CAknFepManager*)fepMan)->RemovePreviousCharacterL();
- fepMan->NewCharacterL(newText);
- fepMan->CommitInlineEditL();
- }
-
- toneMgr->SetLoopingCombined( EFalse );
+ toneMgr->StartKeyLooping( aKey );
}
}
}
else
{
- toneMgr->StartKeyLooping( aKey );
+ // Key looping should be cancelled as long pressing key
+ // Otherwise a22 can not be inputted by press a, long press 2 and long press 2.
+ toneMgr->StopKeyLooping();
}
if(!bHandled && toneMgr->IsLooping())
- {
- toneMgr->StopToneMarkLooping();
- }
+ {
+ toneMgr->StopToneMarkLooping();
+ }
return bHandled ? ETrue : TAknFepInputStateInitialMultitapBase::HandleKeyL(aKey, aLength);
}
--- a/fep/aknfep/src/AknFepUiInputStateQwerty.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepUiInputStateQwerty.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -1196,8 +1196,11 @@
}
}
// Disable UI framewroks's qwerty iCode conversion for simulated event.
- numKey.iModifiers |= EModifierSpecial;
- if(!(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()))
+ numKey.iModifiers |= EModifierSpecial;
+
+ //as the editor is a Java number editor, we did not simulate the number key event
+ if(!(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric())
+ && !fepMan->IsSpecialNumericEditor() )
{
CCoeEnv::Static()->SimulateKeyEventL(numKey, EEventKey);
#ifdef RD_INTELLIGENT_TEXT_INPUT
--- a/fep/aknfep/src/AknFepUiManagerKorean.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/AknFepUiManagerKorean.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -219,14 +219,17 @@
{
switch(iMode)
{
- case ELatin:
- {
+ case EHangul:
iFepUiState = TAknFepInputStateQwertyKorean(this);
- break;
- }
+ break;
+ case ELatin:
+ case ENumber:
+ case ENativeNumber:
+ iFepUiState = TAknFepInputStateQwerty(this);
+ break;
default:
- AknFepPanic(EAknFepPanicBadInputState);
- break;
+ AknFepPanic(EAknFepPanicBadInputState);
+ break;
}
break;
}
--- a/fep/aknfep/src/aknfepuiinputstateqwertykorean.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/fep/aknfep/src/aknfepuiinputstateqwertykorean.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -24,7 +24,9 @@
#include <PtiEngine.h>
#include <PtiDefs.h>
#include <PtiKeyMappings.h>
-#include <PtiDefs.h>
+#include <PtiDefs.h>
+
+const TInt KMaxPtiTextBufSize = 255;
TAknFepInputStateQwertyKorean::TAknFepInputStateQwertyKorean(
MAknFepUIManagerStateInterface* aOwner)
@@ -39,42 +41,113 @@
{
}
-TBool TAknFepInputStateQwertyKorean::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/)
- {
-// LOG2("KO.IS.QWERTY.HandleKeyL %d,%d",aKey,aLength);
- CPtiEngine& ptiEngine(*(iOwner->PtiEngine()));
- MAknFepManagerUIInterface& fepMan(*(iOwner->FepMan()));
-
- TPtrC text(ptiEngine.AppendKeyPress((TPtiKey)aKey));
- TBuf<1> chr;
- for (TInt jj = 0; jj < text.Length(); jj++)
- {
- chr.Zero();
- chr.Append(text[jj]);
- fepMan.NewCharacterL(chr);
- }
- return ETrue;
+TBool TAknFepInputStateQwertyKorean::HandleKeyL(TInt aKey, TKeyPressLength aLength)
+ {
+ MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
+ CPtiEngine* ptiengine = iOwner->PtiEngine();
+ TBool ret = ETrue;
+
+ switch( aKey )
+ {
+ case EKeyDelete:
+ case EStdKeyDelete:
+ case EKeyBackspace:
+ case EStdKeyBackspace:
+ {
+ if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
+ {
+ TPtrC newText = ptiengine->DeleteKeyPress();
+ if( newText.Length() > 0 )
+ {
+ fepMan->UpdateInlineEditL(newText, newText.Length());
+ }
+ else
+ {
+ fepMan->CancelInlineEdit();
+ ptiengine->ClearCurrentWord();
+ }
+ }
+ else
+ {
+ ret = EFalse;
+ }
+ }
+ break;
+ case EStdKeyEnter:
+ case EStdKeySpace:
+ case EStdKeyTab:
+ case EStdKeyLeftArrow:
+ case EStdKeyRightArrow:
+ case EStdKeyDownArrow:
+ case EStdKeyUpArrow:
+ {
+ fepMan->CommitInlineEditL();
+ ptiengine->CommitCurrentWord();
+ ret = EFalse;
+ }
+ break;
+ default:
+ {
+ //normal character handled here
+ if ( EShortKeyPress == aLength )
+ {
+ if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)))
+ {
+ // start inline edit
+ ptiengine->ClearCurrentWord();
+ fepMan->StartInlineEditL();
+ fepMan->SetInlineEditingCursorVisibilityL(ETrue);
+ }
+
+ TPtrC aText = ptiengine->AppendKeyPress((TPtiKey)aKey);
+ if( aText.Length() > 0 )
+ {
+ fepMan->UpdateInlineEditL(aText, aText.Length());
+ if( aText.Length() >= KMaxPtiTextBufSize )
+ {
+ // force commit
+ fepMan->CommitInlineEditL();
+ ptiengine->CommitCurrentWord();
+ }
+ }
+ }
+ else // long press
+ {
+ if (!fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
+ {
+ return ETrue;
+ }
+
+ //delete last input text
+ TPtrC text = ptiengine->DeleteKeyPress();
+ if( text.Length() >0 )
+ {
+ fepMan->UpdateInlineEditL(text, text.Length());
+ }
+
+ // add new text
+ TPtiTextCase previousCase = ptiengine->Case();
+ switch ( previousCase )
+ {
+ case EPtiCaseLower:
+ case EPtiCaseUpper:
+ ptiengine->SetCase( EPtiCaseFnLower );
+ break;
+ default:
+ break;
+ }
+
+ TPtrC newText = ptiengine->AppendKeyPress((TPtiKey)aKey);
+ if( newText.Length() >0 )
+ {
+ fepMan->UpdateInlineEditL(newText, newText.Length());
+ }
+ ptiengine->SetCase( previousCase );
+ fepMan->CommitInlineEditL();
+ ptiengine->ClearCurrentWord();
+ }
+ }
+ break;
+ }
+ return ret;
}
-
-void TAknFepInputStateQwertyKorean::KeyTimerExpired()
- {
-// LOG1("KO.IS.QWERTY.KeyTimerExpired %d",iData);
- CPtiEngine& ptiEngine(*(iOwner->PtiEngine()));
- MAknFepManagerUIInterface& fepMan(*(iOwner->FepMan()));
-
- TPtrC text(ptiEngine.CurrentWord());
- TBuf<1> chr;
- for (TInt jj = 0; jj < text.Length(); jj++)
- {
- chr.Zero();
- chr.Append(text[jj]);
- TRAP_IGNORE( fepMan.NewCharacterL(chr) );
- }
-
- //TRAPD(err, fepMan.CommitInlineEditL())
- TRAP_IGNORE( fepMan.CommitInlineEditL() )
- }
-
-//fepMan.StartInlineEditL(text);
-//iFepMan.StartInlineEditL()
-//virtual void SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor) = 0;
--- a/inputmethods_plat/aknfep_definitions_api/inc/AknFepGlobalEnums.h Thu Jul 15 19:01:13 2010 +0300
+++ b/inputmethods_plat/aknfep_definitions_api/inc/AknFepGlobalEnums.h Thu Aug 19 10:15:25 2010 +0300
@@ -173,7 +173,9 @@
EPluginInputModeFSc = 16, // new one
EPluginInputModeMiniItut = 32,
EPluginInputModeFingerHwr = 64,
- EPluginInputModeAll = 127 // EPluginInputModeHwr | ... | EPluginInputModeFingerHwr|
+ EPluginInputModePortraitFSQ = 128, // For portrait FSQ
+ // EPluginInputModeHwr | ... | EPluginInputModePortraitFSQ
+ EPluginInputModeAll = 255
};
#define KLatinToDevanagariDigitsDelta 0x0936
--- a/inputmethods_plat/aknfep_settings_api/inc/AknFepInternalCRKeys.h Thu Jul 15 19:01:13 2010 +0300
+++ b/inputmethods_plat/aknfep_settings_api/inc/AknFepInternalCRKeys.h Thu Aug 19 10:15:25 2010 +0300
@@ -368,6 +368,19 @@
* 0 is for latin number and 1 is for native number.
*/
const TUint32 KAknFepDefaultArabicNumberMode = 0x00000025;
+
+/**
+ * This key is used for storing the last used input mode in portrait orientation.
+ * With adding portrait FSQ, users have two choices for portrait input mode,
+ * ITU-T and portrait FSQ. The last used input mode in portrait orientation is
+ * kept to have the input mode if the phone changes the orientation to landscape
+ * and back to portrait.
+ *
+ * Only EPluginInputModeItut(8) and EPluginInputModePortraitFSQ(128) are valid,
+ * and the default value is EPluginInputModeItut.
+ */
+const TUint32 KAknFepLastUsedPortraitInput = 0x00000026;
+
#endif
// End of file
--- a/inputmethods_plat/pen_input_server_api/inc/peninputcmd.h Thu Jul 15 19:01:13 2010 +0300
+++ b/inputmethods_plat/pen_input_server_api/inc/peninputcmd.h Thu Aug 19 10:15:25 2010 +0300
@@ -153,6 +153,7 @@
ESignalDeleteLastInput,
ESignalArabicSCTChar,
ESignalDeactivateSprite,
+ ESignalChangeAmPm,//notify mfne editor to toggle AM or PM
ESignalUserEventBase = 2000
};
--- a/textinput/group/bld.inf Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/group/bld.inf Thu Aug 19 10:15:25 2010 +0300
@@ -50,5 +50,6 @@
#include "../peninputhwrfscn/group/bld.inf"
#include "../peninputvkbkr/group/bld.inf"
#include "../peninputfingerhwr/group/bld.inf"
+#include "../peninputfingerhwrar/group/bld.inf"
#include "../peninputsplititut/group/bld.inf"
#include "../peninputsplitqwerty/group/bld.inf"
--- a/textinput/peninputarc/gsplugin/gspeninputplugin/loc/gspeninputplugin.loc Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/gsplugin/gspeninputplugin/loc/gspeninputplugin.loc Thu Aug 19 10:15:25 2010 +0300
@@ -313,4 +313,108 @@
// r:5.0
//
#define qtn_tin_option_menu_arabic_wdic "Recognition with dictionary"
+
+// d:Text in Handwriting input setting
+// d:Label's text for handwriting input setting in device view
+// l:list_single_large_graphic_pane_t1
+// r:TB9.2
+#define qtn_cp_folder_handwriting_input "Handwriting input settings"
+
+// d:Text in Handwriting input setting
+// d:It is title text in handwriting input setting view
+// l:title_pane_t2/opt9
+// r:TB9.2
+#define qtn_cp_title_handwriting_input "Handwriting input settings"
+
+// d:Text in Handwriting input setting
+// d:It is caption text for handwriting input settings in general settings
+// l:title_pane_t2/opt9
+// r:TB9.2
+#define qtn_gen_settings_handwriting_input "Handwriting input settings"
+
+// d:Text in Handwriting input setting
+// d:Setting name for handwriting input
+// l:list_setting_pane_t1
+// r:TB9.2
+#define qtn_as_settings_simple_hwr "Handwriting input"
+
+// d:Text in Handwriting input setting
+// d:Handwriting input can be actived
+// l:list_set_graphic_pane_t1
+// r:TB9.2
+#define qtn_ads_settings_enable_simple_hwr "On"
+
+// d:Text in Handwriting input setting
+// d:Handwriting input can not be actived
+// l:list_set_graphic_pane_t1
+// r:TB9.2
+#define qtn_ads_settings_disable_simple_hwr "Off"
+
+
+// d:It is text for selecting the fuzzy pinyin input settings
+// l:list_setting_pane_t1
+// r:9.2
+//
+#define qtn_tin_settings_fuzzy_pinyin "Fuzzy Pinyin"
+
+
+// d:It is text for showing fuzzy pinyin value in input settings
+// l:list_set_graphic_pane_t1
+// r:9.2
+//
+#define qtn_tin_settings_fuzzy_pinyin_no_setting "No setting"
+
+
+// d:It is text for selecting the import contacts in input settings
+// l:list_setting_pane_t1
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name "Import contacts name of Phonebook"
+
+
+// d:It is text for showing the import date in input settings
+// l:list_set_graphic_pane_t1
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name_time "Import date: %U"
+
+
+// d:It is text for showing not import in input settings
+// l:list_set_graphic_pane_t1
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name_not_import_yet "Not imported"
+
+// d:It is text for softkey to stop import dialog
+// l:control_pane_t2/opt7
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name_stop "stop"
+
+// d:It is note text for succeed import contacts
+// l:popup_note_window/opt2
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name_note "%0N contact names have been imported."
+
+// d:It is text for no phonebook contacts when import.
+// l:popup_note_window/opt2
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name_empty "No contact in Phonebook."
+
+// d:It is text for showing the import process.
+// l:popup_note_wait_window
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name_wait "Importing, please wait...\n(%0N/%1N)"
+
+
+// d:text display when we can't access the phonebook data
+// l:popup_note_window/opt2
+// r:9.2
+//
+#define qtn_tin_settings_import_contacts_name_error_access "Can't access phonebook data"
+
+
// End Of File
--- a/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Thu Aug 19 10:15:25 2010 +0300
@@ -196,12 +196,51 @@
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);
+
+ /**
+ * Update the bubble area list
+ *
+ * @since S60 v5.0
+ * @param aCtrl the Ctrl's address
+ * @param aBmp the bubble bitmap's address
+ * @param aRect the bubble rect
+ * @param aFlag ETrue means add bubble area and
+ * EFalse means remove bubble area
+ * @return void
+ */
+ void UpdateChangedArea( const TUint32 aCtrl,
+ const CFbsBitmap* aBmp, const TRect& aRect, TBool aFlag );
+
+ /**
+ * Update the bubble area list
+ *
+ * @since S60 v5.0
+ * @param aCtrl the Ctrl's address
+ * @param aBmp the bubble bitmap's address
+ * @param aMaskBmp the bubble mask bitmap's address
+ * @param aPos the bubble rect
+ * @param aFlag ETrue means add bubble area and
+ * EFalse means remove bubble area
+ * @return void
+ */
+ void UpdateBubble( const TUint32 aCtrl,
+ const CFbsBitmap* aBmp, const CFbsBitmap* aMaskBmp,
+ const TRect& aPos, TBool aFlag );
+
void Clean();
void HandleNGASpecificSignal(TInt aEventType, const TDesC& aEventData);
void LiftUpPriority();
+
+ /**
+ * Update the cursor color
+ *
+ * @since S60 v5.0
+ * @param none
+ * @return void
+ */
+ void SetCursorColor();
+
public: // Functions from base classes.
/**
@@ -302,6 +341,12 @@
CFbsBitmap* iChangedBmp;
RPointerArray<CFbsBitmap> iBubblesArea;
RPointerArray<CFbsBitmap> iBubblesMaskArea;
+
+ /**
+ * An array of the Controls' addresses
+ */
+ RArray<TUint32> iBubblesCtrl;
+
RArray<TRect> iBubblesPos;
TPoint iCursorPos;
@@ -335,6 +380,11 @@
TBool iNotUpdating;
CCursorWindow* iCursorWnd;
+ /**
+ * The cursor's color
+ */
+ TRgb iCursorColor;
+
friend class CCursorWindow;
};
class CInternalBkCtrl : public CCoeControl
--- a/textinput/peninputarc/src/peninputanim/peninputanim.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/src/peninputanim/peninputanim.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -1051,7 +1051,7 @@
//
void CPeninputAnim::StartTimer()
{
- if ( iIsActive )
+ if ( iIsActive && !iFlushTimer->IsActive())
{
iFlushTimer->Start(
KFlushTimerPeriod,
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -66,6 +66,8 @@
EXPORT_C CBubbleCtrl::~CBubbleCtrl()
{
+ Close();
+
if ( iText )
delete iText;
@@ -228,12 +230,14 @@
{
struct SData
{
+ TUint32 ctrl;
TBool flag;
TRect pos;
CFbsBitmap* bmp;
CFbsBitmap* mask;
} data;
+ data.ctrl = (TUint32)this;
data.flag = ETrue;
data.pos = Rect();
data.bmp = iBitmap;
@@ -313,11 +317,13 @@
{
struct SData
{
+ TUint32 ctrl;
TBool flag;
TRect pos;
CFbsBitmap* bmp;
} data;
+ data.ctrl = (TUint32)this;
data.flag = EFalse;
data.pos = Rect();
data.bmp = iBitmap;
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -46,6 +46,10 @@
#include "peninputlayoutsmiley.h"
#include <gdi.h>
+
+#include <e32std.h>
+#include <e32const.h>
+
const TInt KParagraphSeperator = 0x2029;
const TInt KSecretUpdateTimer = 1000000; // 1s
const TInt KSecretInstantShowTimer = 100000; // 100ms
@@ -1049,6 +1053,7 @@
}
TFontSpec fontSpec;
+ fontSpec = aFont->FontSpecInTwips();
fontSpec.iHeight = aFont->HeightInPixels();
CFont* font;
iCoeEnv->ScreenDevice()->ReleaseFont(CONST_CAST(CFont*, iFont));
@@ -1067,6 +1072,7 @@
iCharFormat.iFontSpec.iHeight = iCoeEnv->ScreenDevice()->VerticalPixelsToTwips(iFontHeight);
iCharFormat.iFontSpec.iFontStyle.SetStrokeWeight(EStrokeWeightNormal);
iCharFormat.iFontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap);
+ iCharFormat.iFontSpec.iTypeface = iFont->FontSpecInTwips().iTypeface;
iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, 0, iRichText->DocumentLength());
if( InlineStateOn() || AutoCompletionStateOn() )
@@ -1981,6 +1987,19 @@
iCursorSel = TCursorSelection(cursorPos+iPromptTextLen,
iCursorSel.iAnchorPos);
AdjustFepCursorPosForPromptText( ETrue );
+
+ TAmPmName amName(EAm);
+ TAmPmName pmName(EPm);
+ TInt offset = iMfneIcfData->Find(amName)!= KErrNotFound?
+ iMfneIcfData->Find(amName):iMfneIcfData->Find(pmName);
+ //if current is 12-hour format and touch on correct position
+ if(offset != KErrNotFound &&
+ iCursorSel.LowerPos()-iPromptTextLen>= offset &&
+ iCursorSel.LowerPos()-iPromptTextLen<= offset+amName.Length())
+ {
+ UiLayout()->SignalOwner(ESignalChangeAmPm);
+ }
+
return this;
}
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -1081,10 +1081,13 @@
{
struct SData
{
+ TUint32 ctrl;
TBool flag;
CFbsBitmap* bmp;
TRect pos;
} data;
+
+ data.ctrl = (TUint32)this;
data.flag = aFlag;
data.bmp = Keyboard()->Bitmap();//aFlag ? Keyboard()->iBitmap : 0;
data.pos = Rect();
--- a/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -57,6 +57,11 @@
const TInt KWsSessionFlushPerioid = 50000;//50ms
const TInt KInvalidValue = -1;
+// Layout UID for portrait FSQ. Used for distinguish between
+// landscape and portrait FSQ for EPluginInputModeFSQ, which
+// is used for both orientation in Pen Input server side code.
+const TInt KPenInputSrvPrtFsqUiId = 0x20026837;
+
enum TActivationFlag
{
@@ -443,7 +448,13 @@
}
// we should not be able to activate and show pen ui if this mode is disabled currently
- if(iUiLayout->PenInputType() & DisabledByOrientation())
+ TInt inputType = iUiLayout->PenInputType();
+ if( inputType == EPluginInputModeFSQ && iLayoutId.iUid == KPenInputSrvPrtFsqUiId )
+ {
+ inputType = EPluginInputModePortraitFSQ;
+ }
+ if( inputType & DisabledByOrientation() )
+
{
// we have activate the animation otherwise we will see the penui but not reponse
// when clicking on it in the case we rotating the screen quickly and continously
@@ -559,7 +570,12 @@
// [[[ temporary solution for Virtual keyboard becomes corrupted after several rotations
// we should not be able to activate and show pen ui if this mode is disabled currently
- if(iUiLayout->PenInputType() & DisabledByOrientation())
+ TInt inputType = iUiLayout->PenInputType();
+ if( inputType == EPluginInputModeFSQ && iLayoutId.iUid == KPenInputSrvPrtFsqUiId )
+ {
+ inputType = EPluginInputModePortraitFSQ;
+ }
+ if( inputType & DisabledByOrientation() )
{
// we have activate the animation otherwise we will see the penui but not reponse
// when clicking on it in the case we rotating the screen quickly and continously
@@ -2108,6 +2124,9 @@
//
void CPeninputServer::HandleResourceChange(TInt aType)
{
+ // Update the cursor color when resource is changed
+ iPenUiCtrl->SetCursorColor();
+
#ifdef FIX_FOR_NGA
// iEnablePriorityChangeOnOriChange will be set to be EFalse, if some dialog in FEP end were opened and
// not close after rotation for example: Symbol Table, Writing Language list and Match Dialog on ITI
@@ -2121,7 +2140,13 @@
TBool needToLiftUp = EFalse;
TInt inputMode = 0;
inputMode = iUiLayout->PenInputType();
- if(inputMode == EPluginInputModeItut)
+
+ // If input mode is either ITU-T or portrait FSQ, and if orientation
+ // is changed to landscape, highest priority is given to Pen UI to avoid
+ // flickering problem while drawing landscape FSQ layout.
+ if( inputMode == EPluginInputModeItut ||
+ ( inputMode == EPluginInputModeFSQ &&
+ iLayoutId.iUid == KPenInputSrvPrtFsqUiId ) )
{
if(!isPortrait)
{
@@ -2155,20 +2180,28 @@
}
}
#endif
- if(iUiLayout && !(iUiLayout->PenInputType() & DisabledByOrientation()) )
+ if( iUiLayout )
{
- //hide the layout if it's already shown
-
- if ( iActive )
+ TInt inputType = iUiLayout->PenInputType();
+ if( inputType == EPluginInputModeFSQ && iLayoutId.iUid == KPenInputSrvPrtFsqUiId )
+ {
+ inputType = EPluginInputModePortraitFSQ;
+ }
+ if( !( inputType & DisabledByOrientation() ) )
{
- iUiLayout->OnActivate();
- }
+ //hide the layout if it's already shown
+
+ if ( iActive )
+ {
+ iUiLayout->OnActivate();
+ }
- iUiLayout->OnResourceChange(aType);
+ iUiLayout->OnResourceChange(aType);
- if(iUseWindowCtrl)
- {
- iPenUiCtrl->DrawNow();
+ if(iUseWindowCtrl)
+ {
+ iPenUiCtrl->DrawNow();
+ }
}
//show the layout if it's active
@@ -2280,7 +2313,16 @@
return;
}
- if(iActive && !iPrevActive && inputMode != EPluginInputModeFSQ && iBackgroudDefaultOri == CAknAppUiBase::EAppUiOrientationUnspecified )
+ // Both landscape and portrait FSQs are handled as EPluginInputModeFSQ
+ // in Pen Input server. iLayoutId can be used to check it's landscape or
+ // portrait.
+ TBool isLandscapeFSQ =
+ ( inputMode == EPluginInputModeFSQ &&
+ iLayoutId.iUid != KPenInputSrvPrtFsqUiId )
+ ? ETrue : EFalse;
+
+ if ( iActive && !iPrevActive && !isLandscapeFSQ &&
+ iBackgroudDefaultOri == CAknAppUiBase::EAppUiOrientationUnspecified )
{
#ifdef FIX_FOR_NGA
if(inputMode == EPluginInputModeFingerHwr)
@@ -2893,7 +2935,14 @@
}
if( size.iPixelSize.iWidth > size.iPixelSize.iHeight )
{
- return disabled |= EPluginInputModeItut;
+ // Portrait input modes which are ITU-T and Portrait FSQ
+ // should be disabled in portrait orientation.
+ // Note: no need to check feature flag because if it is not
+ // turned on, EPluginInputModePortraitFSQ will not be handled
+ // at all so adding it to "disabled" will take no effect.
+ disabled |= EPluginInputModeItut | EPluginInputModePortraitFSQ;
+
+ return disabled;
}
}
}
--- a/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -72,10 +72,10 @@
iAutoRefreshTimer->Cancel();
}
delete iAutoRefreshTimer;
- iPopRegion.Close();
- iBubblesArea.Close();
- iBubblesMaskArea.Close();
- iBubblesPos.Close();
+
+
+ Clean();
+
delete iCursorWnd;
}
@@ -104,6 +104,9 @@
//iCursorWnd->ConstructL(this);
iCursorWnd->SetContainerWindowL(*this);
+ // Update the cursor color
+ SetCursorColor();
+
MakeVisible( EFalse );
}
@@ -123,7 +126,7 @@
gc.BitBlt(pos, iBitmap, rect);
#ifdef FIX_FOR_NGA
//draw bubble
- for (TInt i = 0; i < iBubblesArea.Count(); ++i)
+ for ( TInt i = 0; i < iBubblesCtrl.Count(); ++i )
{
gc.BitBlt(iBubblesPos[i].iTl, iBubblesArea[i]);
}
@@ -135,7 +138,7 @@
#ifdef FIX_FOR_NGA
gc.BitBlt(TPoint(0, 0), iBitmap, Rect());
//draw bubble
- for (TInt i = 0; i < iBubblesArea.Count(); ++i)
+ for ( TInt i = 0; i < iBubblesCtrl.Count(); ++i )
{
gc.BitBlt(iBubblesPos[i].iTl, iBubblesArea[i]);
}
@@ -165,8 +168,9 @@
void CPenUiWndCtrl::Clean()
{
iCursorBmp = NULL;
- iBubblesArea.Reset();
- iBubblesPos.Reset();
+ iBubblesArea.Close();
+ iBubblesCtrl.Close();
+ iBubblesPos.Close();
iBubblesMaskArea.Close();
iPopRegion.Close();
iChangedBmp= NULL;
@@ -193,11 +197,33 @@
iParent->DrawCursor(gc);
}
+// ---------------------------------------------------------------------------
+// CPenUiWndCtrl::SetCursorColor
+// ---------------------------------------------------------------------------
+//
+void CPenUiWndCtrl::SetCursorColor()
+ {
+ // Set default cursor color to black
+ TRgb color( KRgbBlack );
+ // if the skin is enabled
+ if ( AknsUtils::AvkonSkinEnabled())
+ {
+ // Get the text color under current theme
+ AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
+ color,
+ KAknsIIDQsnTextColors,
+ EAknsCIQsnTextColorsCG60 );
+ }
+
+ // Set the cursor color
+ iCursorColor = color;
+ }
+
void CPenUiWndCtrl::DrawCursor(CWindowGc& aGc) const
{
- aGc.SetPenColor(KRgbBlack);
+ aGc.SetPenColor( iCursorColor );
aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
- aGc.SetBrushColor(KRgbBlack);
+ aGc.SetBrushColor( iCursorColor );
aGc.SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN);
aGc.SetPenStyle(CGraphicsContext::ESolidPen);
aGc.SetPenSize( TSize(1,1));
@@ -250,16 +276,29 @@
}
iCursorWnd->SetCursorVisible(aOnFlag);
}
-
-void CPenUiWndCtrl::UpdateBubble(const CFbsBitmap* aBmp,const CFbsBitmap* aMask,
- const TRect& aPos,TBool aFlag)
+
+// ---------------------------------------------------------------------------
+// CPenUiWndCtrl::UpdateBubble
+// ---------------------------------------------------------------------------
+//
+void CPenUiWndCtrl::UpdateBubble( const TUint32 aCtrl,
+ const CFbsBitmap* aBmp,
+ const CFbsBitmap* aMask,
+ const TRect& aPos,
+ TBool aFlag )
{
- TInt idx = iBubblesArea.Find(aBmp);
+
+ // Check whether the Ctrl address is exist
+ TInt idx = iBubblesCtrl.Find( aCtrl );
+
if(aFlag)
{
if(KErrNotFound == idx)
{
+
+ iBubblesCtrl.Append( aCtrl );
+
iBubblesArea.Append(aBmp);
iBubblesMaskArea.Append(aMask);
iBubblesPos.Append(aPos);
@@ -275,6 +314,9 @@
//remove
if(idx != KErrNotFound)
{
+
+ iBubblesCtrl.Remove( idx );
+
iBubblesArea.Remove(idx);
iBubblesMaskArea.Remove(idx);
iBubblesPos.Remove(idx);
@@ -288,13 +330,20 @@
iIcfPos = aPos;
Invalidate(Rect(), ETrue);
}
-void CPenUiWndCtrl::UpdateChangedArea(const CFbsBitmap* aBmp,const TRect& aPos,TBool aFlag)
+
+
+// ---------------------------------------------------------------------------
+// CPenUiWndCtrl::UpdateChangedArea
+// ---------------------------------------------------------------------------
+//
+void CPenUiWndCtrl::UpdateChangedArea( const TUint32 aCtrl,
+ const CFbsBitmap* aBmp,const TRect& aPos,TBool aFlag)
{
- UpdateBubble(aBmp,0,aPos,aFlag);
- return;
+ UpdateBubble( aCtrl, aBmp, 0, aPos, aFlag );
+ return;
+ }
-
- }
+
void CPenUiWndCtrl::SetPopupArea(const TRect& aRect, TBool aFlag)
{
if(aFlag) //add pop area
@@ -694,25 +743,27 @@
{
struct SData
{
+ TUint32 ctrl;
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);
+ UpdateBubble( data.ctrl, data.bmp, data.mask, data.pos, data.flag );
}
break;
case ESignalUpdateChangedArea:
{
struct SData
{
+ TUint32 ctrl;
TBool flag;
CFbsBitmap* bmp;
TRect pos;
} data;
data = * (reinterpret_cast<SData*>( const_cast<TUint16*>( aEventData.Ptr() )));
- UpdateChangedArea(data.bmp,data.pos,data.flag);
+ UpdateChangedArea( data.ctrl, data.bmp, data.pos, data.flag );
}
break;
case ESignalRegisterBkControl:
--- a/textinput/peninputcommonctrls/loc/peninputcommonctrls.loc Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputcommonctrls/loc/peninputcommonctrls.loc Thu Aug 19 10:15:25 2010 +0300
@@ -30,16 +30,16 @@
//r: 5.0
#define qtn_input_switcher_fs_qwerty "Full Screen Qwerty"
-//d:Text in touch input mode swither list
-//d:portrait touch input method (full sreen qwerty or ITU-T)
+//d:Text in touch input mode switcher list
+//d:Portrait full sreen qwerty touch input method
//l:list_single_pane_t1_cp2
-//r: 5.0
+//r: 5.2
#define qtn_tin_option_menu_portrait_editor "Edit portrait"
-//d:Text in touch input mode swither list
-//d:landscape full sreen qwerty touch input method
+//d:Text in touch input mode switcher list
+//d:Landscape full sreen qwerty touch input method
//l:list_single_pane_t1_cp2
-//r: 5.0
+//r: 5.2
#define qtn_tin_option_menu_landscape_editor "Edit landscape"
//d:Text in touch input mode swither list
--- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputscrollablelist.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputcommonctrls/src/peninputselectionlist/peninputscrollablelist.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -37,6 +37,8 @@
const TInt KDisplayTextLen = KMaxItemTextLength + KAknBidiExtraSpacePerLine;
+const TInt KTextRectMargin = 4;
+
EXPORT_C CFepLayoutScrollableList* CFepLayoutScrollableList::NewL(CFepUiLayout* aUiLayout,
TInt aControlId,
TSize aItemSize,
@@ -500,6 +502,14 @@
AknBidiTextUtils::ConvertToVisualAndClip(item->iText, buf, *iFont,
itemRect.Width(), itemRect.Width());
}
+
+ if ( itemRect.Height() - font->FontMaxHeight() < KTextRectMargin )
+ {
+ // Make sure the height of the area for drawing text is larger than
+ // the max height of font by 4 pixels at least.
+ // The piece of code is used to avoid clipping some characters, like 'g'.
+ itemRect.SetHeight( font->FontMaxHeight() + KTextRectMargin );
+ }
gc->DrawText(buf, itemRect, baseLine, iAlign);
gc->DiscardFont();
}
@@ -608,7 +618,7 @@
EXPORT_C void CFepLayoutScrollableList::HandleControlEvent(TInt aEventType,
CFepUiBaseCtrl* aCtrl,
- const TDesC& aEventData)
+ const TDesC& /*aEventData*/)
{
if( aEventType == EEventButtonUp )
{
--- a/textinput/peninputcommonlayout/inc/peninputlayoutwindowext.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputcommonlayout/inc/peninputlayoutwindowext.h Thu Aug 19 10:15:25 2010 +0300
@@ -335,6 +335,15 @@
IMPORT_C void CPeninputLayoutWindowExt::SetTextAlignmentL( TInt aAlignment );
+ /**
+ * Unlatch the dead key for all kinds of vkb layout
+ *
+ * @since S60 v5.0
+ * @param none
+ * @return void
+ */
+ void CancelDeadKey();
+
protected:
/**
--- a/textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -490,7 +490,57 @@
return ETrue;
}
}
-
+
+// ---------------------------------------------------------------------------
+// CPeninputLayoutWindowExt::CancelDeadKey
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//
+void CPeninputLayoutWindowExt::CancelDeadKey()
+ {
+ // Get the dead key status
+ TInt latchedFlag = CPeninputDataConverter::AnyToInt(
+ iLayoutContext->RequestData( EAkninputDataTypeLatchedSet ));
+ // If the DeadKey is latched, cancel it
+ if ( latchedFlag )
+ {
+ RPointerArray<CPeninputVkbLayoutInfo> vkbListInfo;
+ RPointerArray<CPeninputVkbKeyInfo> keyInfoList;
+
+ // Get the vkb layout list supportted by current writing language
+ vkbListInfo = iVkbLayout->VkbLayoutInfoList();
+ TInt vkbListNum = vkbListInfo.Count();
+
+ CVirtualKey* pKey;
+ TBool deadKeyChange = EFalse;
+
+ // Find the latched DeadKey in all kinds of vkb layout
+ // which supportted by current writing language
+ for ( TInt i = 0; i < vkbListNum && !deadKeyChange ; i++ )
+ {
+ // Get the key info list in one vkb layout
+ keyInfoList = vkbListInfo[i]->KeyInfoList();
+ TInt keyListNum = keyInfoList.Count();
+ for ( TInt j = 0; j < keyListNum && !deadKeyChange ; j++ )
+ {
+ pKey = keyInfoList[j]->Key();
+ // If the Dead key is latched
+ if ( pKey->Latched())
+ {
+ // Unlatch the DeadKey
+ pKey->SetLatched( EFalse );
+
+ // Set the DeadKey state
+ iLayoutContext->SetData(
+ EAkninputDataTypeLatchedSet, &deadKeyChange );
+
+ deadKeyChange = ETrue;
+ }
+ }
+ }
+ }
+ }
+
// ---------------------------------------------------------------------------
// CPeninputLayoutWindowExt::ChangeInputLanguageL
// (other items were commented in a header)
@@ -518,6 +568,9 @@
if ( found )
{
+ // Remove the dead key's latched status
+ CancelDeadKey();
+
// Store language
iLayoutContext->SetData( EPeninputDataTypeInputLanguage, &aLangID );
@@ -820,45 +873,10 @@
//
EXPORT_C void CPeninputLayoutWindowExt::ChangeVkbLayout( TInt aVkbLayoutId )
{
- TInt latchedFlag = CPeninputDataConverter::AnyToInt(
- iLayoutContext->RequestData(EAkninputDataTypeLatchedSet));
- // If the DeadKey is latched, cancel it and then change the VKB layout
- if(latchedFlag)
- {
- RPointerArray<CPeninputVkbLayoutInfo> vkbListInfo;
- RPointerArray<CPeninputVkbKeyInfo> keyInfoList;
-
- vkbListInfo = iVkbLayout->VkbLayoutInfoList();
- TInt vkbListNum = vkbListInfo.Count();
-
- CVirtualKey* pKey;
- TBool deadKeyChange = EFalse;
- // Find the latched DeadKey in all the Vkb layout
- for(TInt i = 0; i < vkbListNum; i++)
- {
- // Get key info list in one VKB layout
- keyInfoList = vkbListInfo[i]->KeyInfoList();
- TInt keyListNum = keyInfoList.Count();
- for(TInt j = 0; j < keyListNum; j++)
- {
- pKey = keyInfoList[j]->Key();
- if(pKey->Latched())
- {
- // Unlatch the DeadKey
- pKey->SetLatched(EFalse);
-
- // Set the DeadKey state
- iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
- deadKeyChange = ETrue;
- break;
- }
- }
- if(deadKeyChange)
- {
- break;
- }
- }
- }
+
+ // Remove the dead key's latched status
+ CancelDeadKey();
+
TInt curVkbId = CPeninputDataConverter::AnyToInt
( iLayoutContext->RequestData( EPeninputDataTypeVkbLayout ) );
--- a/textinput/peninputfingerhwrar/data/peninputfingerhwrarwnd.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/data/peninputfingerhwrarwnd.rss Thu Aug 19 10:15:25 2010 +0300
@@ -1322,4 +1322,4 @@
scancode = 0x266B;
}
};
- }
\ No newline at end of file
+ }
--- a/textinput/peninputfingerhwrar/group/iconlist.txt Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/group/iconlist.txt Thu Aug 19 10:15:25 2010 +0300
@@ -64,4 +64,3 @@
-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_enter.svg
\ No newline at end of file
--- a/textinput/peninputfingerhwrar/group/peninputfingerhwrar.mmp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/group/peninputfingerhwrar.mmp Thu Aug 19 10:15:25 2010 +0300
@@ -43,6 +43,7 @@
SOURCE hbufcarrayar.cpp
SOURCE peninputfingerhwrarwritingwnd.cpp
SOURCE peninputfingerhwrarnumsymboltable.cpp
+SOURCE peninputfingerhwarvkbutility.cpp
USERINCLUDE ../inc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwarvkbutility.h Thu Aug 19 10:15:25 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 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 virtual key ctrl utility for arabic hwr.
+*
+*/
+
+
+#ifndef C_PENINPUTFINGERHWARVKBUTILITY_H
+#define C_PENINPUTFINGERHWARVKBUTILITY_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class TResourceReader;
+class CVirtualKeyboard;
+class CVirtualKey;
+
+// CLASS DECLARATION
+
+/**
+ * The virtual key board utility which implement a set of funtions:
+ * 1. create the virutal key
+ * 2. load virutal key image
+ * 3. load the virtual keys
+ *
+ * @lib peninputfingerhwrar.lib
+ * @since S60 v5.0
+ */
+
+class PeninputFingerHwrArVkbUtility
+ {
+public:
+ /**
+ * Load VKB image
+ *
+ */
+ static void LoadVkbKeyImageL(CVirtualKeyboard& aVkbCtrl, TInt aResId, const TSize& aKeySize);
+
+ /**
+ * Load virutal Key and set key rects.
+ *
+ */
+ static void LoadVirtualKeypadKeyL(CVirtualKeyboard& aVkbCtrl, const TInt aResId, const RArray<TRect>& aCellRects);
+
+ /**
+ * create a new virtual key
+ *
+ */
+ static CVirtualKey* CreateVkbKeyL(TResourceReader& aReader, const TRect& aKeyRect);
+
+ /**
+ * update the virtal key
+ *
+ */
+ static void UpdateVkbKeyL( CVirtualKey* aVirtualKey, TResourceReader& aReader, const TRect& aKeyRect );
+ };
+
+#endif // C_PENINPUTFINGERHWARVKBUTILITY_H
+
+// End Of File
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrardatastore.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrardatastore.h Thu Aug 19 10:15:25 2010 +0300
@@ -137,14 +137,6 @@
*/
TInt PrimaryRange();
- /**
- * Get current range
- *
- * @since Symbian TB9.2
- * @return Current range.
- */
- TFingerHwrRange CurrentRange();
-
/**
* Set case
@@ -456,11 +448,6 @@
RArray<TInt> iPermittedRanges;
/**
- * Current range
- */
- TFingerHwrRange iCurrentRange;
-
- /**
* Permitted range in int format
*/
TInt iIntRange;
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlafmanager.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlafmanager.h Thu Aug 19 10:15:25 2010 +0300
@@ -153,6 +153,13 @@
*/
TInt IcfTextHeight();
+ /**
+ * get indicator bubble rect.
+ *
+ * @since Symbian TB9.2
+ * @return bubble rect.
+ */
+ TRect IndicatorBubbleRect();
public: //buttons
/**
@@ -492,6 +499,11 @@
TInt iIcfTextAlignment;
CFont* iIcfFont;
+ /**
+ * Msg indicator bubble.
+ */
+ TRect iRectIndicatorBubble;
+
/**
* Candidate laf
*/
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlayout.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarlayout.h Thu Aug 19 10:15:25 2010 +0300
@@ -30,8 +30,6 @@
class CPeninputFingerHwrArDataStore;
class CRepository;
class CPeninputFingerHwrArWnd;
-class CPeninputFingerHwrArCallBack;
-
// class DECLARATIONS
/**
@@ -511,19 +509,12 @@
*/
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
*/
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarnumsymboltable.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarnumsymboltable.h Thu Aug 19 10:15:25 2010 +0300
@@ -100,8 +100,7 @@
* sizechanged
*
*/
- void SizeChanged(const TRect aVirtualKeypadRect, const RArray<TRect> aBtnRects,
- const TInt aKeypadRow, const TInt aKeypadCol, TBool aIsLandscape = ETrue);
+ void SizeChanged(const TRect& aVirtualKeypadRect);
/**
* Load VKB image
@@ -122,12 +121,6 @@
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
*/
@@ -140,7 +133,7 @@
* @param aNumMapping a string contains numbers and related char. max length is 16.
* @return none
*/
- void SetNumericMapping( const TDesC& aNumMapping );
+ void UpdateTableSymbol( const TDesC& aNumMapping );
/*
* set arabic number mode.
@@ -149,6 +142,14 @@
* @return none.
*/
void SetNativeNumMode(const TBool aIsNativeNumMode);
+
+ /**
+ * Update the virtual keys rect.
+ * @since s60 5.2.
+ * @param aCellRects keypad cell rects.
+ * @return None.
+ */
+ void UpdateAllVirtualKeysRect(const RArray<TRect> & aCellRects);
protected: //virtuals from CControlGroup (CFepUiBaseCtrl)
/**
@@ -207,20 +208,6 @@
*/
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
*
@@ -231,7 +218,14 @@
* Draw group control
*/
void Draw();
-
+
+private:
+ /**
+ * Refresh the symbol table
+ *
+ */
+ void RefreshNumSymbolTable();
+
/**
* Load background from resource
*
@@ -242,6 +236,13 @@
* map latin number to arabic number.
*/
TInt16 MapLatinNumAccordingToNumMode(TInt16 aUnicode);
+
+ /**
+ * Generate the char talbe according to the aNumMapping
+ *
+ */
+ HBufC* GenerateCharTable(const TDesC& aNumMapping);
+
private:
/**
* multipage viritual keyboard
@@ -254,12 +255,6 @@
*/
TBool iPopupVisible;
- /**
- * store the layout mode
- */
- TBool iIsLandscape;
-
- TInt iCurrentNumSCTType;
/*
* Default number mode.
*/
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarsymboltable.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarsymboltable.h Thu Aug 19 10:15:25 2010 +0300
@@ -100,7 +100,7 @@
* sizechanged
*
*/
- void SizeChanged(const TRect aVirtualKeypadRect, const RArray<TRect> aBtnRects,
+ void SizeChanged(const TRect aVirtualKeypadRect, const RArray<TRect> & aBtnRects,
const TInt aKeypadRow, const TInt aKeypadCol, TBool aIsLandscape = ETrue);
/**
@@ -223,20 +223,6 @@
*/
void MoveIconButton( CAknFepCtrlEventButton* aButton, const TRect& aRect,
TInt aXPadding=0, TInt aYPadding=0, TBool aReloadImages=ETrue );
-
- /**
- * 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();
/**
* Show the visible page button
--- a/textinput/peninputfingerhwrar/inc/peninputfingerhwrarwnd.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/inc/peninputfingerhwrarwnd.h Thu Aug 19 10:15:25 2010 +0300
@@ -504,7 +504,8 @@
* @param aCellRects rects of virtual keys.
* @return None
*/
- void LoadNumSymbolVirtualKeysL( const TInt aResId, const RArray<TRect>& aCellRects );
+ void LoadNumSymbolVirtualKeysL( const TInt aResId,
+ const RArray<TRect>& aCellRects, TBool aReload = ETrue );
/**
* relayout full ui, reset all controls position.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwarvkbutility.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 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 virtual key ctrl utility for arabic hwr.
+*
+*/
+
+// INCLUDE
+#include <e32std.h>
+#include <barsread.h>
+#include <coemain.h>
+
+#include "peninputfingerhwarvkbutility.h"
+#include "peninputlayoutvkb.h"
+#include "peninputpluginutils.h"
+#include "hbufcarrayar.h"
+#include "peninputfingerhwrarstoreconstants.h"
+
+// ---------------------------------------------------------------------------
+// Load virtual keys image
+// ---------------------------------------------------------------------------
+//
+void PeninputFingerHwrArVkbUtility::LoadVirtualKeypadKeyL(CVirtualKeyboard& aVkbCtrl, const TInt aResId, const RArray<TRect>& aCellRects)
+ {
+ aVkbCtrl.SetResourceId(aResId);
+
+ TResourceReader reader;
+ CCoeEnv::Static()->CreateResourceReaderLC( reader, aResId );
+
+ // construct keys
+ TInt resKeyCount = reader.ReadInt16();
+ TInt existsKeyCount = aVkbCtrl.KeyArray().Count();
+ TInt rectCount = aCellRects.Count();
+
+ for ( TInt i = 0; i < resKeyCount; i++ )
+ {
+ if ( i < existsKeyCount )
+ {
+ CVirtualKey* vk = aVkbCtrl.KeyArray()[i];
+ UpdateVkbKeyL( vk, reader, aCellRects[i%rectCount] );
+ }
+ else
+ {
+ CVirtualKey* vk = CreateVkbKeyL( reader, aCellRects[i%rectCount] );
+ CleanupStack::PushL( vk );
+ aVkbCtrl.AddKeyL( vk );
+
+ CleanupStack::Pop( vk );
+ }
+ }
+
+ CleanupStack::PopAndDestroy( 1 ); // reader
+
+ aVkbCtrl.Draw();
+ aVkbCtrl.UpdateArea( aVkbCtrl.Rect() );
+ }
+
+// ---------------------------------------------------------------------------
+// Create the virtual key
+// ---------------------------------------------------------------------------
+//
+CVirtualKey* PeninputFingerHwrArVkbUtility::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;
+ }
+
+// ---------------------------------------------------------------------------
+// Load virtual keys image
+// ---------------------------------------------------------------------------
+//
+void PeninputFingerHwrArVkbUtility::LoadVkbKeyImageL(CVirtualKeyboard& aVkbCtrl, 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 );
+ aVkbCtrl.SetNonIrregularKeyBitmapL(TVirtualKeyBmpType(EKeyBmpNormal + index + 1 ),maskbmp);
+ }
+ else
+ {
+ AknsUtils::CreateIconL( AknsUtils::SkinInstance(), id,
+ bmp, bmpFileName, bmpId );
+ }
+ // set bmp and size
+ AknIconUtils::SetSize( bmp, keySize, EAspectRatioNotPreserved );
+ aVkbCtrl.SetNonIrregularKeyBitmapL(TVirtualKeyBmpType( EKeyBmpNormal + index ),bmp);
+ }
+ }
+ // Pop and destroy reader
+ CleanupStack::PopAndDestroy( 1 );
+ }
+
+// ---------------------------------------------------------------------------
+// update virtual key info.
+// ---------------------------------------------------------------------------
+//
+void PeninputFingerHwrArVkbUtility::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(2,2) );
+ aVirtualKey->SetInnerRect( innerrect );
+ }
+
+// End Of File
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrardatastore.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrardatastore.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -24,6 +24,7 @@
#include <aknfeppeninputenums.h>
#include <AknFepGlobalEnums.h>
#include <AknFepInternalCRKeys.h>
+#include <peninputcommonlayoutglobalenum.h>
//USER INCLUDE
#include "peninputfingerhwrarlayout.h"
@@ -72,7 +73,6 @@
delete iRepositoryFep;
delete iCommonEngineRepository;
-// delete iTriggerStr;
delete iHwrEngine;
delete iUserDefinedResource;
@@ -157,6 +157,10 @@
{
iPermittedRanges.Append( ERangeNative );
}
+ if ( aPermittedRanges & ERangeNativeNumber )
+ {
+ iPermittedRanges.Append( ERangeNativeNumber );
+ }
if ( aPermittedRanges & ERangeEnglish )
{
iPermittedRanges.Append( ERangeEnglish );
@@ -199,15 +203,6 @@
}
// ----------------------------------------------------------------------------
-// get current range
-// ----------------------------------------------------------------------------
-//
-TFingerHwrRange CPeninputFingerHwrArDataStore::CurrentRange()
- {
- return iCurrentRange;
- }
-
-// ----------------------------------------------------------------------------
// Set case
// ----------------------------------------------------------------------------
//
@@ -705,7 +700,7 @@
//
TBool CPeninputFingerHwrArDataStore::IsNumberOnlyMode()
{
- if(PrimaryRange() == ERangeNumber)
+ if(PrimaryRange() == ERangeNumber || PrimaryRange() == ERangeNativeNumber)
{
return ETrue;
}
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarengine.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarengine.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -16,11 +16,13 @@
*/
-//FEP INCLUDES
+//SYSTEM INCLUDES
#include <AknFepGlobalEnums.h>
#include <aknfeppeninputenums.h>
#include <PtiHwrRecognizer.h>
#include <e32property.h>
+#include <peninputcommonlayoutglobalenum.h>
+
#include "ptidefs.h"
//USER INCLUDES
@@ -367,6 +369,13 @@
aRecognitionRange.iSubRange = EPtiRangeNumber;
}
break;
+ case ERangeNativeNumber:
+ {
+ //convert to ERangeNumber to let engine recognize both native number
+ //and latin number.
+ aRecognitionRange.iSubRange = EPtiRangeNumber;
+ }
+ break;
default:
break;
}
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -156,6 +156,18 @@
// get font for text
iIcfFont = const_cast<CFont*>(AknLayoutUtils::FontFromId(icfTextLineLayoutRow1.iFont, NULL));
+
+ //indicator bubble.
+#ifdef ARABIC_LAF
+ if(iIsLandscape)
+ {
+ iRectIndicatorBubble.SetRect(543,17,624,41);
+ }
+ else
+ {
+ iRectIndicatorBubble.SetRect(263,17,344,41);
+ }
+#endif
}
// ---------------------------------------------------------------------------
@@ -1082,6 +1094,14 @@
return iIcfTextHeight;
}
+// ---------------------------------------------------------------------------
+// get indicator bubble rect.
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::IndicatorBubbleRect()
+ {
+ return iRectIndicatorBubble;
+ }
// ---------------------------------------------------------------------------
// get inner padding of buttons.
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -49,46 +49,6 @@
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 =============================
// ---------------------------------------------------------------------------
@@ -141,9 +101,7 @@
//retrieve the settings
LoadAndPublishDefaultL();
-
- //iCallBack = new (ELeave) CPeninputFingerHwrArCallBack(this);
-
+
//set screen layout extent
SetRect( TRect( TPoint( 0, 0 ), ScreenSize() ) );
}
@@ -627,17 +585,7 @@
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());
}
@@ -674,8 +622,6 @@
delete iStateMgr;
delete iGSRepositoryWatcher;
delete iRepositorySetting;
-// delete iCommonEngineRepository;
- //delete iCallBack;
}
// ---------------------------------------------------------------------------
@@ -932,7 +878,6 @@
//
void CPeninputFingerHwrArLayout::OnHwrStrokeStartedL()
{
- //iCallBack->IssueRequestL();
iHwrWnd->HideIndicator();
// The default candidate cell is not highlight
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarnumsymboltable.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarnumsymboltable.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -41,8 +41,9 @@
#include "peninputfingerhwrarstoreconstants.h"
#include "peninputlayoutvkb.h"
#include "peninputfingerhwrarnumsymboltable.h"
+#include "peninputfingerhwarvkbutility.h"
-
+const TUint16 KInvalidChar = 0xFFFF;
// ---------------------------------------------------------------------------
// Symbian Constructor
// ---------------------------------------------------------------------------
@@ -99,9 +100,25 @@
{
CapturePointer( ETrue );
iPopupVisible = ETrue;
- iCurrentNumSCTType = ENumSCTLatin;
- UiLayout()->LockArea(UiLayout()->Rect(),this);
- UpdateNumSymbolTable(ENumSCTLatin);
+ UiLayout()->LockArea(UiLayout()->Rect(),this);
+ // signal server to add the pop area
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ struct SData
+ {
+ TRect rr;
+ TBool flag;
+ } data;
+
+ data.rr = iNumKeypad->Rect();
+ data.flag = ETrue;
+ TPtrC ptrForAdd;
+ ptrForAdd.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalPopupArea,ptrForAdd);
+ }
+
+ RefreshNumSymbolTable();;
}
// ---------------------------------------------------------------------------
@@ -112,6 +129,22 @@
{
CapturePointer( EFalse );
iPopupVisible = EFalse;
+ // signal server to remove the pop area
+ if(UiLayout()->NotDrawToLayoutDevice())
+ {
+ struct SData
+ {
+ TRect rr;
+ TBool flag;
+ } data;
+
+ data.rr = iNumKeypad->Rect();
+ data.flag = EFalse;
+ TPtrC ptrForRemove;
+ ptrForRemove.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+
+ UiLayout()->SignalOwner(ESignalPopupArea,ptrForRemove);
+ }
UiLayout()->UnLockArea(UiLayout()->Rect(),this);
}
@@ -210,15 +243,10 @@
// SizeChanged
// ---------------------------------------------------------------------------
//
-void CPeninputArabicFingerHwrNumSymbolTable::SizeChanged(
- const TRect aVirtualKeypadRect, const RArray<TRect> /*aBtnRects*/,
- const TInt /*aKeypadRow*/, const TInt /*aKeypadCol*/, TBool aIsLandscape)
+void CPeninputArabicFingerHwrNumSymbolTable::SizeChanged(const TRect& aVirtualKeypadRect)
{
- iIsLandscape = aIsLandscape;
-
// relayout the virtual key pad
iNumKeypad->SetRect(aVirtualKeypadRect);
-
}
// ---------------------------------------------------------------------------
@@ -247,11 +275,6 @@
iNumKeypad->SetDrawOpaqueBackground( EFalse );
}
-void CPeninputArabicFingerHwrNumSymbolTable::OnActivate()
- {
- CControlGroup::OnActivate();
- }
-
// ---------------------------------------------------------------------------
// Read control's background info.
// ---------------------------------------------------------------------------
@@ -339,53 +362,7 @@
//
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 );
+ PeninputFingerHwrArVkbUtility::LoadVkbKeyImageL(*iNumKeypad,aResId,aKeySize);
}
// ---------------------------------------------------------------------------
@@ -394,124 +371,57 @@
//
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() );
+ PeninputFingerHwrArVkbUtility::LoadVirtualKeypadKeyL(*iNumKeypad,aResId,aCellRects);
}
// ---------------------------------------------------------------------------
-// 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 )
+void CPeninputArabicFingerHwrNumSymbolTable::UpdateTableSymbol( const TDesC& aNumMapping )
{
- //format of aNumMapping is "0123456789******"
+ HBufC* charTable = GenerateCharTable(aNumMapping);
+ if(charTable)
+ {
+ TInt charTalbeCount = charTable->Length();
+
+ //numberpad
+ TInt keyCount = iNumKeypad->KeyArray().Count();
+ for ( TInt i = 0; i < keyCount; i++ )
+ {
+ CVirtualKey* vk = iNumKeypad->KeyArray()[i];
+
+ if(i < charTalbeCount && (*charTable)[i] != KInvalidChar)
+ {
+ TBuf<1> keydata;
+ TUint16 keyCode = (*charTable)[i];
+ keydata.Append(keyCode);
+ vk->SetKeyData(keydata);
+ vk->SetKeyScancode(keyCode);
+ vk->SetDimmed( EFalse );
+ }
+ else
+ {
+ vk->SetKeyData( KNullDesC );
+ vk->SetKeyScancode( KInvalidChar );
+ vk->SetDimmed( EFalse );
+ }
+ }
+
+ delete charTable;
+
+ //sync feedback
+ UpdateAllVirtualKeysFeedback();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Get reordered char table for key pad to render them
+// ---------------------------------------------------------------------------
+//
+HBufC* CPeninputArabicFingerHwrNumSymbolTable::GenerateCharTable(const TDesC& aNumMapping)
+ {
+ //format of aNumMapping is "0123456789******"
//char offset in aNumMapping
//cell 0 using aNumMapping[KNumOffsets[0]]
@@ -523,49 +433,36 @@
14, 7, 8, 9,
15, 10, 0, 11
};
-
- TInt maxMappingItemCount = sizeof(KNumOffsets)/sizeof(TInt);
+ TInt tableSize = 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 );
- }
- }
+ HBufC* reorderedCharTable = HBufC::New(mappingItemCount +1);
+ if(reorderedCharTable)
+ {
+ for(TInt i = 0; i < tableSize; i++)
+ {
+ if(KNumOffsets[i] < mappingItemCount)
+ {
+ TUint16 unicode = aNumMapping[KNumOffsets[i]];
+ TUint16 mappedCode = MapLatinNumAccordingToNumMode(unicode);
+ reorderedCharTable->Des().Append(mappedCode);
+ }
+ else
+ {
+ reorderedCharTable->Des().Append(KInvalidChar);
+ }
+ }
+ }
-
- //sync feedback
- UpdateAllVirtualKeysFeedback();
- }
-
+ return reorderedCharTable;
+ }
+
// ---------------------------------------------------------------------------
// Navigate the symbol page
// ---------------------------------------------------------------------------
//
-void CPeninputArabicFingerHwrNumSymbolTable::UpdateNumSymbolTable( TInt aNumSctType)
- {
-
- iCurrentNumSCTType = aNumSctType;
+void CPeninputArabicFingerHwrNumSymbolTable::RefreshNumSymbolTable()
+ {
// Draw the symbol table
Draw();
@@ -582,7 +479,7 @@
//
void CPeninputArabicFingerHwrNumSymbolTable::UpdateAllVirtualKeysFeedback()
{
- //update sctpad keys
+ //update numpad keys
TInt keyCount = iNumKeypad->KeyArray().Count();
for ( TInt i = 0; i < keyCount; i++ )
{
@@ -593,6 +490,30 @@
}
// ---------------------------------------------------------------------------
+// update rect of all virtual keys.
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrNumSymbolTable::UpdateAllVirtualKeysRect(const RArray<TRect> & aCellRects)
+ {
+ //update numpad keys rect
+ TInt keyCount = iNumKeypad->KeyArray().Count();
+ TInt rectCount = aCellRects.Count();
+ if(keyCount != rectCount)
+ {
+ return;
+ }
+ for ( TInt i = 0; i < keyCount; i++ )
+ {
+ CVirtualKey* vk = iNumKeypad->KeyArray()[i];
+ TRect rect = aCellRects[i%rectCount];
+ vk->SetRect(aCellRects[i%rectCount]);
+ TRect innerrect = rect;
+ innerrect.Shrink( TSize(10,10) );
+ vk->SetInnerRect( innerrect );
+ }
+ }
+
+// ---------------------------------------------------------------------------
// Draw new content to the screen
// ---------------------------------------------------------------------------
//
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarsymboltable.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarsymboltable.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -41,7 +41,7 @@
#include "peninputfingerhwrarstoreconstants.h"
#include "peninputfingerhwrarmultipagevkb.h"
#include "peninputfingerhwrarsymboltable.h"
-
+#include "peninputfingerhwarvkbutility.h"
//CONST DEFINATION
const TInt KSymbolButtonInnerPadding = 6;
@@ -216,14 +216,16 @@
// ---------------------------------------------------------------------------
//
void CPeninputArabicFingerHwrSymbolTable::SizeChanged(
- const TRect aVirtualKeypadRect, const RArray<TRect> aBtnRects,
+ const TRect aVirtualKeypadRect, const RArray<TRect> & aBtnRects,
const TInt aKeypadRow, const TInt aKeypadCol, TBool aIsLandscape)
{
+ ASSERT(aBtnRects.Count() > 0);
+
iIsLandscape = aIsLandscape;
// relayout the button
- TRect pageBtnRect(aBtnRects[0]);
-
+ TRect pageBtnRect = aBtnRects[0];
+
if(aIsLandscape)
{
i2Page1Btn->Hide(EFalse);
@@ -253,7 +255,7 @@
iMutiPageKeypad->UpdatePaging(aKeypadRow,aKeypadCol);
}
-
+
// ---------------------------------------------------------------------------
// create symbol table keypad.
// ---------------------------------------------------------------------------
@@ -330,11 +332,6 @@
aButton->SizeChanged( aRect, rcInner, aReloadImages );
}
-void CPeninputArabicFingerHwrSymbolTable::OnActivate()
- {
- CControlGroup::OnActivate();
- }
-
// ---------------------------------------------------------------------------
// Read control's background info.
// ---------------------------------------------------------------------------
@@ -422,53 +419,7 @@
//
void CPeninputArabicFingerHwrSymbolTable::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 );
- iMutiPageKeypad->SetNonIrregularKeyBitmapL(
- TVirtualKeyBmpType( EKeyBmpNormal + index + 1 ), maskbmp );
- }
- else
- {
- AknsUtils::CreateIconL( AknsUtils::SkinInstance(), id,
- bmp, bmpFileName, bmpId );
- }
- // set bmp and size
- AknIconUtils::SetSize( bmp, keySize, EAspectRatioNotPreserved );
- iMutiPageKeypad->SetNonIrregularKeyBitmapL(
- TVirtualKeyBmpType( EKeyBmpNormal + index ), bmp );
- }
- }
- // Pop and destroy reader
- CleanupStack::PopAndDestroy( 1 );
+ PeninputFingerHwrArVkbUtility::LoadVkbKeyImageL(*iMutiPageKeypad,aResId,aKeySize);
}
// ---------------------------------------------------------------------------
@@ -477,118 +428,10 @@
//
void CPeninputArabicFingerHwrSymbolTable::LoadVirtualKeypadKeyL(const TInt aResId, const RArray<TRect>& aCellRects)
{
- iMutiPageKeypad->SetResourceId(aResId);
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC( reader, aResId );
-
- // construct keys
- TInt resKeyCount = reader.ReadInt16();
- TInt existsKeyCount = iMutiPageKeypad->KeyArray().Count();
- TInt rectCount = aCellRects.Count();
-
- for ( TInt i = 0; i < resKeyCount; i++ )
- {
- if ( i < existsKeyCount )
- {
- CVirtualKey* vk = iMutiPageKeypad->KeyArray()[i];
- UpdateVkbKeyL( vk, reader, aCellRects[i%rectCount] );
- }
- else
- {
- CVirtualKey* vk = CreateVkbKeyL( reader, aCellRects[i%rectCount] );
- CleanupStack::PushL( vk );
- iMutiPageKeypad->AddKeyL( vk );
-
- CleanupStack::Pop( vk );
- }
- }
-
- CleanupStack::PopAndDestroy( 1 ); // reader
-
- iMutiPageKeypad->Draw();
- iMutiPageKeypad->UpdateArea( iMutiPageKeypad->Rect() );
+ PeninputFingerHwrArVkbUtility::LoadVirtualKeypadKeyL(*iMutiPageKeypad,aResId,aCellRects);
}
// ---------------------------------------------------------------------------
-// create virtual key.
-// ---------------------------------------------------------------------------
-//
-CVirtualKey* CPeninputArabicFingerHwrSymbolTable::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(2, 2) );
- vk->SetInnerRect( innerrect );
-
- return vk;
- }
-
-// ---------------------------------------------------------------------------
-// update virtual key info.
-// ---------------------------------------------------------------------------
-//
-void CPeninputArabicFingerHwrSymbolTable::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(2,2) );
- aVirtualKey->SetInnerRect( innerrect );
- }
-
-// ---------------------------------------------------------------------------
// Navigate the symbol page
// ---------------------------------------------------------------------------
//
@@ -691,17 +534,14 @@
{
if(AbleToDraw())
{
- //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();
+ // draw background
DrawBackground(iMutiPageKeypad->Rect());
+
// draw group
CControlGroup::Draw();
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -87,7 +87,7 @@
CPeninputFingerHwrArWnd::~CPeninputFingerHwrArWnd()
{
#ifdef RD_TACTILE_FEEDBACK
- if(UiLayout())
+ if(UiLayout() && iWritingBox)
{
UiLayout()->DeRegisterFeedbackArea(reinterpret_cast<TInt>(iWritingBox),
iWritingBox->Rect());
@@ -352,7 +352,10 @@
{
if ( aInfo.Length() > 0 )
{
- iContextField->ShowBubble( aInfo, iContextField->MsgBubbleCtrl()->Rect() );
+ TRect rect(iLafManager->IndicatorBubbleRect());
+ iContextField->MsgBubbleCtrl()->SetRect(rect);
+// iContextField->ShowBubble( aInfo, iContextField->MsgBubbleCtrl()->Rect());
+ iContextField->ShowBubble( aInfo, rect);
}
else
{
@@ -619,6 +622,7 @@
KAknsIIDQsnFrInputPreviewMiddle,
KAknsIIDQsnFrInputPreviewSideR );
iContextField->SetMsgBubbleCtrlSize( TSize( bubbleLineLayout.iW,bubbleLineLayout.iH ) );
+ iContextField->MsgBubbleCtrl()->SetTextL(KNullDesC);
iContextField->SetLineSeparatorAfterPrompt(ETrue);
@@ -821,7 +825,7 @@
// ---------------------------------------------------------------------------
//
void CPeninputFingerHwrArWnd::LoadNumSymbolVirtualKeysL( const TInt aResId,
- const RArray<TRect>& aCellRects )
+ const RArray<TRect>& aCellRects, TBool aReload)
{
TAknTextLineLayout txtlayout = iLafManager->NumpadKeyTxtLayout();
iNumSymbolTable->KeyPad()->SetTextLineLayout( txtlayout );
@@ -829,8 +833,14 @@
TInt fontid = txtlayout.FontId();
const CFont* font = AknLayoutUtils::FontFromId( fontid );
iNumSymbolTable->KeyPad()->SetFont( font );
-
- iNumSymbolTable->LoadVirtualKeypadKeyL(aResId,aCellRects);
+ if(aReload)
+ {
+ iNumSymbolTable->LoadVirtualKeypadKeyL(aResId,aCellRects);
+ }
+ else
+ {
+ iNumSymbolTable->UpdateAllVirtualKeysRect(aCellRects);
+ }
}
// ---------------------------------------------------------------------------
@@ -943,7 +953,7 @@
iLafManager->GetNumVirtualKeyRects( numrects );
// load keys
- LoadNumSymbolVirtualKeysL(R_FINGER_HWR_NUMPAD, numrects);
+ LoadNumSymbolVirtualKeysL(R_FINGER_HWR_NUMPAD, numrects,EFalse);
CleanupStack::PopAndDestroy();//rects
@@ -954,9 +964,7 @@
rect = iLafManager->CtrlRect(iNumSymbolTable->ControlId());
iNumSymbolTable->SetRect(rect);
- iNumSymbolTable->SizeChanged(iLafManager->GetVirtualNumKeyRect(),
- iLafManager->GetSymBtnArray(), numpadrows, numpadcols,
- iLafManager->IsLandscape());
+ iNumSymbolTable->SizeChanged(iLafManager->GetVirtualNumKeyRect());
}
@@ -1484,7 +1492,7 @@
//
void CPeninputFingerHwrArWnd::SetNumericMapping( const TDesC& aNumMapping )
{
- iNumSymbolTable->SetNumericMapping(aNumMapping);
+ iNumSymbolTable->UpdateTableSymbol(aNumMapping);
}
// ---------------------------------------------------------------------------
// set native number mode on or off.
--- a/textinput/peninputgenericitut/group/peninputgenericitut.mmp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericitut/group/peninputgenericitut.mmp Thu Aug 19 10:15:25 2010 +0300
@@ -122,5 +122,6 @@
LIBRARY bitgdi.lib
LIBRARY commonengine.lib
LIBRARY centralrepository.lib
+LIBRARY featmgr.lib
// End Of File
--- a/textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h Thu Aug 19 10:15:25 2010 +0300
@@ -301,7 +301,14 @@
// resource id for generic itut resource file
TInt iCommonResId;
- RArray<TInt> iConfigResIds;
+ /**
+ * resource id for current input language
+ */
+ TInt iConfigResId;
+ /**
+ * resource id for special controls in Chinese/Korean variant
+ */
+ TInt iSpecialResId;
TInt iAvkonResId;
--- a/textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -34,6 +34,7 @@
#include <AknSettingCache.h>
#include <AknFepInternalCRKeys.h>
#include <centralrepository.h>
+#include <featmgr.h>
#include "peninputgenericitutdatamgr.h"
#include "peninputgenericitutlayoutcontext.h"
@@ -100,13 +101,18 @@
CCoeEnv::Static()->DeleteResourceFile(iAvkonResId);
CCoeEnv::Static()->DeleteResourceFile(iCommonResId);
-
- // Remove all resource files from control environment
- for (TInt i=0; i< iConfigResIds.Count(); i++)
+
+ // Remove the resource file of current input language
+ if ( iConfigResId )
{
- CCoeEnv::Static()->DeleteResourceFile(iConfigResIds[i]);
+ CCoeEnv::Static()->DeleteResourceFile( iConfigResId );
}
- iConfigResIds.Close();
+
+ // Remove the resource file of some special controls
+ if ( iSpecialResId )
+ {
+ CCoeEnv::Static()->DeleteResourceFile( iSpecialResId );
+ }
ClearChnCandidates(EItutCandidates);
ClearChnCandidates(EItutPuncCandidates);
@@ -120,7 +126,6 @@
void CGenericItutDataMgr::ConstructL()
{
-
// initialize layout info of controls and layout
ReadLafInfo();
@@ -153,7 +158,33 @@
iMenuItemList.Append( item );
reader.ReadInt32(); // extension link
}
- CleanupStack::PopAndDestroy(); //reader
+ CleanupStack::PopAndDestroy(); //reader
+
+ // There are some special controls in Chinese and Korean VITUT,
+ // and these controls are hidden when changing to other input language,
+ // so related resource file should be in control environment at all times.
+ // Otherwise crash happens when reading resource for them sometime.
+ // For example: If writing language is Chinese, enters spell mode,
+ // then switches theme, crash happens.
+ if ( FeatureManager::FeatureSupported( KFeatureIdChinese ) ||
+ FeatureManager::FeatureSupported( KFeatureIdKorean ) )
+ {
+ TFileName resourceFilename( KConfigResourceFile ) ;
+ if ( FeatureManager::FeatureSupported( KFeatureIdChinese ) )
+ {
+ // Chinese variant
+ resourceFilename.Append( ResFileExtByScriptIdx( EChnExt ) );
+ }
+ else
+ {
+ // Korean variant
+ resourceFilename.Append( ResFileExtByScriptIdx( EHangulExt ) );
+ }
+ resourceFilename.Append(KResourceFileExtName);
+
+ BaflUtils::NearestLanguageFile( coeEnv->FsSession(), resourceFilename );
+ iSpecialResId = coeEnv->AddResourceFileL( resourceFilename );
+ }
}
CGenericItutDataMgr::TMenuItem* CGenericItutDataMgr::GetMenuItem(TInt aCommand)
@@ -1167,21 +1198,19 @@
CCoeEnv* coeEnv = CCoeEnv::Static();
- TFileName resourceConfigName(iResourceFilename);
- BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceConfigName);
- // Do not delete resource file from control environment if changing language.
- // Otherwise crash happens if switching theme. For example:If writing language
- // is Chinese, enters spell mode, then switches theme, crash happens.
- TInt configResId = coeEnv->AddResourceFileL(resourceConfigName);
- if ( iConfigResIds.Find(configResId) == KErrNotFound)
+ // Remove the resource file of previous input language.
+ // The previous resource file should be removed first,
+ // Because there are some same keypad ids in the resource file
+ // of latin, Cyrillic, and etc.
+ if ( iConfigResId )
{
- iConfigResIds.Append( configResId );
+ coeEnv->DeleteResourceFile( iConfigResId );
}
- else
- {
- // Remove resource file to ensure the resource file is added only one time.
- coeEnv->DeleteResourceFile( configResId );
- }
+
+ // Add the resource file of current input language
+ TFileName resourceConfigName( iResourceFilename );
+ BaflUtils::NearestLanguageFile( coeEnv->FsSession(), resourceConfigName );
+ iConfigResId = coeEnv->AddResourceFileL( resourceConfigName );
if (IsChinese())
{
--- a/textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -325,6 +325,14 @@
TInt CGenericItutUiLayout::SizeChanged(const TAny* /*pData*/)
{
+
+ // For avoiding that NULL pointer is called
+ // add UiMgr() and CurrentState() condition
+ if( !( UiMgr() && UiMgr()->CurrentState()))
+ {
+ return KErrBadHandle;
+ }
+
TBool overLap = UiMgr()->CurrentState()->StateType()
== CGenericItutUiMgrBase::EStateMatchSelection ? ETrue: EFalse;
--- a/textinput/peninputgenericitut/srcdata/peninputitutconfig_korean.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericitut/srcdata/peninputitutconfig_korean.rss Thu Aug 19 10:15:25 2010 +0300
@@ -16,7 +16,10 @@
*/
// RESOURCE IDENTIFIER
-NAME ITUW
+// The name should not be the same as ITUW, Otherwise the keypad id of
+// r_finger_input_keypad_korean is the same as the keypad id in latin,
+// then crash occurs if switching writing language.
+NAME ITUK
#include <eikon.hrh>
--- a/textinput/peninputgenericvkb/group/peninputgenericvkb.mmp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/group/peninputgenericvkb.mmp Thu Aug 19 10:15:25 2010 +0300
@@ -134,3 +134,4 @@
LIBRARY aknskins.lib
LIBRARY fbscli.lib
LIBRARY estor.lib
+LIBRARY featdiscovery.lib
--- a/textinput/peninputgenericvkb/inc/peninputgenericvkblayout.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/inc/peninputgenericvkblayout.h Thu Aug 19 10:15:25 2010 +0300
@@ -233,6 +233,7 @@
*/
static CPeninputGenericVkbLayoutImp* NewL( TAny* aInitParams );
static CPeninputGenericVkbLayoutImp* NewFsqL( TAny* aInitParams );
+ static CPeninputGenericVkbLayoutImp* NewPrtFsqL( TAny* aInitParams );
/**
* Destructor
--- a/textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h Thu Aug 19 10:15:25 2010 +0300
@@ -731,6 +731,11 @@
* Indicates whether range button short press is handled.
*/
TBool iHandleRangeShortPress;
+
+ /**
+ * Indicates whether US rsc file exist or not
+ */
+ TBool iUSRscFileExist;
private:
CFepLayoutScrollableList* iCandidateList;
--- a/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -24,6 +24,7 @@
#include <peninputpluginutils.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.h>
+#include <featdiscovery.h> // for CFeatureDiscovery
// User includes
#include "peninputgenericvkblafdatamgr.h"
@@ -1036,53 +1037,92 @@
aDataInfo.iClientRect = rect;
aDataInfo.iQwtRect = aParentWndRect;
- TInt v1, v2;
+ TInt v1, v2, gridLayoutVariant;
switch ( aLayoutType )
{
case ELayout10x3:
{
v1 = 0;
v2 = 0;
+ gridLayoutVariant = 1;
break;
}
case ELayout11x3:
{
v1 = 1;
v2 = 2;
+ gridLayoutVariant = 1;
break;
}
case ELayout11x4:
{
v1 = 1;
v2 = 3;
+ gridLayoutVariant = 2;
break;
}
default:
{
v1 = 0;
v2 = 0;
+ gridLayoutVariant = 1;
}
}
- // Bottom pane rect
- linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine();
- layoutrect.LayoutRect( aParentWndRect, linelayout );
- rectBottomWin = layoutrect.Rect();
-
- // ICF pane rect
- linelayout = AknLayoutScalable_Avkon::popup_fep_vkb_icf_pane(0).LayoutLine();
- layoutrect.LayoutRect( aParentWndRect, linelayout );
- rectICFpane = layoutrect.Rect();
-
- // ICF bg pane rect
- linelayout = AknLayoutScalable_Avkon::bg_icf_pane(0).LayoutLine();
- layoutrect.LayoutRect( rectICFpane, linelayout );
- rectICFBg = layoutrect.Rect();
-
- // ICF area rect
- linelayout = AknLayoutScalable_Avkon::list_vkb_icf_pane(0).LayoutLine();
- layoutrect.LayoutRect( rectICFBg, linelayout );
- rectICF = layoutrect.Rect();
+ // Landscape info is set if i) portrait FSQ feature is not enabled (landscape FSQ)
+ // or ii) portrait FSQ feature is enabled and the current orientation is landscape.
+ // Note: Feature Manager is fading out and CFeatureDiscovery is recommended to use.
+ TBool isPortraitFSQEnabled = EFalse;
+ TRAP_IGNORE( isPortraitFSQEnabled = CFeatureDiscovery::IsFeatureSupportedL(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput ) );
+
+ if ( !isPortraitFSQEnabled ||
+ ( isPortraitFSQEnabled && Layout_Meta_Data::IsLandscapeOrientation() ) )
+ {
+ // Bottom pane rect
+ linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine();
+ layoutrect.LayoutRect( aParentWndRect, linelayout );
+ rectBottomWin = layoutrect.Rect();
+
+ // ICF pane rect
+ linelayout = AknLayoutScalable_Avkon::popup_fep_vkb_icf_pane(0).LayoutLine();
+ layoutrect.LayoutRect( aParentWndRect, linelayout );
+ rectICFpane = layoutrect.Rect();
+
+ // ICF bg pane rect
+ linelayout = AknLayoutScalable_Avkon::bg_icf_pane(0).LayoutLine();
+ layoutrect.LayoutRect( rectICFpane, linelayout );
+ rectICFBg = layoutrect.Rect();
+
+ // ICF area rect
+ linelayout = AknLayoutScalable_Avkon::list_vkb_icf_pane(0).LayoutLine();
+ layoutrect.LayoutRect( rectICFBg, linelayout );
+ rectICF = layoutrect.Rect();
+ }
+ // Portrait info is set if portrait FSQ feature is enabled the current orientation
+ // is portrait.
+ else
+ {
+ // Bottom pane rect
+ linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(gridLayoutVariant).LayoutLine();
+ layoutrect.LayoutRect( aParentWndRect, linelayout );
+ rectBottomWin = layoutrect.Rect();
+
+ // ICF pane rect
+ linelayout = AknLayoutScalable_Avkon::popup_fep_vkb_icf_pane(1).LayoutLine();
+ layoutrect.LayoutRect( aParentWndRect, linelayout );
+ rectICFpane = layoutrect.Rect();
+
+ // ICF bg pane rect
+ linelayout = AknLayoutScalable_Avkon::bg_icf_pane(1).LayoutLine();
+ layoutrect.LayoutRect( rectICFpane, linelayout );
+ rectICFBg = layoutrect.Rect();
+
+ // ICF area rect
+ linelayout = AknLayoutScalable_Avkon::list_vkb_icf_pane(1).LayoutLine();
+ layoutrect.LayoutRect( rectICFBg, linelayout );
+ rectICF = layoutrect.Rect();
+ }
aDataInfo.iICF.iRect = rectICF;
cellText = AknLayoutScalable_Avkon::list_vkb_icf_pane_t1(0, 0, 0).LayoutLine();
@@ -1124,96 +1164,249 @@
linelayout = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(v1).LayoutLine();
keypadRect.LayoutRect( rectBottomWin, linelayout );
- // key pane rect
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(v2).LayoutLine();
- keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
-
- // key cell rect
- linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(v2).LayoutLine();
- keycellRect.LayoutRect( keypaneRect.Rect(), linelayout );
+ if ( !isPortraitFSQEnabled ||
+ ( isPortraitFSQEnabled && Layout_Meta_Data::IsLandscapeOrientation() ) )
+ {
+ // key pane rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(v2).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
- // key label rect
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(v2).LayoutLine();
- keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout );
-
- // pic3pane rect
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane(v2).LayoutLine();
- pic3paneRect.LayoutRect( keypaneRect.Rect(), linelayout );
+ // key cell rect
+ linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(v2).LayoutLine();
+ keycellRect.LayoutRect( keypaneRect.Rect(), linelayout );
+
+ // key label rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(v2).LayoutLine();
+ keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout );
+
+ // pic3pane rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane(v2).LayoutLine();
+ pic3paneRect.LayoutRect( keypaneRect.Rect(), linelayout );
+
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g1(0).LayoutLine();
+ layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
+ pic3pLeftWidth = layoutrect.Rect().Width();
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g1(0).LayoutLine();
- layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
- pic3pLeftWidth = layoutrect.Rect().Width();
-
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g3(0).LayoutLine();
- layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
- pic3pRightWidth = layoutrect.Rect().Width();
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g3(0).LayoutLine();
+ layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
+ pic3pRightWidth = layoutrect.Rect().Width();
+
+ TRect rectXPane = keypaneRect.Rect();
+ rect = keycellRect.Rect();
+ rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
+ TRect rectXBorder = rect;
+ rect = keylabelRect.Rect();
+ rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
+ TRect rectXInner = rect;
+ rect = pic3paneRect.Rect();
+ rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
+ TRect rect3PicPane = rect;
+ rectXPane.Move( - rectXPane.iTl );
+
+ rect = keypadRect.Rect();
+ rect.Move( - base.iX, - base.iY );
+ TRect rectOfKeypad = rect;
+ TRect rectOfButtons = rectOfKeypad;
+ rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height();
+ rectOfButtons.iTl.iY += rectOfKeypad.Height();
+
+ TInt spaceBtnWidth = rectOfButtons.Width() - rectXPane.Width() * 8;
+ TInt dx = rectOfButtons.iTl.iX;
+ TInt dy = rectOfButtons.iTl.iY;
+
+ aDataInfo.iCloseButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iCloseButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
- TRect rectXPane = keypaneRect.Rect();
- rect = keycellRect.Rect();
- rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
- TRect rectXBorder = rect;
- rect = keylabelRect.Rect();
- rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
- TRect rectXInner = rect;
- rect = pic3paneRect.Rect();
- rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
- TRect rect3PicPane = rect;
- rectXPane.Move( - rectXPane.iTl );
+ aDataInfo.iShiftButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iShiftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ aDataInfo.iMultiRangeButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iMultiRangeButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ aDataInfo.iLeftButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iLeftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
- rect = keypadRect.Rect();
- rect.Move( - base.iX, - base.iY );
- TRect rectOfKeypad = rect;
- TRect rectOfButtons = rectOfKeypad;
- rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height();
- rectOfButtons.iTl.iY += rectOfKeypad.Height();
+ TInt expand = spaceBtnWidth - rectXPane.Width();
+ aDataInfo.iSpaceButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iSpaceButton.iRect.Resize( expand, 0 );
+ aDataInfo.iSpaceButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ aDataInfo.iSpaceButton.iInnerRect.Resize( expand, 0 );
+ aDataInfo.iSpaceButtonEx.iIconsFrameRect = OffsetRect( rect3PicPane, dx, dy );
+ aDataInfo.iSpaceButtonEx.iIconsFrameRect.Resize( expand, 0 );
+ aDataInfo.iSpaceButtonEx.iMiddleIconRect =
+ aDataInfo.iSpaceButtonEx.iIconsFrameRect;
+ aDataInfo.iSpaceButtonEx.iMiddleIconRect.iTl.iX += pic3pLeftWidth;
+ aDataInfo.iSpaceButtonEx.iMiddleIconRect.iBr.iX -= pic3pRightWidth;
+ dx += spaceBtnWidth;
+
+ aDataInfo.iRightButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iRightButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ aDataInfo.iOptionButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iOptionButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ aDataInfo.iEnterButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iEnterButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
- TInt spaceBtnWidth = rectOfButtons.Width() - rectXPane.Width() * 8;
- TInt dx = rectOfButtons.iTl.iX;
- TInt dy = rectOfButtons.iTl.iY;
-
- aDataInfo.iCloseButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iCloseButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- dx += rectXPane.Width();
+ aDataInfo.iClearButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iClearButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ }
+ else
+ {
+ TAknLayoutRect shiftRect, spaceRect, clearRect;
+ TAknLayoutRect bottomRowRect;
+
+ // Second row of buttons (CLOSE, MULTIRANGE, LEFT, RIGHT, OPTIONS, ENTER)
+ // keypane v=15, keycell v=8, keylabel v=8
- aDataInfo.iShiftButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iShiftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- dx += rectXPane.Width();
+ // key pane rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(15).LayoutLine();
+ bottomRowRect.LayoutRect( keypadRect.Rect(), linelayout );
+
+ // key cell rect
+ linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(8).LayoutLine();
+ keycellRect.LayoutRect( bottomRowRect.Rect(), linelayout );
+
+ // key label rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(8).LayoutLine();
+ keylabelRect.LayoutRect( bottomRowRect.Rect(), linelayout );
+
+ TRect rectXPane = bottomRowRect.Rect();
+ rect = keycellRect.Rect();
+ rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
+ TRect rectXBorder = rect;
+ rect = keylabelRect.Rect();
+ rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
+ TRect rectXInner = rect;
+ rectXPane.Move( - rectXPane.iTl );
+
+ rect = keypadRect.Rect();
+ rect.Move( - base.iX, - base.iY );
+ TRect rectOfKeypad = rect;
+ TRect rectOfButtons = rectOfKeypad;
+ rectOfKeypad.iBr.iY -= ( bottomRowRect.Rect().Height() );
+ rectOfButtons.iTl.iY += rectOfKeypad.Height();
+
+ TInt dx = rectOfButtons.iTl.iX;
+ TInt dy = rectOfButtons.iTl.iY;
- aDataInfo.iMultiRangeButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iMultiRangeButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- dx += rectXPane.Width();
-
- aDataInfo.iLeftButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iLeftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- dx += rectXPane.Width();
+ // CLOSE (15)
+ aDataInfo.iCloseButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iCloseButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ // MULTIRANGE (15)
+ aDataInfo.iMultiRangeButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iMultiRangeButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ // LEFT (15)
+ aDataInfo.iLeftButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iLeftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ // RIGHT (15)
+ aDataInfo.iRightButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iRightButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ // OPTIONS (15)
+ aDataInfo.iOptionButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iOptionButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ // ENTER (15)
+ aDataInfo.iEnterButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iEnterButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- TInt expand = spaceBtnWidth - rectXPane.Width();
- aDataInfo.iSpaceButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iSpaceButton.iRect.Resize( expand, 0 );
- aDataInfo.iSpaceButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- aDataInfo.iSpaceButton.iInnerRect.Resize( expand, 0 );
- aDataInfo.iSpaceButtonEx.iIconsFrameRect = OffsetRect( rect3PicPane, dx, dy );
- aDataInfo.iSpaceButtonEx.iIconsFrameRect.Resize( expand, 0 );
- aDataInfo.iSpaceButtonEx.iMiddleIconRect =
- aDataInfo.iSpaceButtonEx.iIconsFrameRect;
- aDataInfo.iSpaceButtonEx.iMiddleIconRect.iTl.iX += pic3pLeftWidth;
- aDataInfo.iSpaceButtonEx.iMiddleIconRect.iBr.iX -= pic3pRightWidth;
- dx += spaceBtnWidth;
+ // First row of buttons (SHIFT, SPACE, CLEAR)
+
+ // SHIFT (keypane v=4, keycell v=4, keylabel v=4)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(4).LayoutLine();
+ shiftRect.LayoutRect( keypadRect.Rect(), linelayout );
+
+ // key cell rect
+ linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(4).LayoutLine();
+ keycellRect.LayoutRect( shiftRect.Rect(), linelayout );
+
+ // key label rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(4).LayoutLine();
+ keylabelRect.LayoutRect( shiftRect.Rect(), linelayout );
+
+ rectXPane = shiftRect.Rect();
+ rect = keycellRect.Rect();
+ rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
+ rectXBorder = rect;
+ rect = keylabelRect.Rect();
+ rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
+ rectXInner = rect;
+ rectXPane.Move( - rectXPane.iTl );
+
+ // Update the height to account for the second row
+ rectOfButtons.iTl.iY -= shiftRect.Rect().Height();
+
+ dx = rectOfButtons.iTl.iX;
+ dy = rectOfButtons.iTl.iY;
- aDataInfo.iRightButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iRightButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- dx += rectXPane.Width();
-
- aDataInfo.iOptionButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iOptionButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- dx += rectXPane.Width();
-
- aDataInfo.iEnterButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iEnterButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
- dx += rectXPane.Width();
-
- aDataInfo.iClearButton.iRect = OffsetRect( rectXBorder, dx, dy );
- aDataInfo.iClearButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ aDataInfo.iShiftButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iShiftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ dx += rectXPane.Width();
+
+ // SPACE (keypane v=8, keycell v=5, keylabel v=5, pic3pane v=5)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(8).LayoutLine();
+ spaceRect.LayoutRect( keypadRect.Rect(), linelayout );
+
+ // key cell rect
+ linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(5).LayoutLine();
+ keycellRect.LayoutRect( spaceRect.Rect(), linelayout );
+
+ // key label rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(5).LayoutLine();
+ keylabelRect.LayoutRect( spaceRect.Rect(), linelayout );
+
+ // pic3pane rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane(5).LayoutLine();
+ pic3paneRect.LayoutRect( spaceRect.Rect(), linelayout );
+
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g1(0).LayoutLine();
+ layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
+ pic3pLeftWidth = layoutrect.Rect().Width();
+
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g3(0).LayoutLine();
+ layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
+ pic3pRightWidth = layoutrect.Rect().Width();
+
+ TRect rectSpacePane = spaceRect.Rect();
+ rect = keycellRect.Rect();
+ rect.Move( - rectSpacePane.iTl.iX, - rectSpacePane.iTl.iY );
+ TRect rectSpaceBorder = rect;
+ rect = keylabelRect.Rect();
+ rect.Move( - rectSpacePane.iTl.iX, - rectSpacePane.iTl.iY );
+ TRect rectSpaceInner = rect;
+ rect = pic3paneRect.Rect();
+ rect.Move( - rectSpacePane.iTl.iX, - rectSpacePane.iTl.iY );
+ TRect rect3PicPane = rect;
+ rectSpacePane.Move( - rectSpacePane.iTl );
+
+ aDataInfo.iSpaceButton.iRect = OffsetRect( rectSpaceBorder, dx, dy );
+ aDataInfo.iSpaceButton.iInnerRect = OffsetRect( rectSpaceInner, dx, dy );
+ aDataInfo.iSpaceButtonEx.iIconsFrameRect = OffsetRect( rect3PicPane, dx, dy );
+ aDataInfo.iSpaceButtonEx.iMiddleIconRect = aDataInfo.iSpaceButtonEx.iIconsFrameRect;
+ aDataInfo.iSpaceButtonEx.iMiddleIconRect.iTl.iX += pic3pLeftWidth;
+ aDataInfo.iSpaceButtonEx.iMiddleIconRect.iBr.iX -= pic3pRightWidth;
+ dx += rectSpacePane.Width();
+
+ // CLEAR (keypane v=4, keycell v=4, keylabel v=4)
+ aDataInfo.iClearButton.iRect = OffsetRect( rectXBorder, dx, dy );
+ aDataInfo.iClearButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
+ }
// preview popup window
TAknWindowLineLayout previewWnd, previewWndInner;
@@ -1455,7 +1648,7 @@
TAknWindowLineLayout wndLayout;
TAknWindowLineLayout linelayout;
TAknLayoutRect layoutrect, keypaneRect, keycellRect, keylabelRect;
- TRect rectBottomWin, rectVkbCtrl;
+ TRect rectBottomWin, rectBottomWin11x4, rectVkbCtrl;
TPoint base;
TAknWindowLineLayout keypad, cellpane;
@@ -1467,15 +1660,37 @@
TAknLayoutText keyTextLayout;
TAknTextLineLayout keyText;
TRect keyRect;
+
+ TBool isLandscape = Layout_Meta_Data::IsLandscapeOrientation();
+
// -----------------------Landscape Mode--------------------------
appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine();
wndLayout = AknLayoutScalable_Avkon::main_fep_vtchi_ss_pane(0).LayoutLine();
wndRect.LayoutRect(appWnd.Rect(), wndLayout);
// Bottom pane rect
- linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine();
+ // Landscape info is read if i) portrait FSQ feature is not enabled (landscape FSQ)
+ // or ii) portrait FSQ feature is enabled and the current orientation is landscape.
+ // Portrait info is set if portrait FSQ feature is enabled the current orientation
+ // is portrait.
+ TBool isPortraitFSQEnabled = EFalse;
+ TRAP_IGNORE( isPortraitFSQEnabled = CFeatureDiscovery::IsFeatureSupportedL(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput ) );
+ linelayout = ( !isPortraitFSQEnabled ||
+ ( isPortraitFSQEnabled && Layout_Meta_Data::IsLandscapeOrientation() ) )
+ ? AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine()
+ : AknLayoutScalable_Avkon::popup_fep_vkbss_window(1).LayoutLine();
+
layoutrect.LayoutRect( wndRect.Rect(), linelayout );
rectBottomWin = layoutrect.Rect();
base = wndRect.Rect().iTl;
+
+ if( !isLandscape )
+ {
+ linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(2).LayoutLine();
+ layoutrect.LayoutRect( wndRect.Rect(), linelayout );
+ rectBottomWin11x4 = layoutrect.Rect();
+ }
+
// ==================10x3====================
// top pane and bottom pane
GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout10x3, 0, *dataInfo );
@@ -1489,11 +1704,36 @@
keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(0).LayoutLine();
keypadRect.LayoutRect( rectBottomWin, keypad );
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(0).LayoutLine();
- keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ TInt functionKeyRowsHeight = 0;
+
+ if ( !isPortraitFSQEnabled ||
+ ( isPortraitFSQEnabled && Layout_Meta_Data::IsLandscapeOrientation() ) )
+ {
+ // In landscape mode, there is only one function key row, and the height
+ // of this row is identical to all the other rows
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(0).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ }
+ else
+ {
+ // In portrait mode, there are two function key rows
+ // First row is represented as variety 4 (SHIFT, SPACE, CLEAR)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(4).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ // Second row is represented as variety 15 (CLOSE, MULTIRANGE, LEFT, RIGHT,
+ // OPTIONS, ENTER)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(15).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ // Reset keypane rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(0).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ }
rectVkbCtrl = keypadRect.Rect();
- rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height();
+ rectVkbCtrl.iBr.iY -= functionKeyRowsHeight;
dataInfo->iKeypad.iKaypadRect = rectVkbCtrl;
linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(0).LayoutLine();
@@ -1548,7 +1788,6 @@
// Candidate list's parent Layout window is ITUT window
TPeninputCandidateListLayoutData candidateListLAF;
TAknWindowLineLayout parentWnd;
- TBool isLandscape = Layout_Meta_Data::IsLandscapeOrientation();
// Add tooltip box laf data for ITI features.
TPeninputTooltipBoxLayoutData tooltipBoxLAF;
if ( isLandscape )
@@ -1561,8 +1800,19 @@
tooltipBoxLAF = ReadLafForTooltipBox( wndRect.Rect() );
dataInfo->iTooltipBox = tooltipBoxLAF;
}
-
-
+
+ // if portrait FSQ feature is enabled and the current orientation is portrait.
+ if ( isPortraitFSQEnabled && !isLandscape )
+ {
+ parentWnd = AknLayoutScalable_Apps::popup_vitu2_window( 0 ).LayoutLine();
+ TAknLayoutRect parentRectLayout;
+ parentRectLayout.LayoutRect( appWnd.Rect(), parentWnd );
+ candidateListLAF = ReadLafForCandidateList( parentRectLayout.Rect() );
+ dataInfo->iCandidateList = candidateListLAF;
+ tooltipBoxLAF = ReadLafForTooltipBox( wndRect.Rect() );
+ dataInfo->iTooltipBox = tooltipBoxLAF;
+ }
+
iLayoutDataInfo.AppendL( dataInfo );
// ==================11x3====================
@@ -1609,11 +1859,36 @@
keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(1).LayoutLine();
keypadRect.LayoutRect( rectBottomWin, keypad );
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(2).LayoutLine();
- keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
-
- rectVkbCtrl = keypadRect.Rect();
- rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height();
+ functionKeyRowsHeight = 0;
+
+ if ( !isPortraitFSQEnabled ||
+ ( isPortraitFSQEnabled && Layout_Meta_Data::IsLandscapeOrientation() ) )
+ {
+ // In landscape mode, there is only one function key row, and the height
+ // of this row is identical to all the other rows
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(2).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ }
+ else
+ {
+ // In portrait mode, there are two function key rows
+ // First row is represented as variety 4 (SHIFT, SPACE, CLEAR)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(4).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ // Second row is represented as variety 15 (CLOSE, MULTIRANGE, LEFT, RIGHT,
+ // OPTIONS, ENTER)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(15).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ // Reset keypane rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(2).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ }
+
+ rectVkbCtrl = keypadRect.Rect();
+ rectVkbCtrl.iBr.iY -= functionKeyRowsHeight;
dataInfo->iKeypad.iKaypadRect = rectVkbCtrl;
linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(2).LayoutLine();
@@ -1667,6 +1942,14 @@
dataInfo->iTooltipBox = tooltipBoxLAF;
}
+ // if portrait FSQ feature is enabled and the current orientation is portrait.
+ if ( isPortraitFSQEnabled && !isLandscape )
+ {
+ // Add candate list laf data for ITI features
+ dataInfo->iCandidateList = candidateListLAF;
+ // Add tooltip box laf data for ITI features.
+ dataInfo->iTooltipBox = tooltipBoxLAF;
+ }
iLayoutDataInfo.AppendL( dataInfo );
@@ -1711,13 +1994,45 @@
dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId( keyText.iFont, NULL );
keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(1).LayoutLine();
- keypadRect.LayoutRect( rectBottomWin, keypad );
+ if( isLandscape )
+ {
+ keypadRect.LayoutRect( rectBottomWin, keypad );
+ }
+ else
+ {
+ keypadRect.LayoutRect( rectBottomWin11x4, keypad );
+ }
- linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(3).LayoutLine();
- keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
-
- rectVkbCtrl = keypadRect.Rect();
- rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height();
+ functionKeyRowsHeight = 0;
+
+ if ( !isPortraitFSQEnabled ||
+ ( isPortraitFSQEnabled && Layout_Meta_Data::IsLandscapeOrientation() ) )
+ {
+ // In landscape mode, there is only one function key row, and the height
+ // of this row is identical to all the other rows
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(3).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ }
+ else
+ {
+ // In portrait mode, there are two function key rows
+ // First row is represented as variety 4 (SHIFT, SPACE, CLEAR)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(4).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ // Second row is represented as variety 15 (CLOSE, MULTIRANGE, LEFT, RIGHT,
+ // OPTIONS, ENTER)
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(15).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ functionKeyRowsHeight += keypaneRect.Rect().Height();
+ // Reset keypane rect
+ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(3).LayoutLine();
+ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
+ }
+
+ rectVkbCtrl = keypadRect.Rect();
+ rectVkbCtrl.iBr.iY -= functionKeyRowsHeight;
dataInfo->iKeypad.iKaypadRect = rectVkbCtrl;
linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(3).LayoutLine();
@@ -1771,7 +2086,15 @@
dataInfo->iTooltipBox = tooltipBoxLAF;
}
-
+ // if portrait FSQ feature is enabled and the current orientation is portrait.
+ if ( isPortraitFSQEnabled && !isLandscape )
+ {
+ // Add candate list laf data for ITI features
+ dataInfo->iCandidateList = candidateListLAF;
+ // Add tooltip box laf data for ITI features.
+ dataInfo->iTooltipBox = tooltipBoxLAF;
+ }
+
iLayoutDataInfo.AppendL( dataInfo );
}
@@ -1783,26 +2106,63 @@
TPeninputCandidateListLayoutData CPeninputLafDataFSQ::
ReadLafForCandidateList( const TRect& aRect )
{
- // candidate list
- TAknWindowLineLayout candidateList
- = AknLayoutScalable_Apps::popup_vitu2_match_list_window( 3 )
- .LayoutLine();
- TAknLayoutRect candidateListRect;
- candidateListRect.LayoutRect( aRect, candidateList );
-
- // list pane, its parent is candidate list
- TAknWindowLineLayout listpane
- = AknLayoutScalable_Apps::list_vitu2_match_list_pane( 1 )
- .LayoutLine();
TAknLayoutRect listpaneRect;
- listpaneRect.LayoutRect( candidateListRect.Rect(), listpane );
+ TAknLayoutRect scrollRect;
+ TAknLayoutRect candidateListRect;
+ TAknWindowLineLayout listpane;
+ TAknWindowLineLayout scrollpane;
+ TAknWindowLineLayout candidateList;
- // scroll pane, its parent is candidate list
- TAknWindowLineLayout scrollpane
- = AknLayoutScalable_Apps::vitu2_page_scroll_pane( 1 )
- .LayoutLine();
- TAknLayoutRect scrollRect;
- scrollRect.LayoutRect( candidateListRect.Rect(), scrollpane );
+ // If portrait FSQ feature is enabled.
+ TBool isPortraitFSQEnabled = EFalse;
+ TRAP_IGNORE( isPortraitFSQEnabled = CFeatureDiscovery::IsFeatureSupportedL(
+ KFeatureIdFfVirtualFullscrPortraitQwertyInput ) );
+
+ if ( isPortraitFSQEnabled )
+ {
+ if ( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ // candidate list
+ candidateList = AknLayoutScalable_Apps::popup_vitu2_match_list_window( 3 ).LayoutLine();
+ candidateListRect.LayoutRect( aRect, candidateList );
+
+ // list pane, its parent is candidate list
+ listpane = AknLayoutScalable_Apps::list_vitu2_match_list_pane( 1 ).LayoutLine();
+ listpaneRect.LayoutRect( candidateListRect.Rect(), listpane );
+
+ // scroll pane, its parent is candidate list
+ scrollpane = AknLayoutScalable_Apps::vitu2_page_scroll_pane( 1 ).LayoutLine();
+ scrollRect.LayoutRect( candidateListRect.Rect(), scrollpane );
+ }
+ else
+ {
+ // candidate list
+ candidateList = AknLayoutScalable_Apps::popup_vitu2_match_list_window( 2 ).LayoutLine();
+ candidateListRect.LayoutRect( aRect, candidateList );
+
+ // list pane, its parent is candidate list
+ listpane = AknLayoutScalable_Apps::list_vitu2_match_list_pane( 0 ).LayoutLine();
+ listpaneRect.LayoutRect( candidateListRect.Rect(), listpane );
+
+ // scroll pane, its parent is candidate list
+ scrollpane = AknLayoutScalable_Apps::vitu2_page_scroll_pane( 0 ).LayoutLine();
+ scrollRect.LayoutRect( candidateListRect.Rect(), scrollpane );
+ }
+ }
+ else
+ {
+ // candidate list
+ candidateList = AknLayoutScalable_Apps::popup_vitu2_match_list_window( 3 ).LayoutLine();
+ candidateListRect.LayoutRect( aRect, candidateList );
+
+ // list pane, its parent is candidate list
+ listpane = AknLayoutScalable_Apps::list_vitu2_match_list_pane( 1 ).LayoutLine();
+ listpaneRect.LayoutRect( candidateListRect.Rect(), listpane );
+
+ // scroll pane, its parent is candidate list
+ scrollpane = AknLayoutScalable_Apps::vitu2_page_scroll_pane( 1 ).LayoutLine();
+ scrollRect.LayoutRect( candidateListRect.Rect(), scrollpane );
+ }
// Item pane, its parent is list pane
TAknWindowLineLayout itemPane
--- a/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -71,6 +71,11 @@
return self;
}
+// ---------------------------------------------------------------------------
+// CPeninputGenericVkbLayoutImp::NewFsqL
+// Entry point for landscape FSQ.
+// ---------------------------------------------------------------------------
+//
CPeninputGenericVkbLayoutImp* CPeninputGenericVkbLayoutImp::NewFsqL(
TAny* /*aInitParams*/ )
{
@@ -84,6 +89,23 @@
}
// ---------------------------------------------------------------------------
+// CPeninputGenericVkbLayoutImp::NewPrtFsqL
+// Entry point for portrait FSQ.
+// ---------------------------------------------------------------------------
+//
+CPeninputGenericVkbLayoutImp* CPeninputGenericVkbLayoutImp::NewPrtFsqL(
+ TAny* /*aInitParams*/ )
+ {
+ CPeninputGenericVkbLayoutImp* self = new ( ELeave )
+ CPeninputGenericVkbLayoutImp();
+ CleanupStack::PushL( self );
+ self->Construct( ETrue );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
// CPeninputGenericVkbLayoutImp::~CPeninputGenericVkbLayoutImp
// (other items were commented in a header)
// ---------------------------------------------------------------------------
--- a/textinput/peninputgenericvkb/src/peninputgenericvkbproxy.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericvkbproxy.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -32,7 +32,9 @@
IMPLEMENTATION_PROXY_ENTRY( 0x10282359,
CPeninputGenericVkbLayoutImp::NewL ),
IMPLEMENTATION_PROXY_ENTRY( 0x2001114D,
- CPeninputGenericVkbLayoutImp::NewFsqL )
+ CPeninputGenericVkbLayoutImp::NewFsqL ),
+ IMPLEMENTATION_PROXY_ENTRY( 0x20026837,
+ CPeninputGenericVkbLayoutImp::NewPrtFsqL )
};
// --------------------------------------------------------------------------
--- a/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -37,7 +37,7 @@
#include <peninputclientlayoutinfo.h>
#include <peninputlayoutchoicelist.h>
#include <peninputlongpressbutton.h>
-
+#include <bautils.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <peninputlayoutbubblectrl.h>
#include <peninputscrollablelist.h>
@@ -95,7 +95,8 @@
iPopupSet(EFalse),
iLafMgr(NULL),
iFirstConstruct(ETrue),
- iIndiWithText( EFalse )
+ iIndiWithText( EFalse ),
+ iUSRscFileExist( EFalse )
{
}
@@ -140,6 +141,20 @@
iLafMgr->SetInputModeL(TPluginInputMode (iLayoutContext->LayoutType()));
CPeninputLayoutWindowExt::ConstructL();
+ // Save whether American rsc file exist or not
+ TBuf<KMaxFileLength> usUSRscFileName;
+ usUSRscFileName= KConfigurationResourceFile();
+ usUSRscFileName.AppendNum( ELangAmerican );
+ usUSRscFileName.Append( KResourceFileExtName );
+
+ RFs fileSession;
+ User::LeaveIfError( fileSession.Connect() );
+ CleanupClosePushL( fileSession );
+ if ( BaflUtils::FileExists( fileSession , usUSRscFileName ))
+ {
+ iUSRscFileExist = ETrue;
+ }
+ CleanupStack::PopAndDestroy( 1 );
// For addition of ITI features, add a candidate list in vkb window
CreateCandidateListL();
}
@@ -458,8 +473,12 @@
file.Close();
aLangID = ELangCanadianFrench;
}
-
}
+ // If US Rsc file exist, use it instead of English rsc file
+ if(( aLangID == ELangEnglish ) && ( iUSRscFileExist ))
+ {
+ aLangID = ELangAmerican;
+ }
iResourceFilename.Zero();
// Generate resource file name according to language id
iResourceFilename = KConfigurationResourceFile();
--- a/textinput/peninputgenericvkb/srcdata/10282358.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/10282358.rss Thu Aug 19 10:15:25 2010 +0300
@@ -44,6 +44,15 @@
// Info for CImplementation1
IMPLEMENTATION_INFO
{
+ implementation_uid = 0x20026837;
+ version_no = 1;
+ display_name = "Portrait QWERTY Keypad";
+ default_data = "1||16||33||37||42||50||57||54||93||94||96"; // Supported language
+ opaque_data= "16||33||37||42||50||57||54||93||94||96"; // Prefered lanaguage
+ },
+ // Info for CImplementation1
+ IMPLEMENTATION_INFO
+ {
implementation_uid = 0x2001114D;
version_no = 1;
display_name = "Generic FSQ Implementation version 1";
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_01.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_01.rss Thu Aug 19 10:15:25 2010 +0300
@@ -1051,8 +1051,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0022>;
- scancode=0x0022;
+ unicode=<0x0026>;
+ scancode=0x0026;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -1164,8 +1164,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0026>;
- scancode=0x0026;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -1353,8 +1353,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00A2>;
- scancode=0x00A2;
+ unicode=<0x20AA>;
+ scancode=0x20AA;
beginrow=2;
begincolumn=8;
highlightbmpindex=0;
@@ -1362,8 +1362,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x20AA>;
- scancode=0x20AA;
+ unicode=<0x00A2>;
+ scancode=0x00A2;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_10.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_10.rss Thu Aug 19 10:15:25 2010 +0300
@@ -463,8 +463,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -685,8 +685,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0027>;
+ scancode=0x0027;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -757,8 +757,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x002C>;
+ scancode=0x002C;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -766,8 +766,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
+ unicode=<0x002E>;
+ scancode=0x002E;
beginrow=2;
begincolumn=8;
highlightbmpindex=0;
@@ -775,8 +775,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0021>;
- scancode=0x0021;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -2734,8 +2734,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0070>;
- scancode=0x0070;
+ unicode=<0x002A>;
+ scancode=0x002A;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -2761,8 +2761,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003B>;
- scancode=0x003B;
+ unicode=<0x0026>;
+ scancode=0x0026;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -2779,8 +2779,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0025>;
+ scancode=0x0025;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -2824,8 +2824,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0077>;
- scancode=0x0077;
+ unicode=<0x0070>;
+ scancode=0x0070;
beginrow=1;
begincolumn=4;
highlightbmpindex=0;
@@ -2833,8 +2833,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
+ unicode=<0x0021>;
+ scancode=0x0021;
beginrow=1;
begincolumn=5;
highlightbmpindex=0;
@@ -2842,8 +2842,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005F>;
- scancode=0x005F;
+ unicode=<0x0024>;
+ scancode=0x0024;
beginrow=1;
begincolumn=6;
highlightbmpindex=0;
@@ -2869,8 +2869,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0021>;
- scancode=0x0021;
+ unicode=<0x005F>;
+ scancode=0x005F;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -2914,8 +2914,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002A>;
- scancode=0x002A;
+ unicode=<0x0077>;
+ scancode=0x0077;
beginrow=2;
begincolumn=4;
highlightbmpindex=0;
@@ -2923,8 +2923,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0040>;
- scancode=0x0040;
+ unicode=<0x002D>;
+ scancode=0x002D;
beginrow=2;
begincolumn=5;
highlightbmpindex=0;
@@ -2932,8 +2932,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x003D>;
+ scancode=0x003D;
beginrow=2;
begincolumn=6;
highlightbmpindex=0;
@@ -2941,26 +2941,26 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
+ unicode=<0x003F>;
+ scancode=0x003F;
+ beginrow=2;
+ begincolumn=7;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
unicode=<0x005C>;
scancode=0x005C;
beginrow=2;
- begincolumn=7;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0027>;
- scancode=0x0027;
- beginrow=2;
begincolumn=8;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0022>;
- scancode=0x0022;
+ unicode=<0x002F>;
+ scancode=0x002F;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -3046,8 +3046,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x007E>;
- scancode=0x007E;
+ unicode=<0x003B>;
+ scancode=0x003B;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -3055,8 +3055,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005E>;
- scancode=0x005E;
+ unicode=<0x201E>;
+ scancode=0x201E;
beginrow=0;
begincolumn=5;
highlightbmpindex=0;
@@ -3064,8 +3064,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0060>;
- scancode=0x0060;
+ unicode=<0x201D>;
+ scancode=0x201D;
beginrow=0;
begincolumn=6;
highlightbmpindex=0;
@@ -3073,8 +3073,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0026>;
- scancode=0x0026;
+ unicode=<0x005F>;
+ scancode=0x005F;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -3082,8 +3082,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003D>;
- scancode=0x003D;
+ unicode=<0x003C>;
+ scancode=0x003C;
beginrow=0;
begincolumn=8;
highlightbmpindex=0;
@@ -3091,8 +3091,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00BF>;
- scancode=0x00BF;
+ unicode=<0x003E>;
+ scancode=0x003E;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -3136,8 +3136,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0025>;
- scancode=0x0025;
+ unicode=<0x005E>;
+ scancode=0x005E;
beginrow=1;
begincolumn=4;
highlightbmpindex=0;
@@ -3145,8 +3145,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005B>;
- scancode=0x005B;
+ unicode=<0x0060>;
+ scancode=0x0060;
beginrow=1;
begincolumn=5;
highlightbmpindex=0;
@@ -3154,8 +3154,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005D>;
- scancode=0x005D;
+ unicode=<0x00B4>;
+ scancode=0x00B4;
beginrow=1;
begincolumn=6;
highlightbmpindex=0;
@@ -3163,8 +3163,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x201E>;
- scancode=0x201E;
+ unicode=<0x007E>;
+ scancode=0x007E;
beginrow=1;
begincolumn=7;
highlightbmpindex=0;
@@ -3172,8 +3172,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x201D>;
- scancode=0x201D;
+ unicode=<0x0027>;
+ scancode=0x0027;
beginrow=1;
begincolumn=8;
highlightbmpindex=0;
@@ -3181,8 +3181,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00A1>;
- scancode=0x00A1;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -3226,8 +3226,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0045>;
- scancode=0x0045;
+ unicode=<0x007B>;
+ scancode=0x007B;
beginrow=2;
begincolumn=4;
highlightbmpindex=0;
@@ -3235,8 +3235,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x20AC>;
- scancode=0x20AC;
+ unicode=<0x007D>;
+ scancode=0x007D;
beginrow=2;
begincolumn=5;
highlightbmpindex=0;
@@ -3244,8 +3244,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00A3>;
- scancode=0x00A3;
+ unicode=<0x005B>;
+ scancode=0x005B;
beginrow=2;
begincolumn=6;
highlightbmpindex=0;
@@ -3253,8 +3253,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0024>;
- scancode=0x0024;
+ unicode=<0x005D>;
+ scancode=0x005D;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -3262,18 +3262,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
+ unicode=<0x007C>;
+ scancode=0x007C;
+ beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
unicode=<0x00A2>;
scancode=0x00A2;
beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x20AA>;
- scancode=0x20AA;
- beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_18.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_18.rss Thu Aug 19 10:15:25 2010 +0300
@@ -463,8 +463,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -685,8 +685,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -757,8 +757,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -766,18 +766,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_39.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_39.rss Thu Aug 19 10:15:25 2010 +0300
@@ -463,8 +463,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -685,8 +685,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -757,8 +757,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -766,18 +766,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_42.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_42.rss Thu Aug 19 10:15:25 2010 +0300
@@ -291,8 +291,8 @@
{
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002C>;
- scancode=0x002C;
+ unicode=<0x044F>;
+ scancode=0x044F;
beginrow=0;
begincolumn=0;
highlightbmpindex=0;
@@ -300,8 +300,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0443>;
- scancode=0x0443;
+ unicode=<0x0432>;
+ scancode=0x0432;
beginrow=0;
begincolumn=1;
highlightbmpindex=0;
@@ -318,8 +318,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0438>;
- scancode=0x0438;
+ unicode=<0x0440>;
+ scancode=0x0440;
beginrow=0;
begincolumn=3;
highlightbmpindex=0;
@@ -327,8 +327,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0448>;
- scancode=0x0448;
+ unicode=<0x0442>;
+ scancode=0x0442;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -336,8 +336,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0449>;
- scancode=0x0449;
+ unicode=<0x044A>;
+ scancode=0x044A;
beginrow=0;
begincolumn=5;
highlightbmpindex=0;
@@ -345,8 +345,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x043A>;
- scancode=0x043A;
+ unicode=<0x0443>;
+ scancode=0x0443;
beginrow=0;
begincolumn=6;
highlightbmpindex=0;
@@ -354,8 +354,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0441>;
- scancode=0x0441;
+ unicode=<0x0438>;
+ scancode=0x0438;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -363,8 +363,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0434>;
- scancode=0x0434;
+ unicode=<0x043E>;
+ scancode=0x043E;
beginrow=0;
begincolumn=8;
highlightbmpindex=0;
@@ -372,8 +372,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0437>;
- scancode=0x0437;
+ unicode=<0x043F>;
+ scancode=0x043F;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -381,8 +381,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0446>;
- scancode=0x0446;
+ unicode=<0x0447>;
+ scancode=0x0447;
beginrow=0;
begincolumn=10;
highlightbmpindex=0;
@@ -390,35 +390,35 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x044C>;
- scancode=0x044C;
- beginrow=1;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044F>;
- scancode=0x044F;
- beginrow=1;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0430>;
scancode=0x0430;
beginrow=1;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0441>;
+ scancode=0x0441;
+ beginrow=1;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0434>;
+ scancode=0x0434;
+ beginrow=1;
begincolumn=2;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x043E>;
- scancode=0x043E;
+ unicode=<0x0444>;
+ scancode=0x0444;
beginrow=1;
begincolumn=3;
highlightbmpindex=0;
@@ -426,108 +426,9 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0436>;
- scancode=0x0436;
- beginrow=1;
- begincolumn=4;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0433>;
scancode=0x0433;
beginrow=1;
- begincolumn=5;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0442>;
- scancode=0x0442;
- beginrow=1;
- begincolumn=6;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x043D>;
- scancode=0x043D;
- beginrow=1;
- begincolumn=7;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0432>;
- scancode=0x0432;
- beginrow=1;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x043C>;
- scancode=0x043C;
- beginrow=1;
- begincolumn=9;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0447>;
- scancode=0x0447;
- beginrow=1;
- begincolumn=10;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044E>;
- scancode=0x044E;
- beginrow=2;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0439>;
- scancode=0x0439;
- beginrow=2;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044A>;
- scancode=0x044A;
- beginrow=2;
- begincolumn=2;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044D>;
- scancode=0x044D;
- beginrow=2;
- begincolumn=3;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0444>;
- scancode=0x0444;
- beginrow=2;
begincolumn=4;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -536,25 +437,25 @@
{
unicode=<0x0445>;
scancode=0x0445;
- beginrow=2;
+ beginrow=1;
begincolumn=5;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x043F>;
- scancode=0x043F;
- beginrow=2;
+ unicode=<0x0439>;
+ scancode=0x0439;
+ beginrow=1;
begincolumn=6;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0440>;
- scancode=0x0440;
- beginrow=2;
+ unicode=<0x043A>;
+ scancode=0x043A;
+ beginrow=1;
begincolumn=7;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -563,8 +464,62 @@
{
unicode=<0x043B>;
scancode=0x043B;
+ beginrow=1;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x044E>;
+ scancode=0x044E;
+ beginrow=1;
+ begincolumn=9;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0040>;
+ scancode=0x0040;
+ beginrow=1;
+ begincolumn=10;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0437>;
+ scancode=0x0437;
beginrow=2;
- begincolumn=8;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x044C>;
+ scancode=0x044C;
+ beginrow=2;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0446>;
+ scancode=0x0446;
+ beginrow=2;
+ begincolumn=2;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0436>;
+ scancode=0x0436;
+ beginrow=2;
+ begincolumn=3;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
@@ -573,6 +528,51 @@
unicode=<0x0431>;
scancode=0x0431;
beginrow=2;
+ begincolumn=4;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x043D>;
+ scancode=0x043D;
+ beginrow=2;
+ begincolumn=5;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x043C>;
+ scancode=0x043C;
+ beginrow=2;
+ begincolumn=6;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0448>;
+ scancode=0x0448;
+ beginrow=2;
+ begincolumn=7;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0449>;
+ scancode=0x0449;
+ beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002C>;
+ scancode=0x002C;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -630,8 +630,8 @@
{
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x044B>;
- scancode=0x044B;
+ unicode=<0x042F>;
+ scancode=0x042F;
beginrow=0;
begincolumn=0;
highlightbmpindex=0;
@@ -639,8 +639,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0423>;
- scancode=0x0423;
+ unicode=<0x0412>;
+ scancode=0x0412;
beginrow=0;
begincolumn=1;
highlightbmpindex=0;
@@ -657,8 +657,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0418>;
- scancode=0x0418;
+ unicode=<0x0420>;
+ scancode=0x0420;
beginrow=0;
begincolumn=3;
highlightbmpindex=0;
@@ -666,8 +666,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0428>;
- scancode=0x0428;
+ unicode=<0x0422>;
+ scancode=0x0422;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -675,8 +675,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0429>;
- scancode=0x0429;
+ unicode=<0x042A>;
+ scancode=0x042A;
beginrow=0;
begincolumn=5;
highlightbmpindex=0;
@@ -684,8 +684,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x041A>;
- scancode=0x041A;
+ unicode=<0x0423>;
+ scancode=0x0423;
beginrow=0;
begincolumn=6;
highlightbmpindex=0;
@@ -693,8 +693,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0421>;
- scancode=0x0421;
+ unicode=<0x0418>;
+ scancode=0x0418;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -702,8 +702,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0414>;
- scancode=0x0414;
+ unicode=<0x041E>;
+ scancode=0x041E;
beginrow=0;
begincolumn=8;
highlightbmpindex=0;
@@ -711,8 +711,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0417>;
- scancode=0x0417;
+ unicode=<0x041F>;
+ scancode=0x041F;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -720,8 +720,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0426>;
- scancode=0x0426;
+ unicode=<0x0427>;
+ scancode=0x0427;
beginrow=0;
begincolumn=10;
highlightbmpindex=0;
@@ -729,35 +729,35 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x042C>;
- scancode=0x042C;
- beginrow=1;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042F>;
- scancode=0x042F;
- beginrow=1;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0410>;
scancode=0x0410;
beginrow=1;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0421>;
+ scancode=0x0421;
+ beginrow=1;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0414>;
+ scancode=0x0414;
+ beginrow=1;
begincolumn=2;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x041E>;
- scancode=0x041E;
+ unicode=<0x0424>;
+ scancode=0x0424;
beginrow=1;
begincolumn=3;
highlightbmpindex=0;
@@ -765,108 +765,9 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0416>;
- scancode=0x0416;
- beginrow=1;
- begincolumn=4;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0413>;
scancode=0x0413;
beginrow=1;
- begincolumn=5;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0422>;
- scancode=0x0422;
- beginrow=1;
- begincolumn=6;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x041D>;
- scancode=0x041D;
- beginrow=1;
- begincolumn=7;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0412>;
- scancode=0x0412;
- beginrow=1;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x041C>;
- scancode=0x041C;
- beginrow=1;
- begincolumn=9;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0427>;
- scancode=0x0427;
- beginrow=1;
- begincolumn=10;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042E>;
- scancode=0x042E;
- beginrow=2;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0419>;
- scancode=0x0419;
- beginrow=2;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042A>;
- scancode=0x042A;
- beginrow=2;
- begincolumn=2;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042D>;
- scancode=0x042D;
- beginrow=2;
- begincolumn=3;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0424>;
- scancode=0x0424;
- beginrow=2;
begincolumn=4;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -875,25 +776,25 @@
{
unicode=<0x0425>;
scancode=0x0425;
- beginrow=2;
+ beginrow=1;
begincolumn=5;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x041F>;
- scancode=0x041F;
- beginrow=2;
+ unicode=<0x0419>;
+ scancode=0x0419;
+ beginrow=1;
begincolumn=6;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0420>;
- scancode=0x0420;
- beginrow=2;
+ unicode=<0x041A>;
+ scancode=0x041A;
+ beginrow=1;
begincolumn=7;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -902,8 +803,62 @@
{
unicode=<0x041B>;
scancode=0x041B;
+ beginrow=1;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x042E>;
+ scancode=0x042E;
+ beginrow=1;
+ begincolumn=9;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=1;
+ begincolumn=10;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0417>;
+ scancode=0x0417;
beginrow=2;
- begincolumn=8;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x042C>;
+ scancode=0x042C;
+ beginrow=2;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0426>;
+ scancode=0x0426;
+ beginrow=2;
+ begincolumn=2;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0416>;
+ scancode=0x0416;
+ beginrow=2;
+ begincolumn=3;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
@@ -912,7 +867,43 @@
unicode=<0x0411>;
scancode=0x0411;
beginrow=2;
- begincolumn=9;
+ begincolumn=4;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x041D>;
+ scancode=0x041D;
+ beginrow=2;
+ begincolumn=5;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x041C>;
+ scancode=0x041C;
+ beginrow=2;
+ begincolumn=6;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0428>;
+ scancode=0x0428;
+ beginrow=2;
+ begincolumn=7;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0429>;
+ scancode=0x0429;
+ beginrow=2;
+ begincolumn=8;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
@@ -921,6 +912,15 @@
unicode=<0x003F>;
scancode=0x003F;
beginrow=2;
+ begincolumn=9;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0021>;
+ scancode=0x0021;
+ beginrow=2;
begincolumn=10;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_59.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_59.rss Thu Aug 19 10:15:25 2010 +0300
@@ -431,8 +431,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -650,8 +650,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -722,8 +722,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -731,18 +731,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_70.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputgenericvkb/srcdata/peninputvkbwindowconfiginfo_70.rss Thu Aug 19 10:15:25 2010 +0300
@@ -431,8 +431,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -650,8 +650,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -722,8 +722,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -731,18 +731,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputsplititut/src/peninputsplititutwesternuimgr.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplititut/src/peninputsplititutwesternuimgr.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -133,14 +133,23 @@
}
iCurrentState = newstate;
- if(DataMgr()->IsUpdate())
- {
- DataMgr()->SetUpdate(EFalse);
- CSplitItutUiLayout* itutLayout =
- static_cast<CSplitItutUiLayout*>( LayoutContext()->UiLayout() );
- itutLayout->SizeChanged( NULL );
- }
- iCurrentState->OnEntryL();
+ if ( DataMgr()->IsUpdate() )
+ {
+ DataMgr()->SetUpdate( EFalse );
+ CSplitItutUiLayout* itutLayout =
+ static_cast<CSplitItutUiLayout*>( LayoutContext()->UiLayout() );
+ itutLayout->SizeChanged( NULL );
+
+ iCurrentState->OnEntryL();
+
+ //redraw layout immediately to minimize flicker
+ itutLayout->DisableLayoutDrawing( EFalse );
+ itutLayout->Draw();
+ }
+ else
+ {
+ iCurrentState->OnEntryL();
+ }
}
// ---------------------------------------------------------------------------
--- a/textinput/peninputsplitqwerty/inc/peninputsplitqwertylayout.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/inc/peninputsplitqwertylayout.h Thu Aug 19 10:15:25 2010 +0300
@@ -113,6 +113,13 @@
*/
virtual ~CPeninputSplitQwertyLayout();
+ /**
+ * Check if ITI is enabled.
+ *
+ * @return ETrue if ITI is enabled.
+ */
+ inline TBool IsEnableITI() const;
+
public: // From base class CPeninputCommonLayout
/**
@@ -277,5 +284,12 @@
TBool iITIEnabled;
};
+/**
+* Check if ITI is enabled.
+*/
+inline TBool CPeninputSplitQwertyLayout::IsEnableITI() const
+ {
+ return iITIEnabled;
+ }
#endif // C_PENINPUTSPLITQWERTYLAYOUT_H
--- a/textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h Thu Aug 19 10:15:25 2010 +0300
@@ -291,6 +291,14 @@
TBool HandleVirtualKeyUpEvent( TInt aEventType, CFepUiBaseCtrl* aCtrl,
const TDesC& aEventData );
+ /**
+ * Submit dead key
+ *
+ * @param abuf Dead key buffer
+ * @return None
+ */
+ void SubmitDeadKeyL( const TDesC& abuf );
+
/*
* Set dead key
*
--- a/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -62,6 +62,8 @@
// Constants
const TInt KPeninputVkbWndInvalidIndex = -1;
const TInt KInvalidImg = -1 ;
+const TInt KKeyCodeSize = 1;
+const TInt KKeyDouble = 2;
_LIT( KVkbWindowResourceFile, "z:\\resource\\plugins\\peninputssqwin.rsc" );
_LIT( KConfigurationResourceFile, "z:\\resource\\plugins\\peninputssqwinconfiginfo_" );
@@ -550,7 +552,9 @@
break;
case EEventVirtualKeyUnLatched:
{
- UiLayout()->SignalOwner( ESignalKeyEvent, iNewDeadKeyBuf );
+ // Sumbit Deadkey
+ TRAP_IGNORE( SubmitDeadKeyL( iNewDeadKeyBuf ) );
+
TBool deadKeyChange = EFalse;
iLayoutContext->SetData( EAkninputDataTypeLatchedSet, &deadKeyChange );
iNewDeadKeyBuf = KNullDesC;
@@ -578,13 +582,21 @@
TInt latchedFlag = IntContext( EAkninputDataTypeLatchedSet );
if ( latchedFlag )
{
- TInt length = aEventData.Length() + iNewDeadKeyBuf.Length();
- HBufC* newCharBuf = HBufC::New( length );
- if ( newCharBuf )
+ HBufC* newCharBuf = HBufC::New( KKeyDouble * iNewDeadKeyBuf.Length()
+ + aEventData.Length() );
+ if( newCharBuf )
{
+ CPeninputSplitQwertyLayout* layout
+ = static_cast<CPeninputSplitQwertyLayout*>( UiLayout() );
+ if( layout->IsEnableITI() )
+ {
+ // If ITI is open, double same keys should be send for one dead key,
+ // core will handle them as one key.
+ newCharBuf->Des().Append( iNewDeadKeyBuf );
+ }
newCharBuf->Des().Append( iNewDeadKeyBuf );
newCharBuf->Des().Append( aEventData );
- }
+ }
UnLatchDeadKey( iNewDeadKeyBuf );
@@ -599,6 +611,7 @@
}
iNewDeadKeyBuf = KNullDesC;
delete newCharBuf;
+ newCharBuf = NULL;
}
}
break;
@@ -776,10 +789,11 @@
iOldDeadKeyBuf = iNewDeadKeyBuf;
iNewDeadKeyBuf = deadKey;
- // When type another DeadKey, submit the previous one.
- UiLayout()->SignalOwner( ESignalKeyEvent, iOldDeadKeyBuf );
+ // Submit old Deadkey
+ TRAP_IGNORE( SubmitDeadKeyL( iOldDeadKeyBuf ) );
+
// Unlatch the previous DeadKey
- UnLatchDeadKey(iOldDeadKeyBuf);
+ UnLatchDeadKey( iOldDeadKeyBuf );
}
else
{
@@ -796,6 +810,31 @@
}
// ---------------------------------------------------------------------------
+// Submit dead key
+// ---------------------------------------------------------------------------
+//
+void CPeninputSplitQwertyWindow::SubmitDeadKeyL( const TDesC& abuf )
+ {
+ HBufC* newCharBuf = HBufC::NewL( KKeyDouble * abuf.Length() );
+ if( newCharBuf )
+ {
+ CPeninputSplitQwertyLayout* layout
+ = static_cast<CPeninputSplitQwertyLayout*>( UiLayout() );
+ if( layout->IsEnableITI() )
+ {
+ // If ITI is open, double same keys should be send for one dead key,
+ // core will handle them as one key.
+ newCharBuf->Des().Append( abuf );
+ }
+ newCharBuf->Des().Append( abuf );
+
+ // Submit DeadKey
+ UiLayout()->SignalOwner( ESignalKeyEvent, *newCharBuf );
+ delete newCharBuf;
+ newCharBuf = NULL;
+ }
+ }
+// ---------------------------------------------------------------------------
// Handle virtual key up event
// ---------------------------------------------------------------------------
//
@@ -1682,14 +1721,39 @@
//
TBool CPeninputSplitQwertyWindow::HandleDeadKeyL( TInt aEventType,
const TDesC& aEventData )
- {
+ {
// Set DeadKey to unlatched state
TBool deadKeyChange = EFalse;
iLayoutContext->SetData( EAkninputDataTypeLatchedSet, &deadKeyChange );
UnLatchDeadKey( iNewDeadKeyBuf );
+ // Handle dead key when ITI is enable
+ CPeninputSplitQwertyLayout* layout
+ = static_cast<CPeninputSplitQwertyLayout*>( UiLayout() );
+ if ( layout->IsEnableITI() )
+ {
+ TBuf<KKeyCodeSize> buf;
+ TKeyEvent* event = (TKeyEvent*) aEventData.Ptr();
+ buf.Append( event->iCode );
+
+ HBufC* newCharBuf = HBufC::NewL( iNewDeadKeyBuf.Length() + buf.Length() );
+ if( newCharBuf )
+ {
+ newCharBuf->Des().Append( iNewDeadKeyBuf );
+ newCharBuf->Des().Append( buf );
+
+ // Submit DeadKey + Key at the same time
+ UiLayout()->SignalOwner(ESignalKeyEvent,*newCharBuf);
+
+ delete newCharBuf;
+ newCharBuf = NULL;
+ }
+
+ return ETrue;
+ }
+
// Get the accent char
- HBufC* newCharBuf = HBufC::NewL( 1 );
+ HBufC* newCharBuf = HBufC::NewL( KKeyCodeSize );
TBool handled = HandleAccentCharEvent( aEventType,
aEventData,
@@ -1702,13 +1766,15 @@
UiLayout()->SignalOwner( ESignalKeyEvent, *newCharBuf );
iNewDeadKeyBuf = KNullDesC;
delete newCharBuf;
+ newCharBuf = NULL;
return ETrue;
}
delete newCharBuf;
+ newCharBuf = NULL;
return EFalse;
- }
+ }
// --------------------------------------------------------------------------
// Handle resource of button(base on language direction)
--- a/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_01.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_01.rss Thu Aug 19 10:15:25 2010 +0300
@@ -1051,8 +1051,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0022>;
- scancode=0x0022;
+ unicode=<0x0026>;
+ scancode=0x0026;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -1164,8 +1164,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0026>;
- scancode=0x0026;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -1353,8 +1353,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00A2>;
- scancode=0x00A2;
+ unicode=<0x20AA>;
+ scancode=0x20AA;
beginrow=2;
begincolumn=8;
highlightbmpindex=0;
@@ -1362,8 +1362,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x20AA>;
- scancode=0x20AA;
+ unicode=<0x00A2>;
+ scancode=0x00A2;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
--- a/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_10.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_10.rss Thu Aug 19 10:15:25 2010 +0300
@@ -463,8 +463,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -685,8 +685,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0027>;
+ scancode=0x0027;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -757,8 +757,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x002C>;
+ scancode=0x002C;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -766,8 +766,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
+ unicode=<0x002E>;
+ scancode=0x002E;
beginrow=2;
begincolumn=8;
highlightbmpindex=0;
@@ -775,8 +775,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0021>;
- scancode=0x0021;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -2734,8 +2734,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0070>;
- scancode=0x0070;
+ unicode=<0x002A>;
+ scancode=0x002A;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -2761,8 +2761,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003B>;
- scancode=0x003B;
+ unicode=<0x0026>;
+ scancode=0x0026;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -2779,8 +2779,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0025>;
+ scancode=0x0025;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -2824,8 +2824,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0077>;
- scancode=0x0077;
+ unicode=<0x0070>;
+ scancode=0x0070;
beginrow=1;
begincolumn=4;
highlightbmpindex=0;
@@ -2833,8 +2833,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
+ unicode=<0x0021>;
+ scancode=0x0021;
beginrow=1;
begincolumn=5;
highlightbmpindex=0;
@@ -2842,8 +2842,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005F>;
- scancode=0x005F;
+ unicode=<0x0024>;
+ scancode=0x0024;
beginrow=1;
begincolumn=6;
highlightbmpindex=0;
@@ -2869,8 +2869,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0021>;
- scancode=0x0021;
+ unicode=<0x005F>;
+ scancode=0x005F;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -2914,8 +2914,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002A>;
- scancode=0x002A;
+ unicode=<0x0077>;
+ scancode=0x0077;
beginrow=2;
begincolumn=4;
highlightbmpindex=0;
@@ -2923,8 +2923,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0040>;
- scancode=0x0040;
+ unicode=<0x002D>;
+ scancode=0x002D;
beginrow=2;
begincolumn=5;
highlightbmpindex=0;
@@ -2932,8 +2932,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x003D>;
+ scancode=0x003D;
beginrow=2;
begincolumn=6;
highlightbmpindex=0;
@@ -2941,26 +2941,26 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
+ unicode=<0x003F>;
+ scancode=0x003F;
+ beginrow=2;
+ begincolumn=7;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
unicode=<0x005C>;
scancode=0x005C;
beginrow=2;
- begincolumn=7;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0027>;
- scancode=0x0027;
- beginrow=2;
begincolumn=8;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0022>;
- scancode=0x0022;
+ unicode=<0x002F>;
+ scancode=0x002F;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -3046,8 +3046,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x007E>;
- scancode=0x007E;
+ unicode=<0x003B>;
+ scancode=0x003B;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -3055,8 +3055,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005E>;
- scancode=0x005E;
+ unicode=<0x201E>;
+ scancode=0x201E;
beginrow=0;
begincolumn=5;
highlightbmpindex=0;
@@ -3064,8 +3064,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0060>;
- scancode=0x0060;
+ unicode=<0x201D>;
+ scancode=0x201D;
beginrow=0;
begincolumn=6;
highlightbmpindex=0;
@@ -3073,8 +3073,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0026>;
- scancode=0x0026;
+ unicode=<0x005F>;
+ scancode=0x005F;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -3082,8 +3082,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003D>;
- scancode=0x003D;
+ unicode=<0x003C>;
+ scancode=0x003C;
beginrow=0;
begincolumn=8;
highlightbmpindex=0;
@@ -3091,8 +3091,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00BF>;
- scancode=0x00BF;
+ unicode=<0x003E>;
+ scancode=0x003E;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -3136,8 +3136,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0025>;
- scancode=0x0025;
+ unicode=<0x005E>;
+ scancode=0x005E;
beginrow=1;
begincolumn=4;
highlightbmpindex=0;
@@ -3145,8 +3145,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005B>;
- scancode=0x005B;
+ unicode=<0x0060>;
+ scancode=0x0060;
beginrow=1;
begincolumn=5;
highlightbmpindex=0;
@@ -3154,8 +3154,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x005D>;
- scancode=0x005D;
+ unicode=<0x00B4>;
+ scancode=0x00B4;
beginrow=1;
begincolumn=6;
highlightbmpindex=0;
@@ -3163,8 +3163,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x201E>;
- scancode=0x201E;
+ unicode=<0x007E>;
+ scancode=0x007E;
beginrow=1;
begincolumn=7;
highlightbmpindex=0;
@@ -3172,8 +3172,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x201D>;
- scancode=0x201D;
+ unicode=<0x0027>;
+ scancode=0x0027;
beginrow=1;
begincolumn=8;
highlightbmpindex=0;
@@ -3181,8 +3181,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00A1>;
- scancode=0x00A1;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -3226,8 +3226,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0045>;
- scancode=0x0045;
+ unicode=<0x007B>;
+ scancode=0x007B;
beginrow=2;
begincolumn=4;
highlightbmpindex=0;
@@ -3235,8 +3235,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x20AC>;
- scancode=0x20AC;
+ unicode=<0x007D>;
+ scancode=0x007D;
beginrow=2;
begincolumn=5;
highlightbmpindex=0;
@@ -3244,8 +3244,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x00A3>;
- scancode=0x00A3;
+ unicode=<0x005B>;
+ scancode=0x005B;
beginrow=2;
begincolumn=6;
highlightbmpindex=0;
@@ -3253,8 +3253,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0024>;
- scancode=0x0024;
+ unicode=<0x005D>;
+ scancode=0x005D;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -3262,18 +3262,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
+ unicode=<0x007C>;
+ scancode=0x007C;
+ beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
unicode=<0x00A2>;
scancode=0x00A2;
beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x20AA>;
- scancode=0x20AA;
- beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_18.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_18.rss Thu Aug 19 10:15:25 2010 +0300
@@ -463,8 +463,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -685,8 +685,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -757,8 +757,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -766,18 +766,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_39.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_39.rss Thu Aug 19 10:15:25 2010 +0300
@@ -463,8 +463,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -685,8 +685,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -757,8 +757,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -766,18 +766,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_42.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_42.rss Thu Aug 19 10:15:25 2010 +0300
@@ -291,8 +291,8 @@
{
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002C>;
- scancode=0x002C;
+ unicode=<0x044F>;
+ scancode=0x044F;
beginrow=0;
begincolumn=0;
highlightbmpindex=0;
@@ -300,8 +300,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0443>;
- scancode=0x0443;
+ unicode=<0x0432>;
+ scancode=0x0432;
beginrow=0;
begincolumn=1;
highlightbmpindex=0;
@@ -318,8 +318,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0438>;
- scancode=0x0438;
+ unicode=<0x0440>;
+ scancode=0x0440;
beginrow=0;
begincolumn=3;
highlightbmpindex=0;
@@ -327,8 +327,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0448>;
- scancode=0x0448;
+ unicode=<0x0442>;
+ scancode=0x0442;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -336,8 +336,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0449>;
- scancode=0x0449;
+ unicode=<0x044A>;
+ scancode=0x044A;
beginrow=0;
begincolumn=5;
highlightbmpindex=0;
@@ -345,8 +345,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x043A>;
- scancode=0x043A;
+ unicode=<0x0443>;
+ scancode=0x0443;
beginrow=0;
begincolumn=6;
highlightbmpindex=0;
@@ -354,8 +354,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0441>;
- scancode=0x0441;
+ unicode=<0x0438>;
+ scancode=0x0438;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -363,8 +363,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0434>;
- scancode=0x0434;
+ unicode=<0x043E>;
+ scancode=0x043E;
beginrow=0;
begincolumn=8;
highlightbmpindex=0;
@@ -372,8 +372,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0437>;
- scancode=0x0437;
+ unicode=<0x043F>;
+ scancode=0x043F;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -381,8 +381,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0446>;
- scancode=0x0446;
+ unicode=<0x0447>;
+ scancode=0x0447;
beginrow=0;
begincolumn=10;
highlightbmpindex=0;
@@ -390,35 +390,35 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x044C>;
- scancode=0x044C;
- beginrow=1;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044F>;
- scancode=0x044F;
- beginrow=1;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0430>;
scancode=0x0430;
beginrow=1;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0441>;
+ scancode=0x0441;
+ beginrow=1;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0434>;
+ scancode=0x0434;
+ beginrow=1;
begincolumn=2;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x043E>;
- scancode=0x043E;
+ unicode=<0x0444>;
+ scancode=0x0444;
beginrow=1;
begincolumn=3;
highlightbmpindex=0;
@@ -426,108 +426,9 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0436>;
- scancode=0x0436;
- beginrow=1;
- begincolumn=4;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0433>;
scancode=0x0433;
beginrow=1;
- begincolumn=5;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0442>;
- scancode=0x0442;
- beginrow=1;
- begincolumn=6;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x043D>;
- scancode=0x043D;
- beginrow=1;
- begincolumn=7;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0432>;
- scancode=0x0432;
- beginrow=1;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x043C>;
- scancode=0x043C;
- beginrow=1;
- begincolumn=9;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0447>;
- scancode=0x0447;
- beginrow=1;
- begincolumn=10;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044E>;
- scancode=0x044E;
- beginrow=2;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0439>;
- scancode=0x0439;
- beginrow=2;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044A>;
- scancode=0x044A;
- beginrow=2;
- begincolumn=2;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x044D>;
- scancode=0x044D;
- beginrow=2;
- begincolumn=3;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0444>;
- scancode=0x0444;
- beginrow=2;
begincolumn=4;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -536,25 +437,25 @@
{
unicode=<0x0445>;
scancode=0x0445;
- beginrow=2;
+ beginrow=1;
begincolumn=5;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x043F>;
- scancode=0x043F;
- beginrow=2;
+ unicode=<0x0439>;
+ scancode=0x0439;
+ beginrow=1;
begincolumn=6;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0440>;
- scancode=0x0440;
- beginrow=2;
+ unicode=<0x043A>;
+ scancode=0x043A;
+ beginrow=1;
begincolumn=7;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -563,8 +464,62 @@
{
unicode=<0x043B>;
scancode=0x043B;
+ beginrow=1;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x044E>;
+ scancode=0x044E;
+ beginrow=1;
+ begincolumn=9;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0040>;
+ scancode=0x0040;
+ beginrow=1;
+ begincolumn=10;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0437>;
+ scancode=0x0437;
beginrow=2;
- begincolumn=8;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x044C>;
+ scancode=0x044C;
+ beginrow=2;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0446>;
+ scancode=0x0446;
+ beginrow=2;
+ begincolumn=2;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0436>;
+ scancode=0x0436;
+ beginrow=2;
+ begincolumn=3;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
@@ -573,6 +528,51 @@
unicode=<0x0431>;
scancode=0x0431;
beginrow=2;
+ begincolumn=4;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x043D>;
+ scancode=0x043D;
+ beginrow=2;
+ begincolumn=5;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x043C>;
+ scancode=0x043C;
+ beginrow=2;
+ begincolumn=6;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0448>;
+ scancode=0x0448;
+ beginrow=2;
+ begincolumn=7;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0449>;
+ scancode=0x0449;
+ beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002C>;
+ scancode=0x002C;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -630,8 +630,8 @@
{
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x044B>;
- scancode=0x044B;
+ unicode=<0x042F>;
+ scancode=0x042F;
beginrow=0;
begincolumn=0;
highlightbmpindex=0;
@@ -639,8 +639,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0423>;
- scancode=0x0423;
+ unicode=<0x0412>;
+ scancode=0x0412;
beginrow=0;
begincolumn=1;
highlightbmpindex=0;
@@ -657,8 +657,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0418>;
- scancode=0x0418;
+ unicode=<0x0420>;
+ scancode=0x0420;
beginrow=0;
begincolumn=3;
highlightbmpindex=0;
@@ -666,8 +666,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0428>;
- scancode=0x0428;
+ unicode=<0x0422>;
+ scancode=0x0422;
beginrow=0;
begincolumn=4;
highlightbmpindex=0;
@@ -675,8 +675,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0429>;
- scancode=0x0429;
+ unicode=<0x042A>;
+ scancode=0x042A;
beginrow=0;
begincolumn=5;
highlightbmpindex=0;
@@ -684,8 +684,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x041A>;
- scancode=0x041A;
+ unicode=<0x0423>;
+ scancode=0x0423;
beginrow=0;
begincolumn=6;
highlightbmpindex=0;
@@ -693,8 +693,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0421>;
- scancode=0x0421;
+ unicode=<0x0418>;
+ scancode=0x0418;
beginrow=0;
begincolumn=7;
highlightbmpindex=0;
@@ -702,8 +702,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0414>;
- scancode=0x0414;
+ unicode=<0x041E>;
+ scancode=0x041E;
beginrow=0;
begincolumn=8;
highlightbmpindex=0;
@@ -711,8 +711,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0417>;
- scancode=0x0417;
+ unicode=<0x041F>;
+ scancode=0x041F;
beginrow=0;
begincolumn=9;
highlightbmpindex=0;
@@ -720,8 +720,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0426>;
- scancode=0x0426;
+ unicode=<0x0427>;
+ scancode=0x0427;
beginrow=0;
begincolumn=10;
highlightbmpindex=0;
@@ -729,35 +729,35 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x042C>;
- scancode=0x042C;
- beginrow=1;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042F>;
- scancode=0x042F;
- beginrow=1;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0410>;
scancode=0x0410;
beginrow=1;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0421>;
+ scancode=0x0421;
+ beginrow=1;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0414>;
+ scancode=0x0414;
+ beginrow=1;
begincolumn=2;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x041E>;
- scancode=0x041E;
+ unicode=<0x0424>;
+ scancode=0x0424;
beginrow=1;
begincolumn=3;
highlightbmpindex=0;
@@ -765,108 +765,9 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0416>;
- scancode=0x0416;
- beginrow=1;
- begincolumn=4;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0413>;
scancode=0x0413;
beginrow=1;
- begincolumn=5;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0422>;
- scancode=0x0422;
- beginrow=1;
- begincolumn=6;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x041D>;
- scancode=0x041D;
- beginrow=1;
- begincolumn=7;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0412>;
- scancode=0x0412;
- beginrow=1;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x041C>;
- scancode=0x041C;
- beginrow=1;
- begincolumn=9;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0427>;
- scancode=0x0427;
- beginrow=1;
- begincolumn=10;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042E>;
- scancode=0x042E;
- beginrow=2;
- begincolumn=0;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0419>;
- scancode=0x0419;
- beginrow=2;
- begincolumn=1;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042A>;
- scancode=0x042A;
- beginrow=2;
- begincolumn=2;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x042D>;
- scancode=0x042D;
- beginrow=2;
- begincolumn=3;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
- unicode=<0x0424>;
- scancode=0x0424;
- beginrow=2;
begincolumn=4;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -875,25 +776,25 @@
{
unicode=<0x0425>;
scancode=0x0425;
- beginrow=2;
+ beginrow=1;
begincolumn=5;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x041F>;
- scancode=0x041F;
- beginrow=2;
+ unicode=<0x0419>;
+ scancode=0x0419;
+ beginrow=1;
begincolumn=6;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x0420>;
- scancode=0x0420;
- beginrow=2;
+ unicode=<0x041A>;
+ scancode=0x041A;
+ beginrow=1;
begincolumn=7;
highlightbmpindex=0;
highlightmaskbmpindex=0;
@@ -902,8 +803,62 @@
{
unicode=<0x041B>;
scancode=0x041B;
+ beginrow=1;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x042E>;
+ scancode=0x042E;
+ beginrow=1;
+ begincolumn=9;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=1;
+ begincolumn=10;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0417>;
+ scancode=0x0417;
beginrow=2;
- begincolumn=8;
+ begincolumn=0;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x042C>;
+ scancode=0x042C;
+ beginrow=2;
+ begincolumn=1;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0426>;
+ scancode=0x0426;
+ beginrow=2;
+ begincolumn=2;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0416>;
+ scancode=0x0416;
+ beginrow=2;
+ begincolumn=3;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
@@ -912,7 +867,43 @@
unicode=<0x0411>;
scancode=0x0411;
beginrow=2;
- begincolumn=9;
+ begincolumn=4;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x041D>;
+ scancode=0x041D;
+ beginrow=2;
+ begincolumn=5;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x041C>;
+ scancode=0x041C;
+ beginrow=2;
+ begincolumn=6;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0428>;
+ scancode=0x0428;
+ beginrow=2;
+ begincolumn=7;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0429>;
+ scancode=0x0429;
+ beginrow=2;
+ begincolumn=8;
highlightbmpindex=0;
highlightmaskbmpindex=0;
},
@@ -921,6 +912,15 @@
unicode=<0x003F>;
scancode=0x003F;
beginrow=2;
+ begincolumn=9;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x0021>;
+ scancode=0x0021;
+ beginrow=2;
begincolumn=10;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_59.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_59.rss Thu Aug 19 10:15:25 2010 +0300
@@ -431,8 +431,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -650,8 +650,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -722,8 +722,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -731,18 +731,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_70.rss Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwinconfiginfo_70.rss Thu Aug 19 10:15:25 2010 +0300
@@ -431,8 +431,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x003F>;
- scancode=0x003F;
+ unicode=<0x0040>;
+ scancode=0x0040;
beginrow=2;
begincolumn=9;
highlightbmpindex=0;
@@ -650,8 +650,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002F>;
- scancode=0x002F;
+ unicode=<0x0022>;
+ scancode=0x0022;
beginrow=1;
begincolumn=9;
highlightbmpindex=0;
@@ -722,8 +722,8 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002B>;
- scancode=0x002B;
+ unicode=<0x003F>;
+ scancode=0x003F;
beginrow=2;
begincolumn=7;
highlightbmpindex=0;
@@ -731,18 +731,18 @@
},
PENINPUT_LAYOUT_UNIT_KEY
{
- unicode=<0x002D>;
- scancode=0x002D;
- beginrow=2;
- begincolumn=8;
- highlightbmpindex=0;
- highlightmaskbmpindex=0;
- },
- PENINPUT_LAYOUT_UNIT_KEY
- {
unicode=<0x0021>;
scancode=0x0021;
beginrow=2;
+ begincolumn=8;
+ highlightbmpindex=0;
+ highlightmaskbmpindex=0;
+ },
+ PENINPUT_LAYOUT_UNIT_KEY
+ {
+ unicode=<0x002F>;
+ scancode=0x002F;
+ beginrow=2;
begincolumn=9;
highlightbmpindex=0;
highlightmaskbmpindex=0;
--- a/textinput/peninputvkbkr/src/PeninputVkbKrWindow.cpp Thu Jul 15 19:01:13 2010 +0300
+++ b/textinput/peninputvkbkr/src/PeninputVkbKrWindow.cpp Thu Aug 19 10:15:25 2010 +0300
@@ -490,6 +490,13 @@
else
{
iVkbCtrl->SetIrregularKeyBoard(EFalse);
+
+
+ //Add Skin id to Vkb Control for 9 piece picture.
+ iVkbCtrl->SetKeySkinId( EKeyBmpNormal, KAknsIIDQsnFrKeypadButtonFrNormal );
+ iVkbCtrl->SetKeySkinId( EKeyBmpHighlight, KAknsIIDQsnFrKeypadButtonFrPressed );
+ iVkbCtrl->SetKeySkinId( EKeyBmpDim, KAknsIIDQsnFrKeypadButtonFrInactive );
+
iVkbLayout->SetNonIrregularResourceId(R_AKN_FEP_VKB_NONIRREGULAR_BITMAP);
iVkbLayout->ConstructFromNonIrregularResourceL();
}
@@ -621,8 +628,7 @@
x = 0;
y = 0;
}
-
-
+
for ( TInt i = 0; i < count; i++ )
{
controlID = controlList[i]->ControlID();
@@ -687,7 +693,9 @@
TRAP_IGNORE(SetRangeBarSizeL(x, y));
}
}
- }
+ }
+
+ RootControl()->Draw();
}
void CPeninputVkbKrWindow::DoCaseChange( TInt aNewCase )
@@ -1195,7 +1203,6 @@
{
iTableUpButton->Hide(EFalse);
iTableUpButton->SizeChanged( exRect, inRect, ETrue );
- iTableUpButton->Draw();
}
iLafMgr->GetButtonRect(
@@ -1258,7 +1265,6 @@
{
iTablePageLabel->Hide(EFalse);
iTablePageLabel->SizeChanged( exRect, inRect, ETrue );
- iTablePageLabel->Draw();
}
iLafMgr->GetButtonRect(
@@ -1275,7 +1281,6 @@
{
iTableDownButton->Hide(EFalse);
iTableDownButton->SizeChanged( exRect, inRect, ETrue );
- iTableDownButton->Draw();
}
TRect updateArea;
@@ -1471,7 +1476,7 @@
buf.Format(_L("%d/%d"),SymbolTableUtil::FindIndex(vkbLayoutToUpdate)+1,KMaxSymbolTable);
//iTablePageLabel->SetCaptionL(buf);
iTablePageLabel->SetTextL(buf);
- iTablePageLabel->Draw();
+ RootControl()->Draw();
}
}