diff -r 000000000000 -r 4e91876724a2 photosgallery/viewframework/commandhandlers/commandhandlerdrm/src/glxdrmiconmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/viewframework/commandhandlers/commandhandlerdrm/src/glxdrmiconmanager.cpp Thu Dec 17 08:45:44 2009 +0200 @@ -0,0 +1,514 @@ +/* +* Copyright (c) 2008-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: Manager of visual lists +* +*/ + + + + +/** + * @internal reviewed 03/07/2007 by Rowland Cook + */ + +#include "glxdrmiconmanager.h" + +#include +#include +#include +#include // icons +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const TInt KGlxDrmIconSize = 16; +const TInt KGlxDrmIconBorder = 0; + +// --------------------------------------------------------------------------- +// 1st phase constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CGlxDrmIconManager* CGlxDrmIconManager::NewL( MGlxMediaList& aMediaList, + MGlxVisualList& aVisualList) + { + CGlxDrmIconManager* self = + new(ELeave)CGlxDrmIconManager(aMediaList, aVisualList); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +EXPORT_C CGlxDrmIconManager::~CGlxDrmIconManager() + { + iMediaList.RemoveMediaListObserver(this); + iVisualList.RemoveObserver(this); + + iThumbnailIcons.Close(); + + if(iDRMUtility) + { + iDRMUtility->Close(); + } + + iValidDRMItems.Close(); + iInvalidDRMItems.Close(); + } + +// --------------------------------------------------------------------------- +// RemoveOverlayIcon +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::RemoveOverlayIcon(TInt aIndex, + TBool aInvalidIcon) + { + if(aInvalidIcon) + { + iVisualList.SetIconVisibility( aIndex, + *iDRMRightsExpiredTexture, EFalse ); + } + else + { + iVisualList.SetIconVisibility( aIndex, + *iDRMSendForbidTexture, EFalse ); + } + + } + +// --------------------------------------------------------------------------- +// AddOverlayIconL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::AddOverlayIconsL() + { + TRACER("CGlxDrmIconManager::AddOverlayIconsL"); + TInt itemCount = iMediaList.Count(); + for(TInt i = 0; i < itemCount; i++) + { + CAlfVisual* vis = iVisualList.Visual(i); + if(vis) + { + // recheck rights as status may have changed + CheckDRMRightsL(vis, i); + } + } + } + +// --------------------------------------------------------------------------- +// HandleItemAddedL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleItemAddedL(TInt /*aStartIndex*/, + TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleMediaL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleMediaL(TInt /*aListIndex*/, + MGlxMediaList* /*aList*/) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// void CGlxDrmIconManager::HandleItemRemovedL(TInt /*aStartIndex*/, + +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleItemRemovedL(TInt /*aStartIndex*/, + TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleItemModifiedL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleItemModifiedL( + const RArray& /*aItemIndexes*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleAttributesAvailableL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleAttributesAvailableL(TInt aItemIndex, + const RArray& aAttributes, MGlxMediaList* /*aList*/) + { + TIdentityRelation match(&TMPXAttribute::Match); + if (aAttributes.Find(KMPXMediaDrmProtected, match) != KErrNotFound) + { + // check if we have DRM attributes + CAlfVisual* vis = iVisualList.Visual(aItemIndex); + if(vis) + { + CheckDRMRightsL(vis, aItemIndex, EFalse); + } + } + } + +// --------------------------------------------------------------------------- +// HandleFocusChangedL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleFocusChangedL( + NGlxListDefs::TFocusChangeType /*aType*/, + TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleItemSelectedL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleItemSelectedL(TInt /*aIndex*/, + TBool /*aSelected*/, MGlxMediaList* /*aList*/) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleMessageL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleMessageL(const CMPXMessage& /*aMessage*/, + MGlxMediaList* /*aList*/) + { + // No implementation + } + + +// --------------------------------------------------------------------------- +// HandleFocusChangedL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleFocusChangedL( TInt /*aFocusIndex*/, + TReal32 /*aItemsPerSecond*/, MGlxVisualList* /*aList*/, + NGlxListDefs::TFocusChangeType /*aType*/ ) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleSizeChanged +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleSizeChanged( const TSize& /*aSize*/, + MGlxVisualList* /*aList*/ ) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleVisualRemoved +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleVisualRemoved( + const CAlfVisual* /*aVisual*/, MGlxVisualList* /*aList*/ ) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// HandleVisualAddedL +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::HandleVisualAddedL( CAlfVisual* aVisual, + TInt aIndex, MGlxVisualList* /*aList*/ ) + { + if(aIndex >= 0 && aIndex < iMediaList.Count() ) + { + CheckDRMRightsL(aVisual, aIndex); + } + } + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +CGlxDrmIconManager::CGlxDrmIconManager(MGlxMediaList& aMediaList, + MGlxVisualList& aVisualList) + : CGlxIconManager(aMediaList, aVisualList) + { + // No implementation + } + +// --------------------------------------------------------------------------- +// 2nd phase construction +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::ConstructL() + { + TRACER("CGlxDrmIconManager::ConstructL"); + BaseConstructL(); + + TFileName mifFile( KDC_APP_BITMAP_DIR ); + mifFile.Append( KGlxIconsFilename ); + + GLX_LOG_INFO("CGlxDrmIconManager::ConstructL create valid icon"); + // ask texture manager to create DRM valid icon + iDRMSendForbidTexture = &(iUiUtility->GlxTextureManager(). + CreateIconTextureL( EMbmGlxiconsQgn_prop_drm_rights_valid_super, + mifFile, TSize( KGlxDrmIconSize, KGlxDrmIconSize ) ) ); + GLX_LOG_INFO("CGlxDrmIconManager::ConstructL create invalid icon"); + + // ask texture manager to create DRM invalid icon + iDRMRightsExpiredTexture = &(iUiUtility->GlxTextureManager(). + CreateIconTextureL( EMbmGlxiconsQgn_prop_drm_rights_exp_super, + mifFile, TSize( KGlxDrmIconSize, KGlxDrmIconSize ) ) ); + + + + // add as observers + iMediaList.AddMediaListObserverL(this); + iVisualList.AddObserverL(this); + + GLX_LOG_INFO("CGlxDrmIconManager::ConstructL create DRM utility"); + iDRMUtility = CGlxDRMUtility::InstanceL(); + + // check for any visual already present in list + TInt itemCount = iMediaList.Count(); + for(TInt i = 0; i < itemCount; i++) + { + CAlfVisual* vis = iVisualList.Visual( i ); + if(vis) + { + CheckDRMRightsL(vis, i); + } + } + + } + +// --------------------------------------------------------------------------- +// IconAlreadyAdded +// --------------------------------------------------------------------------- +// +TInt CGlxDrmIconManager::ThumbnailIconArrayPos(TIconInfo& aIconInfo) + { + // check if icon already generated + TInt pos = KErrNotFound; + TInt count = iThumbnailIcons.Count(); + for(TInt i=0; i 0) + { + TGlxVisualIcon iconType; + if(iDRMUtility->IsForwardLockedL(uri)) + { + GLX_LOG_INFO("CGlxDrmIconManager::CheckDRMRightsL forward locked"); + if(aForceIcon || !ShouldHaveIcon(id, iconType)) + { + GLX_LOG_INFO("CGlxDrmIconManager::CheckDRMRightsL forward locked add icon"); + AddValidIconL(id); + iVisualList.AddIconL( aIndex, *iDRMSendForbidTexture, + NGlxIconMgrDefs::EGlxIconBottomRight, ETrue, EFalse, KGlxDrmIconBorder ); + + iVisualList.SetIconVisibility( aIndex, *iDRMSendForbidTexture, ETrue ); + } + + } + else + { + + TMPXGeneralCategory cat = item.Category(); + + TBool checkViewRights = (cat==EMPXImage); + + if(iDRMUtility->CheckOpenRightsL(uri, checkViewRights)) + { + GLX_LOG_INFO("CGlxDrmIconManager::CheckDRMRightsL valid rights"); + if(aForceIcon ||!ShouldHaveIcon(id, iconType)) + { + GLX_LOG_INFO("CGlxDrmIconManager::CheckDRMRightsL valid rights add icon"); + AddValidIconL(id); + iVisualList.AddIconL( aIndex, *iDRMSendForbidTexture, + NGlxIconMgrDefs::EGlxIconBottomRight, + ETrue, EFalse, KGlxDrmIconBorder ); + + iVisualList.SetIconVisibility( aIndex, *iDRMSendForbidTexture, ETrue ); + } + } + else + { + GLX_LOG_INFO("CGlxDrmIconManager::CheckDRMRightsL invalid rights"); + + if(aForceIcon ||!ShouldHaveIcon(id, iconType)) + { + iVisualList.RemoveIcon( aIndex, *iDRMSendForbidTexture ); + GLX_LOG_INFO("CGlxDrmIconManager::CheckDRMRightsL add invalid icon"); + AddInvalidIconL(id); + iVisualList.AddIconL( aIndex, *iDRMRightsExpiredTexture, + NGlxIconMgrDefs::EGlxIconBottomRight, + ETrue, EFalse, KGlxDrmIconBorder ); + + iVisualList.SetIconVisibility( aIndex, *iDRMRightsExpiredTexture, ETrue ); + } + } + } + } + } + } + +// --------------------------------------------------------------------------- +// AddValidIcon +// --------------------------------------------------------------------------- +// +void CGlxDrmIconManager::AddValidIconL(TGlxMediaId& aId) + { + TInt count = iValidDRMItems.Count(); + TBool present = EFalse; + for(TInt i=0; i