diff -r 000000000000 -r 4e91876724a2 photosgallery/collectionframework/plugins/glxcollectionpluginimageviewer/src/glxcollectionpluginimageviewer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/collectionframework/plugins/glxcollectionpluginimageviewer/src/glxcollectionpluginimageviewer.cpp Thu Dec 17 08:45:44 2009 +0200 @@ -0,0 +1,196 @@ +/* +* 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: This class browses file system +* +*/ + + + + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "glxcollectionpluginimageviewer.h" +#include "glxcollectionpluginimageviewer.hrh" +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +// ============================ LOCAL FUNCTIONS ============================== + +// ============================ MEMBER FUNCTIONS ============================== +// ---------------------------------------------------------------------------- +// Two-phased constructor. +// ---------------------------------------------------------------------------- +// +CGlxCollectionPluginImageViewer* CGlxCollectionPluginImageViewer::NewL(TAny* aObs) + { + CGlxCollectionPluginImageViewer* self = + new (ELeave) CGlxCollectionPluginImageViewer( + static_cast(aObs)); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ---------------------------------------------------------------------------- +// Destructor +// ---------------------------------------------------------------------------- +// +CGlxCollectionPluginImageViewer::~CGlxCollectionPluginImageViewer() + { + } + +// ---------------------------------------------------------------------------- +// Constructor +// ---------------------------------------------------------------------------- +// +CGlxCollectionPluginImageViewer::CGlxCollectionPluginImageViewer( + MMPXCollectionPluginObserver* aObs) + { + iObs = aObs; + } + +// ---------------------------------------------------------------------------- +// ConstructL +// ---------------------------------------------------------------------------- +// +void CGlxCollectionPluginImageViewer::ConstructL() + { + iDataSource = MGlxDataSource::OpenDataSourceL(KGlxDefaultDataSourceUid, *this); + } + +void CGlxCollectionPluginImageViewer::CpiAttributeAdditionalAttributes( + const TMPXAttribute& aCpiAttribute, + RArray& aAttributeArray) + { + // Nothing to be shared apart from the ones that are commonly loaded. + } + +void CGlxCollectionPluginImageViewer::HandleCpiAttributeResponseL( + CMPXMedia* aResponse, TArray aCpiAttributes, + TArray aMediaIds) + { + TRACER("CGlxCollectionPluginImageViewer::HandleCpiAttributeResponseL"); + const TInt mediaIdCount = aMediaIds.Count(); + + switch (mediaIdCount) + { + case 0: + User::Leave(KErrNotSupported); + break; + case 1: + HandleCpiAttributeResponseL(aResponse, aCpiAttributes, aMediaIds[0]); + break; + default: + { + // We have an array of CMPXMedia items + + if (TGlxMediaId(KGlxCollectionRootId) == aMediaIds[0]) + { + User::Leave(KErrNotSupported); + } + + CMPXMediaArray* mediaArray = aResponse->ValueCObjectL(KMPXMediaArrayContents); + CleanupStack::PushL(mediaArray); + + const TInt arrayCount = mediaArray->Count(); + + // Sanity check + if (arrayCount != mediaIdCount) + { + User::Leave(KErrArgument); + } + + for (TInt index = 0; index < arrayCount; index++) + { + HandleCpiAttributeResponseL((*mediaArray)[index], aCpiAttributes, aMediaIds[index]); + } + + aResponse->SetCObjectValueL(KMPXMediaArrayContents, mediaArray); + CleanupStack::PopAndDestroy(mediaArray); + } + break; + } + } + +void CGlxCollectionPluginImageViewer::HandleCpiAttributeResponseL( + CMPXMedia* aResponse, TArray aCpiAttributes, + TGlxMediaId aMediaId) + { + const TInt attribCount = aCpiAttributes.Count(); + + for (TInt index = 0; index < attribCount ; index++) + { + const TMPXAttribute attr = aCpiAttributes[index]; + + if (attr == KGlxMediaCollectionPluginSpecificSubTitle) + { + User::Leave(KErrNotSupported); + } + else if (attr == KGlxMediaCollectionPluginSpecificSelectMediaPopupTitle) + { + User::Leave(KErrNotSupported); + } + else if (attr == KGlxMediaCollectionPluginSpecificNewMediaItemTitle) + { + User::Leave(KErrNotSupported); + } + else if (attr == KGlxMediaCollectionPluginSpecificDefaultMediaTitle) + { + User::Leave(KErrNotSupported); + } + else if (attr == KMPXMediaGeneralTitle) + { + User::Leave(KErrNotSupported); + } + } + } + +TBool CGlxCollectionPluginImageViewer::IsUpdateMessageIgnored(CMPXMessage& /*aMessage*/) + { + TBool ignore = EFalse; + return ignore; + } + +TGlxFilterProperties CGlxCollectionPluginImageViewer::DefaultFilter(TInt /*aLevel*/) + { + TGlxFilterProperties filterProperties; + + filterProperties.iSortDirection = EGlxFilterSortDirectionAscending; + filterProperties.iMinCount = 1; + filterProperties.iItemType = EGlxFilterImage; + + return filterProperties; + }