camerauis/cameraapp/generic/src/cambatterypanedrawer.cpp
branchRCL_3
changeset 54 bac7acad7cb3
child 57 2c87b2808fd7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/src/cambatterypanedrawer.cpp	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,293 @@
+/*
+* 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;
+
+const TInt KBatteryStrengthIcons[] = 
+        {
+                EMbmCameraappQgn_indi_cam4_battery_strength_0,
+                EMbmCameraappQgn_indi_cam4_battery_strength_1,
+                EMbmCameraappQgn_indi_cam4_battery_strength_2,
+                EMbmCameraappQgn_indi_cam4_battery_strength_3,
+                EMbmCameraappQgn_indi_cam4_battery_strength_4,
+                EMbmCameraappQgn_indi_cam4_battery_strength_5,
+                EMbmCameraappQgn_indi_cam4_battery_strength_6,
+                EMbmCameraappQgn_indi_cam4_battery_strength_7
+        };
+
+// ---------------------------------------------------------------------------
+// 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();
+
+    for( TInt index = KMinBatteryStrength; index <= KMaxBatteryStrength; index++ )
+        {
+        iBatteryIcons.AppendL( CCamBitmapItem::NewL( KBatteryStrengthIcons[index], 
+                KBatteryStrengthIcons[index] + 1) );
+        }
+
+    PRINT( _L("Camera <= CCamBatteryPaneDrawer::LoadIconsL") );	       
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::Rect
+// ---------------------------------------------------------------------------    
+//
+TRect CCamBatteryPaneDrawer::Rect() const
+	{		
+	return iRect;
+	}
+
+// ---------------------------------------------------------------------------
+// CCamBatteryPaneDrawer::Draw
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::Draw( CBitmapContext& aGc ) const
+    {
+    iBatteryIcons[ iBatteryStrength ]->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::DeleteIcons
+// ---------------------------------------------------------------------------
+//
+void CCamBatteryPaneDrawer::DeleteIcons()
+    {
+    iBatteryIcons.ResetAndDestroy();
+    }
+
+// ---------------------------------------------------------------------------
+// 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();
+	
+    TInt batteryIconsCount = iBatteryIcons.Count();
+    for( TInt index = 0; index < batteryIconsCount; index++ )
+        {
+        iBatteryIcons[index]->SetLayoutL( iRect );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// 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();
+
+    TInt batteryIconsCount = iBatteryIcons.Count();
+    for( TInt index = 0; index < batteryIconsCount; index++ )
+        {
+        iBatteryIcons[index]->SetLayoutL( iRect );
+        }
+    
+    }
+
+// End of file
+