diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/mmshui/src/musuistatuspanehandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshui/src/musuistatuspanehandler.cpp Wed Sep 01 12:31:01 2010 +0100 @@ -0,0 +1,325 @@ +/* +* Copyright (c) 2005 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: +* +*/ + + + +#include "musuistatuspanehandler.h" +#include "musuidefinitions.h" +#include "muslogger.h" // debug logging +#include + +#include +#include +#include +#include +#include +#include +#include +#include // Navi pane container ( CAknNavigationControlContainer ) +#include +#include +#include +#include + + +// constants +#define KMUSMBMFILENAME iEikonEnvironment.EikAppUi()->Application()->BitmapStoreName() + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CMusUiStatusPaneHandler* CMusUiStatusPaneHandler::NewL( CEikonEnv& aEikonEnv ) + { + CMusUiStatusPaneHandler* self = + new ( ELeave ) CMusUiStatusPaneHandler( aEikonEnv ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CMusUiStatusPaneHandler::~CMusUiStatusPaneHandler() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::~CMusUiStatusPaneHandler" ); + + delete iNaviPaneText; + delete iMediaControl; + delete iVolumePopup; + + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::~CMusUiStatusPaneHandler" ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CMusUiStatusPaneHandler::CMusUiStatusPaneHandler( CEikonEnv& aEikonEnv ) + :iEikonEnvironment( aEikonEnv ) + { + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::ConstructL() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ConstructL" ); + + CEikStatusPane* statusPane = iEikonEnvironment.AppUiFactory()->StatusPane(); + + iNaviPane = STATIC_CAST( + CAknNavigationControlContainer*, + statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); + iTitlePane = STATIC_CAST( + CAknTitlePane*, + statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); + iContextPane = STATIC_CAST( + CAknContextPane*, + statusPane->ControlL( TUid::Uid( EEikStatusPaneUidContext ) ) ); + + iVolumePopup = CAknVolumePopup::ConstructFromResourceL( + R_AVKON_NAVI_PANE_VOLUME_INDICATOR ); + + iMediaControl = CreateMediaNaviL(); + + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ConstructL" ); + } + + +// ----------------------------------------------------------------------------- +// Updates statuspane icons +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::SetStatusPaneIconsL( TInt32 aIconId, + TInt32 aIconMaskId ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetStatusPaneIconsL" ) + + iContextPane->SetPictureFromFileL( KMUSMBMFILENAME, aIconId, aIconMaskId ); + + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetStatusPaneIconsL" ) + } + + +// ----------------------------------------------------------------------------- +// Updates statuspane icons +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::SetStatusPaneIconsL( CFbsBitmap* aBitmap ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetStatusPaneIconsL" ); + CEikImage* image = new (ELeave) CEikImage(); + image->SetBitmap( aBitmap ); + CEikImage* oldImage = iContextPane->SwapPicture( image ); + delete oldImage; + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetStatusPaneIconsL" ); + } + + +// ----------------------------------------------------------------------------- +// Hides navi-pane decorators and clears text +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::ClearNaviPaneL() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ClearNaviPaneL" ); + delete iNaviPaneText; + iNaviPaneText = NULL; + + // Pushes default decorator object (empty one) to top of the stack + // and draws it + iNaviPane->PushDefaultL(); + + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ClearNaviPaneL" ); + } + + +// ----------------------------------------------------------------------------- +// Sets title-pane text +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::SetTitleL( const TDesC& aTitle ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetTitleL" ); + iTitlePane->SetTextL( aTitle ); + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetTitleL" ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::SetTitleFromResourceL( TInt aResourceId ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetTitleFromResourceL" ); + HBufC* titlePaneTitle = StringLoader::LoadLC( aResourceId ); + iTitlePane->SetTextL( *titlePaneTitle ); + CleanupStack::PopAndDestroy( titlePaneTitle ); + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetTitleFromResourceL" ); + } + + +// ----------------------------------------------------------------------------- +// Get the current volume setting. +// ----------------------------------------------------------------------------- +// +TInt CMusUiStatusPaneHandler::GetVolumeControlValue() const + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::GetVolumeControlValue" ); + + TInt volume = iVolumePopup->Value(); + + MUS_LOG1( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::GetVolumeControlValue: [%d]", + volume ); + return volume; + } + + +// ----------------------------------------------------------------------------- +// Activates volume control. +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::ActivateVolumeControlL( TInt aVolume, TBool aOnlyIfVisible ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ActivateVolumeControlL" ); + + if ( aVolume < KMusVolumeMuted || aVolume > KMusVolumeMaximum ) + { + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetVolumeControlValue: returning" ); + return; + } + + if ( !aOnlyIfVisible || (aOnlyIfVisible && iVolumePopup->IsVisible()) ) + { + iVolumePopup->SetValue( aVolume ); + iVolumePopup->ShowVolumePopupL(); + } + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ActivateVolumeControlL" ); + } + + +// ----------------------------------------------------------------------------- +// Activate media navi pane. +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::ActivateNaviPaneMediaL() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ActivateNaviPaneMediaL" ); + iNaviPane->PushL( *iMediaControl ); + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ActivateNaviPaneMediaL" ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::ShowNaviPaneIconL( + TMusUiNaviMediaDecorator aIcon ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ShowNaviPaneIconL" ); + CMusUiNaviMediaDecorator* mediaNavi = + static_cast( + iMediaControl->DecoratedControl() ); + mediaNavi->ShowIcon( aIcon ); + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ShowNaviPaneIconL" ); + } + + +// ----------------------------------------------------------------------------- +// Sets navi-pane label for left side +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::SetLeftLabelL( const TDesC& aLabel ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetLeftLabelL" ); + + static_cast + ( iMediaControl->DecoratedControl() )->SetLeftLabelL( aLabel ); + iNaviPane->DrawNow(); + + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetLeftLabelL" ); + } + + +// ----------------------------------------------------------------------------- +// Sets navi-pane label for right side +// ----------------------------------------------------------------------------- +// +void CMusUiStatusPaneHandler::SetRightLabelL( const TDesC& aLabel ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetRightLabelL" ); + + static_cast + ( iMediaControl->DecoratedControl() )->SetRightLabelL( aLabel ); + iNaviPane->DrawNow(); + + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetRightLabelL" ); + } + + +// ----------------------------------------------------------------------------- +// Create media navi pane. +// ----------------------------------------------------------------------------- +// +CAknNavigationDecorator* CMusUiStatusPaneHandler::CreateMediaNaviL() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::CreateMediaNaviL" ); + CMusUiNaviMediaDecorator* naviDecorator = CMusUiNaviMediaDecorator::NewL(); + CleanupStack::PushL( naviDecorator ); + + CAknNavigationDecorator* decoratedFolder = + CAknNavigationDecorator::NewL( + iNaviPane, + naviDecorator, + CAknNavigationDecorator::ENotSpecified ); + CleanupStack::Pop( naviDecorator );// decoratedFolder owns naviDecorator now + + CleanupStack::PushL( decoratedFolder ); + decoratedFolder->SetContainerWindowL( *iNaviPane ); + naviDecorator->SetContainerWindowL( *decoratedFolder ); + CleanupStack::Pop( decoratedFolder ); + + decoratedFolder->MakeScrollButtonVisible( EFalse ); + + MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::CreateMediaNaviL" ); + return decoratedFolder; + } + + +// ----------------------------------------------------------------------------- +// Get Volump Popup control pointer +// ----------------------------------------------------------------------------- +// +CAknVolumePopup* CMusUiStatusPaneHandler::GetVolumePopup() const + { + return iVolumePopup; + } + + +// end of file