uifw/AvKon/src/AknBatteryIcon.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/src/AknBatteryIcon.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 2002-2007 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:  Control to show signal icon indicator on the
+*                status pane's battery pane.
+*
+*/
+
+
+// INCLUDE FILES
+#include "AknBatteryIcon.h"
+#include "aknconsts.h"
+#include "AknUtils.h"
+#include "aknenv.h"
+#include "AknIconUtils.h"
+#include "AknStatuspaneUtils.h"
+#include "aknappui.h"
+
+#include <eikspane.h>
+#include <AknsDrawUtils.h>
+#include <eikenv.h>
+#include <avkon.mbg>
+#include <AknsDrawUtils.h>
+#include <akniconconfig.h>
+
+#include <AknTasHook.h>
+CAknBatteryIcon::CAknBatteryIcon() :
+    iIconState( EAknBatteryIndicatorNormal )
+	{
+	}
+
+CAknBatteryIcon::~CAknBatteryIcon()
+	{
+	AKNTASHOOK_REMOVE();
+    AknsUtils::DeregisterControlPosition( this );
+    delete iBatteryIcon;
+    delete iBatteryIconMask;
+	}
+
+CAknBatteryIcon* CAknBatteryIcon::NewL()
+	{
+	CAknBatteryIcon* self=CAknBatteryIcon::NewLC();
+	CleanupStack::Pop();
+	return self;
+	}
+
+
+CAknBatteryIcon* CAknBatteryIcon::NewLC()
+	{
+	CAknBatteryIcon* self=new(ELeave) CAknBatteryIcon;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	AKNTASHOOK_ADDL( self, "CAknBatteryIcon" );
+	return self;
+	}
+
+void CAknBatteryIcon::ConstructL()
+	{
+	UpdateColorBitmapL( EAknsCIQsnIconColorsCG6 );
+	}
+
+void CAknBatteryIcon::SizeChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+
+    TInt colorIndex = 0;
+    if ( AknStatuspaneUtils::StaconPaneActive() ||
+         AknStatuspaneUtils::FlatLayoutActive() )
+        {
+        colorIndex = EAknsCIQsnIconColorsCG24;
+        }
+    else
+        {
+        colorIndex = EAknsCIQsnIconColorsCG6;
+        }
+
+	if ( iColorIndex != colorIndex )
+	    {
+    	TRAP_IGNORE( UpdateColorBitmapL( colorIndex ) );
+	    }
+
+    AknIconUtils::SetSize( iBatteryIcon, Size() );
+    }
+
+void CAknBatteryIcon::PositionChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+void CAknBatteryIcon::Draw( const TRect& /*aRect*/ ) const
+    {        
+    if ( AknStatuspaneUtils::StaconPaneActive() )
+        {
+        DrawInStaconPane( Rect() );
+        }
+    else if ( AknStatuspaneUtils::FlatLayoutActive() )
+        {
+        DrawInFlatStatusPane( Rect() );
+        }
+    else
+        {
+        DrawInNormalStatusPane( Rect() );
+        }
+    }
+
+void CAknBatteryIcon::UpdateColorBitmapL( TInt aColorIndex )
+    {
+    iColorIndex = aColorIndex;
+	SetBatteryIconL( iIconState );
+    }
+
+void CAknBatteryIcon::HandleResourceChange( TInt aType ) 
+    {
+    CCoeControl::HandleResourceChange( aType );
+    if ( aType == KEikColorResourceChange || aType == KAknsMessageSkinChange )
+        {
+        iColorIndex = 0;
+        // SizeChanged updates bitmap which is used for color skinning the icons.
+		SizeChanged();
+        }
+    }
+
+
+void CAknBatteryIcon::SetBatteryIconL( TInt aIconState )
+    {
+    if ( aIconState >= EAknBatteryIndicatorNormal &&
+         aIconState <= EAknBatteryIndicatorPowerSave )
+        {
+        delete iBatteryIcon;
+    	iBatteryIcon = NULL;
+    	delete iBatteryIconMask;
+    	iBatteryIconMask = NULL;
+
+        TInt iconID;
+        TInt maskID;
+        TAknsItemID skinItemID;
+        skinItemID.Set( 0, 0 );
+        
+        switch ( aIconState )
+            {
+            case EAknBatteryIndicatorNormal:
+            default:
+                iconID     = EMbmAvkonQgn_prop_battery_icon;
+                maskID     = EMbmAvkonQgn_prop_battery_icon_mask;
+                skinItemID = KAknsIIDQgnPropBatteryIcon;
+                break;
+            case EAknBatteryIndicatorPowerSave:
+                iconID = EMbmAvkonQgn_prop_battery_ps_activate;
+                maskID = EMbmAvkonQgn_prop_battery_ps_activate_mask;
+                break;
+            }
+
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+        AknsUtils::CreateColorIconL(
+            skin,
+            skinItemID,
+            KAknsIIDQsnIconColors,
+            iColorIndex,
+            iBatteryIcon,
+            iBatteryIconMask,
+            KAvkonBitmapFile,
+            iconID,
+            maskID,
+            KRgbGray );
+            
+        iIconState = aIconState;
+        
+        AknIconUtils::SetSize( iBatteryIcon, Size() );
+        }
+    }
+
+
+TInt CAknBatteryIcon::IconState()
+    {
+    return iIconState;
+    }
+
+
+void CAknBatteryIcon::DrawInNormalStatusPane( const TRect& /*aRect*/ ) const
+    {
+	CWindowGc& gc = SystemGc();
+	TRect rect( Rect() );
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    gc.SetBrushColor( AKN_LAF_COLOR( KStatusPaneBackgroundColor ) );
+
+    // Draws battery icon
+    gc.BitBltMasked( 
+        rect.iTl,
+        iBatteryIcon,
+        TRect( rect.Size() ),
+        iBatteryIconMask,
+        ETrue );
+    }
+
+
+void CAknBatteryIcon::DrawInStaconPane( const TRect& /*aRect*/ ) const
+    {
+	CWindowGc& gc = SystemGc();
+	TRect rect( Rect() );
+
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+
+    // Draws battery icon
+    gc.BitBltMasked( 
+        rect.iTl,
+        iBatteryIcon, 
+        TRect( rect.Size() ), 
+        iBatteryIconMask,
+        ETrue );    
+    }
+
+
+void CAknBatteryIcon::DrawInFlatStatusPane( const TRect& /*aRect*/ ) const
+    {
+	CWindowGc& gc = SystemGc();
+	TRect rect( Rect() );
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    gc.SetBrushColor( AKN_LAF_COLOR( KStatusPaneBackgroundColor ) );
+
+    // Draws battery icon
+    gc.BitBltMasked( 
+        rect.iTl,
+        iBatteryIcon,
+        TRect( rect.Size() ),
+        iBatteryIconMask,
+        ETrue );
+    }
+
+//  End of File