/*
* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0""
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: drop-down list control
*
*/
#include "peninputitutwesternuimgr.h"
#include "peninputgenericitutdata.h"
#include "peninputgenericitutdatamgr.h"
#include "peninputitutwesternuistatenonpredict.h"
#include "peninputitutwesternuistatecusotmization.h"
#include "peninputitutwesternuistatematchselection.h"
#include "peninputgenericitutlayoutcontext.h"
#include "peninputgenericitutcustomization.h"
#include "peninputitutcustomizationresourcemgr.h"
#include "peninputitutwesternuistatespelling.h"
#include "peninputgenericitutlayout.h"
#include "peninputgenericitutwindowmanager.h"
CWesternItutUiMgr* CWesternItutUiMgr::NewL(MItutLayoutContext* aContext,
CGenericItutDataMgr* aDataMgr,
CGenericItutWindowManager* aUiManager)
{
CWesternItutUiMgr* self = new (ELeave) CWesternItutUiMgr(aContext, aDataMgr,aUiManager);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop(self);
return self;
}
CWesternItutUiMgr::~CWesternItutUiMgr()
{
if (iCurrentState)
{
iCurrentState->OnExit();
}
delete iNormalState;
delete iCustomerState;
delete iMatchSelState;
delete iSpellState;
}
CWesternItutUiMgr::CWesternItutUiMgr(MItutLayoutContext* aContext,
CGenericItutDataMgr* aDataMgr,
CGenericItutWindowManager* aUiManager)
:CGenericItutUiMgrBase(aContext, aDataMgr,aUiManager)
{
iDataMgr = aDataMgr;
}
void CWesternItutUiMgr::ConstructL()
{
CGenericItutUiMgrBase::ConstructL();
iNormalState = CWesternItutUiStateNonPredict::NewL(this);
iCustomerState = CWesternItutUiStateCustomization::NewL(this);
iMatchSelState = CWesternItutUiStateMatchSelection::NewL(this);
iSpellState = CWesternItutUiStateSpelling::NewL(this);
}
TBool CWesternItutUiMgr::HandleCtrlEventL(TInt aEventType,
CFepUiBaseCtrl* aCtrl,
const TDesC& aEventData)
{
if (!iCurrentState)
{
return EFalse;
}
return iCurrentState->HandleCtrlEventL(aEventType, aCtrl, aEventData);
}
void CWesternItutUiMgr::SetCurrentStateL(TUiState aNewState)
{
if (iCurrentState && aNewState == iCurrentState->StateType())
{
return;
}
CGenericItutUiStateBase* newstate = NULL;
switch (aNewState)
{
case CGenericItutUiMgrBase::EStateWesternStandby:
{
newstate = iNormalState;
}
break;
case CGenericItutUiMgrBase::EStateCustomization:
{
newstate = iCustomerState;
}
break;
case CGenericItutUiMgrBase::EStateMatchSelection:
{
newstate = iMatchSelState;
}
break;
case CGenericItutUiMgrBase::EStateSpelling:
{
newstate = iSpellState;
}
break;
default:
return;
}
if (iCurrentState)
{
iCurrentState->OnExit();
}
iCurrentState = newstate;
if(DataMgr()->IsUpdate())
{
DataMgr()->SetUpdate(EFalse);
CGenericItutUiLayout* itutLayout =
static_cast<CGenericItutUiLayout*>( LayoutContext()->UiLayout() );
itutLayout->SizeChanged( NULL );
}
iCurrentState->OnEntryL();
}
void CWesternItutUiMgr::ActivateUiL()
{
if (iCurrentState)
{
iCurrentState->OnEntryL();
}
else
{
SetCurrentStateL(CGenericItutUiMgrBase::EStateWesternStandby);
}
}
void CWesternItutUiMgr::DeactivateUI()
{
if (iCurrentState)
{
iCurrentState->OnExit();
//iCurrentState = NULL;
}
}
TInt CWesternItutUiMgr::HandleCommandL(TInt aCmd, TUint8* aData)
{
if (aCmd == EItutExtCmdCustomerState ||
aCmd == ECmdPenInputFingerMatchSelection ||
aCmd == ECmdPenInputFingerSpelling)
{
if (!(*(reinterpret_cast<TBool*>(aData))))
{
// state not on
SetCurrentStateL(CGenericItutUiMgrBase::EStateWesternStandby);
return KErrNone;
}
}
switch (aCmd)
{
case EItutExtCmdCustomerState:
{
SetCurrentStateL(CGenericItutUiMgrBase::EStateCustomization);
return KErrNone;
}
case ECmdPenInputFingerMatchSelection:
{
SetCurrentStateL(CGenericItutUiMgrBase::EStateMatchSelection);
return KErrNone;
}
case ECmdPenInputFingerSpelling:
{
SetCurrentStateL(CGenericItutUiMgrBase::EStateSpelling);
UiManager()->ResetIndicatorL(UiManager()->Control(ECtrlIdSpellIndicator));
return KErrNone;
}
case ECmdPenInputDeActive:
{
if (iCurrentState &&
iCurrentState->StateType() == CGenericItutUiMgrBase::EStateMatchSelection)
{
SetCurrentStateL(CGenericItutUiMgrBase::EStateWesternStandby);
}
}
break;
case ECmdPenInputCase:
{
if (iCurrentState)
{
iLayoutContext->DataMgr()->SetCase(*((TUint*) aData));
return KErrNone;
}
}
break;
case EItutCmdCheckIcfEmpty:
{
if (iCurrentState &&
iCurrentState->StateType() == CGenericItutUiMgrBase::EStateSpelling)
{
iCurrentState->HandleCommandL(aCmd, aData);
}
}
break;
default:
break;
}
if (iCurrentState)
{
return iCurrentState->HandleCommandL(aCmd, aData);
}
return KErrNotSupported;
}
// End Of File