--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/ptikoreanqwertycore/src/PtiKoreanQwertyCore.cpp Fri Feb 19 23:09:27 2010 +0200
@@ -0,0 +1,672 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include <PtiEngine.h>
+#include <centralrepository.h>
+
+#include <osshangulinputcontext.h>
+
+#include "PtiKoreanQwertyCoreDebug.h"
+#include "PtiKoreanQwertyCore.h" // CPtiKoreanQwertyCore
+#include "PtiKoreanQwertyCore.pan" // panic codes
+#include "PtiKoreanQwertyCoreCRDefs.h"
+
+#include <e32std.h>
+
+const static TOssCombinationItem sDefaulTOssCombinationItem[] =
+ {
+ {0x1169,0x1161,0x116a}, /* jungseong o + a = wa */
+ {0x1169,0x1162,0x116b}, /* jungseong o + ae = wae */
+ {0x1169,0x1175,0x116c}, /* jungseong o + i = oe */
+ {0x116e,0x1165,0x116f}, /* jungseong u + eo = weo */
+ {0x116e,0x1166,0x1170}, /* jungseong u + e = we */
+ {0x116e,0x1175,0x1171}, /* jungseong u + i = wi */
+ {0x1173,0x1175,0x1174}, /* jungseong eu + i = yi */
+ {0x11a8,0x11ba,0x11aa}, /* jongseong kiyeok + sios = kiyeok-sois */
+ {0x11ab,0x11bd,0x11ac}, /* jongseong nieun + cieuc = nieun-cieuc */
+ {0x11ab,0x11c2,0x11ad}, /* jongseong nieun + hieuh = nieun-hieuh */
+ {0x11af,0x11a8,0x11b0}, /* jongseong rieul + kiyeok = rieul-kiyeok */
+ {0x11af,0x11b7,0x11b1}, /* jongseong rieul + mieum = rieul-mieum */
+ {0x11af,0x11b8,0x11b2}, /* jongseong rieul + pieup = rieul-pieup */
+ {0x11af,0x11ba,0x11b3}, /* jongseong rieul + sios = rieul-sios */
+ {0x11af,0x11c0,0x11b4}, /* jongseong rieul + thieuth = rieul-thieuth */
+ {0x11af,0x11c1,0x11b5}, /* jongseong rieul + phieuph = rieul-phieuph */
+ {0x11af,0x11c2,0x11b6}, /* jongseong rieul + hieuh = rieul-hieuh */
+ {0x11b8,0x11ba,0x11b9}, /* jongseong pieup + sios = pieup-sios */
+ };
+
+const TInt KSizeOfDefaulTOssCombinationItem=sizeof(sDefaulTOssCombinationItem)/sizeof(TOssCombinationItem);
+
+const static TOssCombinationItem KCombiSsangKiyeokCho={0x1100,0x1100,0x1101}; /* choseong kiyeok + kiyeok = ssangkiyeok */
+const static TOssCombinationItem KCombiSsangKiyeokJong={0x11a8,0x11a8,0x11a9}; /* jongseong kiyeok + kiyeok = ssangekiyeok */
+const static TOssCombinationItem KCombiSsangTikeut={0x1103,0x1103,0x1104}; /* choseong tikeut + tikeut = ssangtikeut */
+const static TOssCombinationItem KCombiSsangPieup={0x1107,0x1107,0x1108}; /* choseong pieup + pieup = ssangpieup */
+const static TOssCombinationItem KCombiSsangSiosCho={0x1109,0x1109,0x110a}; /* choseong sios + sios = ssangsios */
+const static TOssCombinationItem KCombiSsangSiosJong={0x11ba,0x11ba,0x11bb}; /* jongseong sios + sios = ssangsios */
+const static TOssCombinationItem KCombiSsangCieuc={0x110c,0x110c,0x110d}; /* choseong cieuc + cieuc = ssangcieuc */
+const static TOssCombinationItem KCombiYaPlusI={0x1163,0x1175,0x1164}; /* jungseong ya-o = ya + o */
+const static TOssCombinationItem KCombiYuPlusI={0x1167,0x1175,0x1168}; /* jungseong yu-i = yu + i */
+
+class CActiveCallback : public CActive
+ {
+public:
+ CActiveCallback(CRepository& aRepository)
+ : CActive(EPriorityNormal),
+ iRepository(aRepository)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+ void Start(const TCallBack& aCallBack)
+ {
+ iCallBack=aCallBack;
+ iRepository.NotifyRequest(EDblConsonentOnSetting,iStatus);
+ SetActive();
+ }
+
+ void RunL()
+ {
+ iCallBack.CallBack();
+ }
+
+ void DoCancel()
+ {
+ iRepository.NotifyCancel(EDblConsonentOnSetting);
+ }
+
+ CRepository& iRepository;
+
+ TCallBack iCallBack;
+
+ };
+
+/*
+ ============================================================================
+ Constructors & Destructiors
+ ============================================================================
+ */
+
+CPtiKoreanQwertyCore* CPtiKoreanQwertyCore::NewLC(
+ CPtiEngine* aOwner,
+ TDes* aTextBuffer)
+ {
+ CPtiKoreanQwertyCore* self =
+ new (ELeave) CPtiKoreanQwertyCore(aOwner,aTextBuffer);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CPtiKoreanQwertyCore* CPtiKoreanQwertyCore::NewL(
+ CPtiEngine* aOwner,
+ TDes* aTextBuffer)
+ {
+ CPtiKoreanQwertyCore* self =
+ CPtiKoreanQwertyCore::NewLC(aOwner,aTextBuffer);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CPtiKoreanQwertyCore::CPtiKoreanQwertyCore(
+ CPtiEngine* aOwner,
+ TDes* aTextBuffer)
+ : iOwner(aOwner),
+ iTextBuffer(aTextBuffer),
+ iKoreanLanOpen(EFalse),
+ iLowerCase(ETrue)
+ {
+ }
+
+void CPtiKoreanQwertyCore::ConstructL()
+ {
+ _LIT8(KKeyboard,"2");
+ iHic=COssHangulInputContext::NewL(KKeyboard);
+ iCombination=COssCombination::NewL();
+ for (TInt i=0;i<KSizeOfDefaulTOssCombinationItem;i++)
+ {
+ iCombination->AddCombinationL(sDefaulTOssCombinationItem[i]);
+ }
+ iRepository=CRepository::NewL(KCRUidPtiKoreanQwertyCore);
+ UpdateFromRepositoryL();
+ iCRNotifier=new (ELeave) CActiveCallback(*iRepository);
+ iCRNotifier->Start(TCallBack(CPtiKoreanQwertyCore::CBSettingChanged,this));
+ }
+
+CPtiKoreanQwertyCore::~CPtiKoreanQwertyCore()
+ {
+
+ if ( iCRNotifier )
+ {
+ iCRNotifier->Cancel();
+ }
+
+ delete iCRNotifier;
+ delete iRepository;
+ delete iCombination;
+ delete iHic;
+
+ }
+
+/*
+ ============================================================================
+ From CPtiCore
+ ============================================================================
+ */
+
+void CPtiKoreanQwertyCore::InitializeL(
+ CPtiEngine* aOwner,
+ TDes* aTextBuffer,
+ CArrayPtrFlat<CPtiCoreLanguage>* /*aLanguageList*/,
+ TBool aUseDefautUserDictionary)
+ {
+ LOG1("CPtiKoreanQwertyCore::InitializeL %d",aUseDefautUserDictionary);
+ iOwner=aOwner;
+ iTextBuffer=aTextBuffer;
+
+ CPtiCoreLanguage* lang;
+ lang = static_cast<CPtiCoreLanguage*>(iOwner->GetLanguage(ELangKorean));
+ if (lang)
+ {
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ lang->SetCore(this, EPtiEngineQwertyKorean);
+#else
+ lang->SetCore(this, EPtiEngineQwerty);
+#endif //RD_INTELLIGENT_TEXT_INPUT
+ }
+ }
+
+void CPtiKoreanQwertyCore::DropLanguages(CArrayPtrFlat<CPtiCoreLanguage>* /*aLanguageList*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::DropLanguages");
+ }
+
+TInt CPtiKoreanQwertyCore::OpenLanguageL(CPtiCoreLanguage *aLanguage)
+ {
+ LOG1("CPtiKoreanQwertyCore::OpenLanguageL id=%d",aLanguage->LanguageCode());
+ TInt ret(KErrNotSupported);
+ if (aLanguage->LanguageCode()==ELangKorean)
+ {
+ ret=KErrNone;
+ iKoreanLanOpen=ETrue;
+ }
+ return ret;
+ }
+
+TInt CPtiKoreanQwertyCore::CloseLanguageL()
+ {
+ LOG1("CPtiKoreanQwertyCore::CloseLanguageL opened=%d",iKoreanLanOpen);
+ __ASSERT_ALWAYS(iKoreanLanOpen,User::Panic(_L("PtiKoreanQwertyCore"),__LINE__));
+ iKoreanLanOpen=EFalse;
+ return KErrNone;
+ }
+
+TPtrC CPtiKoreanQwertyCore::GetCurrentWord() const
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetCurrentWord");
+ TPtrC ret;
+ return ret;
+ }
+
+TInt CPtiKoreanQwertyCore::CommitCurrentWord()
+ {
+ LOG("CPtiKoreanQwertyCore::CommitCurrentWord");
+ iTextBuffer->Copy(iHic->GetCommitString());
+ return KErrNone;
+ }
+
+MPtiCoreInfo* CPtiKoreanQwertyCore::GetCoreInfo()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetCoreInfo");
+ return NULL;
+ }
+
+TInt CPtiKoreanQwertyCore::SetReordering(TBool /*aStatus*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SetReordering");
+
+ return KErrNotSupported;
+ }
+
+void CPtiKoreanQwertyCore::AppendKeyPress(TPtiKey aKey)
+ {
+ TInt key=aKey;
+ if (iLowerCase && ('A'<=key && key <= 'Z'))
+ {
+ key=key-'A'+'a';
+ }
+ LOG1("CPtiKoreanQwertyCore::AppendKeyPress %c",key);
+ TBool preEditOngoing(iHic->GetPreeditString().Length()>0);
+ if (iHic->Process(key))
+ {
+ if (preEditOngoing&&iTextBuffer->Length())
+ {
+ iTextBuffer->SetLength(iTextBuffer->Length()-1);
+ }
+ if (iHic->GetCommitString().Length())
+ {
+ LOG1("CPtiKoreanQwertyCore::AppendKeyPress len cmt %d",iHic->GetCommitString().Length());
+ iTextBuffer->Append(iHic->GetCommitString());
+ }
+ iTextBuffer->Append(iHic->GetPreeditString());
+ LOG1("CPtiKoreanQwertyCore::AppendKeyPress len pre %d",iTextBuffer->Length());
+ }
+ }
+
+void CPtiKoreanQwertyCore::DeleteKeyPress()
+ {
+ LOG("CPtiKoreanQwertyCore::DeleteKeyPress");
+ TInt lenPrevText(iTextBuffer->Length());
+ TInt lenPrevPreEdit(iHic->GetPreeditString().Length());
+ if (lenPrevPreEdit)
+ {
+ TInt lenToDelete=lenPrevText>=lenPrevPreEdit?lenPrevPreEdit:lenPrevText;
+ iTextBuffer->SetLength(iTextBuffer->Length()-lenToDelete);
+ }
+ else if (lenPrevText)
+ {
+ iTextBuffer->SetLength(iTextBuffer->Length()-1);
+ }
+ iHic->BackSpace();
+ if (iHic->GetPreeditString().Length())
+ {
+ iTextBuffer->Append(iHic->GetPreeditString());
+ }
+ }
+
+void CPtiKoreanQwertyCore::ClearBuffer()
+ {
+ LOG("CPtiKoreanQwertyCore::ClearBuffer");
+ iHic->Reset();
+ }
+
+TInt CPtiKoreanQwertyCore::SetCurrentInputSequence(TPtrC8 /*aInput*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SetCurrentInputSequence");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::Convert(
+ TPtiCharConversion /*aType*/,
+ TAny* /*aInput*/,
+ TInt /*aInputLength*/,
+ TAny* /*aOutput*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::Convert");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::SetExternalKeyMapL(
+ TPtiEngineInputMode /*aMode*/,
+ TPtiKey /*aKey*/,
+ TDesC& /*aKeyMap*/,
+ TPtiTextCase /*aCase*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SetExternalKeyMapL");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::GetSpelling(
+ TUint16 /*aInput*/,
+ TDes& /*aOutput*/,
+ TPtiSpelling /*aType*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetSpelling");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::CancelTimerActivity()
+ {
+ LOG("CPtiKoreanQwertyCore::CancelTimerActivity");
+ return KErrNone;
+ }
+
+TInt CPtiKoreanQwertyCore::HandleCommandL(TPtiEngineCommand aCommand, TAny* /*aParams*/)
+ {
+ LOG1("CPtiKoreanQwertyCore::HandleCommandL %d",aCommand);
+ TInt ret(KErrNone);
+ switch (aCommand)
+ {
+ case EPtiCommandVowelSeqFlag:
+ case EPtiCommandDoubleWideEntry:
+ case EPtiCommandPollQwertyDeadKeyRootFlag:
+ case EPtiCommandGetAndClearLastVietnameseChar:
+ case EPtiCommandClearVowelSeq:
+ case EPtiCommandGetAndClearDeadKeyRootChar:
+ ret=KErrNotSupported;
+ break;
+ case EPtiCommandUseLatinCaseUpperOnlyKeyMap:
+ iLowerCase=EFalse;
+ break;
+ case EPtiCommandUseLatinCaseLowerOnlyKeyMap:
+ iLowerCase=ETrue;
+ break;
+ case EPtiCommandGetAutoCompletionTailLength:
+ //To do:
+ break;
+ case EPtiCommandGetSecondaryCandidate:
+ //To do:
+ break;
+ case EPtiCommandSetCorrectionLevel:
+ // To do
+ break;
+ default:
+ LOG_ASSERT("CPtiKoreanQwertyCore::HandleCommandL");
+ break;
+ }
+
+ return ret;
+ }
+
+/*
+ ============================================================================
+ From CPtiCore Predictive latin API
+ ============================================================================
+ */
+
+TInt CPtiKoreanQwertyCore::NumberOfCandidates()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::NumberOfCandidates");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::GetCandidateListL(CDesCArray& /*aList*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetCandidateListL");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::GetNextWordCandidateListL(CDesCArray& /*aList*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetNextWordCandidateListL");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::GetFirstCandidate(TDes& /*aResult*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetFirstCandidate");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::GetNextCandidate(TDes& /*aResult*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetNextCandidate");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::GetPreviousCandidate(TDes& /*aResult*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetPreviousCandidate");
+
+ return KErrNotSupported;
+ }
+
+/*
+ ============================================================================
+ From CPtiCore User dictionary API
+ ============================================================================
+ */
+
+TInt CPtiKoreanQwertyCore::AddUserDictionaryEntry(
+ MPtiUserDictionaryEntry& /*aEntry*/,
+ CPtiUserDictionary* /*aDict*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::AddUserDictionaryEntry");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::RemoveUserDictionaryEntry(
+ MPtiUserDictionaryEntry& /*aEntry*/,
+ CPtiUserDictionary* /*aDict*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::RemoveUserDictionaryEntry");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::NumberOfEntriesInUserDictionary(
+ CPtiUserDictionary* /*aDict*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::NumberOfEntriesInUserDictionary");
+
+ return KErrNotSupported;
+ }
+
+TInt CPtiKoreanQwertyCore::GetUserDictionaryEntry(
+ TInt /*aIndex*/,
+ MPtiUserDictionaryEntry& /*aResult*/,
+ CPtiUserDictionary* /*aDict*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetUserDictionaryEntry");
+
+ return KErrNotSupported;
+ }
+
+CPtiUserDictionary* CPtiKoreanQwertyCore::CreateEmptyUserDictionaryL(TInt /*aMaxSize*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::CreateEmptyUserDictionaryL");
+
+ return NULL;
+ }
+
+TInt CPtiKoreanQwertyCore::AttachUserDictionary(CPtiUserDictionary* /*aDict*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::AttachUserDictionary");
+
+ return KErrNotSupported;
+ }
+
+TBool CPtiKoreanQwertyCore::DetachUserDictionary(CPtiUserDictionary* /*aDict*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::DetachUserDictionary");
+
+ return EFalse;
+ }
+
+/*
+ ============================================================================
+ From CPtiCore Chinese API
+ ============================================================================
+ */
+
+TPtrC CPtiKoreanQwertyCore::GetCandidatePage()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetCandidatePage");
+
+ return KNullDesC();
+ }
+
+TBool CPtiKoreanQwertyCore::NextCandidatePage()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::NextCandidatePage");
+
+ return EFalse;
+ }
+
+TBool CPtiKoreanQwertyCore::PreviousCandidatePage()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::PreviousCandidatePage");
+
+ return EFalse;
+ }
+
+TBool CPtiKoreanQwertyCore::MoreCandidatePages()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::MoreCandidatePages");
+
+ return EFalse;
+ }
+
+void CPtiKoreanQwertyCore::SetCandidatePageLength(TInt /*aLength*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SetCandidatePageLength");
+
+ }
+
+TPtrC CPtiKoreanQwertyCore::GetPhoneticSpelling(TInt /*aIndex*/) const
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetPhoneticSpelling");
+ return KNullDesC();
+ }
+
+TInt CPtiKoreanQwertyCore::PhoneticSpellingCount() const
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::PhoneticSpellingCount");
+
+ return KErrNotSupported;
+ }
+
+TBool CPtiKoreanQwertyCore::SelectPhoneticSpelling(TInt /*aIndex*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SelectPhoneticSpelling");
+
+ return EFalse;
+ }
+
+TInt CPtiKoreanQwertyCore::SelectedPhoneticSpelling() const
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SelectedPhoneticSpelling");
+
+ return KErrNotSupported;
+ }
+
+TBool CPtiKoreanQwertyCore::ToneMark(TText& /*aToneMark*/) const
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::ToneMark");
+
+ return EFalse;
+ }
+
+TBool CPtiKoreanQwertyCore::IsToneMarkValidForSpelling()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::IsToneMarkValidForSpelling");
+
+ return EFalse;
+ }
+
+TBool CPtiKoreanQwertyCore::SetPredictiveChineseChar(const TDesC& /*aChar*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SetPredictiveChineseChar");
+
+ return EFalse;
+ }
+
+TBool CPtiKoreanQwertyCore::SetToneMark(TInt /*aToneMark*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::SetToneMark");
+
+ return EFalse;
+ }
+
+
+/*
+ ============================================================================
+ From CPtiCore Japanese API
+ ============================================================================
+ */
+
+TPtrC CPtiKoreanQwertyCore::ReadingTextL()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::ReadingTextL");
+
+ return KNullDesC();
+ }
+
+MPtiEngineCompositionDataInterface* CPtiKoreanQwertyCore::CompositionData()
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::CompositionData");
+
+ return NULL;
+ }
+
+/*
+ ============================================================================
+ From CPtiCore Chinese API
+ ============================================================================
+ */
+
+HBufC* CPtiKoreanQwertyCore::GetCandidatesByInputString(
+ const TDesC& /*aInputString*/,
+ RPointerArray<HBufC>& /*aList*/,
+ const TBool /*aIsPredictive*/)
+ {
+ LOG_ASSERT("CPtiKoreanQwertyCore::GetCandidatesByInputString");
+
+ return NULL;
+ }
+
+void CPtiKoreanQwertyCore::UpdateFromRepositoryL()
+ {
+ UpdateDblConsonentL(EDblConsonentSsangKiyeok,KCombiSsangKiyeokCho);
+ UpdateDblConsonentL(EDblConsonentSsangKiyeok,KCombiSsangKiyeokJong);
+ UpdateDblConsonentL(EDblConsonentSsangTikeut,KCombiSsangTikeut);
+ UpdateDblConsonentL(EDblConsonentSsangPieup,KCombiSsangPieup);
+ UpdateDblConsonentL(EDblConsonentSsangSios,KCombiSsangSiosCho);
+ UpdateDblConsonentL(EDblConsonentSsangSios,KCombiSsangSiosJong);
+ UpdateDblConsonentL(EDblConsonentSsangCieuc,KCombiSsangCieuc);
+ UpdateDblConsonentL(EDblConsonentYaPlusI,KCombiYaPlusI);
+ UpdateDblConsonentL(EDblConsonentYuPlusI,KCombiYuPlusI);
+ iHic->SetCombinationL(*iCombination);
+ }
+
+void CPtiKoreanQwertyCore::UpdateDblConsonentL(
+ const TInt& aCenRepId,
+ const TOssCombinationItem& aCombination)
+ {
+ TInt value;
+ if (KErrNone==iRepository->Get(aCenRepId,value))
+ {
+ if (value)
+ {
+ iCombination->AddCombinationL(aCombination);
+ }
+ else
+ {
+ iCombination->RemoveCombination(aCombination);
+ }
+ }
+ }
+
+TInt CPtiKoreanQwertyCore::CBSettingChanged(void* aSelf)
+ {
+ CPtiKoreanQwertyCore* self=(CPtiKoreanQwertyCore*)aSelf;
+ TInt settingOnGoing(EFalse);
+ TInt ret(KErrNone);
+ if (KErrNone==self->iRepository->Get(EDblConsonentOnSetting,settingOnGoing))
+ {
+ if (!settingOnGoing)
+ {
+ TRAP(ret,self->UpdateFromRepositoryL());
+ }
+ }
+ if (ret==KErrNone)
+ {
+ self->iCRNotifier->Start(
+ TCallBack(CPtiKoreanQwertyCore::CBSettingChanged,self));
+ }
+ return ret;
+ }