uifw/AvKon/src/aknsfldIndicator.cpp
changeset 0 2f259fa3e83a
equal deleted inserted replaced
-1:000000000000 0:2f259fa3e83a
       
     1 /*
       
     2 * Copyright (c) 2002 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: 
       
    15 *  Implements the search mode indicators used in Chinese find.
       
    16 *  Only for internal use of CAknSearchField class.
       
    17 *
       
    18 */
       
    19 
       
    20 
       
    21 // INCLUDES
       
    22 #include "aknsfldIndicator.h"
       
    23 #include <aknEditStateIndicator.h>
       
    24 #include <gulicon.h>
       
    25 #include <AknIconArray.h>
       
    26 #include <aknenv.h>
       
    27 #include <avkon.rsg>
       
    28 #include <coecntrl.h>
       
    29 #include <barsread.h>
       
    30     
       
    31 #include <appapaclayout.cdl.h>
       
    32 #include <AknIconUtils.h>
       
    33 #include <AknLayout2ScalableDef.h>
       
    34 #include <aknlayoutscalable_avkon.cdl.h>
       
    35 #include "akntrace.h"
       
    36 
       
    37 
       
    38 // -----------------------------------------------------------------------------
       
    39 // Constructors and destructor
       
    40 // -----------------------------------------------------------------------------
       
    41 
       
    42 CAknSearchFieldIndicator::CAknSearchFieldIndicator()
       
    43     : CAknIndicatorContainer( CAknIndicatorContainer::EFindIndicators )
       
    44     {
       
    45     }
       
    46 
       
    47 CAknSearchFieldIndicator* CAknSearchFieldIndicator::NewL()
       
    48     {
       
    49     CAknSearchFieldIndicator* self = new( ELeave ) CAknSearchFieldIndicator;
       
    50     CleanupStack::PushL( self );
       
    51     self->ConstructL();
       
    52     CleanupStack::Pop();
       
    53     return self;
       
    54     }
       
    55 
       
    56 CAknSearchFieldIndicator::~CAknSearchFieldIndicator()
       
    57     {
       
    58     _AKNTRACE_FUNC_ENTER;
       
    59     delete iIndicatorArray;
       
    60     _AKNTRACE_FUNC_EXIT;
       
    61     }
       
    62 
       
    63 void CAknSearchFieldIndicator::ConstructL()
       
    64     {
       
    65     _AKNTRACE_FUNC_ENTER;
       
    66     iIndicatorArray = new( ELeave ) CAknIconArray( 8 );
       
    67 
       
    68     iIndicatorArray->ConstructFromResourceL( 
       
    69         R_AVKON_FIND_PANE_INDICATOR_ICONS );
       
    70 
       
    71     // construct CAknIndicatorContainer base
       
    72 
       
    73     TResourceReader reader;
       
    74     iCoeEnv->CreateResourceReaderLC( reader, R_AVKON_DUMMY_FIND_INDICATORS );
       
    75     ConstructFromResourceL( reader );
       
    76     CleanupStack::PopAndDestroy(); // reader
       
    77     _AKNTRACE_FUNC_EXIT;
       
    78     }
       
    79 
       
    80 // -----------------------------------------------------------------------------
       
    81 // CAknSearchFieldIndicator::Draw()
       
    82 // -----------------------------------------------------------------------------
       
    83 
       
    84 void CAknSearchFieldIndicator::Draw( const TRect& /*aRect*/ ) const
       
    85     {
       
    86     // Draw the search mode indicator
       
    87     CWindowGc& gc = SystemGc();
       
    88     iIndicatorLayout.DrawImage( gc,
       
    89         (*iIndicatorArray)[ iIndicatorIndex ]->Bitmap(), NULL );
       
    90     }
       
    91 
       
    92 // -----------------------------------------------------------------------------
       
    93 // CAknSearchFieldIndicator::SizeChanged()
       
    94 // -----------------------------------------------------------------------------
       
    95 
       
    96 void CAknSearchFieldIndicator::SizeChanged()
       
    97     {
       
    98     switch ( iFlags )
       
    99         {
       
   100         case CAknSearchField::EPopup:
       
   101             iIndicatorLayout.LayoutRect( Rect(),
       
   102                                          AknLayoutScalable_Avkon::find_popup_pane());
       
   103             iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
       
   104                                          AknLayoutScalable_Avkon::input_popup_find_pane_cp() );    
       
   105             iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
       
   106                                          AknLayoutScalable_Avkon::input_popup_find_pane_g1( 0 ) );
       
   107             break;
       
   108             
       
   109         case CAknSearchField::EPopupWindow:
       
   110             iIndicatorLayout.LayoutRect( Rect(),
       
   111                                          AknLayoutScalable_Avkon::input_popup_find_pane_cp() );
       
   112             iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
       
   113                                          AknLayoutScalable_Avkon::input_popup_find_pane_g1( 0 ) );
       
   114             break;
       
   115             
       
   116         case CAknSearchField::EPinb:
       
   117             iIndicatorLayout.LayoutRect( Rect(),
       
   118                                          AppApacLayout::Find_pane_elements__pinb__Line_5() );
       
   119             break;
       
   120             
       
   121         case CAknSearchField::EPopupAdaptiveSearch:
       
   122             iIndicatorLayout.LayoutRect( Rect(),
       
   123                                          AKN_LAYOUT_WINDOW_Find_pop_up_window_elements_Line_5 );
       
   124             break;
       
   125             
       
   126         case CAknSearchField::EPopupAdaptiveSearchWindow:
       
   127             iIndicatorLayout.LayoutRect( Rect(),
       
   128                                          AknLayoutScalable_Avkon::input_popup_find_pane_cp() );
       
   129             iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
       
   130                                          AknLayoutScalable_Avkon::input_popup_find_pane_g1( 0 ) );
       
   131             break;    
       
   132             
       
   133         default: //(fixed find)
       
   134             iIndicatorLayout.LayoutRect( Rect(),
       
   135                                          AKN_LAYOUT_WINDOW_Find_pane_elements_Line_6 );
       
   136             break;
       
   137         }
       
   138 
       
   139     for ( TInt a=0 ; a < iIndicatorArray->Count() ; a++ )
       
   140         {
       
   141         AknIconUtils::SetSize( (*iIndicatorArray)[ a ]->Bitmap(), iIndicatorLayout.Rect().Size() );
       
   142         }
       
   143 
       
   144     }
       
   145 
       
   146 // -----------------------------------------------------------------------------
       
   147 // CAknSearchFieldIndicator::SetState()
       
   148 // -----------------------------------------------------------------------------
       
   149 
       
   150 void CAknSearchFieldIndicator::SetState( TAknEditingState aState )
       
   151     {
       
   152     TSearchIndicatorIndex oldIndex( iIndicatorIndex );
       
   153     _AKNTRACE( "[%s][%s] editing state is : %d", "CAknSearchFieldIndicator", __FUNCTION__, aState );
       
   154 
       
   155     switch ( aState )
       
   156         {
       
   157         case EMultitapLower:            // abc search
       
   158             iIndicatorIndex = ESearchSmall;
       
   159             break;
       
   160 
       
   161         case ENumeric:                  // number search
       
   162             iIndicatorIndex = ESearchNumeric;
       
   163             break;
       
   164 
       
   165         case EIndicatorStatePinyin:     // pinyin search
       
   166             iIndicatorIndex = ESearchPinyin;
       
   167             break;
       
   168 
       
   169         case EIndicatorStateZhuyin:     // zhuyin search
       
   170             iIndicatorIndex = ESearchZhuyin;
       
   171             break;
       
   172             
       
   173         case EIndicatorStateStroke:     // stroke search
       
   174             // for simple Chinese
       
   175             iIndicatorIndex = ESearchStrokeSimple;
       
   176             break;
       
   177             
       
   178         case EIndicatorStateCangJie:
       
   179             iIndicatorIndex = ESearchCangJie;
       
   180             break;
       
   181             
       
   182         case EIndicatorStateStrokeTrad:
       
   183             // for traditional Chinese
       
   184             iIndicatorIndex = ESearchStrokeTraditional;
       
   185             break;
       
   186 
       
   187         case EIndicatorStateZhuyinFind: // zhuyin symbol search
       
   188             iIndicatorIndex = ESearchZhuyinSymbol;
       
   189             break;
       
   190 
       
   191         case EIndicatorStateStrokeFind: // stroke symbol search
       
   192             iIndicatorIndex = ESearchStrokeSymbol;
       
   193             break;
       
   194 
       
   195         case EIndicatorStateJapanesePredictive:
       
   196             iIndicatorIndex = ESearchPredictiveJapanese;
       
   197             break;
       
   198 
       
   199         case EIndicatorStateHiraganaKanji:
       
   200             iIndicatorIndex = ESearchHiraganaKanji;
       
   201             break;
       
   202 
       
   203         case EIndicatorStateHalfKatakana:
       
   204             iIndicatorIndex = ESearchKatakana;
       
   205             break;
       
   206 
       
   207         case EIndicatorStateFullKatakana:
       
   208             iIndicatorIndex = ESearchFullKatakana;
       
   209             break;
       
   210 
       
   211         case EIndicatorStateFullLatinLower:
       
   212             iIndicatorIndex = ESearchFullSmall;
       
   213             break;
       
   214 
       
   215         case EIndicatorStateFullNumeric:
       
   216             iIndicatorIndex = ESearchFullNumeric;
       
   217             break;
       
   218 
       
   219         case EIndicatorStateHiragana:
       
   220             iIndicatorIndex = ESearchHiragana;
       
   221             break;
       
   222 
       
   223         case EMultitapThai:
       
   224             iIndicatorIndex = ESearchThai;
       
   225             break;
       
   226 
       
   227         default:
       
   228             break;
       
   229         }
       
   230     _AKNTRACE( "[%s][%s] indicator index is : %d", "CAknSearchFieldIndicator", __FUNCTION__, iIndicatorIndex );
       
   231 
       
   232     if ( iIndicatorIndex != oldIndex )
       
   233         {
       
   234         DrawDeferred(); // update the new indicator on the screen
       
   235         }
       
   236     }
       
   237     
       
   238 
       
   239 // -----------------------------------------------------------------------------
       
   240 // CAknSearchFieldIndicator::IndicatorContainer()
       
   241 // -----------------------------------------------------------------------------
       
   242 
       
   243 CAknIndicatorContainer* CAknSearchFieldIndicator::IndicatorContainer()
       
   244     {
       
   245     return this;
       
   246     }
       
   247     
       
   248 void CAknSearchFieldIndicator::SetSearchFieldStyle(CAknSearchField::TSearchFieldStyle aflags)
       
   249     {
       
   250     _AKNTRACE( "[%s][%s] search field style is : %d", "CAknSearchFieldIndicator", __FUNCTION__, aflags );
       
   251     iFlags = aflags;
       
   252     }
       
   253 
       
   254 // End of File