uifw/AvKon/src/aknsfldIndicator.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/src/aknsfldIndicator.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 2002 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: 
+*  Implements the search mode indicators used in Chinese find.
+*  Only for internal use of CAknSearchField class.
+*
+*/
+
+
+// INCLUDES
+#include "aknsfldIndicator.h"
+#include <aknEditStateIndicator.h>
+#include <gulicon.h>
+#include <AknIconArray.h>
+#include <aknenv.h>
+#include <avkon.rsg>
+#include <coecntrl.h>
+#include <barsread.h>
+    
+#include <appapaclayout.cdl.h>
+#include <AknIconUtils.h>
+#include <AknLayout2ScalableDef.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include "akntrace.h"
+
+
+// -----------------------------------------------------------------------------
+// Constructors and destructor
+// -----------------------------------------------------------------------------
+
+CAknSearchFieldIndicator::CAknSearchFieldIndicator()
+    : CAknIndicatorContainer( CAknIndicatorContainer::EFindIndicators )
+    {
+    }
+
+CAknSearchFieldIndicator* CAknSearchFieldIndicator::NewL()
+    {
+    CAknSearchFieldIndicator* self = new( ELeave ) CAknSearchFieldIndicator;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+CAknSearchFieldIndicator::~CAknSearchFieldIndicator()
+    {
+    _AKNTRACE_FUNC_ENTER;
+    delete iIndicatorArray;
+    _AKNTRACE_FUNC_EXIT;
+    }
+
+void CAknSearchFieldIndicator::ConstructL()
+    {
+    _AKNTRACE_FUNC_ENTER;
+    iIndicatorArray = new( ELeave ) CAknIconArray( 8 );
+
+    iIndicatorArray->ConstructFromResourceL( 
+        R_AVKON_FIND_PANE_INDICATOR_ICONS );
+
+    // construct CAknIndicatorContainer base
+
+    TResourceReader reader;
+    iCoeEnv->CreateResourceReaderLC( reader, R_AVKON_DUMMY_FIND_INDICATORS );
+    ConstructFromResourceL( reader );
+    CleanupStack::PopAndDestroy(); // reader
+    _AKNTRACE_FUNC_EXIT;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknSearchFieldIndicator::Draw()
+// -----------------------------------------------------------------------------
+
+void CAknSearchFieldIndicator::Draw( const TRect& /*aRect*/ ) const
+    {
+    // Draw the search mode indicator
+    CWindowGc& gc = SystemGc();
+    iIndicatorLayout.DrawImage( gc,
+        (*iIndicatorArray)[ iIndicatorIndex ]->Bitmap(), NULL );
+    }
+
+// -----------------------------------------------------------------------------
+// CAknSearchFieldIndicator::SizeChanged()
+// -----------------------------------------------------------------------------
+
+void CAknSearchFieldIndicator::SizeChanged()
+    {
+    switch ( iFlags )
+        {
+        case CAknSearchField::EPopup:
+            iIndicatorLayout.LayoutRect( Rect(),
+                                         AknLayoutScalable_Avkon::find_popup_pane());
+            iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
+                                         AknLayoutScalable_Avkon::input_popup_find_pane_cp() );    
+            iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
+                                         AknLayoutScalable_Avkon::input_popup_find_pane_g1( 0 ) );
+            break;
+            
+        case CAknSearchField::EPopupWindow:
+            iIndicatorLayout.LayoutRect( Rect(),
+                                         AknLayoutScalable_Avkon::input_popup_find_pane_cp() );
+            iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
+                                         AknLayoutScalable_Avkon::input_popup_find_pane_g1( 0 ) );
+            break;
+            
+        case CAknSearchField::EPinb:
+            iIndicatorLayout.LayoutRect( Rect(),
+                                         AppApacLayout::Find_pane_elements__pinb__Line_5() );
+            break;
+            
+        case CAknSearchField::EPopupAdaptiveSearch:
+            iIndicatorLayout.LayoutRect( Rect(),
+                                         AKN_LAYOUT_WINDOW_Find_pop_up_window_elements_Line_5 );
+            break;
+            
+        case CAknSearchField::EPopupAdaptiveSearchWindow:
+            iIndicatorLayout.LayoutRect( Rect(),
+                                         AknLayoutScalable_Avkon::input_popup_find_pane_cp() );
+            iIndicatorLayout.LayoutRect( iIndicatorLayout.Rect(),
+                                         AknLayoutScalable_Avkon::input_popup_find_pane_g1( 0 ) );
+            break;    
+            
+        default: //(fixed find)
+            iIndicatorLayout.LayoutRect( Rect(),
+                                         AKN_LAYOUT_WINDOW_Find_pane_elements_Line_6 );
+            break;
+        }
+
+    for ( TInt a=0 ; a < iIndicatorArray->Count() ; a++ )
+        {
+        AknIconUtils::SetSize( (*iIndicatorArray)[ a ]->Bitmap(), iIndicatorLayout.Rect().Size() );
+        }
+
+    }
+
+// -----------------------------------------------------------------------------
+// CAknSearchFieldIndicator::SetState()
+// -----------------------------------------------------------------------------
+
+void CAknSearchFieldIndicator::SetState( TAknEditingState aState )
+    {
+    TSearchIndicatorIndex oldIndex( iIndicatorIndex );
+    _AKNTRACE( "[%s][%s] editing state is : %d", "CAknSearchFieldIndicator", __FUNCTION__, aState );
+
+    switch ( aState )
+        {
+        case EMultitapLower:            // abc search
+            iIndicatorIndex = ESearchSmall;
+            break;
+
+        case ENumeric:                  // number search
+            iIndicatorIndex = ESearchNumeric;
+            break;
+
+        case EIndicatorStatePinyin:     // pinyin search
+            iIndicatorIndex = ESearchPinyin;
+            break;
+
+        case EIndicatorStateZhuyin:     // zhuyin search
+            iIndicatorIndex = ESearchZhuyin;
+            break;
+            
+        case EIndicatorStateStroke:     // stroke search
+            // for simple Chinese
+            iIndicatorIndex = ESearchStrokeSimple;
+            break;
+            
+        case EIndicatorStateCangJie:
+            iIndicatorIndex = ESearchCangJie;
+            break;
+            
+        case EIndicatorStateStrokeTrad:
+            // for traditional Chinese
+            iIndicatorIndex = ESearchStrokeTraditional;
+            break;
+
+        case EIndicatorStateZhuyinFind: // zhuyin symbol search
+            iIndicatorIndex = ESearchZhuyinSymbol;
+            break;
+
+        case EIndicatorStateStrokeFind: // stroke symbol search
+            iIndicatorIndex = ESearchStrokeSymbol;
+            break;
+
+        case EIndicatorStateJapanesePredictive:
+            iIndicatorIndex = ESearchPredictiveJapanese;
+            break;
+
+        case EIndicatorStateHiraganaKanji:
+            iIndicatorIndex = ESearchHiraganaKanji;
+            break;
+
+        case EIndicatorStateHalfKatakana:
+            iIndicatorIndex = ESearchKatakana;
+            break;
+
+        case EIndicatorStateFullKatakana:
+            iIndicatorIndex = ESearchFullKatakana;
+            break;
+
+        case EIndicatorStateFullLatinLower:
+            iIndicatorIndex = ESearchFullSmall;
+            break;
+
+        case EIndicatorStateFullNumeric:
+            iIndicatorIndex = ESearchFullNumeric;
+            break;
+
+        case EIndicatorStateHiragana:
+            iIndicatorIndex = ESearchHiragana;
+            break;
+
+        case EMultitapThai:
+            iIndicatorIndex = ESearchThai;
+            break;
+
+        default:
+            break;
+        }
+    _AKNTRACE( "[%s][%s] indicator index is : %d", "CAknSearchFieldIndicator", __FUNCTION__, iIndicatorIndex );
+
+    if ( iIndicatorIndex != oldIndex )
+        {
+        DrawDeferred(); // update the new indicator on the screen
+        }
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CAknSearchFieldIndicator::IndicatorContainer()
+// -----------------------------------------------------------------------------
+
+CAknIndicatorContainer* CAknSearchFieldIndicator::IndicatorContainer()
+    {
+    return this;
+    }
+    
+void CAknSearchFieldIndicator::SetSearchFieldStyle(CAknSearchField::TSearchFieldStyle aflags)
+    {
+    _AKNTRACE( "[%s][%s] search field style is : %d", "CAknSearchFieldIndicator", __FUNCTION__, aflags );
+    iFlags = aflags;
+    }
+
+// End of File