--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,798 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0""
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-
-
-
-
-
-
-
-
-/*
- * ============================================================================
- * Name : CAknFepPredictiveSettingList from AknFepPredictiveSettingList
- * ============================================================================
- */
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <uikon/eikctrlstatus.h>
-#endif
-#include <centralrepository.h>
-#include <AknQueryDialog.h>
-#include <AknFepInternalCRKeys.h>
-#include <PtiDefs.h>
-#include <e32property.h>
-#include <AvkonInternalCRKeys.h>
-#include <AknFepGlobalEnums.h>
-#include "AknFepPredictiveSettingDialog.h"
-#include <aknnotewrappers.h>
-#include <aknfep.rsg>
-#include <hlplch.h>
-//#include <csxhelp/cp.hlp.hrh>
-#include <akntitle.h> //CAknTitlePane
-#include <StringLoader.h>
-#include <aknnavide.h>
-
-_LIT(KFEPIMPLPREDINPUT_HLP_INPUT, "PREDINPUT_HLP_INPUT"); //
-
-CAknFepPredictiveSettingDialog *CAknFepPredictiveSettingDialog::NewL(TInt aMenuResId, TInt aConfirmationQueryResId, TInt aTitlePaneResId)
- {
- CAknFepPredictiveSettingDialog* self = CAknFepPredictiveSettingDialog::NewLC(aMenuResId, aConfirmationQueryResId, aTitlePaneResId);
- CleanupStack::Pop(self);
- return self;
- }
-
-CAknFepPredictiveSettingDialog *CAknFepPredictiveSettingDialog::NewLC(TInt aMenuResId, TInt aConfirmationQueryResId, TInt aTitlePaneResId)
- {
- CAknFepPredictiveSettingDialog* self = new (ELeave) CAknFepPredictiveSettingDialog(aConfirmationQueryResId, aTitlePaneResId);
- CleanupStack::PushL(self);
- self->ConstructL(aMenuResId);
- return self;
- }
-
-void CAknFepPredictiveSettingDialog::ConstructL( TInt aMenuTitleResourceId )
- {
- CAknDialog::ConstructL(aMenuTitleResourceId);
- PrepareStatusPaneL();
- iItemCloseEventCheck = CIdle::NewL(CActive::EPriorityStandard);
- }
-
-CAknFepPredictiveSettingDialog ::CAknFepPredictiveSettingDialog(TInt aConfirmationQueryResId, TInt aTitlePaneResId):
- iConfirmationQueryResId(aConfirmationQueryResId),
- iPredictiveSettingOffQueryNotShown(ETrue),
- iTitlePane(NULL),
- iNaviPane(NULL),
- iNaviDecoratedTabGroup(NULL),
- iLastTitle(NULL),
- iStatusTitle(NULL),
- iTitlePaneResId(aTitlePaneResId),
- iSettingItemInEditingState(EFalse)
- {
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
- RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, iOriginalKeyboardLayout);
-#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
- }
-
-CAknFepPredictiveSettingDialog::~CAknFepPredictiveSettingDialog()
- {
- TRAP_IGNORE(RestoreStatusPaneL());
- delete iSettingsData;
-
- delete iItemCloseEventCheck;
- iItemCloseEventCheck = NULL;
- if (iAknFepRepository)
- delete iAknFepRepository;
-
- delete iLastTitle;
- delete iStatusTitle;
- }
-
-
-SEikControlInfo CAknFepPredictiveSettingDialog::CreateCustomControlL(TInt /*aControlType*/)
-{
-
- // construct the data object the settings list will use
- iSettingsData = CAknFepPredictiveSettingData::NewL();
- iAknFepRepository = CRepository::NewL(KCRUidAknFep);
- ReadSettingsDataL();
-
- iSettingsList = CAknFepPredictiveSettingList::NewL(*iSettingsData, *this);
-
- SEikControlInfo controlInfo;
- controlInfo.iFlags = EEikControlHasEars;
- controlInfo.iTrailerTextId = 0;
- controlInfo.iControl = iSettingsList;
- STATIC_CAST(CAknFepPredictiveSettingList*, controlInfo.iControl)->SetContainerWindowL(*this);
-
- return controlInfo;
-}
-
-
-CAknFepPredictiveSettingDialog::TFormControlTypes CAknFepPredictiveSettingDialog::ConvertCustomControlTypeToBaseControlType(TInt /*aControlType*/) const
-{
- return EPopfieldDerived;
-}
-
-
-TBool CAknFepPredictiveSettingDialog::OkToExitL(TInt aButtonId)
-{
- TBool retValue = EFalse;
- switch(aButtonId)
- {
- case EAknSoftkeyBack:
- iSettingsList->StoreSettingsL();
- SaveSettingsDataL();
- retValue = ETrue;
- break;
-
- case EAknSoftkeyOptions:
- DisplayMenuL();
- break;
-
- case EAknSoftkeyChange:
- EditItemL(EFalse);
- break;
- }
- return retValue;
-}
-
-void CAknFepPredictiveSettingDialog::ProcessCommandL(TInt aCommandId)
- {
- if(iSettingItemInEditingState && aCommandId == EAknCmdExit)
- {
- // If we are currently editing the settings item then generate a cancel event
- RWsSession& wsSession = CEikonEnv::Static()->WsSession();
- TKeyEvent escapeEvent = {EKeyEscape, EStdKeyEscape, 0, 0};
- TRAP_IGNORE(CEikonEnv::Static()->SimulateKeyEventL(escapeEvent, EEventKey));
- wsSession.Flush();
- // After generating cancel event, start the callback function so the settings
- // page is dismissed.
- iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) );
- return;
- }
-
- // This is TSW eror fixing.
- // This function is called by dialog framework, whenever menu item is
- // selected. we should have to hide existing display menu first to maitain the
- // control stack .
- // If user try to stop displaying menu after creating any control
- // In that situation whenever application goes to background framework remove the
- // control from the stack when try to remove the menubar from control stack.
- CAknDialog::ProcessCommandL(aCommandId);
-
- switch(aCommandId)
- {
- case EAknFepCmdPredSettingChange:
- EditItemL(ETrue);
- break;
- case EAknCmdHelp:
- {
-
- const TInt KArrayGranularity = 3;
- CArrayFix<TCoeHelpContext>* contexts =
- new (ELeave) CArrayFixFlat<TCoeHelpContext>( KArrayGranularity );
- CleanupStack::PushL ( contexts );
- TUid appuid = { 0x100058EC };
- contexts->AppendL( TCoeHelpContext( appuid, KFEPIMPLPREDINPUT_HLP_INPUT ) );
- CleanupStack::Pop( contexts );
- HlpLauncher::LaunchHelpApplicationL( CEikonEnv::Static()->WsSession(), contexts );
- }
- break;
- case EAknCmdExit:
- // Save the setting and exit application.
- iSettingsList->StoreSettingsL();
- SaveSettingsDataL();
- // Pass the EAknCmdExit command to Avkon
- // Framework
- iAvkonAppUi->ProcessCommandL(aCommandId);
- break;
- }
- }
-
-void CAknFepPredictiveSettingDialog::ReadSettingsDataL()
- {
- TInt autoWordCompl = 0;
- TInt typingCorrection = 0;
- TInt numberCandidates = 0;
- TInt primaryCandidate = 0;
- TInt physicalKeyboards = 0;
- // Read CenRep
- if( iAknFepRepository )
- {
- iAknFepRepository->Get(KAknFepPredTxtFlagExtension, iPredictiveTextFlag);
- iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoWordCompl);
- iAknFepRepository->Get(KAknFepTypingCorrectionLevel, typingCorrection);
- iAknFepRepository->Get(KAknFepNumberCandidateFlag, numberCandidates);
- iAknFepRepository->Get(KAknFepPrimaryCandidateFlag, primaryCandidate);
- iAknFepRepository->Get(KAknFepPhysicalKeyboards, physicalKeyboards);
- }
-
- // Parse keyboard dependent settings for current keyboard from bitmask
- TInt keyboardLayout = 0;
- RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout);
- TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout;
- TInt autoTmp = autoWordCompl;
-
- // This part of code for error fixing:
- // IF ITI is off for QWERTY/ITU-T iPredictiveTextFlag = 0
- // IF ITI is on for ITU-T iPredictiveTextFlag = 1
- // IF ITI is on for QWERTY iPredictiveTextFlag = 2
-
- switch(layout)
- {
- case EPtiKeyboardNone:
- break;
- case EPtiKeyboard12Key:
- autoTmp &= EKeyboardStyle12Key;
- iPredictiveTextFlag &= EKeyboardStyle12Key;
- break;
- case EPtiKeyboardHalfQwerty:
- autoTmp &= EKeyboardStyleHalfQwerty;
- iPredictiveTextFlag &= EKeyboardStyleHalfQwerty;
- break;
- case EPtiKeyboardQwerty4x12:
- case EPtiKeyboardQwerty4x10:
- case EPtiKeyboardQwerty3x11:
- case EPtiKeyboardCustomQwerty:
- autoTmp &= EKeyboardStyleQwerty;
- iPredictiveTextFlag &= EKeyboardStyleQwerty;
- break;
- default:
- break;
- }
-
- //load setting data
- iSettingsData->LoadL(( autoTmp ? 1 : 0), typingCorrection, numberCandidates,
- primaryCandidate, physicalKeyboards, autoWordCompl);
-
- }
-
-
-void CAknFepPredictiveSettingDialog::SaveSettingsDataL() const
- {
- // Read setting data and fill CenRep.
- if( iAknFepRepository )
- {
- TInt autoFlag = 0;
- iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoFlag);
- TInt predFlag = 0;
- iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag);
-
- // Parse keyboard dependent settings for current keyboard from bitmask
- TInt keyboardLayout = 0;
- RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout);
- TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout;
- switch(layout)
- {
- case EPtiKeyboardNone:
- break;
- case EPtiKeyboard12Key:
- if (iSettingsData->AutoWordCompl())
- {
- autoFlag |= EKeyboardStyle12Key;
- }
- else
- {
- autoFlag &= ~EKeyboardStyle12Key;
- }
- break;
- case EPtiKeyboardHalfQwerty:
- if (iSettingsData->AutoWordCompl())
- {
- autoFlag |= EKeyboardStyleHalfQwerty;
- }
- else
- {
- autoFlag &= ~EKeyboardStyleHalfQwerty;
- }
- case EPtiKeyboardQwerty4x12:
- case EPtiKeyboardQwerty4x10:
- case EPtiKeyboardQwerty3x11:
-
- case EPtiKeyboardCustomQwerty:
- if (iSettingsData->AutoWordCompl())
- {
- autoFlag |= EKeyboardStyleQwerty;
- }
- else
- {
- autoFlag &= ~EKeyboardStyleQwerty;
- }
- break;
- default:
- break;
- }
-
- if(iSettingsList->DeviceHasMultipleKeyboards())
- {
- iAknFepRepository->Set(KAknFepAutoCompleteFlag, iSettingsData->AWCBitmask());
- }
- else
- {
- iAknFepRepository->Set(KAknFepAutoCompleteFlag, autoFlag);
- }
- iAknFepRepository->Set(KAknFepTypingCorrectionLevel, iSettingsData->TypingCorrection());
- iAknFepRepository->Set(KAknFepNumberCandidateFlag, iSettingsData->NumberCandidates());
- iAknFepRepository->Set(KAknFepPrimaryCandidateFlag, iSettingsData->PrimaryCandidate());
- }
- }
-
-void CAknFepPredictiveSettingDialog::SaveCurrentSettingsDataL() const
- {
- // Read setting data and fill CenRep.
- if(iAknFepRepository)
- {
- if(EAutoWordCompletion == iSettingsList->ListBox()->CurrentItemIndex())
- {
- TInt autoFlag = 0;
- iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoFlag);
- TInt predFlag = 0;
- iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag);
-
- // Parse keyboard dependent settings for current keyboard from bitmask
- TInt keyboardLayout = 0;
- RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout);
- TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout;
- switch(layout)
- {
- case EPtiKeyboardNone:
- break;
- case EPtiKeyboard12Key:
- if (iSettingsData->AutoWordCompl())
- {
- autoFlag |= EKeyboardStyle12Key;
- }
- else
- {
- autoFlag &= ~EKeyboardStyle12Key;
- }
- break;
- case EPtiKeyboardHalfQwerty:
- if (iSettingsData->AutoWordCompl())
- {
- autoFlag |= EKeyboardStyleHalfQwerty;
- }
- else
- {
- autoFlag &= ~EKeyboardStyleHalfQwerty;
- }
- break;
- case EPtiKeyboardQwerty4x12:
- case EPtiKeyboardQwerty4x10:
- case EPtiKeyboardQwerty3x11:
- case EPtiKeyboardCustomQwerty:
- if (iSettingsData->AutoWordCompl())
- {
- autoFlag |= EKeyboardStyleQwerty;
- }
- else
- {
- autoFlag &= ~EKeyboardStyleQwerty;
- }
- break;
- default:
- break;
- }
-
- if(iSettingsList->DeviceHasMultipleKeyboards())
- {
- iAknFepRepository->Set(KAknFepAutoCompleteFlag, iSettingsData->AWCBitmask());
- }
- else
- {
- iAknFepRepository->Set(KAknFepAutoCompleteFlag, autoFlag);
- }
- }
- else if(ETypingCorrectionLevel == iSettingsList->ListBox()->CurrentItemIndex())
- {
- iAknFepRepository->Set(KAknFepTypingCorrectionLevel, iSettingsData->TypingCorrection());
- }
- else if(ENumberCandidate == iSettingsList->ListBox()->CurrentItemIndex())
- {
- iAknFepRepository->Set(KAknFepNumberCandidateFlag, iSettingsData->NumberCandidates());
- }
- else if(EPrimaryCandidate == iSettingsList->ListBox()->CurrentItemIndex())
- {
- iAknFepRepository->Set(KAknFepPrimaryCandidateFlag, iSettingsData->PrimaryCandidate());
- }
- }
- }
-
-
-void CAknFepPredictiveSettingDialog::EditItemL(TBool aCalledFromMenu)
- {
- TInt prevSettings = CurrentSettings();
-
- // Set the flag as we are currently editing the settings item
- iSettingItemInEditingState = ETrue;
-
- iSettingsList->EditCurrentItemL(aCalledFromMenu);
- if(iSettingItemInEditingState == EFalse)
- {
- User::Leave(KErrNone);
- }
- LaunchPredictiveSettingOffQueryIfNecessaryL(prevSettings);
- SaveCurrentSettingsDataL();
-
- //Reset the flag as the current item edit is over
- iSettingItemInEditingState = EFalse;
- }
-
-void CAknFepPredictiveSettingDialog::LaunchPredictiveSettingOffQueryIfNecessaryL(TInt prevSettings)
- {
- if(iPredictiveSettingOffQueryNotShown)
- {
- if(iAknFepRepository)
- {
- iAknFepRepository->Get(KAknFepPredTxtFlagExtension,iPredictiveTextFlag);
- }
- TInt keyboardLayout = 0;
- RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout);
- TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout;
- TBool QueryNeeded = EFalse;
- if(iSettingsList->DeviceHasMultipleKeyboards())
- {
- TInt activateITIForKbd = 0;
- if(EAutoWordCompletion == iSettingsList->ListBox()->CurrentItemIndex() &&
- iSettingsData->AWCBitmask() != prevSettings & 0xF)
- {
- // if AWC is ON and Prev.Settings of AWC is not ON and ITI is OFF
- if((iSettingsData->AWCBitmask() & EKeyboardStyle12Key) &&
- ((prevSettings & 0xF) & EKeyboardStyle12Key)!=1 &&
- (iPredictiveTextFlag & EKeyboardStyle12Key) == 0)
- {
- QueryNeeded = ETrue;
- activateITIForKbd |= EKeyboardStyle12Key ;
- if(layout == EPtiKeyboard12Key)
- iPredictiveSettingOffQueryNotShown = EFalse;
- }
- // if AWC is ON and Prev.Settings of AWC is not ON and ITI is OFF
- if((iSettingsData->AWCBitmask() & EKeyboardStyleQwerty) &&
- ((prevSettings & 0xF) & EKeyboardStyleQwerty)!=2 &&
- (iPredictiveTextFlag & EKeyboardStyleQwerty) == 0)
- {
- QueryNeeded = ETrue;
- activateITIForKbd |= EKeyboardStyleQwerty ;
- if(layout == EKeyboardStyleQwerty)
- iPredictiveSettingOffQueryNotShown = EFalse;
- }
- if((iSettingsData->AWCBitmask() & EKeyboardStyleHalfQwerty) &&
- ((prevSettings & 0xF) & EKeyboardStyleHalfQwerty)!=4 &&
- (iPredictiveTextFlag & EKeyboardStyleHalfQwerty) == 0)
- {
- QueryNeeded = ETrue;
- activateITIForKbd |= EKeyboardStyleHalfQwerty ;
- if(layout == EKeyboardStyleHalfQwerty)
- iPredictiveSettingOffQueryNotShown = EFalse;
- }
- }
- // if Prev.Setting of TypingCorrection != Curr.Settng of TypingCorrection and
- // Current TypingCorrection != OFF and ITI is OFF
- else if(iSettingsData->iTypingCorrection != ((prevSettings >> 4)&0xF) &&
- ETypingCorrectionLevel == iSettingsList->ListBox()->CurrentItemIndex() &&
- 0 != iSettingsData->TypingCorrection() &&
- (iPredictiveTextFlag & EKeyboardStyleQwerty) == 0)
- {
- QueryNeeded = ETrue;
- iPredictiveSettingOffQueryNotShown = EFalse;
- activateITIForKbd |= EKeyboardStyleQwerty ;
- }
- // if Prev.Setting of NumberCandidate != Curr.Settng of NumberCandidate and
- // Current NumberCandidate is ON and ITI is OFF
- else if(iSettingsData->iNumberCandidates != ((prevSettings >> 8)&0xF) &&
- ENumberCandidate == iSettingsList->ListBox()->CurrentItemIndex() &&
- 1 == iSettingsData->NumberCandidates() &&
- (iPredictiveTextFlag & EKeyboardStyleQwerty) == 0)
- {
- QueryNeeded = ETrue;
- iPredictiveSettingOffQueryNotShown = EFalse;
- activateITIForKbd |= EKeyboardStyleQwerty ;
- }
-
- if(QueryNeeded)
- {
- CAknQueryDialog* dlg = CAknQueryDialog::NewL();
- if(dlg->ExecuteLD(iConfirmationQueryResId))
- {
- if(activateITIForKbd & EKeyboardStyle12Key)
- {
- iPredictiveTextFlag |= EKeyboardStyle12Key;
- }
-
- if(activateITIForKbd & EKeyboardStyleQwerty)
- {
- iPredictiveTextFlag |= EKeyboardStyleQwerty;
- }
- if(activateITIForKbd & EKeyboardStyleHalfQwerty)
- {
- iPredictiveTextFlag |= EKeyboardStyleHalfQwerty;
- }
- }
- }
- }
- else
- {
- TInt predFlag = 0;
- iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag);
- TInt autoFlag = 0;
- iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoFlag);
-
- switch(layout)
- {
- case EPtiKeyboardNone:
- break;
- case EPtiKeyboard12Key:
- autoFlag = ((autoFlag & EPtiKeyboard12Key)!=0);
- // if ITI is ON for QWERTY then iPredictiveTextFlag = 2; In that case we have to find out the ITI state for ITU-T
- if (!( iPredictiveTextFlag & EKeyboardStyle12Key ))
- {
- predFlag |= EKeyboardStyle12Key;
- }
-
- break;
- case EPtiKeyboardHalfQwerty:
- autoFlag = ((autoFlag & EKeyboardStyleHalfQwerty)!=0);
- if (!(iPredictiveTextFlag & EKeyboardStyleHalfQwerty ))
- {
- predFlag |= EKeyboardStyleHalfQwerty;
- }
- break;
- case EPtiKeyboardQwerty4x12:
- case EPtiKeyboardQwerty4x10:
- case EPtiKeyboardQwerty3x11:
- case EPtiKeyboardCustomQwerty:
- autoFlag = ((autoFlag & EKeyboardStyleQwerty)!=0);
- // if ITI is ON for ITU-T then iPredictiveTextFlag = 1; In that case we have to find out the ITI state for QWERTY
- if (!(iPredictiveTextFlag & EKeyboardStyleQwerty ))
- {
- predFlag |= EKeyboardStyleQwerty;
- }
- break;
- default:
- break;
- }
-
-
- if (predFlag != iPredictiveTextFlag)
- {
- switch(iSettingsList->ListBox()->CurrentItemIndex())
- {
- case EAutoWordCompletion:
- if(iSettingsData->iAutoWordCompl != autoFlag &&
- 1 == iSettingsData->AutoWordCompl())
- {
- QueryNeeded = ETrue;
- }
- break;
- case ETypingCorrectionLevel:
- if(iSettingsData->iTypingCorrection != ((prevSettings >> 4)&0xF) &&
- 0 != iSettingsData->TypingCorrection())
- {
- QueryNeeded = ETrue;
- }
- break;
- case ENumberCandidate:
- if(iSettingsData->iNumberCandidates != ((prevSettings >> 8)&0xF) &&
- 0 != iSettingsData->NumberCandidates())
- {
- QueryNeeded = ETrue;
- }
- break;
- }
-
- if(QueryNeeded)
- {
- CAknQueryDialog* dlg = CAknQueryDialog::NewL();
- if(dlg->ExecuteLD(iConfirmationQueryResId))
- iPredictiveTextFlag = predFlag;
-
- iPredictiveSettingOffQueryNotShown = EFalse;
- }
- }
- }
- if(iAknFepRepository && QueryNeeded)
- {
- iAknFepRepository->Set(KAknFepPredTxtFlagExtension,iPredictiveTextFlag);
- iAknFepRepository->Set(KAknFepPredTxtFlag, iPredictiveTextFlag != 0); // For backwards compatibility
- }
- }
- }
-TInt CAknFepPredictiveSettingDialog::CurrentSettings()
- {
- TInt settings = 0;
- //settings are the values of first 16 bits
- // settings & 0xF = iAWCBitmask
- // (settings >> 4) & 0xF = iNumberCandidates
- // (settings >> 8) & 0xF = iTypingCorrection
- // (settings >> 12) & 0xF = iPrimaryCandidate
- settings = (iSettingsData->iPrimaryCandidate << 12) |
- (iSettingsData->iNumberCandidates << 8) |
- (iSettingsData->iTypingCorrection << 4) |
- (iSettingsData->AWCBitmask());
- return settings;
- }
-
-// This part of code for error fixing multiple layout.
-void CAknFepPredictiveSettingDialog::HandleResourceChange(TInt aType)
- {
-
- CAknDialog::HandleResourceChange(aType);
-
- // Check for keyboard layout change
- // If layout is changed, load the setting information based on
- // Layout.
- if(aType==KEikDynamicLayoutVariantSwitch)
- {
-
- // Read the Predictive setting
- if(iAknFepRepository)
- {
- iAknFepRepository->Get(KAknFepPredTxtFlagExtension, iPredictiveTextFlag);
- }
-
- // Adjust predictive flag after layout switch
- TInt keyboardLayout = EPtiKeyboardNone;
- RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout);
- //settings page not to be retained on change of keyboard layout for Touch Input.
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
- if (iOriginalKeyboardLayout != keyboardLayout)
- {
- if(iSettingItemInEditingState)
- {
- // If we are currently editing the settings item then generate a cancel event
- // and start the scheduler so as to close the settings page
- // when the blocking call completes.
- RWsSession& wsSession = CEikonEnv::Static()->WsSession();
- TKeyEvent escapeEvent = {EKeyEscape, EStdKeyEscape, 0, 0};
- TRAP_IGNORE(CEikonEnv::Static()->SimulateKeyEventL(escapeEvent, EEventKey));
- wsSession.Flush();
- iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) );
- }
- else
- {
- // In case the current settings item is not in editing state then directly
- // close the settings page.
- TRAP_IGNORE(TryExitL(EAknSoftkeyBack));
- }
- return;
- }
-#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
- switch(keyboardLayout)
- {
- case EPtiKeyboard12Key:
- // Dictionary is ON for ITU-T
- iPredictiveTextFlag &= EKeyboardStyle12Key;
- break;
- case EPtiKeyboardQwerty4x12:
- case EPtiKeyboardQwerty4x10:
- case EPtiKeyboardQwerty3x11:
- case EPtiKeyboardHalfQwerty:
- case EPtiKeyboardCustomQwerty:
- // // Dictionary is ON for QWERTY
- iPredictiveTextFlag &= EKeyboardStyleQwerty;
- case EPtiKeyboardNone:
- default:
- break;
- }
- TRAP_IGNORE(SetTitlePaneL());
- }
- }
-
-TInt CAknFepPredictiveSettingDialog::EventCheckCallback(TAny* aObj)
- {
- TRAP_IGNORE(static_cast<CAknFepPredictiveSettingDialog*>(aObj)->AttemptToExitL());
- return KErrNone;
- }
-
-void CAknFepPredictiveSettingDialog::AttemptToExitL()
- {
- if(iItemCloseEventCheck->IsActive())
- {
- iItemCloseEventCheck->Cancel();
- }
- // iSettingItemInEditingState sets before the blocking call of editing item state and
- // gets reset after the blocking call.
- if (!iSettingItemInEditingState)
- {
- // In case we are here, then we need to close the settings item because of layout change
- TRAP_IGNORE(TryExitL(EAknSoftkeyBack));
- }
- else
- {
- // Because of priority we hit the scheduler first and then the blocking call gets
- // executed. To handle such a scenario, restart the scheduler.
- iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) );
- }
- }
-
-void CAknFepPredictiveSettingDialog::PrepareStatusPaneL()
- {
- CCoeEnv* coeEnv = CCoeEnv::Static();
- CAknAppUi* appUi = static_cast<CAknAppUi*>(coeEnv->AppUi());
- CEikStatusPane* statusPane = appUi->StatusPane();
-
- iTitlePane = static_cast<CAknTitlePane*>( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-
- const TDesC* appTitle = iTitlePane->Text();
- iLastTitle = appTitle->AllocL();
- CleanupStack::PushL(iLastTitle);
-
- iStatusTitle = StringLoader::LoadLC( iTitlePaneResId,coeEnv);
- SetTitlePaneL();
- CleanupStack::Pop(iStatusTitle);
- CleanupStack::Pop(iLastTitle);
-
- iNaviPane = static_cast<CAknNavigationControlContainer*>(statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
-
- if(iNaviPane)
- {
- // Create a new tab Groub for Settings Page and push it on the Navigation Pane
- // This is done so as to avoid previous page Tab Group to be used
- iNaviDecoratedTabGroup = iNaviPane->CreateTabGroupL();
- if(iNaviDecoratedTabGroup)
- {
- // Tab Group visibility is set to false
- iNaviDecoratedTabGroup->MakeVisible(EFalse);
- iNaviPane->PushL(*iNaviDecoratedTabGroup);
- }
- }
- }
-
-void CAknFepPredictiveSettingDialog::SetTitlePaneL()
- {
- iTitlePane->SetTextL( *iStatusTitle );
- }
-
-void CAknFepPredictiveSettingDialog::RestoreStatusPaneL()
- {
- iTitlePane->SetTextL( *iLastTitle );
-
- if(iNaviPane && iNaviDecoratedTabGroup)
- {
- // Pop the Tab Group created for the Settings page
- iNaviPane->Pop();
- delete iNaviDecoratedTabGroup;
- iNaviDecoratedTabGroup = NULL;
- }
- }
-
-void CAknFepPredictiveSettingDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent)
- {
- if ( aPointerEvent.iType == TPointerEvent::EDrag )
- {
- iSettingsList->HandlePointerEventL(aPointerEvent);
- }
- else
- {
- CAknDialog::HandlePointerEventL(aPointerEvent);
- }
- }
-
-/**
- *From MEikCommandObserver
- */
-void CAknFepPredictiveSettingDialog::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
- {
- if ( iAvkonAppUi->IsSingleClickCompatible() )
- {
- if ( R_PREDICTIVESETTINGDIALOG_MENU == aResourceId )
- {
- aMenuPane->SetItemDimmed(EAknFepCmdPredSettingChange, ETrue);
- }
- }
- }