diff -r 000000000000 -r 95b198f216e5 wmdrm/camese/wmdrmdla/src/wmdrmdlauinotifierimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wmdrm/camese/wmdrmdla/src/wmdrmdlauinotifierimpl.cpp Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,207 @@ +/* +* Copyright (c) 2008 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: Implementation of WMDRM DLA UI Notifier Impl. +* +*/ + + +#include +#include +#include "wmdrmdlauinotifierimpl.h" +#include "wmdrmdlauiplugin.h" + +#define _LOGGING_FILE L"wmdrmdla.txt" +#include "logfn.h" + +//CONSTANTS +const TUid KWmDrmDlaDefaultUiPluginUid = { 0x20019575 }; + +// ======== LOCAL FUNCTIONS ======== + +// ----------------------------------------------------------------------------- +// DoResetDestroyAndClose +// Does ResetAndDestroy() and Close to given RImplInfoPtrArray +// ----------------------------------------------------------------------------- +LOCAL_C void DoResetDestroyAndClose( TAny* aPtr ) + { + ( reinterpret_cast( aPtr ) )->ResetAndDestroy(); + ( reinterpret_cast( aPtr ) )->Close(); + } + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::ConstructL +// --------------------------------------------------------------------------- +// +void CWmDrmDlaUiNotifierImpl::ConstructL() + { + LOGFN( "CWmDrmDlaUiNotifierImpl::ConstructL" ); + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::CWmDrmDlaUiNotifierImpl +// --------------------------------------------------------------------------- +// +CWmDrmDlaUiNotifierImpl::CWmDrmDlaUiNotifierImpl() + { + LOGFN( "CWmDrmDlaUiNotifierImpl::CWmDrmDlaUiNotifierImpl" ); + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::NewL +// --------------------------------------------------------------------------- +// +CWmDrmDlaUiNotifierImpl* CWmDrmDlaUiNotifierImpl::NewL() + { + LOGFN( "CWmDrmDlaUiNotifierImpl::NewL" ); + CWmDrmDlaUiNotifierImpl* self = CWmDrmDlaUiNotifierImpl::NewLC(); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::NewLC +// --------------------------------------------------------------------------- +// +CWmDrmDlaUiNotifierImpl* CWmDrmDlaUiNotifierImpl::NewLC() + { + LOGFN( "CWmDrmDlaUiNotifierImpl::NewLC" ); + CWmDrmDlaUiNotifierImpl* self = new( ELeave ) CWmDrmDlaUiNotifierImpl; + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::~CWmDrmDlaUiNotifierImpl +// --------------------------------------------------------------------------- +// +CWmDrmDlaUiNotifierImpl::~CWmDrmDlaUiNotifierImpl() + { + LOGFN( "CWmDrmDlaUiNotifierImpl::~CWmDrmDlaUiNotifierImpl" ); + delete iUiPlugin; + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::InitializeL +// --------------------------------------------------------------------------- +// +void CWmDrmDlaUiNotifierImpl::InitializeL( + TUid aUid ) + { + LOGFN( "CWmDrmDlaUiNotifierImpl::InitializeL" ); + LOG2( "aUid: %d", aUid ); + delete iUiPlugin; + iUiPlugin = NULL; + iUiPlugin = CWmDrmDlaUiPluginIf::NewL( aUid ); + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::InitializeL +// --------------------------------------------------------------------------- +// +void CWmDrmDlaUiNotifierImpl::InitializeL( + TDesC8& aOpaqueData ) + { + TInt err( KErrNotFound ); + + LOGFNR( "CWmDrmDlaUiNotifierImpl::InitializeL", err ); + LOGHEX( aOpaqueData.Ptr(), aOpaqueData.Length() ); + + delete iUiPlugin; + iUiPlugin = NULL; + RImplInfoPtrArray implArray; + CleanupStack::PushL( TCleanupItem( DoResetDestroyAndClose, &implArray ) ); + REComSession::ListImplementationsL( KWmDrmDlaUiPluginIfUid, implArray ); + + for ( TInt i( 0 ); i < implArray.Count() && err == KErrNotFound; ++i ) + { + if ( aOpaqueData.CompareF( implArray[i]->OpaqueData() ) == 0 && + implArray[i]->VendorId() == VID_DEFAULT ) + { + err = KErrNone; + iUiPlugin = + CWmDrmDlaUiPluginIf::NewL( implArray[i]->ImplementationUid() ); + } + } + if ( err == KErrNotFound ) + { + err = KErrNone; + iUiPlugin = CWmDrmDlaUiPluginIf::NewL( KWmDrmDlaDefaultUiPluginUid ); + } + CleanupStack::PopAndDestroy( &implArray ); + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::SetCancelObserver +// --------------------------------------------------------------------------- +// +void CWmDrmDlaUiNotifierImpl::SetCancelObserver( + MWmDrmDlaCancelObserver* aObserver ) + { + LOGFN( "CWmDrmDlaUiNotifierImpl::SetCancelObserver" ); + if ( iUiPlugin ) + { + iUiPlugin->SetCancelObserver( aObserver ); + } + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::SetSilent +// --------------------------------------------------------------------------- +// +void CWmDrmDlaUiNotifierImpl::SetSilent( + TBool aSilent ) + { + LOGFN( "CWmDrmDlaUiNotifierImpl::SetSilent" ); + LOG2( "aSilent: %d", aSilent ); + if ( iUiPlugin ) + { + iUiPlugin->SetSilent( aSilent ); + } + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::SetProgress +// --------------------------------------------------------------------------- +// +void CWmDrmDlaUiNotifierImpl::SetProgress( + TInt aState ) + { + LOGFN( "CWmDrmDlaUiNotifierImpl::SetProgress" ); + LOG2( "aState: %d", aState ); + if ( iUiPlugin ) + { + iUiPlugin->SetProgress( aState ); + } + } + +// --------------------------------------------------------------------------- +// CWmDrmDlaUiNotifierImpl::HandleErrorL +// --------------------------------------------------------------------------- +// +void CWmDrmDlaUiNotifierImpl::HandleErrorL( + TInt aError ) + { + LOGFN( "CWmDrmDlaUiNotifierImpl::HandleErrorL" ); + LOG2( "aError: %d", aError ); + if ( iUiPlugin ) + { + iUiPlugin->HandleErrorL( aError ); + } + } +