--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelproviderimpl.h Wed Sep 01 12:33:26 2010 +0100
@@ -0,0 +1,145 @@
+/*
+* 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: Implementation class for Media data provider.
+* providign the data to the clients
+*
+*/
+
+
+
+
+#ifndef _GLXMEDIALISTMULMODELPROVIDERIMPL_H_
+#define _GLXMEDIALISTMULMODELPROVIDERIMPL_H_
+
+#include <e32base.h> // Container Base Class
+#include <glxmediaid.h>
+#include "glxmulmodelproviderbase.h" // DataProvider Base
+#include "mglxbindingobserver.h" // Notifies that binding has changed
+
+namespace Alf
+ {
+ class IMulWidget; // An interface for all Multimedia widgets
+ }
+
+// Forward declarations
+class TGlxMulBindingSetFactory; // Create binding set
+class CGlxAttributeRequirements; // This class will set the required attribute to the medialist
+class CAlfEnv; // This is the UI Accelerator Toolkit environment object
+class MGlxMediaList; // Interface for reading lists of media items
+class CGlxBindingSet; // basically holds the bindings required to populate the visual item.
+class CGlxResolutionUtility; // Singleton containing resolution utility methods
+class CGlxUiUtility; // lib glxalfutils.lib ; Alf utils
+
+/**
+* CGlxMediaListMulModelProviderImpl
+* The actual implemntation for providign the data to the clients is done here
+*/
+NONSHARABLE_CLASS( CGlxMediaListMulModelProviderImpl ) : public CGlxMulModelProviderBase,
+ public MGlxBindingObserver
+ {
+
+public:
+ /**
+ * The medialist data provider uses this API to create the provider impl
+ * @param aEnv The Alf Environment
+ * @param aWidget The widget being used by client for which the model has to be set
+ * @param aMediaList The instance of medialist which provides data for the model
+ * @param aFactory The instance of the bindingset factory
+ * @param aDefaultTemplate The template that is being used for the widget.
+ */
+ static CGlxMediaListMulModelProviderImpl* NewL( CAlfEnv& aEnv,
+ Alf::IMulWidget& aWidget,
+ MGlxMediaList& aMediaList,
+ const TGlxMulBindingSetFactory& aFactory,
+ Alf::mulwidget::TLogicalTemplate aDefaultTemplate,
+ TInt aDataWindowSize );
+
+ /**
+ * Destructor
+ */
+ ~CGlxMediaListMulModelProviderImpl();
+
+ /**
+ * Requests the data model to update
+ *
+ * @param aIndex Position from where items have to be updated.
+ * @param aCount Number of items to be updated.
+ */
+ void UpdateItems( TInt aIndex, TInt aCount );
+
+ /**
+ * Enable/disable animation
+ * @param aAnimate - ETrue to enable the animation; EFalse Otherwise.
+ */
+ void AnimateDRMGifItem( TBool aAnimate );
+
+private:
+ /**
+ * Constructor
+ * @param aWidget The widget being used by client for which the model has to be set
+ * @param aMediaList The instance of medialist which provides data for the model
+ */
+ CGlxMediaListMulModelProviderImpl( Alf::IMulWidget& aWidget, MGlxMediaList& aMediaList );
+
+ /**
+ * ConstructL
+ * @param aEnv The Alf Environment
+ * @param aFactory The instance of the bindingset factory
+ * @param aDefaultTemplate The template that is being used for the widget.
+ */
+ void ConstructL( CAlfEnv& aEnv,
+ const TGlxMulBindingSetFactory& aFactory,
+ Alf::mulwidget::TLogicalTemplate aDefaultTemplate,
+ TInt aDataWindowSize );
+
+ /**
+ * Helper function used be HandleError
+ * @param aError the error code to handle.
+ */
+ void DoHandleErrorL( TInt aError );
+
+ // From MGlxBindingObserver
+ void HandleBindingChanged( const CGlxBinding& aBinding );
+
+ void HandleOrientationChanged();
+ // From CGlxMulModelProviderBase
+ void HandleFocusChanged(TInt aNewFocusIndex, TInt aPreviousFocusIndex);
+ // From MGlxMediaListObserver
+ void HandleItemAddedL( TInt aStartIndex, TInt aEndIndex, MGlxMediaList* aList );
+ void HandleItemRemovedL( TInt aStartIndex, TInt aEndIndex, MGlxMediaList* aList );
+ void HandleAttributesAvailableL( TInt aItemIndex,
+ const RArray<TMPXAttribute>& aAttributes, MGlxMediaList* aList );
+ void HandleFocusChangedL( NGlxListDefs::TFocusChangeType aType,
+ TInt aNewIndex, TInt aOldIndex, MGlxMediaList* aList );
+ void HandleError( TInt aError );
+ //Bug fix for PKAA-7NRBYZ
+ void HandleItemModifiedL( const RArray<TInt>& aItemIndexes, MGlxMediaList* aList );
+
+ // From IMulModelProvider
+ void ProvideData (int aIndex, int aCount, Alf::MulDataPath aPath);
+private:
+
+ MGlxMediaList& iMediaList;
+ CGlxBindingSet* iBindingSet; // own
+ TBool iIsReleventAttribute;
+ CGlxAttributeRequirements* iAttributeRequirements; // own
+ CGlxResolutionUtility* iResolutionUtility;
+ Alf::IMulWidget& iWidget;
+ CGlxUiUtility* iUiUtility;
+ TGlxMediaId iMediaIDForTextureDeletion;
+ };
+
+#endif // _GLXMEDIALISTMULMODELPROVIDERIMPL_H_
+
+