textinput/peninputsplititut/src/peninputsplititutwesternuistatespelling.cpp
branchRCL_3
changeset 21 ecbabf52600f
equal deleted inserted replaced
20:ebd48d2de13c 21:ecbabf52600f
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0""
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  drop-down list control
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <AknFepGlobalEnums.h>
       
    20 #include <peninputsplititutnew.rsg>
       
    21 #include <peninputlayoutmultilineicf.h>
       
    22 #include <StringLoader.h>
       
    23 #include <peninputcommonbutton.h>
       
    24 #include <peninputlayout.h>
       
    25 #include <peninputcmd.h>
       
    26 #include <peninputlabel.h>
       
    27 
       
    28 #include "peninputsplititutwesternuistatespelling.h"
       
    29 #include "peninputsplititutuimgrbase.h"
       
    30 #include "peninputsplititutdatamgr.h"
       
    31 #include "peninputsplititutlayoutcontext.h"
       
    32 #include "peninputsplititutconverter.h"
       
    33 #include "peninputsplititutlayout.h"
       
    34 #include "peninputcommonbgctrl.h"
       
    35 #include "peninputsplititutwindowmanager.h"
       
    36 #include "peninputsplititutwindow.h"
       
    37 
       
    38 CWesternSplitItutUiStateSpelling* CWesternSplitItutUiStateSpelling::NewL(CSplitItutUiMgrBase* aOwner)
       
    39     {
       
    40     CWesternSplitItutUiStateSpelling* self = new (ELeave) CWesternSplitItutUiStateSpelling(aOwner);
       
    41     CleanupStack::PushL(self);
       
    42     self->ConstructL(); 
       
    43     CleanupStack::Pop(self);
       
    44     return self;
       
    45     }
       
    46 
       
    47 CWesternSplitItutUiStateSpelling::~CWesternSplitItutUiStateSpelling()
       
    48     {
       
    49     }
       
    50 
       
    51 CWesternSplitItutUiStateSpelling::CWesternSplitItutUiStateSpelling(CSplitItutUiMgrBase* aOwner)
       
    52                                                         :CSplitItutUiStateBase(aOwner)
       
    53     {
       
    54     iICF = static_cast<CFepLayoutMultiLineIcf*>(iOwner->LayoutContext()->Control(ECtrlIdICF));
       
    55     }
       
    56 
       
    57 void CWesternSplitItutUiStateSpelling::ConstructL()
       
    58     {
       
    59     CSplitItutUiStateBase::ConstructL();
       
    60     }
       
    61 
       
    62 void CWesternSplitItutUiStateSpelling::CreateTextBtnIfNeededL(CAknFepCtrlCommonButton*& aBtn, 
       
    63                                                          TInt aCtrlId,
       
    64                                                          TInt aCtrlPos,
       
    65                                                          TInt aTextResId,
       
    66                                                          TAknTextLineLayout aTextFormat)
       
    67     {
       
    68     if (!aBtn)
       
    69         {
       
    70         aBtn = CAknFepCtrlCommonButton::NewL(iOwner->LayoutContext()->UiLayout(), 
       
    71                                              aCtrlId,
       
    72                                              KAknsIIDQsnFrFunctionButtonNormal,
       
    73                                              KAknsIIDQsnFrFunctionButtonPressed,
       
    74                                              KAknsIIDQsnFrFunctionButtonInactive);
       
    75         aBtn->SetRect(TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(aCtrlPos)));
       
    76         HBufC* btntext = StringLoader::LoadLC(aTextResId);
       
    77         aBtn->SetTextFormat(aTextFormat);
       
    78         aBtn->SetTextL(*btntext);
       
    79         aBtn->SetTextColorIndex( EAknsCIQsnTextColorsCG65 );
       
    80         CleanupStack::PopAndDestroy(btntext);
       
    81         iOwner->LayoutContext()->UiLayout()->AddControlL(aBtn);
       
    82         }
       
    83     }
       
    84 
       
    85 void CWesternSplitItutUiStateSpelling::OnEntryL()
       
    86     {
       
    87     TInt keypadResId = KInvalidResId;
       
    88     switch (iOwner->DataMgr()->InputMode())
       
    89         {
       
    90         case ENumber:
       
    91             keypadResId = R_FINGER_INPUT_KEYPAD_NUMBER;
       
    92             break;
       
    93         case ELatin:
       
    94             keypadResId = iOwner->DataMgr()->KeypadResourceId();
       
    95             break;
       
    96         default:
       
    97             break;                
       
    98         }
       
    99     //hide bubble in the first place.    
       
   100     iICF->HideBubble();
       
   101 
       
   102     // update resource id of keypad    
       
   103     iOwner->DataMgr()->NotifyChangeControlLayout(
       
   104         MItutPropertySubscriber::EItutPropertyKeypadResourceId, keypadResId);
       
   105 
       
   106     // hide not needed controls
       
   107     //iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)->Hide(ETrue);
       
   108     //iOwner->LayoutContext()->Control(ECtrlIdArrowRight)->Hide(ETrue);
       
   109     iOwner->LayoutContext()->ShowArrowBtn( EBtnArrowLeft | EBtnArrowRight );
       
   110     iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(ETrue);
       
   111     iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(ETrue);
       
   112     
       
   113     TAknTextLineLayout btntextformat = TItutDataConverter::AnyToTextLine(
       
   114                                                iOwner->DataMgr()->RequestData(EBtnTextLine));
       
   115     CreateTextBtnIfNeededL(iOk, ECtrlIdOkBtn, EItutPosOk, R_PENINPUT_FINGER_OK, btntextformat);
       
   116     iOk->SetReady(ETrue);
       
   117     iOk->Hide(EFalse);
       
   118     iICF->IsEmpty() ? iOk->SetDimmed(ETrue) : iOk->SetDimmed(EFalse);
       
   119 
       
   120     CreateTextBtnIfNeededL(iCancel, ECtrlIdCancelBtn, EItutPosCancel, 
       
   121                            R_PENINPUT_FINGER_CANCEL, btntextformat);
       
   122     iCancel->SetReady(ETrue);
       
   123     iCancel->Hide(EFalse);
       
   124 
       
   125     iOwner->DataMgr()->SetSpellMode(ETrue);
       
   126     iICF->SetLineSeparatorAfterPrompt(ETrue);
       
   127     
       
   128     ReCalcLayoutL();
       
   129 
       
   130     iICF->Hide( EFalse );
       
   131     iOwner->DataMgr()->SetUpdate(ETrue);
       
   132     }
       
   133 
       
   134 void CWesternSplitItutUiStateSpelling::OnExit()
       
   135     {    
       
   136 	iICF->HideBubble(); //Hide bubble when full screen ITUT closed
       
   137     iOk->Hide(ETrue);
       
   138     iCancel->Hide(ETrue);
       
   139     iOwner->DataMgr()->SetSpellMode(EFalse);
       
   140     iICF->Hide( ETrue );
       
   141     iOwner->LayoutContext()->ShowArrowBtn(0);
       
   142     }
       
   143 
       
   144 CSplitItutUiMgrBase::TUiState CWesternSplitItutUiStateSpelling::StateType()
       
   145     {
       
   146     return CSplitItutUiMgrBase::EStateSpelling;
       
   147     }
       
   148 
       
   149 TInt CWesternSplitItutUiStateSpelling::HandleCommandL(TInt aCmd, TUint8* /*aData*/)
       
   150     {
       
   151     switch (aCmd) 
       
   152         {
       
   153         case EItutExtCmdSizeChanged:
       
   154             {
       
   155 			ReCalcLayoutL();
       
   156             return KErrNone;
       
   157             }
       
   158         
       
   159        	case EItutCmdCheckIcfEmpty:
       
   160        	    {
       
   161 		    iICF->IsEmpty() ? iOk->SetDimmed(ETrue) : iOk->SetDimmed(EFalse);
       
   162             return KErrNone;
       
   163        	    }
       
   164         default:
       
   165             break;
       
   166         }
       
   167 
       
   168     return KErrNotSupported;    
       
   169     }
       
   170 
       
   171 TBool CWesternSplitItutUiStateSpelling::HandleCtrlEventL(TInt aEventType, 
       
   172                                                     CFepUiBaseCtrl* aCtrl, 
       
   173                                                     const TDesC& /*aEventData*/)
       
   174     {
       
   175     switch (aEventType)
       
   176         {
       
   177         case EEventButtonUp:
       
   178             {
       
   179             TInt ctrlid = aCtrl->ControlId();
       
   180 
       
   181             if (ctrlid != ECtrlIdOkBtn && ctrlid != ECtrlIdCancelBtn)
       
   182                 {
       
   183                 return EFalse;
       
   184                 }
       
   185 
       
   186             TBuf<4> buf;
       
   187             TBool exitbyok = (ctrlid == ECtrlIdOkBtn);
       
   188             buf.Append(reinterpret_cast<TText*>(&exitbyok), sizeof(TBool)/sizeof(TText));
       
   189             
       
   190             iOwner->LayoutContext()->UiLayout()->SignalOwner(ESignalExitSpellMode, buf);
       
   191             return ETrue;
       
   192             }
       
   193         default:
       
   194             break;
       
   195         }
       
   196 
       
   197     return EFalse;    
       
   198     }
       
   199 
       
   200 void CWesternSplitItutUiStateSpelling::ReCalcLayoutL()
       
   201 	{
       
   202 	// Update "OK" and "Cancel" position
       
   203     TAknTextLineLayout btntextformat = TItutDataConverter::AnyToTextLine(
       
   204                                                  iOwner->DataMgr()->RequestData(EBtnTextLine));
       
   205     TRect btnrect = TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(EItutPosOk));
       
   206     iOk->SetTextFormat(btntextformat);
       
   207     iOk->SizeChanged(btnrect, btnrect, ETrue);
       
   208 
       
   209     btnrect = TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(EItutPosCancel));
       
   210     iCancel->SetTextFormat(btntextformat);
       
   211     iCancel->SizeChanged(btnrect, btnrect, ETrue);
       
   212 
       
   213     // Update key position
       
   214     iOwner->LayoutContext()->ApplyVariantLafDataForSpellL();	
       
   215 	}
       
   216 	
       
   217 // End Of File