diff -r 6ceef9a83b1a -r 6defe5d1bd39 textinput/ptihangulcore/src/OssHangulInputContext.cpp --- a/textinput/ptihangulcore/src/OssHangulInputContext.cpp Mon Mar 15 12:42:02 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -/* -* Copyright (c) 2005,2006 Choe Hwanjin -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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 "OssHangulInputContext.h" -#include "hangul.h" -#include "OssKeyboard.h" -#include "OssCombination.h" - -_LIT8(KHangulInputContextEventTranslate,"translate"); -_LIT8(KHangulInputContextEventTransition,"transition"); - -/* -LOCAL_C HBufC8* AllocStdBufLC(const TDesC8& aStr) - { - TInt len=aStr.Length()+1; - HBufC8* buf=HBufC8::NewLC(len); - TPtr8 ptr(buf->Des()); - ptr.FillZ(len); - ptr.Copy(aStr); - return buf; - }*/ - - -LOCAL_C HBufC8* AllocStdBufL(const TDesC8& aStr) - { - TInt len=aStr.Length()+1; - HBufC8* buf=HBufC8::NewL(len); - TPtr8 ptr(buf->Des()); - ptr.FillZ(len); - ptr.Copy(aStr); - return buf; - } - -class TLocalStdBuf - { - public: - - TLocalStdBuf(const TDesC8& aStr) - { - TInt len=aStr.Length()+1; - iBuf=HBufC8::New(len); - if (iBuf!=NULL) - { - TPtr8 ptr(iBuf->Des()); - ptr.FillZ(len); - ptr.Copy(aStr); - } - } - - ~TLocalStdBuf() - { - delete iBuf; - } - - const char* operator() () - { - return (const char*) iBuf->Ptr(); - } - - private: - - HBufC8* iBuf; - }; - - -LOCAL_C TBool CBTranslate(HangulInputContext* ,int aAscII, ucschar* aStr, void* aSelf) - { - COssHangulInputContext* context=(COssHangulInputContext*)aSelf; - return context->OnTranslate(aAscII,TPtrC(aStr)); - } - -LOCAL_C TBool CBTransition(HangulInputContext* ,ucschar aChar, const ucschar* preedit, void* aSelf) - { - COssHangulInputContext* context=(COssHangulInputContext*)aSelf; - return context->OnTransition(aChar,TPtrC(preedit)); - } - -EXPORT_C COssHangulInputContext* COssHangulInputContext::NewLC( - const TDesC8& aKeyboardType) - { - COssHangulInputContext* self = - new (ELeave) COssHangulInputContext(); - CleanupStack::PushL(self); - self->ConstructL(aKeyboardType); - return self; - } - -EXPORT_C COssHangulInputContext* COssHangulInputContext::NewL( - const TDesC8& aKeyboardType) - { - COssHangulInputContext* self = - COssHangulInputContext::NewLC(aKeyboardType); - CleanupStack::Pop(); // self; - return self; - } - - -COssHangulInputContext::COssHangulInputContext() - { - } - -void COssHangulInputContext::ConstructL(const TDesC8& aKeyboardType) - { - // Null termination string for standard library - //iKeyboardType=AllocStdBufLC(aKeyboardType); - iKeyboardType=AllocStdBufL(aKeyboardType); - iHic=hangul_ic_new((const char*)iKeyboardType->Ptr()); - //CleanupStack::Pop(iKeyboardType); - } - -EXPORT_C COssHangulInputContext::~COssHangulInputContext() - { - hangul_ic_delete(iHic); - delete iKeyboardType; - } - -EXPORT_C TBool COssHangulInputContext::Process(const TChar& aAscII) - { - return hangul_ic_process(iHic,aAscII); - } - -EXPORT_C void COssHangulInputContext::Reset() - { - hangul_ic_reset(iHic); - } - -EXPORT_C TBool COssHangulInputContext::BackSpace() - { - return hangul_ic_backspace(iHic); - } - -EXPORT_C TBool COssHangulInputContext::IsEmpty() - { - return hangul_ic_is_empty(iHic); - } - -EXPORT_C TBool COssHangulInputContext::HasChoseong() - { - return hangul_ic_has_choseong(iHic); - } - -EXPORT_C TBool COssHangulInputContext::HasJungseong() - { - return hangul_ic_has_jungseong(iHic); - } - -EXPORT_C TBool COssHangulInputContext::HasJongseong() - { - return hangul_ic_has_jongseong(iHic); - } - -EXPORT_C void COssHangulInputContext::SetOutputMode(const TInt& aMode) - { - hangul_ic_set_output_mode(iHic,aMode); - } - -EXPORT_C void COssHangulInputContext::SetKeyboard(const COssKeyboard& aOssKeyboard) - { - hangul_ic_set_keyboard(iHic,aOssKeyboard.iHangulKeyboard); - } - -EXPORT_C void COssHangulInputContext::SelectKeyboard(const TDesC8& aId) - { - TLocalStdBuf buf(aId); - hangul_ic_select_keyboard(iHic,buf()); - } - -EXPORT_C void COssHangulInputContext::SetCombinationL(COssCombination& aOssCombination) - { - aOssCombination.PopulateListL(); - hangul_ic_set_combination(iHic,aOssCombination.iHangulCombination); - } - -EXPORT_C void COssHangulInputContext::AddEventObserver(MOssHangulInputEventObserver* aObserver) - { - __ASSERT_ALWAYS( - iObservers.Find(aObserver)==KErrNotFound, - User::Panic(_L("libhangul_symbian"),__LINE__)); - - hangul_ic_connect_callback( - iHic, - (const char *)KHangulInputContextEventTranslate().Ptr(), - (void*)CBTranslate, - this); - - hangul_ic_connect_callback( - iHic, - (const char *)KHangulInputContextEventTransition().Ptr(), - (void*)CBTransition, - this); - - iObservers.Append(aObserver); - } - -EXPORT_C void COssHangulInputContext::RemoveEventObserver(MOssHangulInputEventObserver* aObserver) - { - TInt index(iObservers.Find(aObserver)); - if (index!=KErrNotFound) - { - iObservers.Remove(index); - } - } - -EXPORT_C TPtrC COssHangulInputContext::GetPreeditString() - { - TPtrC ret(hangul_ic_get_preedit_string(iHic)); - return ret; - } - -EXPORT_C TPtrC COssHangulInputContext::GetCommitString() - { - TPtrC ret(hangul_ic_get_commit_string(iHic)); - return ret; - } - -EXPORT_C TPtrC COssHangulInputContext::Flush() - { - TPtrC ret(hangul_ic_flush(iHic)); - return ret; - } - -TBool COssHangulInputContext::OnTranslate(const TChar& aAscII,const TDesC& aUcsStr) - { - TBool ret(EFalse); - for (TInt i=0;iMOhieoOnTranslate(aAscII,aUcsStr)) ret=ETrue; - } - return ret; - } - -TBool COssHangulInputContext::OnTransition(const TChar& aChar,const TDesC& aPreEdit) - { - TBool ret(EFalse); - for (TInt i=0;iMOhieoOnTransition(aChar,aPreEdit)) ret=ETrue; - } - return ret; - } -