--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde/src/glxdatasourcetaskmdeattribute.cpp Mon Sep 27 15:13:20 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1277 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "glxdatasourcetaskmdeattribute.h"
-
-#include <glxcollectionpluginCamera.hrh>
-#include <glxcollectionpluginDownloads.hrh>
-#include <glxcollectionpluginMonths.hrh>
-#include <glxcollectionpluginalbums.hrh>
-#include <glxcollectionpluginall.hrh>
-#include <glxcollectionplugintags.hrh>
-#include <glxerrors.h>
-#include <glxfilterfactory.h>
-#include <glxgetrequest.h>
-#include <glxgetrequest.h>
-#include <glxidlistrequest.h>
-#include <glxlog.h>
-#include <glxmediacollectioninternaldefs.h>
-#include <glxmediageneraldefs.h>
-#include <glxrequest.h>
-#include <glxthumbnailattributeinfo.h>
-#include <glxthumbnailrequest.h>
-#include <glxtndatabase.h>
-#include <glxtnfileinfo.h>
-#include <glxtnthumbnailcreator.h>
-#include <imageconversion.h>
-#include <lbsposition.h>
-#include <mdeconstants.h>
-#include <mdelogiccondition.h>
-#include <mdeobject.h>
-#include <mdeobjectdef.h>
-#include <mdeobjectquery.h>
-#include <mdepropertydef.h>
-#include <mderelationdef.h>
-#include <mdesession.h>
-#include <mdetextproperty.h>
-#include <mpxmedia.h>
-#include <mpxmediaarray.h>
-#include <mpxmediacollectiondetaildefs.h>
-#include <mpxmediacontainerdefs.h>
-#include <mpxmediadrmdefs.h>
-#include <mpxmediageneraldefs.h>
-
-#include "glxdatasourcemde.h"
-#include "glxdatasourcemde.h"
-#include "glxdatasourcemde.hrh"
-
-// CONSTANTS
-
-_LIT(KPropertyDefNameAlbumType, "Type");
-_LIT(KPropertyDefNameComment, "Comment");
-_LIT(KPropertyDefNameCreationDate, "CreationDate");
-_LIT(KPropertyDefNameDRM, "DRM");
-_LIT(KPropertyDefNameDuration, "Duration");
-_LIT(KPropertyDefNameFrameCount, "FrameCount");
-_LIT(KPropertyDefNameHeight, "Height");
-_LIT(KPropertyDefNameItemType, "ItemType");
-_LIT(KPropertyDefNameLastModifiedDate, "LastModifiedDate");
-_LIT(KPropertyDefNameLatitude, "Latitude");
-_LIT(KPropertyDefNameLongitude, "Longitude");
-_LIT(KPropertyDefNameSize, "Size");
-_LIT(KPropertyDefNameTitle, "Title");
-_LIT(KPropertyDefNameUsageCount, "UsageCount");
-_LIT(KPropertyDefNameWidth, "Width");
-
-// ----------------------------------------------------------------------------
-// Constructor
-// ----------------------------------------------------------------------------
-//
-CGlxDataSourceTaskMdeAttribute::CGlxDataSourceTaskMdeAttribute(CGlxGetRequest* aRequest, MGlxDataSourceRequestObserver& aObserver, CGlxDataSource* aDataSource)
- : CGlxDataSourceTaskMde(aRequest, aObserver, aDataSource)
- {
- GLX_LOG_ENTRY_EXIT("CGlxDataSourceTaskMdeAttribute::CGlxDataSourceTaskMdeAttribute()");
- iFilterProperties = TGlxFilterFactory::ExtractAttributes(iRequest->Filter());
- }
-
-// ----------------------------------------------------------------------------
-// Destructor
-// ----------------------------------------------------------------------------
-//
-CGlxDataSourceTaskMdeAttribute::~CGlxDataSourceTaskMdeAttribute()
- {
- GLX_LOG_ENTRY_EXIT("CGlxDataSourceTaskMdeAttribute::~CGlxDataSourceTaskMdeAttribute()");
- delete iMediaArray;
- iQueryAttributes.Close();
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::ExecuteRequestL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::ExecuteRequestL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::ExecuteRequestL()");
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
-
- __ASSERT_DEBUG(request->MediaIds().Count() > 0, User::Invariant());
-
- if (request->MediaIds().Count() > 1)
- {
- iMediaArray = CMPXMediaArray::NewL();
- }
-
- if (request->MediaIds()[0] == KGlxCollectionRootId)
- {
- __ASSERT_DEBUG(request->MediaIds().Count() == 1, User::Invariant());
- AddCollectionAttributesL(iResponse);
- }
- else
- {
-
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
-
- const RArray<TItemId>& mediaIds = reinterpret_cast<const RArray<TItemId>&>(request->MediaIds());
-
- switch(iFilterProperties.iItemType)
- {
- case EGlxFilterVideoAndImages:
- case EGlxFilterImage:
- case EGlxFilterVideo:
- {
- QueueImageVideoObjectQueriesL(mediaIds, iFilterProperties);
- if (LocationAttributeRequested())
- {
- QueueLocaitonQueryL();
- }
- break;
- }
- case EGlxFilterAlbum:
- {
- QueueAlbumObjectQueryL(mediaIds);
- break;
- }
- case EGlxFilterTag:
- {
- QueueTagObjectQueryL(mediaIds);
- break;
- }
- case EGlxFilterMonth:
- {
- QueueMonthObjectQueryL(mediaIds);
- break;
- }
- }
-
- }
-
- DoNextQueryL();
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMde::DoHandleQueryCompletedL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::DoHandleQueryCompletedL(CMdEQuery& /*aQuery*/)
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::DoHandleQueryCompletedL()");
- switch (iQueryTypes[0])
- {
- case ELocationAttributeQuery:
- DoHandleLocationQueryCompletedL();
- break;
- case EAttributeQuery:
- DoHandleAttributeQueryCompletedL();
- break;
- case EImageVideoQuery:
- DoHandleImageVideoQueryCompletedL();
- break;
- case EContainerFirstItemQuery:
- // Fall through to panic, DoHandleQueryCompletedL can't handle this query type.
- default:
- Panic(EGlxPanicLogicError);
- break;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::DoNextQueryL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::DoNextQueryL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::DoNextQueryL()");
- if (iQueries.Count())
- {
- ExecuteQueryL();
- }
- else
- {
- DoHandleAttributeResponseCompleteL();
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::DoHandleAttributeResponseCompleteL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::DoHandleAttributeResponseCompleteL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::DoHandleAttributeResponseCompleteL()");
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
- if(request->MediaIds().Count() > 1)
- {
- iResponse->SetCObjectValueL(KMPXMediaArrayContents, iMediaArray);
- iResponse->SetTObjectValueL(KMPXMediaArrayCount, iMediaArray->Count());
- delete iMediaArray;
- iMediaArray = NULL;
- }
- HandleRequestComplete(KErrNone);
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::AddAttributesLC
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::AddAttributesL(CMdEObject& aObject, CMPXMedia* aEntry)
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::AddAttributesL(CMdEObject& aObject, CMPXMedia* aEntry)");
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
-
- CGlxDataSource::TContainerType containerType = DataSource()->ContainerType(&aObject);
- if( containerType != CGlxDataSource::EContainerTypeNotAContainer )
- {
- AddContainerAttributesL(aEntry, &aObject, containerType);
- }
- else
- {
- CGlxDataSource::TItemType itemType = DataSource()->ItemType(&aObject);
- if ( itemType != CGlxDataSource::EItemTypeNotAnItem )
- {
- AddItemAttributesL(aEntry, &aObject, itemType);
- }
- else
- {
- User::Leave(KErrNotSupported);
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::AddCollectionAttributesL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::AddCollectionAttributesL(CMPXMedia* aEntry)
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::AddCollectionAttributesL(CMPXMedia* aEntry)");
- __ASSERT_DEBUG(aEntry, Panic(EGlxPanicLogicError));
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
-
- for ( TInt i = 0; i < request->Attributes().Count(); i++ )
- {
- if ( request->Attributes()[i] == KMPXMediaGeneralId )
- {
- aEntry->SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, (TMPXItemId)request->CollectionPluginUid().iUid);
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralType )
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralType, EMPXNoType);
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralCategory )
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXCollection);
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralTitle )
- {
- request->AppendCpiAttributeL(KMPXMediaGeneralTitle);
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralSystemItem )
- {
- aEntry->SetTObjectValueL(KGlxMediaGeneralSystemItem, ETrue);
- }
-
-
- #ifdef GLX_SUB_TITLE_REL8
-
- //Attributes to get the Count of Images in Container
- else if ( request->Attributes()[i] == KGlxMediaItemTypeImage )
- {
- TGlxMediaId container = TGlxMediaId(KGlxCollectionRootId);
- CMdEObjectDef* objectDef = &DataSource()->ObjectDef();
- TBool isContent = ETrue;
- TGlxFilterProperties filterProperties = iFilterProperties;
-
- switch(iRequest->CollectionPluginUid().iUid)
- {
- case KGlxCollectionPluginCameraImplementationUid:
- {
- container = DataSource()->CameraAlbumId();
- objectDef = &DataSource()->AlbumDef();
- filterProperties.iItemType = EGlxFilterImage;
- QueueObjectQueryL(*objectDef, isContent, EAttributeQuery, EQueryResultModeCount, container, request->Attributes()[i], aEntry, filterProperties);
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
-
- //Attributes to get the Count of Videos in Container
- else if ( request->Attributes()[i] == KGlxMediaItemTypeVideo )
- {
- TGlxMediaId container = TGlxMediaId(KGlxCollectionRootId);
- CMdEObjectDef* objectDef = &DataSource()->ObjectDef();
- TBool isContent = ETrue;
- TGlxFilterProperties filterProperties = iFilterProperties;
-
- switch(iRequest->CollectionPluginUid().iUid)
- {
- case KGlxCollectionPluginCameraImplementationUid:
- {
- container = DataSource()->CameraAlbumId();
- objectDef = &DataSource()->AlbumDef();
- filterProperties.iItemType = EGlxFilterVideo;
- QueueObjectQueryL(*objectDef, isContent, EAttributeQuery, EQueryResultModeCount, container, request->Attributes()[i], aEntry, filterProperties);
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
-#endif
-
-
- else if ( ( request->Attributes()[i] == KMPXMediaGeneralCount ) || ( request->Attributes()[i] == KGlxMediaCollectionInternalUsageCount ) )
- {
- TGlxMediaId container = TGlxMediaId(KGlxCollectionRootId);
- CMdEObjectDef* objectDef = &DataSource()->ObjectDef();
- TBool isContent = ETrue;
- TGlxFilterProperties filterProperties = iFilterProperties;
-
- switch(iRequest->CollectionPluginUid().iUid)
- {
-
- case KGlxCollectionPluginAlbumsImplementationUid:
- {
- isContent = EFalse;
- objectDef = &DataSource()->AlbumDef();
- break;
- }
- case KGlxCollectionPluginCameraImplementationUid:
- {
- container = DataSource()->CameraAlbumId();
- objectDef = &DataSource()->AlbumDef();
- break;
- }
- case KGlxTagCollectionPluginImplementationUid:
- {
- isContent = EFalse;
- objectDef = &DataSource()->TagDef();
- break;
- }
- case KGlxCollectionPluginMonthsImplementationUid:
- {
- container = DataSource()->CameraAlbumId();
- objectDef = &DataSource()->AlbumDef();
- break;
- }
- default:
- {
- // default gallery query returns all objects as per filter
- break;
- }
- }
- QueueObjectQueryL(*objectDef, isContent, EAttributeQuery, EQueryResultModeCount, container, request->Attributes()[i], aEntry, filterProperties);
- }
- else if ( request->Attributes()[i] == KMPXMediaColDetailSpaceId )
- {
- aEntry->SetTObjectValueL(KMPXMediaColDetailSpaceId, KGlxDataSourceMdeImplementationUid);
- }
- else if ( request->Attributes()[i] == KGlxMediaCollectionInternalStartDate )
- {
- TGlxFilterProperties filterProperties = iFilterProperties;
- filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate;
- filterProperties.iSortDirection = EGlxFilterSortDirectionAscending;
-
- QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, EQueryResultModeObjectWithoutFreetexts, DataSource()->CameraAlbumId(), KGlxMediaCollectionInternalStartDate, aEntry, filterProperties);
- }
- else if ( request->Attributes()[i] == KGlxMediaCollectionInternalEndDate )
- {
- // not necessary to be requested, returned when StartDate requested
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralSlideshowableContent )
- {
- aEntry->SetTObjectValueL(KGlxMediaGeneralSlideshowableContent, 0);
- }
- else if ( request->Attributes()[i] == KMPXMediaDrmProtected )
- {
- // collection itself is not protected
- aEntry->SetTObjectValueL(KMPXMediaDrmProtected, EFalse);
- }
- else
- {
- User::Leave(KErrNotSupported);
- }
- }
- }
-
-
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::AddContainerAttributesL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::AddContainerAttributesL(CMPXMedia* aEntry, CMdEObject* aContainer, CGlxDataSource::TContainerType aType)
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::AddContainerAttributesL()");
- __ASSERT_DEBUG(aEntry, Panic(EGlxPanicLogicError));
- __ASSERT_DEBUG(aContainer, Panic(EGlxPanicLogicError));
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
-
- /// @todo check property defs are valid and type is correct
- for ( TInt i = 0; i < request->Attributes().Count(); i++ )
- {
- if ( request->Attributes()[i] == KMPXMediaGeneralId )
- {
- aEntry->SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, (TMPXItemId)aContainer->Id());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralType )
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralType, EMPXGroup);
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralCategory )
- {
- if( CGlxDataSource::EContainerTypeAlbum == aType)
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXAlbum);
- }
- else if( CGlxDataSource::EContainerTypeTag == aType)
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXTag);
- }
- else if( CGlxDataSource::EContainerTypeMonth == aType)
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXMonth);
- }
- else
- {
- User::Leave(KErrNotSupported);
- }
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralUri )
- {
- aEntry->SetTextValueL(KMPXMediaGeneralUri, aContainer->Uri());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralTitle )
- {
- CMdEProperty* title;
- CMdEPropertyDef* titleProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameTitle);
- TInt titleIndex = aContainer->Property(*titleProperty, title);
- if(titleIndex == KErrNotFound)
- {
- TParsePtrC parser(aContainer->Uri());
- aEntry->SetTextValueL(KMPXMediaGeneralTitle, parser.Name());
- }
- else
- {
- aEntry->SetTextValueL(KMPXMediaGeneralTitle, static_cast<CMdETextProperty*>(title)->Value());
- }
- switch (aType)
- {
- case CGlxDataSource::EContainerTypeAlbum:
- {
- CMdEProperty* albumType;
- CMdEPropertyDef* albumTypeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameAlbumType);
- TInt albumTypeIndex = aContainer->Property(*albumTypeProperty, albumType);
- if( KErrNotFound != albumTypeIndex )
- {
- TUint16 albumTypeValue = static_cast<CMdEUint16Property*>(albumType)->Value();
- if ( albumTypeValue != MdeConstants::Album::EAlbumUser )
- {
- request->AppendCpiAttributeL(KMPXMediaGeneralTitle);
- aEntry->SetTObjectValueL(KGlxMediaCollectionInternalSystemItemType, albumTypeValue);
- }
- }
- break;
- }
- case CGlxDataSource::EContainerTypeTag:
- {
- break;
- }
- case CGlxDataSource::EContainerTypeMonth:
- {
- request->AppendCpiAttributeL(KMPXMediaGeneralTitle);
- CMdEProperty* time;
- CMdEPropertyDef* timeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameCreationDate);
- TInt timeIndex = aContainer->Property(*timeProperty, time);
- if( KErrNotFound == timeIndex )
- {
- User::Leave(KErrCorrupt);
- }
-
- aEntry->SetTObjectValueL(KGlxMediaCollectionInternalStartDate, static_cast<CMdETimeProperty*>(time)->Value());
- break;
- }
- }
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralDate )
- {
- CMdEProperty* time;
- CMdEPropertyDef* timeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameCreationDate);
- TInt timeIndex = aContainer->Property(*timeProperty, time);
- if( KErrNotFound == timeIndex )
- {
- User::Leave(KErrCorrupt);
- }
-
- aEntry->SetTObjectValueL(KMPXMediaGeneralDate, static_cast<CMdETimeProperty*>(time)->Value());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralSize )
- {
- CMdEProperty* size;
- CMdEPropertyDef* sizeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameSize);
- TInt sizeIndex = aContainer->Property(*sizeProperty, size);
- TInt sizeValue;
- if(sizeIndex == KErrNotFound)
- {
- sizeValue = 0;
- }
- else
- {
- sizeValue = static_cast<CMdEInt32Property*>(size)->Value();
- }
- aEntry->SetTObjectValueL(KMPXMediaGeneralSize, sizeValue);
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralDrive )
- {
- TParsePtrC parser(aContainer->Uri());
- aEntry->SetTextValueL(KMPXMediaGeneralDrive, parser.Drive());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralMimeType )
- {
- CMdEProperty* mimeType;
- CMdEPropertyDef* mimeTypeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameItemType);
- TInt mimeTypeIndex = aContainer->Property(*mimeTypeProperty, mimeType);
- if( KErrNotFound == mimeTypeIndex)
- {
- aEntry->SetTextValueL(KMPXMediaGeneralMimeType, KNullDesC);
- }
- else
- {
- aEntry->SetTextValueL(KMPXMediaGeneralMimeType, static_cast<CMdETextProperty*>(mimeType)->Value());
- }
- }
- else if ( ( request->Attributes()[i] == KMPXMediaGeneralCount ) || ( request->Attributes()[i] == KGlxMediaCollectionInternalUsageCount ) )
- {
- switch (aType)
- {
- case CGlxDataSource::EContainerTypeAlbum:
- case CGlxDataSource::EContainerTypeTag:
- {
- CMdEProperty* countType;
- CMdEPropertyDef* countTypeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameUsageCount);
- TInt countTypeIndex = aContainer->Property(*countTypeProperty, countType);
- if( KErrNotFound != countTypeIndex )
- {
- TUint count = static_cast<CMdEUint32Property*>(countType)->Value();
- aEntry->SetTObjectValueL(request->Attributes()[i], count);
- }
- else
- {
- aEntry->SetTObjectValueL(request->Attributes()[i], 0);
- }
- break;
- }
- case CGlxDataSource::EContainerTypeMonth:
- {
- TGlxFilterProperties filterProperties = iFilterProperties;
- AddMonthFilterL(aContainer, filterProperties);
- QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, EQueryResultModeCount, DataSource()->CameraAlbumId(), request->Attributes()[i], aEntry, filterProperties);
- break;
- }
- }
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralSystemItem )
- {
- TBool systemItem = EFalse;
- switch (aType)
- {
- case CGlxDataSource::EContainerTypeAlbum:
- {
- CMdEProperty* albumType;
- CMdEPropertyDef* albumTypeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameAlbumType);
- TInt albumTypeIndex = aContainer->Property(*albumTypeProperty, albumType);
- if( KErrNotFound != albumTypeIndex )
- {
- TInt albumTypeValue = static_cast<CMdEUint16Property*>(albumType)->Value();
- if( (albumTypeValue == MdeConstants::Album::EAlbumSystemCamera) || (albumTypeValue == MdeConstants::Album::EAlbumSystemFavourite ) )
- {
- systemItem = ETrue;
- }
- }
- break;
- }
- case CGlxDataSource::EContainerTypeTag:
- {
- systemItem = EFalse;
- break;
- }
- case CGlxDataSource::EContainerTypeMonth:
- {
- systemItem = ETrue;
- break;
- }
- }
- aEntry->SetTObjectValueL(KGlxMediaGeneralSystemItem, systemItem);
- }
-
- //Attributes to get the Count of Images in Container
- else if ( request->Attributes()[i] == KGlxMediaItemTypeImage )
- {
- switch (aType)
- {
- case CGlxDataSource::EContainerTypeMonth:
- {
- TGlxFilterProperties filterProperties = iFilterProperties;
- AddMonthFilterL(aContainer, filterProperties);
- filterProperties.iItemType = EGlxFilterImage;
- QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, EQueryResultModeCount, DataSource()->CameraAlbumId(), request->Attributes()[i], aEntry, filterProperties);
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
- // Attributes to get the Count of Videos in Container
-
- else if ( request->Attributes()[i] == KGlxMediaItemTypeVideo )
- {
- switch (aType)
- {
- case CGlxDataSource::EContainerTypeMonth:
- {
- TGlxFilterProperties filterProperties = iFilterProperties;
- AddMonthFilterL(aContainer, filterProperties);
- filterProperties.iItemType = EGlxFilterVideo;
- QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, EQueryResultModeCount, DataSource()->CameraAlbumId(), request->Attributes()[i], aEntry, filterProperties);
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
- else if ( request->Attributes()[i] == KMPXMediaColDetailSpaceId )
- {
- aEntry->SetTObjectValueL(KMPXMediaColDetailSpaceId, KGlxDataSourceMdeImplementationUid);
- }
- else if ( request->Attributes()[i] == KGlxMediaCollectionInternalStartDate )
- {
- // nothing returned for container but is valid for CPI to request
- }
- else if ( request->Attributes()[i] == KGlxMediaCollectionInternalEndDate )
- {
- // nothing returned for container but is valid for CPI to request
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralDimensions )
- {
- // return zero size for container (thumbnail only used in preview list)
- aEntry->SetTObjectValueL(KGlxMediaGeneralDimensions, TSize(0,0));
- }
- else if ( request->Attributes()[i] == KMPXMediaDrmProtected )
- {
- // container itself is not protected
- aEntry->SetTObjectValueL(KMPXMediaDrmProtected, EFalse);
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralFramecount )
- {
- aEntry->SetTObjectValueL(KGlxMediaGeneralFramecount, 1);
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralSlideshowableContent )
- {
- TGlxFilterProperties filterProperties = iFilterProperties;
- filterProperties.iItemType = EGlxFilterImage;
- filterProperties.iNoDRM = ETrue;
- filterProperties.iExcludeAnimation = ETrue;
- switch (aType)
- {
- case CGlxDataSource::EContainerTypeAlbum:
- case CGlxDataSource::EContainerTypeTag:
- {
- QueueObjectQueryL(aContainer->Def(), ETrue, EAttributeQuery, EQueryResultModeCount, TGlxMediaId(aContainer->Id()), request->Attributes()[i], aEntry, filterProperties);
- break;
- }
- case CGlxDataSource::EContainerTypeMonth:
- {
- AddMonthFilterL(aContainer, filterProperties);
- QueueObjectQueryL(DataSource()->AlbumDef(), ETrue, EAttributeQuery, EQueryResultModeCount, DataSource()->CameraAlbumId(), request->Attributes()[i], aEntry, filterProperties);
- break;
- }
- }
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralLastModifiedDate )
- {
- CMdEProperty* time;
- CMdEPropertyDef* timeProperty = aContainer->Def().GetPropertyDefL(KPropertyDefNameLastModifiedDate);
- TInt timeIndex = aContainer->Property(*timeProperty, time);
- if( KErrNotFound == timeIndex)
- {
- User::Leave(KErrCorrupt);
- }
- aEntry->SetTObjectValueL(KGlxMediaGeneralLastModifiedDate, static_cast<CMdETimeProperty*>(time)->Value());
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralDimensions )
- {
- TSize dimensions(0,0);
-
- aEntry->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions);
- }
- else
- {
- User::Leave(KErrNotSupported);
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::AddItemAttributesL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::AddItemAttributesL(CMPXMedia* aEntry, CMdEObject* aItem, CGlxDataSource::TItemType aType)
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::AddItemAttributesL(CMPXMedia* aEntry, CMdEObject* aItem, CGlxDataSource::TItemType aType)");
- __ASSERT_DEBUG(aEntry, Panic(EGlxPanicLogicError));
- __ASSERT_DEBUG(aItem, Panic(EGlxPanicLogicError));
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
-
- /// @todo check property defs are valid and type is correct
- for ( TInt i = 0; i < request->Attributes().Count(); i++ )
- {
- if ( request->Attributes()[i] == KMPXMediaGeneralId )
- {
- aEntry->SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, (TMPXItemId)aItem->Id());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralType )
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralCategory )
- {
- if( CGlxDataSource::EItemTypeImage == aType)
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXImage);
- }
- else if( CGlxDataSource::EItemTypeVideo == aType)
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralCategory, EMPXVideo);
- }
- else
- {
- User::Leave(KErrNotSupported);
- }
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralUri )
- {
- aEntry->SetTextValueL(KMPXMediaGeneralUri, aItem->Uri());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralTitle )
- {
- CMdEProperty* title;
- CMdEPropertyDef* titleProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameTitle);
- TInt titleIndex = aItem->Property(*titleProperty, title);
- if( KErrNotFound == titleIndex )
- {
- TParsePtrC parser(aItem->Uri());
- aEntry->SetTextValueL(KMPXMediaGeneralTitle, parser.Name());
- }
- else
- {
- aEntry->SetTextValueL(KMPXMediaGeneralTitle, static_cast<CMdETextProperty*>(title)->Value());
- }
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralDate )
- {
- CMdEProperty* time;
- CMdEPropertyDef* timeProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameCreationDate);
- TInt timeIndex = aItem->Property(*timeProperty, time);
- if( KErrNotFound == timeIndex)
- {
- User::Leave(KErrCorrupt);
- }
- aEntry->SetTObjectValueL(KMPXMediaGeneralDate, static_cast<CMdETimeProperty*>(time)->Value());
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralLastModifiedDate )
- {
- CMdEProperty* time;
- CMdEPropertyDef* timeProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameLastModifiedDate);
- TInt timeIndex = aItem->Property(*timeProperty, time);
- if( KErrNotFound == timeIndex)
- {
- User::Leave(KErrCorrupt);
- }
- aEntry->SetTObjectValueL(KGlxMediaGeneralLastModifiedDate, static_cast<CMdETimeProperty*>(time)->Value());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralSize )
- {
- CMdEProperty* size;
- CMdEPropertyDef* sizeProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameSize);
- TInt sizeIndex = aItem->Property(*sizeProperty, size);
- User::LeaveIfError(sizeIndex);
-
- aEntry->SetTObjectValueL(KMPXMediaGeneralSize, static_cast<CMdEInt32Property*>(size)->Value());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralDrive )
- {
- TParsePtrC parser(aItem->Uri());
- aEntry->SetTextValueL(KMPXMediaGeneralDrive, parser.Drive());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralMimeType )
- {
- CMdEProperty* mimeType;
- CMdEPropertyDef* mimeTypeProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameItemType);
- TInt mimeTypeIndex = aItem->Property(*mimeTypeProperty, mimeType);
-
- User::LeaveIfError(mimeTypeIndex);
- aEntry->SetTextValueL(KMPXMediaGeneralMimeType, static_cast<CMdETextProperty*>(mimeType)->Value());
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralDuration )
- {
- if( CGlxDataSource::EItemTypeImage == aType )
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralDuration, 0);
- }
- else
- {
- CMdEProperty* duration;
- CMdEPropertyDef* durationProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameDuration);
- TInt durationIndex = aItem->Property(*durationProperty, duration);
- User::LeaveIfError(durationIndex);
-
- aEntry->SetTObjectValueL(KMPXMediaGeneralDuration, static_cast<CMdEUint32Property*>(duration)->Value());
- }
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralSystemItem)
- {
- aEntry->SetTObjectValueL(KGlxMediaGeneralSystemItem, EFalse);
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralDimensions )
- {
- TSize dimensions(0,0);
-
- CMdEProperty* xDim;
- CMdEPropertyDef* xDimProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameWidth);
- TInt xDimIndex = aItem->Property(*xDimProperty, xDim);
- if( KErrNotFound == xDimIndex )
- {
- //User::Leave(KErrCorrupt);
- }
- else
- {
- dimensions.iWidth = static_cast<CMdEUint16Property*>(xDim)->Value();
- }
-
- CMdEProperty* yDim;
- CMdEPropertyDef* yDimProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameHeight);
- TInt yDimIndex = aItem->Property(*yDimProperty, yDim);
- if( KErrNotFound == yDimIndex )
- {
- //User::Leave(KErrCorrupt);
- }
- else
- {
- dimensions.iHeight = static_cast<CMdEUint16Property*>(yDim)->Value();
- }
- if ( ( dimensions.iWidth == 0 ) || ( dimensions.iHeight == 0 ) )
- {
- if( CGlxDataSource::EItemTypeImage == aType)
- {
- // EXIF header is corrupt, must read size from file.
- CImageDecoder* decoder = NULL;
-
- TRAPD(err, decoder = CImageDecoder::FileNewL( DataSource()->FileServerSession(), aItem->Uri(), CImageDecoder::EOptionNone ));
- if (err == KErrNone)
- {
- dimensions = decoder->FrameInfo().iOverallSizeInPixels;
- }
- delete decoder;
- }
- }
-
- aEntry->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions);
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralFramecount )
- {
- CMdEProperty* framecount;
- TInt fcount = 1;
- CMdEPropertyDef* framecountProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameFrameCount);
- if( framecountProperty )
- {
- TInt framecountIndex = aItem->Property(*framecountProperty, framecount);
- if( KErrNotFound != framecountIndex )
- {
- fcount = static_cast<CMdEUint32Property*>(framecount)->Value();
- }
- }
- aEntry->SetTObjectValueL(KGlxMediaGeneralFramecount, fcount);
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralComment )
- {
- CMdEProperty* comment;
- CMdEPropertyDef* commentProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameComment); /// @todo using Exif Comment field for comment as spec is not clear
- TInt commentIndex = aItem->Property(*commentProperty, comment);
- if( KErrNotFound == commentIndex)
- {
- aEntry->SetTextValueL(KMPXMediaGeneralComment, KNullDesC);
- }
- else
- {
- aEntry->SetTextValueL(KMPXMediaGeneralComment, static_cast<CMdETextProperty*>(comment)->Value());
- }
- }
- else if ( request->Attributes()[i] == KMPXMediaDrmProtected )
- {
- CMdEProperty* drmProtected;
- CMdEPropertyDef* drmProtectedProperty = aItem->Def().GetPropertyDefL(KPropertyDefNameDRM);
- TInt drmProtectedIndex = aItem->Property(*drmProtectedProperty, drmProtected);
- if( KErrNotFound == drmProtectedIndex)
- {
- aEntry->SetTObjectValueL(KMPXMediaDrmProtected, EFalse);
- }
- else
- {
- aEntry->SetTObjectValueL(KMPXMediaDrmProtected, static_cast<CMdEBoolProperty*>(drmProtected)->Value());
- }
- }
- else if ( request->Attributes()[i] == KMPXMediaGeneralCount )
- {
- aEntry->SetTObjectValueL(KMPXMediaGeneralCount, 1);
- }
- else if ( request->Attributes()[i] == KMPXMediaColDetailSpaceId )
- {
- aEntry->SetTObjectValueL(KMPXMediaColDetailSpaceId, KGlxDataSourceMdeImplementationUid);
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralSlideshowableContent )
- {
- aEntry->SetTObjectValueL(KGlxMediaGeneralSlideshowableContent, -1);
- }
- else if ( request->Attributes()[i] == KGlxMediaGeneralLocation)
- {
- // Set the attribute to a TCoordinate initialised to NaN.
- aEntry->SetTObjectValueL(KGlxMediaGeneralLocation, TCoordinate());
- }
- else
- {
- User::Leave(KErrNotSupported);
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMde::AddLocationAttributeToMediaL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::AddLocationAttributeToMediaL(CMPXMedia& aMedia, const TItemId& aLocationId)
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::AddLocationAttributeToMediaL(CMPXMedia& aMedia, const TItemId& aLocationId)");
- CMdEObject* location = DataSource()->Session().GetObjectL(aLocationId, DataSource()->LocationDef());
- if(!location)
- {
- User::Leave(KErrNotFound);
- }
- CleanupStack::PushL(location);
- CMdEProperty* longitude = NULL;
- CMdEPropertyDef* longitudePropertyDef = location->Def().GetPropertyDefL(KPropertyDefNameLongitude);
- TInt longitudeIndex = location->Property(*longitudePropertyDef, longitude);
- CMdEProperty* latitude = NULL;
- CMdEPropertyDef* latitudePropertyDef = location->Def().GetPropertyDefL(KPropertyDefNameLatitude);
- TInt latitudeIndex = location->Property(*latitudePropertyDef, latitude);
-
- if (longitudeIndex > KErrNotFound && latitudeIndex > KErrNotFound)
- {
- TCoordinate coordinate(static_cast< CMdEReal64Property *>(latitude)->Value(),static_cast< CMdEReal64Property *>(longitude)->Value());
- aMedia.SetTObjectValueL(KGlxMediaGeneralLocation, coordinate);
- }
-
- CleanupStack::PopAndDestroy(location);
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::DoHandleAttributeQueryCompletedL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::DoHandleAttributeQueryCompletedL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::DoHandleAttributeQueryCompletedL()");
- __ASSERT_DEBUG(iQueryAttributes.Count(), Panic(EGlxPanicIllegalState));
- CMdEQuery* query = iQueries[0];
-
- if( EQueryResultModeObjectWithoutFreetexts == query->ResultMode() )
- {
- __ASSERT_DEBUG(( iQueryAttributes[0].iAttribute == KGlxMediaCollectionInternalStartDate ), Panic(EGlxPanicIllegalState));
- CMdEPropertyDef* creationDateDef = DataSource()->ObjectDef().GetPropertyDefL(KPropertyDefNameCreationDate);
- if (!creationDateDef || creationDateDef->PropertyType() != EPropertyTime)
- {
- User::Leave(KErrCorrupt);
- }
- TTime startMonth(0);
- TTime endMonth(0);
- if(iQueries[0]->Count() )
- {
- CMdEProperty* startTime;
- CMdEObject& startObject = (CMdEObject&)query->ResultItem(0);
- TInt timeIndex = startObject.Property(*creationDateDef, startTime);
- if( KErrNotFound == timeIndex )
- {
- User::Leave(KErrCorrupt);
- }
- startMonth = static_cast<CMdETimeProperty*>(startTime)->Value();
- CMdEProperty* endTime;
- CMdEObject& endObject = (CMdEObject&)query->ResultItem(query->Count()-1);
- timeIndex = endObject.Property(*creationDateDef, endTime);
- if( KErrNotFound == timeIndex )
- {
- User::Leave(KErrCorrupt);
- }
- endMonth = static_cast<CMdETimeProperty*>(endTime)->Value();
- }
- iQueryAttributes[0].iMedia->SetTObjectValueL(KGlxMediaCollectionInternalStartDate, startMonth);
- iQueryAttributes[0].iMedia->SetTObjectValueL(KGlxMediaCollectionInternalEndDate, endMonth);
- }
- else if( EQueryResultModeCount == query->ResultMode() )
- {
- iQueryAttributes[0].iMedia->SetTObjectValueL(iQueryAttributes[0].iAttribute, query->Count());
- }
- else
- {
- Panic(EGlxPanicIllegalState);
- }
- iQueryAttributes.Remove(0);
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMde::DoHandleLocationQueryCompletedL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::DoHandleLocationQueryCompletedL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::DoHandleLocationQueryCompletedL()");
- TInt queryResultsCount = iQueries[0]->Count();
-
- for (TInt queryResultsPos = 0; queryResultsPos < queryResultsCount; queryResultsPos++)
- {
- CMdERelation& relation = static_cast<CMdERelation&>(iQueries[0]->ResultItem(queryResultsPos));
- CMPXMedia* targetMedia = NULL;
- if (iMediaArray)
- {
- TInt mediaArrayCount = iMediaArray->Count();
- for (TInt mediaArrayPos = 0; mediaArrayPos < mediaArrayCount; mediaArrayPos++)
- {
- CMPXMedia* media = (*iMediaArray)[mediaArrayPos];
- TMPXItemId id = media->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId);
- if (id.iId1 == relation.LeftObjectId())
- {
- targetMedia = media;
- break;
- }
- }
- }
- else
- {
- targetMedia = iResponse;
-#ifdef _DEBUG
- TMPXItemId id = targetMedia->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId);
- __ASSERT_DEBUG(id.iId1 == relation.LeftObjectId(), Panic(EGlxPanicLogicError));
-#endif
- }
-
- __ASSERT_DEBUG(targetMedia, Panic(EGlxPanicLogicError));
- AddLocationAttributeToMediaL(*targetMedia, relation.RightObjectId());
-
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::DoHandleImageVideoQueryCompletedL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::DoHandleImageVideoQueryCompletedL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::DoHandleImageVideoQueryCompletedL()");
- CMdEQuery* query = iQueries[0];
-
- TInt queryResultsCount = query->Count();
-
- if( ( queryResultsCount == 1 ) && ( !iMediaArray ) )
- {
- CMdEObject& object = static_cast<CMdEObject&>(query->ResultItem(0));
-
- delete iResponse;
- // setiing iResponse to NULL to remove CodeScanner warning
- iResponse = NULL;
- iResponse = CMPXMedia::NewL();
- AddAttributesL(object, iResponse);
- }
- else
- {
- for (TInt i = 0; i < queryResultsCount; i++)
- {
- CMdEObject& object = static_cast<CMdEObject&>(query->ResultItem(i));
-
- CMPXMedia* entry = CMPXMedia::NewL();
- CleanupStack::PushL(entry);
- iMediaArray->AppendL(entry);
- CleanupStack::Pop(entry);
- AddAttributesL(object, (*iMediaArray)[iMediaArray->Count() - 1]);
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::QueueLocaitonQueryL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::QueueLocaitonQueryL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::QueueLocaitonQueryL()");
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
-
- CMdEQuery* query = DataSource()->Session().NewRelationQueryL(*DataSource()->NamespaceDef(), this);
- CleanupStack::PushL(query);
-
- CMdELogicCondition& rootCondition = query->Conditions();
- CMdERelationCondition& containerRelationCondition = rootCondition.AddRelationConditionL(DataSource()->ContainsDef(), ERelationConditionSideRight);
- CMdELogicCondition& itemLogicCondition = containerRelationCondition.LeftL();
- CMdELogicCondition& locationLogicCondition = containerRelationCondition.RightL();
- locationLogicCondition.AddObjectConditionL(DataSource()->LocationDef());
- locationLogicCondition.SetOperator(ELogicConditionOperatorOr);
- itemLogicCondition.SetOperator(ELogicConditionOperatorOr);
-
- TInt mediaIdCount = request->MediaIds().Count();
-
- RArray<TItemId> mediaIdArray;
- CleanupClosePushL(mediaIdArray);
-
- for (TInt i = 0; i < mediaIdCount; i++)
- {
- mediaIdArray.AppendL(request->MediaIds()[i].Value());
- }
-
- itemLogicCondition.AddObjectConditionL(mediaIdArray);
- CleanupStack::PopAndDestroy(&mediaIdArray);
-
- query->SetResultMode(EQueryResultModeItem);
-
- CleanupStack::Pop(query);
- AppendQueryL(query, ELocationAttributeQuery);
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTask::ExecuteQueryL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::ExecuteQueryL()
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::ExecuteQueryL()");
- switch (iQueryTypes[0])
- {
- case EAttributeQuery:
- {
- iQueries[0]->FindL(MaxQueryResultsCount(iQueryAttributes[0].iFilterProperties));
- }
- break;
- case EImageVideoQuery: // fall through
- case ELocationAttributeQuery:
- {
- iQueries[0]->FindL();
- }
- break;
- default:
- {
- Panic(EGlxPanicUnsupportedQueryType);
- }
- break;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTaskMdeAttribute::LocationAttributeRequested
-// ----------------------------------------------------------------------------
-//
-TBool CGlxDataSourceTaskMdeAttribute::LocationAttributeRequested()
- {
- GLX_LOG_ENTRY_EXIT("TBool CGlxDataSourceTaskMdeAttribute::LocationAttributeRequested()");
- __ASSERT_DEBUG(dynamic_cast<CGlxGetRequest*>(iRequest), Panic(EGlxPanicLogicError));
- CGlxGetRequest* request = static_cast<CGlxGetRequest*>(iRequest);
-
- TInt attributeArrayCount = request->Attributes().Count();
- for (TInt i = 0; i < attributeArrayCount; i++)
- {
- if (request->Attributes()[i] == KGlxMediaGeneralLocation)
- {
- return ETrue;
- }
- }
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CGlxDataSourceTask::QueueObjectQueryL
-// ----------------------------------------------------------------------------
-//
-void CGlxDataSourceTaskMdeAttribute::QueueObjectQueryL(CMdEObjectDef& aObjectDef, TBool aIsContent, TGlxQueryType aQueryType,
- TQueryResultMode aResultMode, const TGlxMediaId& aContainerId, TMPXAttribute aAttribute, CMPXMedia* aEntry,
- const TGlxFilterProperties& aFilterProperties)
- {
- GLX_LOG_ENTRY_EXIT("void CGlxDataSourceTaskMdeAttribute::QueueObjectQueryL()");
- CMdEObjectDef* queryBaseObject = &aObjectDef;
- if( aIsContent )
- {
- switch(aFilterProperties.iItemType)
- {
- case EGlxFilterImage:
- {
- queryBaseObject = &DataSource()->ImageDef();
- break;
- }
- case EGlxFilterVideo:
- {
- queryBaseObject = &DataSource()->VideoDef();
- break;
- }
- default:
- {
- queryBaseObject = &DataSource()->ObjectDef();
- break;
- }
- }
- }
-
- CMdEQuery* query = DataSource()->Session().NewObjectQueryL(*DataSource()->NamespaceDef(), *queryBaseObject, this);
- CleanupStack::PushL(query);
- SetQueryConditionsL(*query, aFilterProperties, aContainerId, aObjectDef);
- query->SetResultMode(aResultMode);
-
- iQueryAttributes.AppendL(TGlxQueryAttribute(aAttribute, aEntry, aFilterProperties));
-
- CleanupStack::Pop(query);
-
- TRAPD(err, AppendQueryL(query,aQueryType));
-
- if (err != KErrNone)
- {
- iQueryAttributes.Remove(iQueryAttributes.Count() - 1);
- }
- }