diff -r ccd8e69b5392 -r 496ad160a278 mmshplugins/mmshwpadapterplugin/src/muswpadapter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmshplugins/mmshwpadapterplugin/src/muswpadapter.cpp Fri Jun 11 13:36:18 2010 +0300 @@ -0,0 +1,404 @@ +/* +* Copyright (c) 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: project specification +* +*/ + + + +// USER +#include "muswpadapter.h" +#include "muswpitem.h" +#include "mussettings.h" +#include "muslogger.h" + +// SYSTEM +#include +#include +#include +#include +#include + + + + +// CONSTANTS + +_LIT( KMusAppID, "w9017" ); +_LIT8( KSipAppID8, "w9010" ); + +_LIT( KMusWpAdapterName, "muswpadapterresource" ); + +_LIT( KMUsWpCharacteristicNameCapability, "CAPABILITY" ); +_LIT( KMUsWpCharacteristicNameActivation, "ACTIVATION" ); + +_LIT( KMusWpParamNameEdgeDtm, "EDGEDTM" ); +_LIT( KMusWpParamNameInternetSignaling, "INTERNETSIGNALING" ); +_LIT( KMusWpParamNameQuery, "QUERY" ); +_LIT( KMusWpParamNameCondition, "CONDITION" ); + +const TUint32 KMusWpNotSet = 0; + + + +// ----------------------------------------------------------------------------- +// Symbian two-phased constructor. +// ----------------------------------------------------------------------------- +// +CMusWpAdapter* CMusWpAdapter::NewL() + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::NewL" ) + CMusWpAdapter* self = new( ELeave ) CMusWpAdapter; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::NewL" ) + return self; + } + + +// ----------------------------------------------------------------------------- +// Destructor. +// ----------------------------------------------------------------------------- +// +CMusWpAdapter::~CMusWpAdapter() + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::~CMusWpAdapter" ) + delete iAppID; + delete iWpItem; + delete iNewWpItem; + delete iSummaryTitle; + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::~CMusWpAdapter" ) + } + + +// ----------------------------------------------------------------------------- +// From base class CWAdapter. Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +TInt CMusWpAdapter::ItemCount() const + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::ItemCount()" ) + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::ItemCount()" ) + + if ( iWpItem ) + { + return 1; + } + + return 0; + } + + +// ----------------------------------------------------------------------------- +// From base class CWAdapter. Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +const TDesC16& CMusWpAdapter::SummaryTitle( TInt /*aIndex*/ ) const + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::SummaryTitle()" ) + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::SummaryTitle()" ) + + return *iSummaryTitle; + } + + +// ----------------------------------------------------------------------------- +// From base class CWAdapter. Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +const TDesC16& CMusWpAdapter::SummaryText( TInt /*aIndex*/ ) const + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::SummaryText( ... )" ) + if( iWpItem ) + { + return iWpItem->Name(); + } + + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::SummaryText( ... )" ) + return *iSummaryTitle; + } + + +// ----------------------------------------------------------------------------- +// From base class CWAdapter. Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::SaveL( TInt /*aItem*/ ) + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::SaveL" ) + + if ( iWpItem ) + { + iWpItem->SaveL(); + } + + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::SaveL" ) + } + + +// ----------------------------------------------------------------------------- +// From base class CWAdapter. Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +TBool CMusWpAdapter::CanSetAsDefault( TInt /*aIndex*/ ) const + { + return EFalse; + } + + +// ----------------------------------------------------------------------------- +// From base class CWAdapter. Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::SetAsDefaultL( TInt /*aIndex*/ ) + { + User::Leave( KErrNotSupported ); + } + + +// ----------------------------------------------------------------------------- +// From base class CWAdapter. Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +TInt CMusWpAdapter::DetailsL( TInt /*aItem*/, MWPPairVisitor& /*aVisitor */ ) + { + return KErrNotSupported; + } + + +// ----------------------------------------------------------------------------- +// From base class CWPAdapter. Overrides the empty implementation of that class. +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::SettingsSavedL( const TDesC8& aAppIdOfSavingItem, + const TDesC8& aAppRef, + const TDesC8& aStorageIdValue ) + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::SettingsSavedL" ) + + // If settings are saved by SIPAdapter... + if ( aAppIdOfSavingItem == KSipAppID8 ) + { + // ...and are ment for us... + if ( iWpItem ) + { + HBufC8* tmpValue = HBufC8::NewLC( 4*iWpItem->ToAppRef().Length() ); + TPtr8 ptrTmpValue( tmpValue->Des() ); + CnvUtfConverter::ConvertFromUnicodeToUtf8( ptrTmpValue, + iWpItem->ToAppRef() ); + + if ( aAppRef == *tmpValue ) + { + MUS_LOG( " CMusWpAdapter, Prepared to save setting" ) + // ...prepare to save profile Id + TLex8 lex( aStorageIdValue ); + User::LeaveIfError( lex.Val( iProfileId, EDecimal ) ); + iProfileIdReceived = ETrue; + } + + CleanupStack::PopAndDestroy( tmpValue ); + } + } + + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::SettingsSavedL" ) + }; + + +// ----------------------------------------------------------------------------- +// From base class CWPAdapter. Overrides the empty implementation of that class. +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::SavingFinalizedL() + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::SavingFinalizedL" ) + + if ( iProfileIdReceived ) + { + MultimediaSharingSettings::SetSipProfileSettingL( + static_cast(iProfileId) ); + } + + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::SavingFinalizedL" ) + } + + +// ----------------------------------------------------------------------------- +// From base class CWPAdapter, which derives this from MWPVisitor. +// Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::VisitL( CWPCharacteristic& aCharacteristic ) + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::VisitL (Characteristic)" ) + switch ( aCharacteristic.Type() ) + { + case KWPApplication: + { + iNewWpItem = CMusWpItem::NewL(); + + aCharacteristic.AcceptL( *this ); + + // If Mus settings, store information + if( iAppID && *iAppID == KMusAppID ) + { + MUS_LOG( " CMusWpAdapter, Mus Settings found" ) + delete iWpItem; + iWpItem = iNewWpItem; + } + else + { + delete iNewWpItem; + } + + iNewWpItem = NULL; + break; + } + case KWPNamedCharacteristic: + { + if ( iNewWpItem ) + { + // We are inside APPLICATION-characteristic + if ( aCharacteristic.Name() == + KMUsWpCharacteristicNameCapability() || + aCharacteristic.Name() == + KMUsWpCharacteristicNameActivation() ) + { + aCharacteristic.AcceptL( *this ); + } + } + break; + } + default: + { + break; + } + } + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::VisitL (Characteristic)" ) + } + + +// ----------------------------------------------------------------------------- +// From base class CWPAdapter, which derives this from MWPVisitor. +// Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::VisitL( CWPParameter& aParameter ) + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::VisitL (Parameter)" ) + + switch ( aParameter.ID() ) + { + case EWPNamedParameter: // Name is used instead of ID + { + if ( aParameter.Name() == KMusWpParamNameEdgeDtm() ) + { + iNewWpItem->SetEdgeDtmSupport( ETrue ); + } + else if ( aParameter.Name() == KMusWpParamNameInternetSignaling() ) + { + iNewWpItem->SetForceInternetSignaling( ETrue ); + } + else if ( aParameter.Name() == KMusWpParamNameQuery() ) + { + iNewWpItem->SetCapabilityQuery( aParameter.Value() ); + } + else if ( aParameter.Name() == KMusWpParamNameCondition() ) + { + iNewWpItem->SetActivationCondition( aParameter.Value() ); + } + else + { + // To keep PC-Lint happy + } + break; + } + case EWPParameterAppID: // APPLICATION/APPID + { + delete iAppID; + iAppID = NULL; + iAppID = aParameter.Value().AllocL(); + break; + } + case EWPParameterProviderID: // APPLICATION/PROVIDER-ID + { + iNewWpItem->SetProviderIdL( aParameter.Value() ); + break; + } + case EWPParameterName: // APPLICATION/NAME + { + iNewWpItem->SetNameL( aParameter.Value() ); + break; + } + case EWPParameterToAppRef: // APPLICATION/TO-APPREF + { + iNewWpItem->SetToAppRefL( aParameter.Value() ); + break; + } + default: + { + break; + } + } + + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::VisitL (Parameter)" ) + } + + +// ----------------------------------------------------------------------------- +// From base class CWPAdapter, which derives this from MWPVisitor. +// Definition of the pure virtual function. +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::VisitLinkL(CWPCharacteristic& /*aLink*/ ) + { + // NOP + } + + +// ----------------------------------------------------------------------------- +// C++ default constructor +// ----------------------------------------------------------------------------- +// +CMusWpAdapter::CMusWpAdapter() + :CWPAdapter(), + iProfileIdReceived( EFalse ), + iProfileId( KMusWpNotSet ) + { + } + + +// ----------------------------------------------------------------------------- +// Symbian 2nd phase constructor +// ----------------------------------------------------------------------------- +// +void CMusWpAdapter::ConstructL() + { + MUS_LOG( "mus: [MUSWP] -> CMusWpAdapter::ConstructL" ) + + TFileName fileName; + Dll::FileName(fileName); + + iSummaryTitle = WPAdapterUtil::ReadHBufCL( fileName, + KMusWpAdapterName, + R_MUS_WP_SUMMARYTITLE ); + + MUS_LOG( "mus: [MUSWP] <- CMusWpAdapter::ConstructL" ) + } + + + + + +