--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/src/cambatterypanedrawer.cpp Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,345 @@
+/*
+* Copyright (c) 2007-2008 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: Implemantation for CCamBatteryPaneDrawer class.
+*
+* Copyright © 2007-2008 Nokia. All rights reserved.
+* This material, including documentation and any related computer
+* programs, is protected by copyright controlled by Nokia. All
+* rights are reserved. Copying, including reproducing, storing,
+* adapting or translating, any or all of this material requires the
+* prior written consent of Nokia. This material also contains
+* confidential information which may not be disclosed to others
+* without the prior written consent of Nokia.
+
+*
+*
+*/
+
+
+#include "cambatterypanedrawer.h"
+
+#include <AknIconUtils.h>
+#include <AknUtils.h>
+#include <cameraapp.mbg>
+#include <aknconsts.h> // KAvkonBitmapFile
+#include <fbs.h> // FbsBitmap
+#include <AknsUtils.h>
+#include <AknIconUtils.h>
+#include <akniconconfig.h>
+#include <AknLayoutDef.h> // TAknWindowLineLayout
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+
+#include <cameraapp.rsg>
+#include <vgacamsettings.rsg>
+
+#include "CamUtility.h"
+#include "cambitmapitem.h"
+
+const TInt KCamDefaultBatteryCellHeight = 3;
+const TInt KCamDefaultBatteryCellMargin = 1;
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::CCamBatteryPaneDrawer
+// ---------------------------------------------------------------------------
+//
+CCamBatteryPaneDrawer::CCamBatteryPaneDrawer()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::~CCamBatteryPaneDrawer
+// ---------------------------------------------------------------------------
+//
+CCamBatteryPaneDrawer::~CCamBatteryPaneDrawer()
+ {
+ PRINT ( _L("Camera => ~CCamBatteryPaneDrawer") );
+
+ DeleteIcons();
+
+ PRINT ( _L("Camera <= ~CCamBatteryPaneDrawer") );
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::NewL
+// ---------------------------------------------------------------------------
+//
+CCamBatteryPaneDrawer* CCamBatteryPaneDrawer::NewL()
+ {
+ PRINT ( _L("Camera => CCamBatteryPaneDrawer::NewL") );
+
+ CCamBatteryPaneDrawer* self = new (ELeave) CCamBatteryPaneDrawer();
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop(); // self
+ PRINT ( _L("Camera <= CCamBatteryPaneDrawer::NewL") );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::ConstructL()
+ {
+ PRINT( _L("Camera => CCamBatteryPaneDrawer::ConstructL") );
+
+ // Load icon bitmaps
+ LoadIconsL();
+ // Load/calculate layout data
+ LoadLayoutsL();
+
+ PRINT( _L("Camera <= CCamBatteryPaneDrawer::ConstructL") );
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::SetBatteryStrength
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::SetBatteryStrength( TInt aBatteryStrength )
+ {
+ iBatteryStrength = aBatteryStrength;
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::SetLocation
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::SetLocation( const TPoint& aLocation )
+ {
+ iRect = TRect( aLocation, iRect.Size() );
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::LoadIconsL
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::LoadIconsL()
+ {
+ PRINT( _L("Camera => CCamBatteryPaneDrawer::LoadIconsL") );
+
+ // Delete existing icon bitmaps
+ DeleteIcons();
+
+ // Load and resize battery icon and mask
+ delete iBatteryIcon;
+ iBatteryIcon = NULL;
+ iBatteryIcon = CCamBitmapItem::NewL(
+ EMbmCameraappQgn_prop_cam_battery_icon,
+ EMbmCameraappQgn_prop_cam_battery_icon_mask );
+
+ // Load and resize battery strength icon and mask
+ delete iBatteryStrengthIcon;
+ iBatteryStrengthIcon = NULL;
+ iBatteryStrengthIcon = CCamBitmapItem::NewL(
+ EMbmCameraappQgn_indi_cam_battery_strength,
+ EMbmCameraappQgn_indi_cam_battery_strength_mask );
+
+ PRINT( _L("Camera <= CCamBatteryPaneDrawer::LoadIconsL") );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::Rect
+// ---------------------------------------------------------------------------
+//
+TRect CCamBatteryPaneDrawer::Rect() const
+ {
+ return iRect;
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::Draw
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::Draw( CBitmapContext& aGc ) const
+ {
+ // Make sure that no brush is being used
+ aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
+
+ if( iBatteryStrengthIcon )
+ {
+ TSize iconSize = iBatteryStrengthIcon->BitmapSize();
+
+ TRect strengthIconCropRect(
+ 0,
+ iconSize.iHeight - BatteryStrengthIconHeight( iBatteryStrength ),
+ iconSize.iWidth,
+ iconSize.iHeight );
+
+ // Draw the icon, with correct battery strength
+ iBatteryStrengthIcon->DrawPartial(
+ aGc,
+ iBatteryStrengthIcon->LayoutRect(),
+ strengthIconCropRect );
+ }
+
+ if( iBatteryIcon )
+ {
+ iBatteryIcon->Draw( aGc );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::ClearBattery
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::ClearBattery( CBitmapContext& aGc ) const
+ {
+ PRINT( _L("Camera => CCamBatteryPaneDrawer::ClearBattery") );
+
+ // Get the battery pane rectangle
+ const TRect rect = Rect();
+ aGc.SetPenStyle( CGraphicsContext::ENullPen );
+ aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+ aGc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+ aGc.SetBrushColor( TRgb::Color16MA( 0 ) );
+ aGc.Clear( rect ); //DrawRect( rect );
+ PRINT( _L("Camera <= CCamBatteryPaneDrawer::ClearBattery") );
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::LoadLayoutsL
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::LoadLayoutsL()
+ {
+ PRINT( _L("Camera => CCamBatteryPaneDrawer::LoadLayoutsL") );
+ if ( CamUtility::IsNhdDevice() )
+ {
+ TouchLayoutL();
+ }
+ else
+ {
+ NonTouchLayoutL();
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::BatteryStrengthIconHeight
+// ---------------------------------------------------------------------------
+//
+TInt CCamBatteryPaneDrawer::BatteryStrengthIconHeight( TInt aLevel ) const
+ {
+ TInt cellHeight = KCamDefaultBatteryCellHeight;
+ if ( iBatteryStrengthIcon )
+ {
+ cellHeight = iBatteryStrengthIcon->BitmapSize().iHeight /
+ KMaxBatteryStrength;
+ }
+ return ( aLevel * cellHeight ) + KCamDefaultBatteryCellMargin;
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::DeleteIcons
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::DeleteIcons()
+ {
+ delete iBatteryIcon;
+ iBatteryIcon = NULL;
+ delete iBatteryStrengthIcon;
+ iBatteryStrengthIcon = NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::HandleResourceChange
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::HandleResourceChange( TInt /* aType */ )
+ {
+ PRINT( _L("Camera => CCamBatteryPaneDrawer::HandleResourceChange") );
+
+ // Called when either skin or color scheme has changed.
+ // We need to reload icons and re-create the battery color bitmap.
+
+
+ // Reload icons
+ TRAP_IGNORE(LoadIconsL());
+ TRAP_IGNORE(LoadLayoutsL());
+
+ PRINT( _L("Camera <= CCamBatteryPaneDrawer::HandleResourceChange") );
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::NonTouchLayout
+// ---------------------------------------------------------------------------
+void CCamBatteryPaneDrawer::NonTouchLayoutL()
+ {
+ TRect screen;
+ TAknLayoutRect indicatorsPane;
+ TAknLayoutRect batteryPane;
+ TInt cba = AknLayoutUtils::CbaLocation() ==
+ AknLayoutUtils::EAknCbaLocationLeft?
+ AknLayoutUtils::EAknCbaLocationLeft : 0;
+
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen );
+ indicatorsPane.LayoutRect( screen,
+ AknLayoutScalable_Apps::cam6_indi_pane( cba ));
+ batteryPane.LayoutRect( indicatorsPane.Rect(),
+ AknLayoutScalable_Apps::cam6_battery_pane( cba ) );
+ iRect = batteryPane.Rect();
+
+ // Battery icon
+ if ( iBatteryIcon )
+ {
+ iBatteryIcon->SetLayoutL( iRect,
+ AknLayoutScalable_Apps::cam6_battery_pane_g1( cba ));
+ }
+
+ // Battery strength icon
+ if ( iBatteryStrengthIcon )
+ {
+ iBatteryStrengthIcon->SetLayoutL( iRect,
+ AknLayoutScalable_Apps::cam6_battery_pane_g2( cba ));
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::TouchLayoutL
+// ---------------------------------------------------------------------------
+void CCamBatteryPaneDrawer::TouchLayoutL()
+ {
+ TRect screen;
+ TAknLayoutRect indicatorsPane;
+ TAknLayoutRect batteryPane;
+ TInt var = Layout_Meta_Data::IsLandscapeOrientation();
+
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen );
+ indicatorsPane.LayoutRect( screen,
+ AknLayoutScalable_Apps::cam4_indicators_pane( var ).LayoutLine() );
+ batteryPane.LayoutRect( indicatorsPane.Rect(),
+ AknLayoutScalable_Apps::cam4_battery_pane( var ).LayoutLine() );
+ iRect = batteryPane.Rect();
+
+ // Battery icon
+ if ( iBatteryIcon )
+ {
+ iBatteryIcon->SetLayoutL( iRect,
+ AknLayoutScalable_Apps::cam4_battery_pane_g2( var ).LayoutLine() );
+ }
+
+ // Battery strength icon
+ if ( iBatteryStrengthIcon )
+ {
+ iBatteryStrengthIcon->SetLayoutL( iRect,
+ AknLayoutScalable_Apps::cam4_battery_pane_g1( var ).LayoutLine() );
+ }
+ }
+
+// End of file
+