voicerecorder/RecViewSrc/CVRStateInfoPanel.cpp
branchRCL_3
changeset 20 072a5fa0c63b
parent 19 2f5c9ee7098c
child 21 c6bafb5162d8
--- a/voicerecorder/RecViewSrc/CVRStateInfoPanel.cpp	Thu Aug 19 09:57:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,521 +0,0 @@
-/*
-* Copyright (c) 2002 - 2006 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: 
-*     A compound control class. It is responsible for drawing and updating
-*     a set of labels, and a progress bar.
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <AknUtils.h>
-#include <AknsUtils.h>
-#include <eikprogi.h>
-#include <aknenv.h>
-#include <applayout.cdl.h>
-#include <aknview.h>
-#include <aknViewAppUi.h>
-#include <AknDef.h>
-#include <AknsConstants.h>
-#include <aknlayoutscalable_apps.cdl.h>
-
-#include "CVRLabel.h"
-#include "CVRStateInfoPanel.h"
-#include "MVRStateInfoModel.h"
-#include "voicerecorder.hrh"
-#include "VRConsts.h"
-
-// CONSTANTS
-const TInt KVRLabelMap[] =
-	{
-	CVRStateInfoPanel::ELabelName,
-	CVRStateInfoPanel::ELabelDate,
-	CVRStateInfoPanel::ELabelQuality,
-	CVRStateInfoPanel::ELabelStatus,
-	CVRStateInfoPanel::ELabelMax,
-	CVRStateInfoPanel::ELabelMin,
-	CVRStateInfoPanel::ELabelQualityText
-	};
-	
-_LIT( KVREmptyLabel, " " );
-
-
-// ================= MEMBER FUNCTIONS ========================================
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::CVRStateInfoPanel
-// 
-// ----------------------------------------------------------------------------
-//		
-CVRStateInfoPanel::CVRStateInfoPanel( MVRStateInfoModel* aModel )
-	: iModel( aModel ), iLabels( ENumLabels ), iPBposition( 0 )
-	{
-	if ( iModel )
-		{
-		iModel->SetStateInfoObserver( this );
-		}
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::CVRStateInfoPanel
-// 
-// ----------------------------------------------------------------------------
-//		
-CVRStateInfoPanel::CVRStateInfoPanel( MVRStateInfoModel* aModel,
-                               				TUid aParentViewUid )
-	: iModel( aModel ), 
-	iLabels( ENumLabels ),
-	iParentViewUid( aParentViewUid ), 
-	iPBposition( 0 )
-	{
-	if ( iModel )
-		{
-		iModel->SetStateInfoObserver( this );
-		iModel->SetStateInfoPanelObserver( this );
-		}
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::~CVRStateInfoPanel
-// 
-// ----------------------------------------------------------------------------
-//			
-CVRStateInfoPanel::~CVRStateInfoPanel()
-	{
-	if ( iModel )
-		{
-		iModel->SetStateInfoObserver( NULL );
-		}
-	iLabels.ResetAndDestroy();
-	delete iProgressBar;
-	iSkin = NULL;
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::ConstructL
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::ConstructL()
-	{
-	// New skin instance is loaded
-	iSkin = AknsUtils::SkinInstance();
-	
-	// Create labels
-	for ( TInt i = 0; i < ENumLabels; i++ )
-		{
-		CVRLabel* label = CVRLabel::NewLC( *this );
-
-		// Set the MOP-parent so that the labels can get the 
-		// skin context from rec view container
-		label->SetMopParent( this );
-		iLabels.AppendL( label );
-		CleanupStack::Pop(); // label;
-
-		// Set initial text for label
-		TBuf< VRLABELMAXLENGTH > str;
-		iModel->GetLabel( str, i );
-		label->SetText( str );
-		}
-
-	CreateProgressBarL();
-	UpdateLayoutL();
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::CreateProgressBarL
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::CreateProgressBarL()
-	{
-	delete iProgressBar;
-	iProgressBar = NULL;
-
-	// Create progress bar
-	CEikProgressInfo::SInfo info = ProgressInfo();
-
-	iProgressBar = new( ELeave ) CEikProgressInfo( info );
-	iProgressBar->SetContainerWindowL( *this );
-	
-	// Set the MOP-parent so that the progress bar can get the 
-	// skin context from rec view container
-	iProgressBar->SetMopParent( this );
-	iProgressBar->ConstructL();
-
-	iProgressBar->ActivateL();
-	AknLayoutUtils::LayoutControl( iProgressBar, Rect(),
-		AppLayout::Voice_Recorder_elements_Line_4() );
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::SizeChanged
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::SizeChanged()
-    {
-    TAknTextComponentLayout layoutText;
-    
-    for ( TInt i = 0; i < ENumLabels; i++ )
-        {
-        switch ( KVRLabelMap[i] )
-            {
-            case 0: 
-                layoutText = AknLayoutScalable_Apps::vorec_t1();
-                break;
-            case 1:
-                layoutText = AknLayoutScalable_Apps::vorec_t2();
-                break;
-            case 2: 
-                layoutText = AknLayoutScalable_Apps::vorec_t3();
-                break;
-            case 3:
-                layoutText = AknLayoutScalable_Apps::vorec_t4();
-                break;
-            case 4: 
-                layoutText = AknLayoutScalable_Apps::vorec_t5();
-                break;
-            case 5:
-                layoutText = AknLayoutScalable_Apps::vorec_t6();
-                break;
-            case 6:
-                layoutText = AknLayoutScalable_Apps::vorec_t7();
-                break;          
-            }
-        AknLayoutUtils::LayoutLabel( iLabels.At( i ), Rect(), layoutText.LayoutLine() );
-        
-        CCoeControl* label( iLabels.At( i ) );
-        TRgb color( KRgbBlack );
-        AknsUtils::GetCachedColor( iSkin, color, KAknsIIDQsnTextColors,
-        		EAknsCIQsnTextColorsCG6 );
-        // We can ignore the error, it only means we will have wrong color
-        TRAP_IGNORE( AknLayoutUtils::OverrideControlColorL( *label,
-        		EColorLabelText, color ) );
-        }
-    
-    // There's nothing rational to do here if it leaves
-    TRAP_IGNORE( CreateProgressBarL() );
-    }
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::Draw
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::Draw( const TRect& /*aRect*/ ) const
-	{
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::CountComponentControls
-// 
-// ----------------------------------------------------------------------------
-//		
-TInt CVRStateInfoPanel::CountComponentControls() const
-	{
-	TInt componentCount( 0 );
-	if ( iProgressBar )
-		{
-		componentCount = ENumLabels + 1;  // +1 means iProgressBar
-		}
-	return componentCount;
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::ComponentControl
-// 
-// ----------------------------------------------------------------------------
-//		
-CCoeControl* CVRStateInfoPanel::ComponentControl( TInt aIndex ) const
-	{
-	if ( aIndex < ENumLabels )
-		{
-		return iLabels.At( aIndex );
-		}
-	else
-		{
-		return iProgressBar;
-		}
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::Update
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::Update( TVRUpdateCommand /*aCommand*/ )
-	{
-	for ( TInt i = 0; i < ENumLabels; i++ )
-		{
-		TBuf< VRLABELMAXLENGTH > str;
-		iModel->GetLabel( str, i );
-		if ( str.Length() < 1 )
-			{
-			// "" doesn't empty the label, so use space
-			str = KVREmptyLabel;
-			}
-		iLabels.At( i )->SetTextAndDraw( str );
-		}
-	
-	UpdateProgressBar();
-	
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::UpdateLayoutL
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::UpdateLayoutL()
-	{
-	SizeChanged();
-	}
-
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::ProgressInfo
-// 
-// ----------------------------------------------------------------------------
-//		
-CEikProgressInfo::SInfo CVRStateInfoPanel::ProgressInfo()
-	{
-	CEikProgressInfo::SInfo info;
-
-	TAknWindowLineLayout infobarLayout =
-		AppLayout::Voice_Recorder_elements_Line_4();
-    TAknLayoutRect infobarRect;
-    infobarRect.LayoutRect( Rect(), infobarLayout );	
-  
-    info.iWidth = infobarRect.Rect().Width();
-	info.iHeight = infobarRect.Rect().Height();
-
-	return info;
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::HandleResourceChangeL
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::HandleResourceChangeL( TInt aType )
-	{
-    if ( aType == KEikDynamicLayoutVariantSwitch )
-        {
-		UpdateLayoutL();
-        }
-	else if ( aType == KAknsMessageSkinChange )
-		{
-		// New skin instance is loaded
-		iSkin = AknsUtils::SkinInstance();
-		}
-	
-	for ( TInt i = 0; i < ENumLabels; i++ )
-		{
-		if ( i < iLabels.Count() )
-			{
-			iLabels.At( i )->HandleResourceChange( aType );	
-			}
-		}
-		
-	iProgressBar->HandleResourceChange( aType );
-	UpdateProgressBar();
-	
-	CCoeControl::HandleResourceChange( aType );
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::UpdateProgressBar
-// 
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::UpdateProgressBar()
-	{
-	
-	if ( iProgressBar )
-		{
-		if ( iModel->HasProgressBar() )
-			{
-			iProgressBar->SetFinalValue( I64INT( iModel->Duration().Int64() /
-										 KVRSecondAsMicroSeconds ) );
-			iProgressBar->SetAndDraw( I64INT( iModel->Position().Int64() /
-									  KVRSecondAsMicroSeconds ) );
-			iProgressBar->MakeVisible( ETrue );
-			
-			iPBposition = I64INT( iModel->Position().Int64() /
-									  KVRSecondAsMicroSeconds );
-			}
-		else
-			{
-			iProgressBar->MakeVisible( EFalse );
-			}
-		}
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::HandlePointerEventL
-// From CCoeControl
-// ----------------------------------------------------------------------------
-//		
-void CVRStateInfoPanel::HandlePointerEventL( const TPointerEvent& 
-													aPointerEvent )
-	{
-	if( AknLayoutUtils::PenEnabled() && iModel->HasProgressBar() && 
-		iProgressBar )
-		{
-		CCoeControl::HandlePointerEventL( aPointerEvent );
-		
-		switch( aPointerEvent.iType )
-			{
-			case TPointerEvent::EButton1Down:
-				{
-				TRect progressBarRect( iProgressBar->Rect() );
-				// Check if pressed position is in progress bar's rect
-				if( progressBarRect.Contains( aPointerEvent.iPosition ) )
-					{
-					HandleProgressBarTouchL( progressBarRect, 
-											 aPointerEvent.iPosition.iX );
-					}
-				break;
-				}
-			case TPointerEvent::EDrag:
-				{
-				TRect progressBarRect( iProgressBar->Rect() );
-				if( progressBarRect.Contains( aPointerEvent.iPosition ) )
-					{
-					HandleProgressBarTouchL( progressBarRect, 
-											 aPointerEvent.iPosition.iX );
-					}
-				break;		
-				}
-			case TPointerEvent::EButton1Up:
-				{		
-				break;
-				}		
-			default:
-				{
-				break;	
-				}	
-			}
-		}
-	}
-
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::HandleProgressBarTouchL
-// 
-// ----------------------------------------------------------------------------
-//	
-void CVRStateInfoPanel::HandleProgressBarTouchL( TRect aPBRect, 
-												 TInt aPressedPoint )
-	{
-	if ( AknLayoutUtils::PenEnabled() )
-		{
-#ifdef _DEBUG
-		RDebug::Print( _L( "VoiceRecorder: HandleProgressBarTouchL enter" ) );
-#endif
-		// Progress Bar start and end points
-		TInt pbEndPoint( aPBRect.iBr.iX );
-		TInt pbStartPoint( aPBRect.iTl.iX );
-		
-		TInt totalPBLength( pbEndPoint - pbStartPoint );
-		// calculate what is the time position that was pressed in 
-		// the progress bar
-		TTimeIntervalMicroSeconds newPosition( 
-										( ( aPressedPoint - pbStartPoint ) * 
-							  			iModel->Duration().Int64() ) / 
-							  			totalPBLength );
-							  			
-		// Round the position to the nearest second value
-		TInt roundedNewPosition( RoundMicroSecsToSecs( newPosition ) );
-
-		// Performace issue. Send command only if value has changed
-		if ( roundedNewPosition != iPBposition )
-			{
-			iPBposition = roundedNewPosition;
-
-			CAknViewAppUi* appUi = reinterpret_cast< CAknViewAppUi* >(
-											CEikonEnv::Static()->EikAppUi() );
-			CAknView* view = appUi->View( iParentViewUid );
-			
-			// inform the view that position has changed.
-			view->HandleCommandL( ECmdSetNewPosition );	
-			}	
-#ifdef _DEBUG
-		RDebug::Print( _L( "VoiceRecorder: HandleProgressBarTouchL exit" ) );
-#endif
-			
-		} // PenEnabled
-		
-	}
-	
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::RoundMicroSecsToSecs
-// Rounds aMicroSecs value to nearest second value (Round)
-// ----------------------------------------------------------------------------
-//			
-TInt CVRStateInfoPanel::RoundMicroSecsToSecs( TTimeIntervalMicroSeconds 
-											  aMicroSecs )
-	{	
-	// Rounds to secondss resolution (Floor)
-	Int64 secondsInMicroSecs( ( ( aMicroSecs.Int64() / 
-								  KVRSecondAsMicroSeconds ) * 
-								  KVRSecondAsMicroSeconds ) );
-								  
-	// takes the leftover part in seconds resolution
-	Int64 leftoversInMicroSecs ( aMicroSecs.Int64() - secondsInMicroSecs );
-	
-	// Nearer to upper sec value
-	if ( leftoversInMicroSecs / ( KVRSecondAsMilliSeconds ) > 
-		 KVRHalfSecondAsMilliSeconds )
-		{
-		// + 1 sec
-		return ( ( secondsInMicroSecs + KVRSecondAsMicroSeconds ) / 
-													 KVRSecondAsMicroSeconds );
-		}
-	// Nearer to lower sec value	
-	else
-		{
-		return secondsInMicroSecs / KVRSecondAsMicroSeconds;
-		}	
-	}
-	
-
-// ----------------------------------------------------------------------------
-// CVRStateInfoPanel::ProgressBarPosition
-// Just returns the current progress bar position
-// ----------------------------------------------------------------------------
-//		
-TInt CVRStateInfoPanel::ProgressBarPosition() const
-	{
-	return iPBposition;
-	}
-	
-// End of file