diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/MCETestUI/src/CMCETestUISessionViewModel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/MCETestUI/src/CMCETestUISessionViewModel.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,295 @@ +/* +* Copyright (c) 2009 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 FILES + +#include "CMCETestUISessionViewModel.h" +#include "CMCETestUIEngine.h" +#include "CMCETestUIEngineSession.h" +#include "MMCETestUIEngineCmdProvider.h" +#include "CMceTestUIEngineAudioStream.h" +#include "CMceTestUIEngineVideoStream.h" +#include "mcetestuiengineconstants.h" + +// CONSTANTS + + +// ================= MEMBER FUNCTIONS ========================================== + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::NewL +// ----------------------------------------------------------------------------- +// +CMCETestUISessionViewModel* CMCETestUISessionViewModel::NewL( + CMCETestUIEngine& aEngine, + CMCETestUIEngineSession& aSession ) + { + CMCETestUISessionViewModel* self = + new(ELeave) CMCETestUISessionViewModel( aEngine, aSession ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::CMCETestUISessionViewModel +// ----------------------------------------------------------------------------- +// +CMCETestUISessionViewModel::CMCETestUISessionViewModel( + CMCETestUIEngine& aEngine, + CMCETestUIEngineSession& aSession ) + :iEngine( aEngine ), + iSession( aSession ), + audioStreamsSuppressed(EFalse) + { + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::ConstructL() +// ----------------------------------------------------------------------------- +// +void CMCETestUISessionViewModel::ConstructL() + { + iArray = new (ELeave) CDesCArrayFlat( 1 ); + + PopulateStreamsL(); + PopulateVideoStreamsL(); + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::~CMCETestUISessionViewModel() +// Destructor +// Frees reserved resources +// ----------------------------------------------------------------------------- +// +CMCETestUISessionViewModel::~CMCETestUISessionViewModel() + { + delete iArray; + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::MdcaCount() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUISessionViewModel::MdcaCount() const + { + return iArray->MdcaCount(); + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::MdcaPoint() const +// +// ----------------------------------------------------------------------------- +// +TPtrC CMCETestUISessionViewModel::MdcaPoint( TInt aIndex ) const + { + return iArray->MdcaPoint( aIndex ); + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::CmdProvider() +// +// ----------------------------------------------------------------------------- +// +MMCETestUIEngineCmdProvider& CMCETestUISessionViewModel::CmdProvider( + TInt aIndex ) + { + const RPointerArray& audioStreams = + iSession.AudioStreamsL(); + + const RPointerArray& videoStreams = + iSession.VideoStreamsL(); + + + if ( audioStreamsSuppressed ) + { + aIndex += audioStreams.Count(); + } + + if ( aIndex < audioStreams.Count() ) + { + return *(audioStreams[aIndex]); + } + + aIndex -= audioStreams.Count(); // Selected is not a audio stream + + if ( aIndex < videoStreams.Count() ) + { + return *(videoStreams[aIndex]); + } +/* if ( aIndex < audioStreams.Count() ) + { + return *(audioStreams[aIndex]); + } + */ + return iEngine; // default + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::SelectedAudioStreamIndex() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUISessionViewModel::SelectedAudioStreamIndex( TInt aIndex ) const + { + + const RPointerArray& audioStreams = + iSession.AudioStreamsL(); + + if ( audioStreamsSuppressed ) + { + aIndex += audioStreams.Count(); + } + + if ( aIndex < audioStreams.Count() ) + { + return aIndex; + } + + return KErrNotFound; + } + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::SelectedVideoStreamIndex() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUISessionViewModel::SelectedVideoStreamIndex( TInt aIndex ) const + { + + const RPointerArray& audioStreams = + iSession.AudioStreamsL(); + + const RPointerArray& videoStreams = + iSession.VideoStreamsL(); + + + // Next does not work correctly + + + if ( audioStreamsSuppressed ) + { + aIndex += audioStreams.Count(); + } + + if ( aIndex < audioStreams.Count() ) + { + return KErrNotFound; + } + + aIndex -= audioStreams.Count(); // Selected is not a audio sink + + if ( aIndex < videoStreams.Count() ) + { + return aIndex; + } + + return KErrNotFound; // default + } + + +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::PopulateStreamsL +// Populate streams of a session +// ----------------------------------------------------------------------------- +// +void CMCETestUISessionViewModel::PopulateStreamsL() + { + const RPointerArray& audioStreams = + iSession.AudioStreamsL(); + + for ( TInt i = 0; i < audioStreams.Count(); ++i ) + { + + TInt itemLength = KAudioStream().Length() + + KLeftParenthesis().Length() + + audioStreams[i]->TextualDirection().Length() + + KRightParenthesis().Length() + + audioStreams[i]->State().Length() + + KLeftParenthesis().Length() + + audioStreams[i]->StreamState().Length() + + KRightParenthesis().Length() + + KTab().Length() * 3; + + HBufC16* item = HBufC16::NewLC( itemLength ); + TPtr16 itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KAudioStream ); + itemPtr.Append( KLeftParenthesis() ); + itemPtr.Append( audioStreams[i]->TextualDirection() ); + itemPtr.Append( KRightParenthesis() ); + itemPtr.Append( KTab ); + itemPtr.Append( audioStreams[i]->State() ); + itemPtr.Append( KLeftParenthesis() ); + itemPtr.Append( audioStreams[i]->StreamState() ); + itemPtr.Append( KRightParenthesis() ); + itemPtr.Append( KTab ); + + iArray->AppendL( *item ); + + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } +// ----------------------------------------------------------------------------- +// CMCETestUISessionViewModel::PopulateVideoStreamsL +// Populate videostreams of a session +// ----------------------------------------------------------------------------- +// +void CMCETestUISessionViewModel::PopulateVideoStreamsL() + { + const RPointerArray& videoStreams = + iSession.VideoStreamsL(); + + for ( TInt i = 0; i < videoStreams.Count(); ++i ) + { + + TInt itemLength = KVideoStream().Length() + + KLeftParenthesis().Length() + + videoStreams[i]->TextualVideoDirection().Length() + + KRightParenthesis().Length() + + videoStreams[i]->State().Length() + + KLeftParenthesis().Length() + + videoStreams[i]->StreamState().Length() + + KRightParenthesis().Length() + + KTab().Length() * 3; + + HBufC16* item = HBufC16::NewLC( itemLength ); + TPtr16 itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KVideoStream ); + itemPtr.Append( KLeftParenthesis() ); + itemPtr.Append( videoStreams[i]->TextualVideoDirection() ); + itemPtr.Append( KRightParenthesis() ); + itemPtr.Append( KTab ); + itemPtr.Append( videoStreams[i]->State() ); + itemPtr.Append( KLeftParenthesis() ); + itemPtr.Append( videoStreams[i]->StreamState() ); + itemPtr.Append( KRightParenthesis() ); + itemPtr.Append( KTab ); + + iArray->AppendL( *item ); + + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } + +// End of File