diff -r 000000000000 -r 7f85d04be362 upnpsharing/applicationengine/src/upnpiconconfigurator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnpsharing/applicationengine/src/upnpiconconfigurator.cpp Thu Dec 17 08:52:00 2009 +0200 @@ -0,0 +1,376 @@ +/* +* 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: Configurator class for mediaserver icons + * +*/ + + + + + + +// INCLUDE FILES +// System +#include + +// upnp stack +#include + +// upnp framework internal API's +#include "upnpfileutilitytypes.h" // utilities / mime type definitions + +// app.engine internal +#include "upnpapplicationcrkeys.h" //KUPnPAppMediaServerIcon +#include "upnpfilesharingengineao.h" +#include "upnpiconconfigurator.h" + + +// constants +_LIT( KIcon1Path, "\\system\\apps\\upnp\\upnp_ms_jpeg_sm.jpg"); +const TInt KIcon1Width( 48 ); +const TInt KIcon1Height( 48 ); +const TInt KIcon1Depth( 24 ); + +_LIT( KIcon2Path, "\\system\\apps\\upnp\\upnp_ms_jpeg_lrg.jpg"); +const TInt KIcon2Width( 120 ); +const TInt KIcon2Height( 120 ); +const TInt KIcon2Depth( 24 ); + +_LIT( KIcon3Path, "\\system\\apps\\upnp\\upnp_ms_png_sm.png"); +const TInt KIcon3Width( 48 ); +const TInt KIcon3Height( 48 ); +const TInt KIcon3Depth( 24 ); + +_LIT( KIcon4Path, "\\system\\apps\\upnp\\upnp_ms_png_lrg.png"); +const TInt KIcon4Width( 120 ); +const TInt KIcon4Height( 120 ); +const TInt KIcon4Depth( 24 ); + +_LIT(KComponentLogfile, "applicationengine.txt"); +#include "upnplog.h" + +// ============================ MEMBER FUNCTIONS ============================ + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::CUPnPIconConfigurator +// -------------------------------------------------------------------------- +// +CUPnPIconConfigurator::CUPnPIconConfigurator( + RUpnpMediaServerClient& aMediaServer, + CUPnPFileSharingEngineAO& aFileShareingAO ) + : CActive(CActive::EPriorityStandard), + iMediaServer( aMediaServer ), + iFileShareEngineAO( aFileShareingAO ) + { + __LOG( "[UPNP_ENGINE] CUPnPIconConfigurator::CUPnPIconConfigurator" ); + CActiveScheduler::Add( this ); + } + + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::~CUPnPIconConfigurator() +// -------------------------------------------------------------------------- +// +CUPnPIconConfigurator::~CUPnPIconConfigurator() + { + + if ( IsActive() ) + { + iState = EStateIdle; + TRequestStatus* stat = &iStatus; + User::RequestComplete( stat, KErrNone ); + } + Cancel(); + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::NeedToConfigureIcons() +// -------------------------------------------------------------------------- +// +TBool CUPnPIconConfigurator::NeedToConfigureIcons() + { +#ifdef _DEBUG + // in debug mode ALWAYS add new icons + return ETrue; +#else + // in normal mode only add icons if they DO NOT exist + TBool iconsExist = EFalse; + TRAP_IGNORE( iconsExist = CheckIconsAddedL() ); + __LOG1( "[UPNP_ENGINE] CUPnPIconConfigurator: iconsExist %d", + iconsExist ); + return !iconsExist; +#endif + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::ConfigureIconsL() +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::ConfigureIconsL() + { + RemoveIcons(); + } + +// -------------------------------------------------------------------------- +// CUPnPFileSharingEngineAO::RunL +// Called when asyncronous request is ready +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::RunL() + { + __LOG( "[UPNP_ENGINE] CUPnPIconConfigurator::RunL" ); + + TInt err( iStatus.Int() ); + + if ( ( err != KErrNone ) && ( err != KErrNotFound ) ) + { + iFileShareEngineAO.SetIconComplete( err ); + } + else + { + switch ( iState ) + { + case EStateRemoving: + { + AddIcon1L(); + iState = EStateAdding1; + } + break; + case EStateAdding1: + { + delete iIcon1; + iIcon1 = NULL; + AddIcon2L(); + iState = EStateAdding2; + } + break; + case EStateAdding2: + { + delete iIcon2; + iIcon2 = NULL; + AddIcon3L(); + iState = EStateAdding3; + } + break; + case EStateAdding3: + { + delete iIcon3; + iIcon3 = NULL; + AddIcon4L(); + iState = EStateAdding4; + } + break; + case EStateAdding4: + { + delete iIcon4; + iIcon4 = NULL; + // operation complete. + MarkIconsAddedL( ETrue ); + Cancel(); + iFileShareEngineAO.SetIconComplete( KErrNone ); + } + break; + default: + { + __PANICD( __FILE__, __LINE__ ); + } + break; + } + } + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::RunError +// RunL error handler +// -------------------------------------------------------------------------- +// +TInt CUPnPIconConfigurator::RunError( TInt aError ) + { + __LOG( "[UPNP_ENGINE] CUPnPIconConfigurator::RunError begin" ); + + iFileShareEngineAO.SetIconComplete( aError ); + return KErrNone; + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::DoCancel +// Cancels active object +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::DoCancel() + { + __LOG( "[UPNP_ENGINE] CUPnPIconConfigurator::DoCancel" ); + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::RemoveIconsL +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::RemoveIcons() + { + __LOG( "[UPNP_ENGINE]\t CUPnPIconConfigurator::RemoveIconsL" ); + iState = EStateRemoving; + iMediaServer.RemoveIcons( iStatus ); + if ( !IsActive() ) + { + SetActive(); + } + else + { + __LOG("[UPNP_ENGINE]\t CUPnPIconConfigurator::RemoveIconsL Error :\ + Already active"); + } + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::AddIcon1 +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::AddIcon1L() + { + __LOG( "[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon1" ); + TFileName iconPath; + ResolveIconPath( KIcon1Path, iconPath ); + iIcon1 = CUpnpIcon::NewL( iconPath, + KIcon1Width, KIcon1Height, KIcon1Depth, KJpegMime ); + iMediaServer.AddIcon( iIcon1, iStatus ); + if ( !IsActive() ) + { + SetActive(); + } + else + { + __LOG("[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon1L Error :\ + Already active"); + } + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::AddIcon2 +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::AddIcon2L() + { + __LOG( "[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon2" ); + TFileName iconPath; + ResolveIconPath( KIcon2Path, iconPath ); + iIcon2 = CUpnpIcon::NewL( iconPath, + KIcon2Width, KIcon2Height, KIcon2Depth, KJpegMime ); + iMediaServer.AddIcon( iIcon2, iStatus ); + if ( !IsActive() ) + { + SetActive(); + } + else + { + __LOG("[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon2L Error :\ + Already active"); + } + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::AddIcon3 +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::AddIcon3L() + { + __LOG( "[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon3" ); + TFileName iconPath; + ResolveIconPath( KIcon3Path, iconPath ); + iIcon3 = CUpnpIcon::NewL( iconPath, + KIcon3Width, KIcon3Height, KIcon3Depth, KPngMime ); + iMediaServer.AddIcon( iIcon3, iStatus ); + if ( !IsActive() ) + { + SetActive(); + } + else + { + __LOG("[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon3L Error :\ + Already active"); + } + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::AddIcon4 +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::AddIcon4L() + { + __LOG( "[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon4" ); + TFileName iconPath; + ResolveIconPath( KIcon4Path, iconPath ); + iIcon4 = CUpnpIcon::NewL( iconPath, + KIcon4Width, KIcon4Height, KIcon4Depth, KPngMime ); + iMediaServer.AddIcon( iIcon4, iStatus ); + if ( !IsActive() ) + { + SetActive(); + } + else + { + __LOG("[UPNP_ENGINE]\t CUPnPIconConfigurator::AddIcon4L Error :\ + Already active"); + } + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::ResolveIconPath +// Resolves absolute icon path +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::ResolveIconPath( + const TDesC& relativePath, TFileName& iconPath ) + { + iconPath = relativePath; + TFileName dllName; + Dll::FileName( dllName ); + TBuf<2> drive = dllName.Left(2); // Drive letter followed by ':' + iconPath.Insert( 0, drive ); + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::CheckIconsAddedL +// Set the mediaserver icon if it is needed +// -------------------------------------------------------------------------- +// +TBool CUPnPIconConfigurator::CheckIconsAddedL() + { + __LOG( "[UPNP_ENGINE] CUPnPIconConfigurator::CheckIconsAddedL" ); + + TInt iconSet ( EFalse ); + CRepository *repository = CRepository::NewL( KCRUidUPnPApplication ); + repository->Get( KUPnPAppMediaServerIcon, iconSet ); + delete repository; + repository = NULL; + return iconSet; + } + +// -------------------------------------------------------------------------- +// CUPnPIconConfigurator::MarkIconsAddedL +// store the cenrep value +// -------------------------------------------------------------------------- +// +void CUPnPIconConfigurator::MarkIconsAddedL( TBool aMark ) + { + __LOG( "[UPNP_ENGINE] CUPnPIconConfigurator::MarkIconsAddedL" ); + + CRepository *repository = CRepository::NewL( KCRUidUPnPApplication ); + repository->Set( KUPnPAppMediaServerIcon, aMark ); + delete repository; + repository = NULL; + } + + +// End of file