diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/MCETestUI/src/CMCETestUIMainViewModel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/MCETestUI/src/CMCETestUIMainViewModel.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,756 @@ +/* +* 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 "CMCETestUIMainViewModel.h" +#include "CMCETestUIEngine.h" +#include "CMCETestUIEngineProfile.h" +#include "CMCETestUIEngineOutSession.h" +#include "CMceTestUIEngineOutEvent.h" +#include "CMceTestUIEngineInEvent.h" +#include "CMceTestUIEngineOutRefer.h" +#include "CMceTestUIEngineInRefer.h" +#include "CMceTestUIEngineInSession.h" +#include + +// CONSTANTS + +// ================= MEMBER FUNCTIONS ========================================== + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::NewL +// ----------------------------------------------------------------------------- +// +CMCETestUIMainViewModel* CMCETestUIMainViewModel::NewL( + CMCETestUIEngine& aEngine ) + { + CMCETestUIMainViewModel* self = + new(ELeave) CMCETestUIMainViewModel( aEngine ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::CMCETestUIMainViewModel +// ----------------------------------------------------------------------------- +// +CMCETestUIMainViewModel::CMCETestUIMainViewModel( CMCETestUIEngine& aEngine ) + :iEngine( aEngine ), + managerSuppressed( EFalse ), + profilesSuppressed( EFalse ) + { + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::ConstructL() +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::ConstructL() + { + iArray = new (ELeave) CDesCArrayFlat( 1 ); + + PopulateMainViewManagerL(); + PopulateMainViewProfilesL(); + PopulateMainViewOutSessionsL(); + PopulateMainViewInSessionsL(); + PopulateMainViewOutEventsL(); + PopulateMainViewInEventsL(); + PopulateMainViewOutRefersL(); + PopulateMainViewInRefersL(); + + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::~CMCETestUIMainViewModel() +// Destructor +// Frees reserved resources +// ----------------------------------------------------------------------------- +// +CMCETestUIMainViewModel::~CMCETestUIMainViewModel() + { + delete iArray; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::MdcaCount() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUIMainViewModel::MdcaCount() const + { + return iArray->MdcaCount(); + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::MdcaPoint() const +// +// ----------------------------------------------------------------------------- +// +TPtrC CMCETestUIMainViewModel::MdcaPoint( TInt aIndex ) const + { + return iArray->MdcaPoint( aIndex ); + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::IsManagerSelected() const +// +// ----------------------------------------------------------------------------- +// +TBool CMCETestUIMainViewModel::IsManagerSelected( TInt aIndex ) const + { + if ( aIndex == 0 && !managerSuppressed ) + { + return ETrue; + } + + return EFalse; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::SelectedProfileIndex() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUIMainViewModel::SelectedProfileIndex( TInt aIndex ) const + { + + if ( managerSuppressed ) + { + ++aIndex; + } + + if ( aIndex == 0 ) + { + return KErrNotFound; + } + + aIndex -= 1; // Selected is not the manager + + const RPointerArray& profiles = + iEngine.UsedProfiles(); + + if ( profilesSuppressed ) + { + aIndex += profiles.Count(); + } + + if ( aIndex < profiles.Count() ) + { + return aIndex; + } + + return KErrNotFound; + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::SelectedSessionIndex() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUIMainViewModel::SelectedSessionIndex( TInt aIndex ) const + { + + const RPointerArray& profiles = + iEngine.UsedProfiles(); + + const RPointerArray& outSessions = + iEngine.OutSessions(); + + const RPointerArray& inSessions = + iEngine.InSessions(); + + + // Next does not work correctly + + if ( managerSuppressed ) + { + ++aIndex; + } + + if ( aIndex == 0) + { + return KErrNotFound; + } + + aIndex -= 1; // Selected is not the manager + + if ( profilesSuppressed ) + { + aIndex += profiles.Count(); + } + + if ( aIndex < profiles.Count() ) + { + return KErrNotFound; + } + + aIndex -= profiles.Count(); // Selected is not a profile + + if ( aIndex < outSessions.Count() + inSessions.Count() ) + { + return aIndex; + } + + return KErrNotFound; // default + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::SelectedEventIndex() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUIMainViewModel::SelectedEventIndex( TInt aIndex ) const + { + + const RPointerArray& profiles = + iEngine.UsedProfiles(); + + const RPointerArray& outSessions = + iEngine.OutSessions(); + + const RPointerArray& inSessions = + iEngine.InSessions(); + + const RPointerArray& outEvents = + iEngine.OutEvents(); + + const RPointerArray& inEvents = + iEngine.InEvents(); + + + + // Next does not work correctly + + if ( managerSuppressed ) + { + ++aIndex; + } + + if ( aIndex == 0) + { + return KErrNotFound; + } + + aIndex -= 1; // Selected is not the manager + + if ( profilesSuppressed ) + { + aIndex += profiles.Count(); + } + + if ( aIndex < profiles.Count() ) + { + return KErrNotFound; + } + + aIndex -= profiles.Count(); // Selected is not a profile + + if ( aIndex < outSessions.Count() + inSessions.Count() ) + { + return aIndex; + } + + aIndex -= (outSessions.Count() + inSessions.Count() ); // Selected is not session + + if ( aIndex < outEvents.Count() + inEvents.Count() ) + { + return aIndex; + } + + return KErrNotFound; // default + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::SelectedReferIndex() const +// +// ----------------------------------------------------------------------------- +// +TInt CMCETestUIMainViewModel::SelectedReferIndex( TInt aIndex ) const + { + + const RPointerArray& profiles = + iEngine.UsedProfiles(); + + const RPointerArray& outSessions = + iEngine.OutSessions(); + + const RPointerArray& inSessions = + iEngine.InSessions(); + + const RPointerArray& outEvents = + iEngine.OutEvents(); + + const RPointerArray& inEvents = + iEngine.InEvents(); + + const RPointerArray& outRefers = + iEngine.OutRefers(); + + const RPointerArray& inRefers = + iEngine.InRefers(); + + // Next does not work correctly + + if ( managerSuppressed ) + { + ++aIndex; + } + + if ( aIndex == 0) + { + return KErrNotFound; + } + + aIndex -= 1; // Selected is not the manager + + if ( profilesSuppressed ) + { + aIndex += profiles.Count(); + } + + if ( aIndex < profiles.Count() ) + { + return KErrNotFound; + } + + aIndex -= profiles.Count(); // Selected is not a profile + + if ( aIndex < outSessions.Count() + inSessions.Count() ) + { + return aIndex; + } + + aIndex -= (outSessions.Count() + inSessions.Count() ); // Selected is not session + + if ( aIndex < outEvents.Count() + inEvents.Count() ) + { + return aIndex; + } + + aIndex -= (outEvents.Count() + inEvents.Count() ); // Selected is not event + + if ( aIndex < outRefers.Count() + inRefers.Count() ) + { + return aIndex; + } + + return KErrNotFound; // default + } +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::CmdProvider() +// +// ----------------------------------------------------------------------------- +// +MMCETestUIEngineCmdProvider& CMCETestUIMainViewModel::CmdProvider( TInt aIndex ) + { + + const RPointerArray& profiles = + iEngine.UsedProfiles(); + + const RPointerArray& outSessions = + iEngine.OutSessions(); + + const RPointerArray& inSessions = + iEngine.InSessions(); + + const RPointerArray& outEvents = + iEngine.OutEvents(); + + const RPointerArray& inEvents = + iEngine.InEvents(); + + const RPointerArray& outRefers = + iEngine.OutRefers(); + + const RPointerArray& inRefers = + iEngine.InRefers(); + + // Next does not work correctly + + if ( managerSuppressed ) + { + ++aIndex; + } + + if ( aIndex == 0) + { + return iEngine; + } + + aIndex -= 1; // Selected is not the manager + + if ( profilesSuppressed ) + { + aIndex += profiles.Count(); + } + + if ( aIndex < profiles.Count() ) + { + return *(profiles[aIndex]); + } + + aIndex -= profiles.Count(); // Selected is not a profile + + if ( aIndex < outSessions.Count() ) + { + return *(outSessions[aIndex]); + } + + aIndex -= outSessions.Count(); // Selected is not an outsession + + if ( aIndex < inSessions.Count() ) + { + return *(inSessions[aIndex]); + } + + aIndex -= inSessions.Count(); // Selected is not a session + + if ( aIndex < outEvents.Count() ) + { + return *(outEvents[aIndex]); + } + + aIndex -= outEvents.Count(); // Selected is not an outEvent + + if ( aIndex < inEvents.Count() ) + { + return *(inEvents[aIndex]); + } + + aIndex -= inEvents.Count(); // Selected is not an event + + if ( aIndex < outRefers.Count() ) + { + return *(outRefers[aIndex]); + } + + aIndex -= outRefers.Count(); // Selected is not an outrefer + + if ( aIndex < inRefers.Count() ) + { + return *(inRefers[aIndex]); + } + + return iEngine; // default + + + } + + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewManagerL +// Populate main view manager +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewManagerL() + { + if ( !managerSuppressed ) + { + TInt sessionCount = iEngine.OutSessions().Count() + + iEngine.InSessions().Count(); + + TInt eventCount = iEngine.OutEvents().Count() + + iEngine.InEvents().Count(); + + TInt referCount = iEngine.OutRefers().Count() + + iEngine.InRefers().Count(); + + TInt itemLength = KMCEManager().Length() + KSessionCount().Length() + + KEventCount().Length() + KReferCount().Length() + KTab().Length() * 4 + KSpace().Length() + 10; + + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KMCEManager ); + itemPtr.Append( KTab ); + itemPtr.Append( KSessionCount ); + itemPtr.AppendNum( sessionCount ); + // itemPtr.Append( KSpace ); + itemPtr.Append( KEventCount ); + itemPtr.AppendNum( eventCount ); + // itemPtr.Append( KSpace ); + itemPtr.Append( KReferCount ); + itemPtr.AppendNum( referCount ); + + iArray->AppendL( *item ); + + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewProfilesL +// Populate main view profiles +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewProfilesL() + { + if ( !profilesSuppressed ) + { + const RPointerArray& profiles = + iEngine.UsedProfiles(); + + for ( TInt i = 0; i < profiles.Count(); ++i ) + { + const TDesC8& providerName = profiles[i]->ProviderName(); + HBufC* providerName16 = HBufC16::NewLC( providerName.Length() ); + TPtr providerNamePtr = providerName16->Des(); + providerNamePtr.Copy( providerName ); + + const TDesC8& aor = profiles[i]->Aor(); + HBufC* aor16 = HBufC16::NewLC( aor.Length() ); + TPtr aorPtr = aor16->Des(); + aorPtr.Copy( aor ); + + TPtrC registerStatus; + if ( profiles[i]->IsRegistered() ) + { + registerStatus.Set( KRegistered ); + } + else + { + registerStatus.Set( KNotRegistered ); + } + TInt itemLength = providerName.Length() + registerStatus.Length() + + KProfile().Length() + aor.Length() + + KSpace().Length() +KTab().Length()*4; + + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KProfile ); + itemPtr.Append( *providerName16 ); + itemPtr.Append( KSpace ); + itemPtr.Append( registerStatus ); + itemPtr.Append( KTab ); + //itemPtr.Append(KSpace); + itemPtr.Append( *aor16 ); + itemPtr.Append( KTab ); + iArray->AppendL( *item ); + + CleanupStack::PopAndDestroy( item ); + item = NULL; + CleanupStack::PopAndDestroy( aor16 ); + aor16 = NULL; + CleanupStack::PopAndDestroy( providerName16 ); + providerName16 = NULL; + + + } + } + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewOutSessionsL +// Populate main view outgoing sessions +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewOutSessionsL() + { + const RPointerArray& outSessions = + iEngine.OutSessions(); + + if( outSessions.Count() == 0) return; + + for ( TInt i = 0; i < outSessions.Count(); ++i ) + { + TInt itemLength = KOutSession().Length() + + KLeftParenthesis().Length() + + KProfileId().Length() + 2 +KSpace().Length()+ + outSessions[i]->TextualDirection().Length() + + KRightParenthesis().Length() + + outSessions[i]->State().Length() + + KTab().Length() * 4 + 5 ; + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KOutSession ); + itemPtr.AppendNum( outSessions[i]->Id() ); + itemPtr.Append( KLeftParenthesis ); + itemPtr.Append( KProfileId); + itemPtr.AppendNum( outSessions[i]->ProfileId()); + itemPtr.Append( KSpace); + itemPtr.Append( outSessions[i]->TextualDirection() ); + itemPtr.Append( KRightParenthesis ); + itemPtr.Append( KTab ); + itemPtr.Append( outSessions[i]->State() ); + iArray->AppendL( *item ); + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewInSessionsL +// Populate main view incoming sessions +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewInSessionsL() + { + const RPointerArray& inSessions = + iEngine.InSessions(); + if( inSessions.Count() == 0) return; + + for ( TInt i = 0; i < inSessions.Count(); ++i ) + { + TInt itemLength = KInSession().Length() + + KLeftParenthesis().Length() + + KProfileId().Length() + 2 +KSpace().Length()+ + inSessions[i]->TextualDirection().Length() + + KRightParenthesis().Length() + + inSessions[i]->State().Length() + + KTab().Length() * 4 + 5 ; + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KInSession ); + itemPtr.AppendNum( inSessions[i]->Id() ); + itemPtr.Append( KLeftParenthesis ); + itemPtr.Append( KProfileId); + itemPtr.AppendNum( inSessions[i]->ProfileId()); + itemPtr.Append( KSpace); + itemPtr.Append( inSessions[i]->TextualDirection() ); + itemPtr.Append( KRightParenthesis ); + itemPtr.Append( KTab ); + itemPtr.Append( inSessions[i]->State() ); + iArray->AppendL( *item ); + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewOutSessionsL +// Populate main view outgoing sessions +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewOutEventsL() + { + const RPointerArray& outEvents = + iEngine.OutEvents(); + if( outEvents.Count() == 0) return; + + for ( TInt i = 0; i < outEvents.Count(); ++i ) + { + TInt itemLength = KOutEvent().Length() + + outEvents[i]->State().Length() + + KTab().Length() * 3 + 5 ; + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KOutEvent); + itemPtr.AppendNum( outEvents[i]->Id() ); + itemPtr.Append( KTab ); + itemPtr.Append( outEvents[i]->State() ); + iArray->AppendL( *item ); + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewInEventsL +// Populate main view incoming sessions +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewInEventsL() + { + const RPointerArray& inEvents = + iEngine.InEvents(); + if( inEvents.Count() == 0) return; + + for ( TInt i = 0; i < inEvents.Count(); ++i ) + { + TInt itemLength = KInEvent().Length() + + inEvents[i]->State().Length() + + KTab().Length() * 3 + 5 ; + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KInEvent ); + itemPtr.AppendNum( inEvents[i]->Id() ); + itemPtr.Append( KTab); + itemPtr.Append( inEvents[i]->State() ); + iArray->AppendL( *item ); + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewOutRefersL +// Populate main view outgoing sessions +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewOutRefersL() + { + const RPointerArray& outRefers = + iEngine.OutRefers(); + if( outRefers.Count() == 0) return; + + for ( TInt i = 0; i < outRefers.Count(); ++i ) + { + TInt itemLength = KOutRefer().Length() + + outRefers[i]->State().Length() + + KTab().Length() * 3 + 5 ; + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KOutRefer); + itemPtr.AppendNum( outRefers[i]->Id() ); + itemPtr.Append( KTab ); + itemPtr.Append( outRefers[i]->State() ); + iArray->AppendL( *item ); + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } + +// ----------------------------------------------------------------------------- +// CMCETestUIMainViewModel::PopulateMainViewInRefersL +// Populate main view incoming sessions +// ----------------------------------------------------------------------------- +// +void CMCETestUIMainViewModel::PopulateMainViewInRefersL() + { + const RPointerArray& inRefers = + iEngine.InRefers(); + if( inRefers.Count() == 0) return; + + for ( TInt i = 0; i < inRefers.Count(); ++i ) + { + TInt itemLength = KInRefer().Length() + + inRefers[i]->State().Length() + + KTab().Length() * 3 + 5 ; + HBufC* item = HBufC::NewLC( itemLength ); + TPtr itemPtr = item->Des(); + itemPtr.Append( KTab ); + itemPtr.Append( KInRefer ); + itemPtr.AppendNum( inRefers[i]->Id() ); + itemPtr.Append( KTab); + itemPtr.Append( inRefers[i]->State() ); + iArray->AppendL( *item ); + CleanupStack::PopAndDestroy( item ); + item = NULL; + } + } + +// End of File