Revision: 200951
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 07 Jan 2010 12:46:23 +0200
changeset 1 9ba538e329bd
parent 0 4e91876724a2
child 2 7d9067c6fcb1
Revision: 200951 Kit: 201001
photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp
photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmds.cpp
photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp
photosgallery/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp
photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginalbums.h
photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginall.h
photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginbase.h
photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugincaptured.h
photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugindownloads.h
photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginmonths.h
photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugintags.h
photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginalbums.cpp
photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginall.cpp
photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginbase.cpp
photosgallery/contentharvesterplugin/src/glxcontentharvesterplugincaptured.cpp
photosgallery/contentharvesterplugin/src/glxcontentharvesterplugindownloads.cpp
photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginmonths.cpp
photosgallery/contentharvesterplugin/src/glxcontentharvesterplugintags.cpp
photosgallery/controllers/fetcher/inc/glxfetchercontainer.h
photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp
photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp
photosgallery/controllers/imageviewer/eabi/glximageviewermanageru.def
photosgallery/controllers/imageviewer/group/glximageviewermanager.mmp
photosgallery/controllers/imageviewer/inc/glximageviewermanager.h
photosgallery/controllers/imageviewer/inc/glximageviewermanager.inl
photosgallery/controllers/imageviewer/src/glximageviewermanager.cpp
photosgallery/gallery/group/glx_reg.rss
photosgallery/gallery/inc/glxdocument.h
photosgallery/gallery/loc/photos.loc
photosgallery/gallery/sis/glxgallery.pkg
photosgallery/gallery/sis/glxgallery_stub.pkg
photosgallery/gallery/src/glxappui.cpp
photosgallery/gallery/src/glxdocument.cpp
photosgallery/group/bld.inf
photosgallery/imgvwr/group/bld.inf
photosgallery/imgvwr/group/glxivwr.mmp
photosgallery/imgvwr/group/glxivwr.rss
photosgallery/imgvwr/group/glxivwr_loc.rss
photosgallery/imgvwr/group/glxivwr_reg.rss
photosgallery/imgvwr/inc/glxivwrapplication.h
photosgallery/imgvwr/inc/glxivwrappui.h
photosgallery/imgvwr/inc/glxivwrdocument.h
photosgallery/imgvwr/src/glxivwrapplication.cpp
photosgallery/imgvwr/src/glxivwrappui.cpp
photosgallery/imgvwr/src/glxivwrdocument.cpp
photosgallery/rom/glxgallery.iby
photosgallery/rom/glxgallery_resources.iby
photosgallery/slideshow/settingsdialog/src/shwslideshowsettingslist.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/bwins/glxcommoncommandhandlersu.def
photosgallery/viewframework/commandhandlers/commoncommandhandlers/eabi/glxcommoncommandhandlersu.def
photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerremovefrom.h
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerremovefrom.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxmediaselectionpopup.cpp
photosgallery/viewframework/dataprovider/bwins/glxdataprovideru.def
photosgallery/viewframework/dataprovider/eabi/glxdataprovideru.def
photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelprovider.h
photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelproviderimpl.h
photosgallery/viewframework/dataprovider/src/glxattributerequirement.cpp
photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelprovider.cpp
photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelproviderimpl.cpp
photosgallery/viewframework/medialists/bwins/glxmedialistsu.def
photosgallery/viewframework/medialists/eabi/glxmedialistsu.def
photosgallery/viewframework/medialists/inc/glxattributecontext.h
photosgallery/viewframework/medialists/src/glxattributecontext.cpp
photosgallery/viewframework/medialists/src/glxcachemanager.cpp
photosgallery/viewframework/medialists/src/glximagereader.cpp
photosgallery/viewframework/medialists/src/glxmedialist.cpp
photosgallery/viewframework/plugins/fullscreenviewplugin/data/2000A7C3.rss
photosgallery/viewframework/plugins/fullscreenviewplugin/src/glxtagfullscreenviewplugin.cpp
photosgallery/viewframework/plugins/fullscreenviewpluginbase/eabi/glxfullscreenviewpluginbaseu.def
photosgallery/viewframework/plugins/fullscreenviewpluginbase/src/glxfullscreenviewpluginbase.cpp
photosgallery/viewframework/plugins/gridviewplugin/data/glxgridviewdata.rss
photosgallery/viewframework/texturemanager/bwins/glxtexturemanageru.def
photosgallery/viewframework/texturemanager/eabi/glxtexturemanageru.def
photosgallery/viewframework/texturemanager/inc/glxtexturemanager.h
photosgallery/viewframework/texturemanager/inc/glxtexturemanagerimpl.h
photosgallery/viewframework/texturemanager/src/glxtexturemanager.cpp
photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp
photosgallery/viewframework/uiutilities/src/glxuiutility.cpp
photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h
photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp
photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp
photosgallery/viewframework/views/metadatadialog/data/glxmetadatadialog.rss
photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatadialog.cpp
photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp
photosgallery/viewframework/views/zoomview/inc/glxzoomcontrol.h
photosgallery/viewframework/views/zoomview/inc/glxzoomeventhandler.h
photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp
--- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -1096,7 +1096,7 @@
     CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(
                                      request->ThumbnailInfo()->FilePath(), 0);
     iTnThumbnailCbId = iTnEngine->GetThumbnailL(*source);
-    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy(source);
 
     iTnRequestInProgress = ETrue;
 	}
--- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmds.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmds.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -352,9 +352,12 @@
 			}
 		else if(EGlxFilterOriginAll == aFilterProperties.iOrigin )            
 			{
-			// The Months Collection Populates All the Items
-			aLogicCondition.AddPropertyConditionL(originProperty, TMdEUintGreaterEqual(
-			        MdeConstants::Object::EOther));            
+			// The Months Collection Populates All the Items, filter 
+		    // it for Images and Videos only
+            CMdELogicCondition& logicCondition = 
+                aLogicCondition.AddLogicConditionL(ELogicConditionOperatorOr);
+            logicCondition.AddObjectConditionL( DataSource()->ImageDef() ); 
+            logicCondition.AddObjectConditionL( DataSource()->VideoDef() );          
 			}        
         }
         
--- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -69,7 +69,8 @@
 #include "glxdatasourcemdsutility.h"
 
 // CONSTANTS
-//const TInt KGlxAlbumPromotionPosition = 0;
+const TInt KGlxCameraAlbumPromotionPosition = 0;
+const TInt KGlxfavoritesAlbumPromotionPosition = 1;
 
 _LIT(KPropertyDefNameCreationDate, "CreationDate");
 
@@ -258,7 +259,9 @@
             User::Leave(KErrCorrupt);
             }
         currentMonth = static_cast<CMdETimeProperty*>(time)->Value();
-        if( !DataSource()->SameMonth(lastMonth, currentMonth) )
+
+        // Also Checking for a Valid Month Entry Based on a Year Greater than 0000.
+        if( !DataSource()->SameMonth(lastMonth, currentMonth) && (currentMonth.DateTime().Year() > 0) )
             {
             const TGlxMediaId monthId = DataSource()->GetMonthIdL(currentMonth);
             monthList.AppendL(monthId);
@@ -297,14 +300,36 @@
 	if( aFilterProperties.iPromoteSystemItems )
 		{
 		RArray<TGlxMediaId> list = aFilteredList;
-		/*
-		TInt favoritesIndex = list.Find(DataSource()->FavoritesId());
-		if( KErrNotFound != favoritesIndex )
+		TInt cameraAlbumIndex = list.Find(DataSource()->CameraAlbumId());
+		
+		// If Camera Index is not KErrNotFound, 1st Album should be Captured and 
+		// 2nd should be Favourites(In Albums List View)		
+		
+		if( KErrNotFound != cameraAlbumIndex )
+			{	
+			list.Remove(cameraAlbumIndex);	
+			list.Insert(DataSource()->CameraAlbumId(), KGlxCameraAlbumPromotionPosition);    			
+
+			TInt favoritesIndex = list.Find(DataSource()->FavoritesId());			
+			if( KErrNotFound != favoritesIndex )
+				{
+				list.Remove(favoritesIndex);
+				list.Insert(DataSource()->FavoritesId(),KGlxfavoritesAlbumPromotionPosition);		
+				} 
+			}
+		else
 			{
-			list.Remove(favoritesIndex);
-			list.Insert(DataSource()->FavoritesId(), KGlxAlbumPromotionPosition);
+			// In Selection popup, 1st item should be Favourites(from grid view/fullscreen view
+			// and Camera post captured mode) 
+			
+			TInt favoritesIndex = list.Find(DataSource()->FavoritesId());
+			if( KErrNotFound != favoritesIndex )
+				{
+				list.Remove(favoritesIndex);
+				list.Insert(DataSource()->FavoritesId(),KGlxfavoritesAlbumPromotionPosition - 1);		
+				} 			
 			}
-		*/			
+					
 		DoPostFilterComplete(list, KErrNone);
 		}
 	else
--- a/photosgallery/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -280,13 +280,15 @@
                 {
                 if( aResponse->IsSupported(KGlxMediaCollectionInternalSystemItemType) )
 					{
-					if( TGlxMediaId(KCapturedAlbumId) == aMediaId )
+					TGlxMediaId responseMediaid ((TUint32)aResponse->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
+					// Set the text value based on the Media ID in aResponse
+					if( TGlxMediaId(KCapturedAlbumId) == responseMediaid )
 						{
 						HBufC* title = LoadLocalizedStringLC(KResourceFile, R_ALBUM_CAMERA_TITLE);
 						aResponse->SetTextValueL(attr, *title);  
 						CleanupStack::PopAndDestroy(title);						
 						}
-					else if (TGlxMediaId(KFavoriteAlbumId) == aMediaId  )
+					else if (TGlxMediaId(KFavoriteAlbumId) == responseMediaid  )
 						{
 						HBufC* title = LoadLocalizedStringLC(KResourceFile, R_ALBUM_FAVORITES_TITLE);
 						aResponse->SetTextValueL(attr, *title);  
--- a/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginalbums.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginalbums.h	Thu Jan 07 12:46:23 2010 +0200
@@ -197,11 +197,13 @@
     /// Owned: Media list
     MGlxMediaList* iMediaList;
     
-    /// Own: the thumbnail context
-    CGlxThumbnailContext* iThumbnailContext;
+    /// Own: Attribute Context
+    CGlxAttributeContext* iUriAttributeContext;
+    
+    CGlxAttributeContext* iThumbnailAttributeContext;
 
-    /// Own: Thuimbnail Iterator
-    TGlxSequentialIterator iThumbnailIterator;    
+    /// Own: Thumbnail Iterator
+    TGlxSequentialIterator iThumbnailIterator;  
 
     RArray<TInt> iPreviewItemCount;
 
--- a/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginall.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginall.h	Thu Jan 07 12:46:23 2010 +0200
@@ -196,10 +196,12 @@
     /// Owned: Media list
     MGlxMediaList* iMediaList;
     
-    /// Own: the thumbnail context
-    CGlxThumbnailContext* iThumbnailContext;
+    /// Own: Attribute Context
+	CGlxAttributeContext* iUriAttributeContext;
+	
+	CGlxAttributeContext* iThumbnailAttributeContext;
 
-    /// Own: Thuimbnail Iterator
+    /// Own: Thumbnail Iterator
     TGlxSequentialIterator iThumbnailIterator;
 
     RArray<TInt> iPreviewItemCount;
--- a/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginbase.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginbase.h	Thu Jan 07 12:46:23 2010 +0200
@@ -119,8 +119,9 @@
     /*
      * Creates Medialist based on the plugin id
      */
-    MGlxMediaList* CreateMedialistAndThumbnailContextL(const TGlxMediaId& aPluginId,
-            CGlxThumbnailContext* aThumbnailContext) const;
+    MGlxMediaList* CreateMedialistAndAttributeContextL(const TGlxMediaId& aPluginId,
+    		CGlxAttributeContext* aUriAttributeContext, 
+    		CGlxAttributeContext* aThumbnailAttributeContext) const;
 
     /**
      * Method to fill input list for CPS add command
--- a/photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugincaptured.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugincaptured.h	Thu Jan 07 12:46:23 2010 +0200
@@ -198,10 +198,12 @@
     /// Owned: Media list
     MGlxMediaList* iMediaList;
    
-    /// Own: the thumbnail context
-    CGlxThumbnailContext* iThumbnailContext;
+    /// Own: Attribute Context
+	CGlxAttributeContext* iUriAttributeContext;
+	
+	CGlxAttributeContext* iThumbnailAttributeContext;
 
-    /// Own: Thuimbnail Iterator
+    /// Own: Thumbnail Iterator
     TGlxSequentialIterator iThumbnailIterator;
 
     RArray<TInt> iPreviewItemCount;
--- a/photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugindownloads.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugindownloads.h	Thu Jan 07 12:46:23 2010 +0200
@@ -198,11 +198,13 @@
 
     /// Owned: Media list
     MGlxMediaList* iMediaList;
-   
-    /// Own: the thumbnail context
-    CGlxThumbnailContext* iThumbnailContext;
+    
+    /// Own: Attribute Context
+	CGlxAttributeContext* iUriAttributeContext;
+	
+	CGlxAttributeContext* iThumbnailAttributeContext;
 
-    /// Own: Thuimbnail Iterator
+    /// Own: Thumbnail Iterator
     TGlxSequentialIterator iThumbnailIterator;
 
     RArray<TInt> iPreviewItemCount;
--- a/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginmonths.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/inc/glxcontentharvesterpluginmonths.h	Thu Jan 07 12:46:23 2010 +0200
@@ -199,10 +199,12 @@
     /// Owned: Media list
     MGlxMediaList* iMediaList;
           
-    /// Own: the thumbnail context
-    CGlxThumbnailContext* iThumbnailContext;
+    /// Own: Attribute Context
+	CGlxAttributeContext* iUriAttributeContext;
+	
+	CGlxAttributeContext* iThumbnailAttributeContext;
 
-    /// Own: Thuimbnail Iterator
+    /// Own: Thumbnail Iterator
     TGlxSequentialIterator iThumbnailIterator;
 
     RArray<TInt> iPreviewItemCount;
--- a/photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugintags.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/inc/glxcontentharvesterplugintags.h	Thu Jan 07 12:46:23 2010 +0200
@@ -197,10 +197,12 @@
     /// Owned: Media list
     MGlxMediaList* iMediaList;
   
-    /// Own: the thumbnail context
-    CGlxThumbnailContext* iThumbnailContext;
+    /// Own: the Attribte Context    
+    CGlxAttributeContext* iUriAttributeContext;
+    
+    CGlxAttributeContext* iThumbnailAttributeContext;
 
-    /// Own: Thuimbnail Iterator
+    /// Own: Thumbnail Iterator
     TGlxSequentialIterator iThumbnailIterator;
 
     RArray<TInt> iPreviewItemCount;
--- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginalbums.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginalbums.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -71,9 +71,11 @@
     //Call the base class ConstructL
     CGlxContentHarvesterPluginBase::ConstructL(EMbmGlxiconsQgn_prop_image_notcreated);
     
-    iPeriodic = CPeriodic::NewL( CActive::EPriorityLow );
-    iThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator);
-        
+    iPeriodic = CPeriodic::NewL( CActive::EPriorityLow );    
+       
+    iUriAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+    iThumbnailAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+    
     //Register/Subscribe with matrix menu for the notifications 
     GetInterfaceForNotificationL();
     SetupPublisherL(KItemIndexAlbums);
@@ -437,8 +439,12 @@
         {
         GLX_LOG_INFO("CGlxContentHarvesterPluginAlbums::DestroyMedialist,media list deleted");
         RemoveContextAndObserver();
-        delete iThumbnailContext;
-        iThumbnailContext = NULL;
+        
+        delete iUriAttributeContext;
+        iUriAttributeContext = NULL;
+        delete iThumbnailAttributeContext;
+        iThumbnailAttributeContext = NULL;
+        
         iMediaList->Close();
         iMediaList = NULL;
         }
@@ -463,9 +469,10 @@
             {
             iThumbnailIterator.SetRange( KSinglePreviewThumbnail );
             }
-
-        iMediaList = CreateMedialistAndThumbnailContextL( TGlxMediaId( 
-                KGlxCollectionPluginAlbumsImplementationUid ),iThumbnailContext);
+        iMediaList = CreateMedialistAndAttributeContextL( TGlxMediaId( 
+                        KGlxCollectionPluginAlbumsImplementationUid ),
+                        iUriAttributeContext,iThumbnailAttributeContext);         
+        
         AddContextAndObserverL();
         }
     }
@@ -542,11 +549,12 @@
     if(iMediaList)
         {
         iMediaList->AddMediaListObserverL( this );
-        iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iUriAttributeContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iThumbnailAttributeContext, KGlxFetchContextPriorityLow);        
         }
     }
 
-// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------c
 // CGlxContentHarvesterPluginAlbums::RemoveContextAndObserver
 // ---------------------------------------------------------------------------
 //
@@ -556,7 +564,8 @@
     if(iMediaList)
         {
         iMediaList->RemoveMediaListObserver( this );
-        iMediaList->RemoveContext(iThumbnailContext);
+        iMediaList->RemoveContext(iUriAttributeContext);
+        iMediaList->RemoveContext(iThumbnailAttributeContext);        
         }
     }
 
--- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginall.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginall.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -73,8 +73,10 @@
     CGlxContentHarvesterPluginBase::ConstructL(EMbmGlxiconsQgn_prop_image_notcreated);
     
     iPeriodic = CPeriodic::NewL( CActive::EPriorityLow );
-    iThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator);
     
+    iUriAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+    iThumbnailAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+
     //Register/Subscribe with matrix menu for the notifications 
     GetInterfaceForNotificationL();
     SetupPublisherL(KItemIndexAll);
@@ -446,8 +448,12 @@
         {
         GLX_LOG_INFO("CGlxContentHarvesterPluginAll::DestroyMedialist,media list deleted");
         RemoveContextAndObserver();
-        delete iThumbnailContext;
-        iThumbnailContext = NULL;
+        
+        delete iUriAttributeContext;
+		iUriAttributeContext = NULL;
+		delete iThumbnailAttributeContext;
+		iThumbnailAttributeContext = NULL;
+		
         iMediaList->Close();
         iMediaList = NULL;
         }
@@ -473,8 +479,10 @@
             iThumbnailIterator.SetRange( KSinglePreviewThumbnail );
             }
 
-        iMediaList = CreateMedialistAndThumbnailContextL( TGlxMediaId( 
-                KGlxCollectionPluginAllImplementationUid ),iThumbnailContext);
+        iMediaList = CreateMedialistAndAttributeContextL( TGlxMediaId( 
+                KGlxCollectionPluginAllImplementationUid ),
+                iUriAttributeContext,iThumbnailAttributeContext);         
+        
         AddContextAndObserverL();
         }
     }
@@ -548,7 +556,8 @@
     if(iMediaList)
         {
         iMediaList->AddMediaListObserverL( this );
-        iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iUriAttributeContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iThumbnailAttributeContext, KGlxFetchContextPriorityLow);   
         }
     }
 
@@ -562,7 +571,8 @@
     if(iMediaList)
         {
         iMediaList->RemoveMediaListObserver( this );
-        iMediaList->RemoveContext(iThumbnailContext);
+        iMediaList->RemoveContext(iUriAttributeContext);
+        iMediaList->RemoveContext(iThumbnailAttributeContext);
         }
     }
 
--- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginbase.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginbase.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -37,6 +37,7 @@
 #include <glxthumbnailcontext.h>
 #include <glxmedialistiterator.h>
 #include <mglxcache.h>
+#include <glxthumbnailattributeinfo.h>
 
 #include "glxcontentharvesterplugin.h"
 #include "glxcontentharvesterpluginbase.h"
@@ -447,28 +448,45 @@
     }
 
 // ---------------------------------------------------------------------------
-// CreateMedialistAndThumbnailContextL
+// CreateMedialistAndAttributeContextL
 // ---------------------------------------------------------------------------
 //
-MGlxMediaList* CGlxContentHarvesterPluginBase::CreateMedialistAndThumbnailContextL(const TGlxMediaId& 
-        aPluginId,CGlxThumbnailContext* aThumbnailContext) const
-        {
-        TRACER( "CGlxContentHarvesterPluginBase::CreateMedialistAndThumbnailContextL" );        
+MGlxMediaList* CGlxContentHarvesterPluginBase::CreateMedialistAndAttributeContextL(
+					const TGlxMediaId& aPluginId,
+					CGlxAttributeContext* aUriAttributeContext, 
+					CGlxAttributeContext* aThumbnailAttributeContext) const    		
+    		{
+            TRACER( "CGlxContentHarvesterPluginBase::CreateMedialistAndThumbnailContextL" );        
+                 
+            CMPXCollectionPath* path = CMPXCollectionPath::NewL();
+            CleanupStack::PushL( path );
+            path->AppendL( aPluginId.Value() );               
 
-        CMPXCollectionPath* path = CMPXCollectionPath::NewL();
-        CleanupStack::PushL( path );
-        path->AppendL( aPluginId.Value() );               
+            CMPXFilter* filter = NULL;
+            filter = TGlxFilterFactory::CreatePreviewFilterL(); 
+            CleanupStack::PushL( filter );
 
-        CMPXFilter* filter = NULL;
-        filter = TGlxFilterFactory::CreatePreviewFilterL(); 
-        CleanupStack::PushL( filter );
-
-        MGlxMediaList* mediaList = MGlxMediaList::InstanceL( *path, KGlxIdNone , filter);
-        CleanupStack::PopAndDestroy( filter );
-        CleanupStack::PopAndDestroy( path );
-        aThumbnailContext->SetDefaultSpec(iGridIconSize.iWidth,iGridIconSize.iHeight); 
-        return mediaList;
-        }
+            MGlxMediaList* mediaList = MGlxMediaList::InstanceL( *path, KGlxIdNone , filter);
+            CleanupStack::PopAndDestroy( filter );
+            CleanupStack::PopAndDestroy( path );  
+            
+            // Two different contexts are added. One for URI with high priority
+            // and for Thumbnail with low priority. Because URI attribute should be
+            // fetched first before placing thumbnail fetch request
+            
+            aUriAttributeContext->AddAttributeL(KMPXMediaGeneralUri);  
+     
+            TMPXAttribute attr( KGlxMediaIdThumbnail,
+								GlxFullThumbnailAttributeId(ETrue,
+									iGridIconSize.iWidth,iGridIconSize.iHeight) );
+            
+            aThumbnailAttributeContext->SetDefaultSpec(iGridIconSize.iWidth,
+            											iGridIconSize.iHeight);
+            
+            aThumbnailAttributeContext->AddAttributeL(attr);    
+         
+            return mediaList;
+            }
 
 // ---------------------------------------------------------------------------
 // CGlxContentHarvesterPluginBase::IsFocused
--- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugincaptured.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugincaptured.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -73,8 +73,10 @@
     CGlxContentHarvesterPluginBase::ConstructL(EMbmGlxiconsQgn_prop_image_notcreated);
     
     iPeriodic = CPeriodic::NewL( CActive::EPriorityLow );
-    iThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator);
     
+    iUriAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+    iThumbnailAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+
     //Register/Subscribe with matrix menu for the notifications 
     GetInterfaceForNotificationL();
     SetupPublisherL(KItemIndexCaptured);
@@ -440,8 +442,12 @@
         {
         GLX_LOG_INFO("CGlxContentHarvesterPluginCaptured::DestroyMedialist,media list deleted");
         RemoveContextAndObserver();
-        delete iThumbnailContext;
-        iThumbnailContext = NULL;
+        
+        delete iUriAttributeContext;
+        iUriAttributeContext = NULL;
+        delete iThumbnailAttributeContext;
+        iThumbnailAttributeContext = NULL;
+        
         iMediaList->Close();
         iMediaList = NULL;
         }
@@ -467,8 +473,10 @@
             iThumbnailIterator.SetRange( KSinglePreviewThumbnail );
             }
 
-        iMediaList = CreateMedialistAndThumbnailContextL( TGlxMediaId( 
-                KGlxCollectionPluginCameraImplementationUid ),iThumbnailContext);
+        iMediaList = CreateMedialistAndAttributeContextL( TGlxMediaId( 
+                KGlxCollectionPluginCameraImplementationUid ),
+                iUriAttributeContext,iThumbnailAttributeContext);         
+        
         AddContextAndObserverL();
         }
     }
@@ -538,7 +546,8 @@
     if(iMediaList)
         {
         iMediaList->AddMediaListObserverL( this );
-        iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iUriAttributeContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iThumbnailAttributeContext, KGlxFetchContextPriorityLow); 
         }
     }
 
@@ -552,7 +561,8 @@
     if(iMediaList)
         {
         iMediaList->RemoveMediaListObserver( this );
-        iMediaList->RemoveContext(iThumbnailContext);
+        iMediaList->RemoveContext(iUriAttributeContext);
+        iMediaList->RemoveContext(iThumbnailAttributeContext);  
         }
     }
 
--- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugindownloads.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugindownloads.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -75,8 +75,10 @@
     CGlxContentHarvesterPluginBase::ConstructL(EMbmGlxiconsQgn_prop_image_notcreated);
     
     iPeriodic = CPeriodic::NewL( CActive::EPriorityLow );
-    iThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator);
-    
+   
+    iUriAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+    iThumbnailAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+
     //Register/Subscribe with matrix menu for the notifications 
     GetInterfaceForNotificationL();
     SetupPublisherL(KItemIndexDownloads);
@@ -441,8 +443,12 @@
     if( iMediaList )
         {
         RemoveContextAndObserver();
-        delete iThumbnailContext;
-        iThumbnailContext = NULL;
+        
+        delete iUriAttributeContext;
+        iUriAttributeContext = NULL;
+        delete iThumbnailAttributeContext;
+        iThumbnailAttributeContext = NULL;
+        
         iMediaList->Close();
         iMediaList = NULL;
         }
@@ -468,8 +474,10 @@
             iThumbnailIterator.SetRange( KSinglePreviewThumbnail );
             }
 
-        iMediaList = CreateMedialistAndThumbnailContextL( TGlxMediaId( 
-                KGlxCollectionPluginDownloadsImplementationUid ),iThumbnailContext);
+        iMediaList = CreateMedialistAndAttributeContextL( TGlxMediaId( 
+                KGlxCollectionPluginDownloadsImplementationUid ),
+                iUriAttributeContext,iThumbnailAttributeContext);         
+       
         AddContextAndObserverL();
         }
     }
@@ -539,7 +547,8 @@
     if(iMediaList)
         {
         iMediaList->AddMediaListObserverL( this );
-        iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iUriAttributeContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iThumbnailAttributeContext, KGlxFetchContextPriorityLow);
         }
     }
 
@@ -553,7 +562,8 @@
     if(iMediaList)
         {
         iMediaList->RemoveMediaListObserver( this );
-        iMediaList->RemoveContext(iThumbnailContext);
+        iMediaList->RemoveContext(iUriAttributeContext);
+        iMediaList->RemoveContext(iThumbnailAttributeContext); 
         }
     }
 
--- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginmonths.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterpluginmonths.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -73,7 +73,9 @@
     CGlxContentHarvesterPluginBase::ConstructL(EMbmGlxiconsQgn_prop_image_notcreated);
 
     iPeriodic = CPeriodic::NewL( CActive::EPriorityLow );
-    iThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator);
+    
+    iUriAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+    iThumbnailAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
 
     //Register/Subscribe with matrix menu for the notifications 
     GetInterfaceForNotificationL();
@@ -437,8 +439,12 @@
         {
         GLX_LOG_INFO("CGlxContentHarvesterPluginMonths::DestroyMedialist,media list deleted");
         RemoveContextAndObserver();
-        delete iThumbnailContext;
-        iThumbnailContext = NULL;
+        
+        delete iUriAttributeContext;
+		iUriAttributeContext = NULL;
+		delete iThumbnailAttributeContext;
+		iThumbnailAttributeContext = NULL;
+		
         iMediaList->Close();
         iMediaList = NULL;
         }
@@ -464,8 +470,9 @@
             iThumbnailIterator.SetRange( KSinglePreviewThumbnail );
             }
 
-        iMediaList = CreateMedialistAndThumbnailContextL( TGlxMediaId( 
-                KGlxCollectionPluginMonthsImplementationUid ),iThumbnailContext);
+        iMediaList = CreateMedialistAndAttributeContextL( TGlxMediaId( 
+                KGlxCollectionPluginMonthsImplementationUid ), 
+                iUriAttributeContext,iThumbnailAttributeContext);
         AddContextAndObserverL();
         }
     }
@@ -543,7 +550,8 @@
     if(iMediaList)
         {
         iMediaList->AddMediaListObserverL( this );
-        iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iUriAttributeContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iThumbnailAttributeContext, KGlxFetchContextPriorityLow);  
         }
     }
 
@@ -557,7 +565,8 @@
     if(iMediaList)
         {
         iMediaList->RemoveMediaListObserver( this );
-        iMediaList->RemoveContext(iThumbnailContext);
+        iMediaList->RemoveContext(iUriAttributeContext);
+        iMediaList->RemoveContext(iThumbnailAttributeContext);     
         }
     }
 
--- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugintags.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugintags.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -72,7 +72,9 @@
     CGlxContentHarvesterPluginBase::ConstructL(EMbmGlxiconsQgn_prop_image_notcreated);
 
     iPeriodic = CPeriodic::NewL( CActive::EPriorityLow );
-    iThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator);
+    
+    iUriAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); 
+    iThumbnailAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator);
 
     //Register/Subscribe with matrix menu for the notifications 
     GetInterfaceForNotificationL();
@@ -438,8 +440,12 @@
         {
         GLX_LOG_INFO("CGlxContentHarvesterPluginTags::DestroyMedialist,media list deleted");
         RemoveContextAndObserver();
-        delete iThumbnailContext;
-        iThumbnailContext = NULL;
+        
+        delete iUriAttributeContext;
+        iUriAttributeContext = NULL;
+        delete iThumbnailAttributeContext;
+        iThumbnailAttributeContext = NULL;
+        
         iMediaList->Close();
         iMediaList = NULL;
         }
@@ -465,8 +471,10 @@
             iThumbnailIterator.SetRange( KSinglePreviewThumbnail );
             }
 
-        iMediaList = CreateMedialistAndThumbnailContextL( TGlxMediaId( 
-                KGlxTagCollectionPluginImplementationUid ),iThumbnailContext);
+        iMediaList = CreateMedialistAndAttributeContextL( TGlxMediaId( 
+        		KGlxTagCollectionPluginImplementationUid ),
+        		iUriAttributeContext, iThumbnailAttributeContext); 
+        
         AddContextAndObserverL();
         }
     }
@@ -543,7 +551,8 @@
     if(iMediaList)
         {
         iMediaList->AddMediaListObserverL( this );
-        iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iUriAttributeContext, KGlxFetchContextPriorityNormal);
+        iMediaList->AddContextL(iThumbnailAttributeContext, KGlxFetchContextPriorityLow); 
         }
     }
 
@@ -557,7 +566,8 @@
     if(iMediaList)
         {
         iMediaList->RemoveMediaListObserver( this );
-        iMediaList->RemoveContext(iThumbnailContext);
+        iMediaList->RemoveContext(iUriAttributeContext);
+        iMediaList->RemoveContext(iThumbnailAttributeContext); 
         }
     }
 
--- a/photosgallery/controllers/fetcher/inc/glxfetchercontainer.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/fetcher/inc/glxfetchercontainer.h	Thu Jan 07 12:46:23 2010 +0200
@@ -104,7 +104,13 @@
       *  Sets the status pane title with what it was for the calling application
       */
      void SetPreviousTitleL();
-
+     
+     /** 
+      *  SetFileAttached
+      *  Sets the File attached flag.
+      */
+     void SetFileAttached(TBool aIsFileAttached);
+     
 public:     
      /** 
       *  HandleSizeChange
--- a/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -107,8 +107,8 @@
     iGridIconSize = iUiUtility->GetGridIconSize();
 
     // For DRM Utility
-    iDRMUtility = CGlxDRMUtility::InstanceL();
-    iIsFileAttached = EFalse;
+    iDRMUtility = CGlxDRMUtility::InstanceL();    
+    SetFileAttached(EFalse);
     }
 
 //-----------------------------------------------------------------------------
@@ -608,12 +608,12 @@
     // to send key events to the dialog.
     if( !iMediaList || !iHgGrid )
         {
-        aFetchUri = EFalse;
-		iIsFileAttached = EFalse;
+        aFetchUri = EFalse;		
+        SetFileAttached(EFalse);
         return iIsFileAttached;
         }
-    //To Block call to HandleDoubleTapEventL() when control is in RetrieveUrisL()
-    iIsFileAttached = ETrue;
+    //To Block call to HandleDoubleTapEventL() when control is in RetrieveUrisL()    
+    SetFileAttached(ETrue);
     GLX_LOG_INFO1("CGlxFetcherContainer::RetrieveUrisL() Medialist count is %d",
                 iMediaList->Count());
     TGlxSelectionIterator iterator;
@@ -654,11 +654,11 @@
             if( uri != KNullDesC )
                 {
                 aSelectedFiles.AppendL( uri );
-                iIsFileAttached = ETrue;
+                SetFileAttached(ETrue);
                 }   
             else
-                {
-                iIsFileAttached = EFalse;
+                {                
+                SetFileAttached(EFalse);
                 }
             }
         }
@@ -775,4 +775,13 @@
     return CCoeControl::MopSupplyObject(aId);
     }
 
+// -----------------------------------------------------------------------------
+// SetFileAttached
+// -----------------------------------------------------------------------------
+//
+void CGlxFetcherContainer::SetFileAttached(TBool aIsFileAttached)
+    {
+    iIsFileAttached = aIsFileAttached;
+    }
+
 //END OF FILE
--- a/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -213,12 +213,15 @@
                     {
                     iSelectedFiles.Reset();
                     retVal = EFalse;
+                    //if the corrupt file is selected then reset the flag to again enable
+                    //the selection.
+                    iFetcherContainer->SetFileAttached(EFalse);
                     } 
                 if (!retrieveUriValue)
                     {
                     retVal = EFalse;
                     }
-                if (iMultiSelectionEnabled)
+                if (iMultiSelectionEnabled && retVal)
                     {
                     iFetcherContainer->DoExecuteL(EGlxCmdEndMultipleMarking);    
                     }
--- a/photosgallery/controllers/imageviewer/eabi/glximageviewermanageru.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/imageviewer/eabi/glximageviewermanageru.def	Thu Jan 07 12:46:23 2010 +0200
@@ -4,7 +4,10 @@
 	_ZN22CGlxImageViewerManager17IncrementRefCountEv @ 3 NONAME
 	_ZN22CGlxImageViewerManager19SetImageFileHandleLERK5RFile @ 4 NONAME
 	_ZN22CGlxImageViewerManager5ResetEv @ 5 NONAME
-	_ZN22CGlxImageViewerManager9InstanceLEv @ 6 NONAME
-	_ZTI22CGlxImageViewerManager @ 7 NONAME
-	_ZTV22CGlxImageViewerManager @ 8 NONAME
+	_ZN22CGlxImageViewerManager8ImageUriEv @ 6 NONAME
+	_ZN22CGlxImageViewerManager9InstanceLEv @ 7 NONAME
+	_ZN22CGlxImageViewerManager9IsPrivateEv @ 8 NONAME
+	_ZNK22CGlxImageViewerManager15ImageFileHandleEv @ 9 NONAME
+	_ZTI22CGlxImageViewerManager @ 10 NONAME
+	_ZTV22CGlxImageViewerManager @ 11 NONAME
 
--- a/photosgallery/controllers/imageviewer/group/glximageviewermanager.mmp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/imageviewer/group/glximageviewermanager.mmp	Thu Jan 07 12:46:23 2010 +0200
@@ -41,4 +41,4 @@
 LIBRARY					euser.lib
 LIBRARY                 flogger.lib         // For Logging Tracer
 
-EXPORTUNFROZEN
\ No newline at end of file
+//EXPORTUNFROZEN
\ No newline at end of file
--- a/photosgallery/controllers/imageviewer/inc/glximageviewermanager.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/imageviewer/inc/glximageviewermanager.h	Thu Jan 07 12:46:23 2010 +0200
@@ -1,28 +1,20 @@
 /*
- ============================================================================
- Name		: glximageviewermanager.h
- Author	  : Hariharan Narayanan
- Version	 : 1.0
- Copyright   : /*
- * 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:    Image Viewer Manager
- *
- */
+* 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: Image Viewer Manager header file : CCGlxImageViewerManager declaration
+*
+*/
 
-/*
- * Description : CCGlxImageViewerManager declaration
- */
 
 #ifndef GLXIMAGEVIEWERMANAGER_H
 #define GLXIMAGEVIEWERMANAGER_H
@@ -87,10 +79,12 @@
     
 
 private:
+	//need to declare as it is initialised
+    TInt iRefCount; /// Reference count
     HBufC* iImageUri; /// image file uri in case of Photos starting as Image viewer 
     RFile64* iFile;  /// Handle to image file which will be shown in Image viewer
     TBool iIsPrivate; /// Flag that stores if the image file is in a private folder. ETrue means the image is private, else EFalse 
-    TInt iRefCount; /// Reference count
+    
     };
 
 #include "glximageviewermanager.inl"
--- a/photosgallery/controllers/imageviewer/inc/glximageviewermanager.inl	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/imageviewer/inc/glximageviewermanager.inl	Thu Jan 07 12:46:23 2010 +0200
@@ -1,28 +1,21 @@
 /*
- ============================================================================
- Name       : glximageviewermanager.inl
- Author   : Hariharan Narayanan
- Version     : 1.0
- Copyright   : /*
- * 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:    Image Viewer Manager
- *
- */
+* 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: Image Viewer Manager
+*
+*/
 
-/*
- * Description : CCGlxImageViewerManager declaration
- */
+
 
 // INCLUDES
 
--- a/photosgallery/controllers/imageviewer/src/glximageviewermanager.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/controllers/imageviewer/src/glximageviewermanager.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -63,10 +63,6 @@
     TRACER("CGlxImageViewerManager::~CGlxImageViewerManager()");
     delete iImageUri;
 
-    if( iFile )
-        {
-        iFile->Close();
-        }
     }
 
 CGlxImageViewerManager* CGlxImageViewerManager::NewLC()
@@ -82,7 +78,7 @@
     {
     TRACER("CGlxImageViewerManager::NewLC()");
     CGlxImageViewerManager* self = CGlxImageViewerManager::NewLC();
-    CleanupStack::Pop(); // self;
+    CleanupStack::Pop(self);
     return self;
     }
 
@@ -104,7 +100,14 @@
         delete iImageUri;
         iImageUri = NULL;
         }
-    iImageUri = aFileName.AllocL();    
+    if (aFileName.Length() == 0)
+        {
+        User::Leave(KErrNotSupported);    
+        }
+    else
+        {
+    	iImageUri = aFileName.AllocL();    
+		}
     }
 
 // ---------------------------------------------------------------------------
--- a/photosgallery/gallery/group/glx_reg.rss	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/gallery/group/glx_reg.rss	Thu Jan 07 12:46:23 2010 +0200
@@ -33,113 +33,4 @@
   	localisable_resource_id = R_GLX_LOCALISABLE_APP_INFO;
 	//
 	hidden = KAppIsHidden;
-
-        datatype_list =
-	        {
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/jpeg";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/jpg";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/jp2";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/tiff";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-wmf";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/ico";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/gif";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/bmp";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-bmp";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-bitmap";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-xbitmap";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-win-bitmap";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-windows-bmp";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/ms-bmp";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-ms-bmp";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/vnd.wap.wbmp";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/png";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-epoc-mbm";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/vnd.nokia.ota-bitmap";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/x-ota-bitmap";
-	            },
-	        DATATYPE
-	            {
-	            priority = EDataTypePriorityHigh;
-	            type = "image/mng";
-	            }
-	        };
 	}
--- a/photosgallery/gallery/inc/glxdocument.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/gallery/inc/glxdocument.h	Thu Jan 07 12:46:23 2010 +0200
@@ -44,6 +44,7 @@
     CEikAppUi* CreateAppUiL();
 
 public: // from CEikDocument
+    CFileStore* OpenFileL( TBool aDoOpen, const TDesC& aFilename, RFs& aFs );
     void OpenFileL( CFileStore*& aFileStore, RFile& aFile );
     
 private:
--- a/photosgallery/gallery/loc/photos.loc	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/gallery/loc/photos.loc	Thu Jan 07 12:46:23 2010 +0200
@@ -1165,6 +1165,11 @@
 //
 #define qtn_lgal_title_places "Places"
 
+// d:Discreet pop-up for fetching location(places) info
+// l:popup_discreet_window/opt5
+// r:11.0
+#define qtn_lgal_note_fetching_location "Fetching location data, connecting to server…"
+
 //-----------------------------------------------------------------------------
 // Slideshow related strings
 //-----------------------------------------------------------------------------
--- a/photosgallery/gallery/sis/glxgallery.pkg	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/gallery/sis/glxgallery.pkg	Thu Jan 07 12:46:23 2010 +0200
@@ -97,12 +97,6 @@
 "\epoc32\release\armv5\urel\glxcollectionpluginall.dll"         -"!:\sys\bin\glxcollectionpluginall.dll"
 "\epoc32\data\Z\resource\plugins\glxcollectionpluginall.rsc"    -"!:\resource\plugins\glxcollectionpluginall.rsc"
 "\epoc32\data\Z\resource\plugins\glxpluginall.rsc"  					 -"!:\resource\plugins\glxpluginall.rsc"
-"\epoc32\release\armv5\urel\glxcollectionplugincamera.dll"         -"!:\sys\bin\glxcollectionplugincamera.dll"
-"\epoc32\data\Z\resource\plugins\glxcollectionplugincamera.rsc"    -"!:\resource\plugins\glxcollectionplugincamera.rsc"
-"\epoc32\data\Z\resource\plugins\glxplugincamera.rsc"  					 -"!:\resource\plugins\glxplugincamera.rsc"
-"\epoc32\release\armv5\urel\glxcollectionplugindownloads.dll"         -"!:\sys\bin\glxcollectionplugindownloads.dll"
-"\epoc32\data\Z\resource\plugins\glxcollectionplugindownloads.rsc"    -"!:\resource\plugins\glxcollectionplugindownloads.rsc"
-"\epoc32\data\Z\resource\plugins\glxplugindownloads.rsc"  					 -"!:\resource\plugins\glxplugindownloads.rsc"
 "\epoc32\release\armv5\urel\glxcollectionpluginmonths.dll"         -"!:\sys\bin\glxcollectionpluginmonths.dll"
 "\epoc32\data\Z\resource\plugins\glxcollectionpluginmonths.rsc"    -"!:\resource\plugins\glxcollectionpluginmonths.rsc"
 "\epoc32\data\Z\resource\plugins\glxpluginmonths.rsc"  					 -"!:\resource\plugins\glxpluginmonths.rsc"
--- a/photosgallery/gallery/sis/glxgallery_stub.pkg	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/gallery/sis/glxgallery_stub.pkg	Thu Jan 07 12:46:23 2010 +0200
@@ -20,7 +20,7 @@
 &EN
 
 ; Package header
-#{"Photos"},(0x200009EE),9,200,0,TYPE=SA
+#{"Photos"},(0x200009EE),9,20,0,TYPE=SA
 
 
 ;Localised Vendor name
--- a/photosgallery/gallery/src/glxappui.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/gallery/src/glxappui.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -78,7 +78,11 @@
 //constants
 const TInt KGlxGridThumbnailPages          = 9 ;       // 4 page Down + 4 page Up + 1 Visible page = 9 page 
 const TInt KGlxFullThumbnailCount         = 11 ;       // 5 Thumnail Front + 5 Thumbnail Rear + 1 Visible = 11 page
+#ifdef __MARM
 const TInt KGlxMaxMegaPixelsSupportedByCamera = 5242880 ; // 5 MB
+#else
+const TInt KGlxMaxMegaPixelsSupportedByCamera = 2097152 ; // 2 MB
+#endif
 const TInt KGlxMaxMemoryToDecodeCapturedPicture = 2 * KGlxMaxMegaPixelsSupportedByCamera ;
 const TInt KGlxMemoryForOOMFwk          = 1048576 ; // 1 MB
 const TInt KGlxThumbNailRepresentation    = 2;         // Thumbnail Representation; Could be 3 also 
@@ -90,6 +94,7 @@
 _LIT8( KPhotosAlbums, "Albums" );
 _LIT8( KPhotosAllValue,"Allcs");
 
+_LIT8( KPhotoSuiteActivationMessage, "mm://root/photossuite?exit=hide" );
 _LIT8( KPhotosSuiteExitMessage, "mm://photossuite?action=exit" );
 
 // Matrix uid, needed for activating the suite view.
@@ -196,6 +201,7 @@
 	            {
 	            LaunchMmViewL( KPhotosSuiteExitMessage );	
 	            }
+            iUiUtility->SetExitingState(ETrue);
             Exit();
             }
             break;
@@ -276,16 +282,21 @@
     TRAPD(err, HandleActivationMessageL(aCommand, aDocumentName, aTail));
     if ( KErrNone != err )
         {
-        // Open collection for main view
-        iStartupViewUid = TUid::Null();
-        // Open navigational state at root level
-        CMPXCollectionPath* newState = CMPXCollectionPath::NewL();
-        CleanupStack::PushL( newState );
-        iNavigationalState->NavigateToL( *newState );
-        CleanupStack::PopAndDestroy( newState );
+        // Open photos suite view
+        LaunchMmViewL( KPhotoSuiteActivationMessage );
+        Exit();
         }
 
-    return (EApaCommandOpen == aCommand) && (0 != aDocumentName.Size());
+    if(0 == aTail.CompareC(KNullDesC8))
+        {
+      	return ETrue;
+        }
+    else
+        {
+        //other case
+        return EFalse;
+        }
+
     }
 
 // ---------------------------------------------------------------------------
@@ -464,17 +475,16 @@
         const TFileName& aDocumentName, const TDesC8& aData)
     {
     TRACER("void CGlxAppUi::HandleActivationMessageL(const TApaCommand& aCommand, const TFileName& aDocumentName, const TDesC8& aData)");
+    GLX_LOG_INFO1("Glx-HandleActivationMessageL() aCommand=%d", aCommand);
+    GLX_LOG_INFO1("Glx-HandleActivationMessageL() aDocumentName length=%d",
+                                                    aDocumentName.Length());
 
     delete iActivationParam;
     iActivationParam = NULL;
 
-    //Check for the IADUpdate
-    //TBD: Need to check the location this has to be called.
-    //This might not be proper place.
-    DoCheckForIADUpdatesL();
-
-    if ( aDocumentName.Length() > 0 && EApaCommandOpen == aCommand )
+    if (aDocumentName.Length() > 0 && 0 == aData.CompareC(KNullDesC8) )
         {
+        GLX_LOG_INFO("CGlxAppUi::HandleActivationMessageL() Image Viewer!");        
         CMPXCollectionPath* path = CMPXCollectionPath::NewL();
         CleanupStack::PushL(path);
         iNavigationalState->SetBackExitStatus( EFalse );
@@ -484,6 +494,7 @@
         }
     else
         {
+        GLX_LOG_INFO("CGlxAppUi::HandleActivationMessageL(aData)");        
         HandleActivationMessageL( aData );
         }
 
@@ -774,13 +785,13 @@
     }
 
 // ---------------------------------------------------------------------------
-// CCGlxNsAppUi::DoCheckForIADUpdatesL()
+// CGlxAppUi::DoCheckForIADUpdatesL()
 // Check for updates via IAD
 // ---------------------------------------------------------------------------
 // 
 void CGlxAppUi::DoCheckForIADUpdatesL()
     {
-    TRACER("CGlxNsAppUi::CheckForUpdatesL()");
+    TRACER("CGlxAppUi::DoCheckForIADUpdatesL()");
     
     if ( !iIadUpdate )
         {
--- a/photosgallery/gallery/src/glxdocument.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/gallery/src/glxdocument.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -84,6 +84,20 @@
 	}
 
 // -----------------------------------------------------------------------------
+// OpenFileL()
+// Open document.
+// -----------------------------------------------------------------------------
+CFileStore* CGlxDocument::OpenFileL( TBool /*aDoOpen*/,
+                                    const TDesC& aFilename, RFs& /*aFs*/ )
+    {
+    TRACER("CFileStore* CGlxDocument::OpenFileL");
+	// Reset old data
+    ResetDocument();
+    iImageViewerInstance->SetImageUriL(aFilename);
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
 // CGlxDocument::OpenFileL()
 // Open document.
 // -----------------------------------------------------------------------------
--- a/photosgallery/group/bld.inf	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/group/bld.inf	Thu Jan 07 12:46:23 2010 +0200
@@ -78,4 +78,7 @@
 #include "../memoryplugin/group/bld.inf"
 
 //include Photos Suite Launcher
-#include "../photossuitelauncher/group/bld.inf"
\ No newline at end of file
+#include "../photossuitelauncher/group/bld.inf"
+
+//include imageviewer
+#include "../imgvwr/group/bld.inf"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/group/bld.inf	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,21 @@
+/*
+* 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:    Build information for mgallery application.
+*
+*/
+
+
+PRJ_MMPFILES
+glxivwr.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/group/glxivwr.mmp	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,107 @@
+/*
+* 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:    Project definition file for project Photos Image Viewer
+*
+*/
+
+
+
+ 
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+#include "../../inc/glxcapabilities.hrh"
+#include "../../../photos_plat/gallery_utilities_api/inc/glxgallery.hrh"
+#include "../../group/glxbuildcommon.mmh"
+#include "../../inc/glxalfhelper.mmh"
+
+TARGET                  glxivwr.exe
+TARGETTYPE              exe
+UID                     0x100039CE 0x200104E7
+
+CAPABILITY              GLX_CAPABILITIES
+
+SOURCEPATH              ../src
+SOURCE                  glxivwrapplication.cpp 
+SOURCE			glxivwrappui.cpp 
+SOURCE			glxivwrdocument.cpp
+
+SOURCEPATH              ../group
+
+START RESOURCE          glxivwr.rss
+HEADER
+TARGETPATH              /resource/apps
+LANGUAGE_IDS
+END // RESOURCE
+
+USERINCLUDE             ../inc
+USERINCLUDE		../../viewframework/medialists/inc
+
+APP_LAYER_SYSTEMINCLUDE
+
+// System includes from the source tree
+SYSTEMINCLUDE           ../../inc
+SYSTEMINCLUDE           ../../common/inc
+SYSTEMINCLUDE           ../../commonui/inc
+SYSTEMINCLUDE           ../../viewframework/inc
+SYSTEMINCLUDE           ../../viewframework/uiutilities/inc
+SYSTEMINCLUDE           ../../viewframework/plugins/gridviewplugin/inc
+SYSTEMINCLUDE           ../../viewframework/plugins/fullscreenviewplugin/inc
+SYSTEMINCLUDE           ../../viewframework/commandhandlers/inc
+SYSTEMINCLUDE           ../../controllers/imageviewer/inc
+
+LIBRARY                 apparc.lib
+LIBRARY                 avkon.lib  
+LIBRARY                 cone.lib 
+LIBRARY                 eikcoctl.lib
+LIBRARY                 eikcore.lib
+LIBRARY                 ws32.lib
+LIBRARY                 estor.lib 
+LIBRARY                 euser.lib
+LIBRARY                 mpxcollectionutility.lib
+LIBRARY                 mpxcommon.lib
+LIBRARY                 mpxviewutility.lib
+LIBRARY                 glxuiutilities.lib
+LIBRARY                 glxcommonui.lib // for NGlxZoomStatePublisher::PublishStateL
+LIBRARY                 alfclient.lib // for CAlfEnv
+LIBRARY			glxmedialists.lib // to get the cache manager handle
+LIBRARY    		apgrfx.lib 
+LIBRARY                 glximageviewermanager.lib
+LIBRARY                 glxcommon.lib
+LIBRARY                 efsrv.lib // for RFile
+
+EPOCHEAPSIZE 0x1000 0xC00000 //HEAP SIZE SET TO DEFAULT MIN OF 4KB AND MAX OF 12 MB
+START WINS
+END
+
+START MARM
+END
+
+START RESOURCE glxivwr_loc.rss
+HEADER
+TARGETPATH              /resource/apps
+LANGUAGE_IDS
+END // RESOURCE
+
+START RESOURCE glxivwr_reg.rss
+DEPENDS glx_loc.rsg
+// Do not change the UID 10003a3f below.
+TARGETPATH              /private/10003a3f/import/apps
+LANGUAGE_IDS
+END // RESOURCE
+
+
+LIBRARY aknnotify.lib
+LIBRARY hal.lib              // HAL, HALData
+LIBRARY commonengine.lib		// for StringLoader
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/group/glxivwr.rss	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,104 @@
+/*
+* 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:    Resource definitions for Image Viewer
+*
+*/
+
+
+
+ 
+NAME IMVR
+
+#include <eikon.rh>
+#include <eikon.rsg>
+#include <avkon.rh>
+#include <avkon.rsg>
+
+// ---------------------------------------------------------
+//   
+//    Define the resource file signature 
+//    This resource should be empty.
+//
+// ---------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE { } 
+
+// ---------------------------------------------------------
+//   
+//    Default Document Name
+//
+// ---------------------------------------------------------
+//
+RESOURCE TBUF r_default_document_name { buf=""; }
+
+// ---------------------------------------------------------
+//   
+//    Define default menu and CBA key.
+//
+// ---------------------------------------------------------
+//
+RESOURCE EIK_APP_INFO
+    {
+    cba = r_glx_default_cba;
+    status_pane = r_glx_default_pane;
+    }
+
+// Title Setting for Main View of Photos
+RESOURCE STATUS_PANE_APP_MODEL r_glx_default_pane
+	{
+	layout = R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT;
+	panes=
+	    {
+	    SPANE_PANE
+	        {
+	        id = EEikStatusPaneUidTitle;
+	        type = EAknCtTitlePane;
+	        resource = r_overriden_app_name;
+	        }
+	    };
+	}
+RESOURCE TITLE_PANE r_overriden_app_name
+{
+txt = "";
+}
+
+// ---------------------------------------------------------
+//   
+//    Default CBA keys
+//
+// ---------------------------------------------------------
+//
+RESOURCE CBA r_glx_default_cba
+    {
+    buttons=
+        {
+        CBA_BUTTON
+            {
+            txt="";
+            id=EAknSoftkeyForwardKeyEvent;
+            },
+        CBA_BUTTON
+            {
+            txt="";
+            id=EAknSoftkeyForwardKeyEvent;
+            },
+        CBA_BUTTON
+            {
+            txt="";
+            id=EAknSoftkeyForwardKeyEvent;
+            }
+        };
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/group/glxivwr_loc.rss	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,57 @@
+/*
+* 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:    Resource definitions for Image Viewer
+*
+*/
+
+
+
+
+
+//	RESOURCE IDENTIFIER
+NAME	IVWR
+#include <eikon.rh>
+#include <eikon.rsg>
+#include <avkon.rh>
+#include <avkon.rsg>
+
+#include <appinfo.rh>
+#include <photos.loc>
+
+
+// ---------------------------------------------------------
+//   
+//    Define the resource file signature 
+//    This resource should be empty.
+//
+// ---------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE { } 
+
+RESOURCE LOCALISABLE_APP_INFO r_glx_localisable_app_info
+	{
+	short_caption = qtn_lgal_title_main_view;
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO 
+			{
+			caption=qtn_lgal_title_main_view;
+			number_of_icons=1;
+			icon_file="\\resource\\apps\\glx_aif.mif";
+			}
+		};
+	}
+
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/group/glxivwr_reg.rss	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,144 @@
+/*
+* 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:    Application's registration resource file 
+*
+*/
+
+
+
+
+#include <appinfo.rh>
+#include <glxivwr_loc.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x200104E7
+
+RESOURCE APP_REGISTRATION_INFO 
+	{
+	app_file="glxivwr";
+	//
+	localisable_resource_file="\\resource\\apps\\glxivwr_loc";
+  	localisable_resource_id = R_GLX_LOCALISABLE_APP_INFO;
+	//
+	hidden = KAppIsHidden;
+	embeddability = KAppEmbeddableOnly;
+	datatype_list =
+            {
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/jpeg";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/jpg";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/jp2";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/tiff";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-wmf";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/ico";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/gif";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/bmp";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-bmp";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-bitmap";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-xbitmap";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-win-bitmap";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-windows-bmp";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/ms-bmp";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-ms-bmp";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/vnd.wap.wbmp";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/png";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-epoc-mbm";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/vnd.nokia.ota-bitmap";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/x-ota-bitmap";
+                },
+            DATATYPE
+                {
+                priority = EDataTypePriorityHigh;
+                type = "image/mng";
+                }
+            };
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/inc/glxivwrapplication.h	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,40 @@
+/*
+ * 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:    Symbian application class
+ *
+ */
+
+
+
+
+#ifndef C_GLXIVIEWERAPPLICATION_H
+#define C_GLXIVIEWERAPPLICATION_H
+
+#include <aknapp.h>
+
+/**
+ *  CGlxIVwrApplication
+ *
+ *  @lib ViewerApplication
+ */
+class CGlxIVwrApplication : public CAknApplication
+    {
+public:  // from CAknApplication
+    TUid AppDllUid() const;
+
+protected: // from CAknApplication
+    CApaDocument* CreateDocumentL();
+    };
+
+#endif // C_GLXIVIEWERAPPLICATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/inc/glxivwrappui.h	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,146 @@
+/*
+ * 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:    AppUi class 
+ *
+ */
+
+
+
+
+#ifndef C_GLXIVIEWERAPPUI_H
+#define C_GLXIVIEWERAPPUI_H
+
+#include <aknViewAppUi.h>
+#include <mpxcollectionobserver.h>
+#include <mglxnavigationalstateobserver.h>
+#include <mpxcollectionpath.h>
+#include "glxiadupdate.h"
+
+class MMPXViewUtility;
+class MMPXCollectionUtility;
+class CGlxUiUtility;
+class CGlxNavigationalState;
+class CAknGlobalNote;
+
+class CGlxBackServiceWrapper;
+
+/**
+ *  CGlxIVwrAppUi
+ *
+ *  @lib ViewerApplication
+ */
+
+class CGlxIVwrAppUi : public CAknViewAppUi, public MGlxNavigationalStateObserver
+    {
+public:
+    CGlxIVwrAppUi();
+    void ConstructL();
+    ~CGlxIVwrAppUi();
+
+public: // from CAknAppUi
+    /**
+     * From CAknAppUi
+     * Handle user menu selections
+     * @param aCommand Id of the command
+     */
+    void HandleCommandL(TInt aCommand);
+
+    // From MGlxNavigationalStateObserver
+    void HandleNavigationalStateChangedL();
+    //OOM Method
+    void HandleApplicationSpecificEventL(TInt aEventType, const TWsEvent& aWsEvent);
+
+private:    // From CEikAppUi
+
+    TBool ProcessCommandParametersL(TApaCommand aCommand,
+            TFileName& aDocumentName, const TDesC8& aTail);
+
+private: // From CCoeAppUi
+
+    void HandleForegroundEventL( TBool aForeground );
+
+private:
+    enum TEntryType
+        {
+        EEntryTypeStartUp = 0,
+        EEntryTypeFocusGained
+        };
+
+
+    /**
+     * Handle an activation message.
+     * @param aCommand command data sent from the activating application.
+     * @param aDocumentName image file name data sent from the activating application.
+     * @param aData Message data from activating application.
+     */
+    void HandleActivationMessageL(const TApaCommand& aCommand, const TFileName& aDocumentName, const TDesC8& aData);
+
+    /**
+     * Set activation parameter for startup view, converting to 16-bit
+     * descriptor used by MPX.
+     * @param aParam Activation parameter.
+     */
+    void SetActivationParamL(const TDesC8& aParam);
+
+    /**
+     * Get view scoring ids based on current navigational state
+     * (using Get in the name since the function does not return anything)
+     * @param aIns list that will be populated with scoring ids
+     */
+    void GetViewScoringIdsL( RArray<TUid>& aIds ) const;
+
+    /**
+     * Get view scoring id for collection plugin
+     * @param naviState Path to represent navigational state
+     * @return scoding id
+     */
+    TUid GetViewScoringIdForCollectionPlugin( const CMPXCollectionPath& aNaviState ) const;
+
+    /**
+     * Get view scoring id for depth in ui hierarchy
+     * @param naviState Path to represent navigational state
+     * @return scoding id
+     */
+    TUid ViewScoringIdForNaviStateDepth( const CMPXCollectionPath& aNaviState ) const;
+
+
+    /**
+     * close photos app.
+     */
+    void CloseImgVwr();
+
+private:
+    MMPXViewUtility* iViewUtility;
+
+	/// Singleton that stores gallery's navigational state
+    CGlxNavigationalState* iNavigationalState;
+
+    /** Optional view plugin UID to activate when the collection is opened */
+    TUid iStartupViewUid;
+
+    /** Optional activation parameter for the next view */
+    HBufC* iActivationParam;
+
+
+    TBool iStartUpSequence;
+
+    ///Ui utility
+    CGlxUiUtility* iUiUtility;
+
+    CGlxBackServiceWrapper* iBSWrapper;
+    };
+
+
+#endif // C_GLXIVIEWERAPPUI_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/inc/glxivwrdocument.h	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,61 @@
+/*
+ * 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:    Document class 
+ *
+ */
+
+
+
+
+#ifndef C_GLXIVWRDOCUMENT_H
+#define C_GLXIVWRDOCUMENT_H
+
+#include <AknDoc.h>
+
+// Forward references
+class CEikApplication;
+class MMPXViewUtility;
+class CGlxImageViewerManager;
+
+/**
+ *  CViewerDocument
+ *
+ *  @lib ViewerApplication
+ */
+class CGlxIVwrDocument : public CAknDocument
+    {
+public:
+    static CGlxIVwrDocument* NewL(CEikApplication& aApp);
+    static CGlxIVwrDocument* NewLC(CEikApplication& aApp);
+    ~CGlxIVwrDocument();
+
+public: // from CAknDocument
+    CEikAppUi* CreateAppUiL();
+
+public: // from CEikDocument
+    CFileStore* OpenFileL( TBool aDoOpen, const TDesC& aFilename, RFs& aFs );
+    void OpenFileL( CFileStore*& aFileStore, RFile& aFile );
+
+private:
+    void ConstructL();
+
+    CGlxIVwrDocument(CEikApplication& aApp);
+    void ResetDocument();
+
+private:
+    MMPXViewUtility* iViewUtility;
+    CGlxImageViewerManager* iImageViewerInstance;
+    };
+
+#endif // C_GLXIVWRDOCUMENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/src/glxivwrapplication.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,108 @@
+/*
+ * 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:    Symbian application class
+ *
+ */
+
+
+
+
+#include "glxivwrapplication.h"
+
+#include <glxgallery.hrh>
+#include <glxlog.h>
+#include <glxtracer.h>
+
+#include "glxivwrdocument.h"
+
+// UID for the application, this should correspond to the uid defined in the mmp file
+static const TUid KUidGlxIvwrApp = {0x200104E7};
+
+// -----------------------------------------------------------------------------
+// CreateDocumentL
+// -----------------------------------------------------------------------------
+//
+CApaDocument* CGlxIVwrApplication::CreateDocumentL()
+    {
+    TRACER("CApaIVwrDocument* CGlxApplication::CreateDocumentL()");
+    GLX_LOG_INFO("CGlxApplication::CreateDocumentL");
+    // Create a Viewer document, and return a pointer to it
+    CApaDocument* document = CGlxIVwrDocument::NewL(*this);
+    return document;
+    }
+
+// -----------------------------------------------------------------------------
+// AppDllUid
+// -----------------------------------------------------------------------------
+//
+TUid CGlxIVwrApplication::AppDllUid() const
+{
+// Return the UID for the Viewer application
+return KUidGlxIvwrApp;
+}
+
+#include <eikstart.h>
+
+#ifdef __UI_FRAMEWORKS_V2__
+
+// -----------------------------------------------------------------------------
+// NewApplication
+// -----------------------------------------------------------------------------
+//
+CApaApplication* NewApplication()
+    {
+    return new CGlxIVwrApplication;
+    }
+
+// -----------------------------------------------------------------------------
+// E32Main
+// -----------------------------------------------------------------------------
+//
+TInt E32Main()
+    {
+    return EikStart::RunApplication(NewApplication);
+    }
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// The following is required for wins on EKA1 (using the exedll target)
+//
+#if defined(__WINS__) && !defined(EKA2)
+EXPORT_C TInt WinsMain(TDesC* aCmdLine)
+    {
+    return EikStart::RunApplication(NewApplication, aCmdLine);
+    }
+
+TInt E32Dll(TDllReason)
+    {
+    return KErrNone;
+    }
+#endif
+
+#else // __UI_FRAMEWORKS_V2__
+
+// Create an application, and return a pointer to it
+EXPORT_C CApaApplication* NewApplication()
+      {
+      return new CGlxIVwrApplication;
+      }
+
+// DLL entry point, return that everything is ok
+GLDEF_C TInt E32Dll(TDllReason)
+    {
+    return KErrNone;
+    }
+
+#endif // __UI_FRAMEWORKS_V2__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/src/glxivwrappui.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,432 @@
+/*
+ * 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:    AppUi class 
+ *
+ */
+
+
+
+
+#include "glxivwrappui.h"
+
+#include <avkon.hrh>
+#include <StringLoader.h>    
+#include <aknnotewrappers.h>
+#include <AknUtils.h>
+#include <mpxviewutility.h>
+#include <mpxcollectionutility.h>
+#include <mpxcollectionmessage.h>
+#include <mpxmessagegeneraldefs.h>
+#include <mpxcollectionpath.h>
+
+#include <alf/alfenv.h>
+#include <akntoolbar.h>
+#include <glxgallery.hrh>
+
+#include <glxcollectionpluginimageviewer.hrh>
+#include <glxfiltergeneraldefs.h>
+#include <glxpanic.h>
+#include <glxuistd.h>
+#include <glxviewpluginuids.hrh>
+#include <glxlog.h>
+#include <glxuiutility.h>
+#include <glxsettingsmodel.h>
+#include <glxcommandhandlers.hrh>
+#include <glxzoomstatepublisher.h>
+#include <glxnavigationalstate.h>
+#include <glxnavigationalstatedefs.h>
+#include <glxfullscreenviewplugin.hrh>
+#include <glxivwr.rsg>
+#include <AknGlobalNote.h>
+#include <glxtracer.h>
+
+
+#include <glxbackservicewrapper.h>
+
+#include <glxuistd.h>
+#include <apgcli.h>
+
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+CGlxIVwrAppUi::CGlxIVwrAppUi()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// ConstructL is called by the application framework
+// -----------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::ConstructL()
+    {
+    TRACER("void CGlxIVwrAppUi::ConstructL()");
+
+    // Enable Avkon skins.
+    BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible );
+    // Create navigational state 
+    iNavigationalState = CGlxNavigationalState::InstanceL();
+
+    iNavigationalState->AddObserverL( *this );
+
+    // Create Back Stepping Service wrapper
+    iBSWrapper = CGlxBackServiceWrapper::NewL( TUid::Uid( KGlxGalleryApplicationUid ) );
+    iNavigationalState->SetBackExitStatus(EFalse);
+
+    // Get an instance of view utility
+    iViewUtility = MMPXViewUtility::UtilityL();
+
+    iUiUtility = CGlxUiUtility::UtilityL();
+    // Always start in default orientation
+    iUiUtility->SetAppOrientationL(EGlxOrientationDefault);
+    // publish zoom context, no zoom keys for now
+    NGlxZoomStatePublisher::PublishStateL( EFalse );
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CGlxIVwrAppUi::~CGlxIVwrAppUi()
+    {
+    TRACER("CGlxIVwrAppUi::~CGlxIVwrAppUi()");
+    if ( iNavigationalState )
+        {
+        iNavigationalState->RemoveObserver(*this);
+        iNavigationalState->Close();
+        }
+
+    if ( iViewUtility )
+        {
+        iViewUtility->Close();
+        }
+
+    delete iActivationParam;
+
+    if ( iUiUtility )
+        {
+        iUiUtility->Close();
+        }
+
+    if( iBSWrapper )
+        {	
+        delete iBSWrapper;    
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// HandleCommandL
+// -----------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::HandleCommandL(TInt aCommand)
+    {
+    TRACER("void CGlxIVwrAppUi::HandleCommandL(TInt aCommand)");
+    GLX_LOG_INFO1("PHOTOS LOGS: void CGlxIVwrAppUi::HandleCommandL(TInt aCommand = %d)",aCommand );
+    switch(aCommand)
+        {
+        case EEikCmdExit:
+            {
+            Exit();
+            }
+            break;
+        case EAknSoftkeyExit:
+            {
+            CloseImgVwr();
+            GLX_LOG_INFO("CGlxIVwrAppUi::HandleCommandL: Exit() being Called");
+            Exit();
+            }
+            break;
+
+        case EAknSoftkeyBack:
+            iNavigationalState->ActivatePreviousViewL();
+            break;
+
+        default:
+            break;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// ProcessCommandParametersL
+// ---------------------------------------------------------------------------
+//
+TBool CGlxIVwrAppUi::ProcessCommandParametersL(TApaCommand aCommand,
+        TFileName& aDocumentName, const TDesC8& aTail)
+    {
+    TRACER("TBool CGlxIVwrAppUi::ProcessCommandParametersL(TApaCommand /*aCommand*/,TFileName& /*aDocumentName*/, const TDesC8& aTail)");
+
+    TRAPD(err, HandleActivationMessageL(aCommand, aDocumentName, aTail));
+    if ( KErrNone != err )
+        {
+        // Open collection for main view
+        iStartupViewUid = TUid::Null();
+        // Open navigational state at root level
+        CMPXCollectionPath* newState = CMPXCollectionPath::NewL();
+        CleanupStack::PushL( newState );
+        iNavigationalState->NavigateToL( *newState );
+        CleanupStack::PopAndDestroy( newState );
+        }
+    if(0 == aTail.CompareC(KNullDesC8))
+        {
+        return ETrue;
+        }
+    else
+        {
+        return EFalse;
+        }
+
+    }
+
+// ---------------------------------------------------------------------------
+// Handle navigational state change
+// ---------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::HandleNavigationalStateChangedL()
+    {
+    TRACER("void CGlxIVwrAppUi::HandleNavigationalStateChangedL()");
+    // get current navigational state
+    CMPXCollectionPath* naviState = iNavigationalState->StateLC();
+
+    // Case: Open photos in grid, go to filemanager via menu and open any image
+    if (naviState->Id() != TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
+        {
+        /*
+         * This thread chk is added for EDDG-7UUC53. In this scenario we get EPathChanged from MPX.
+         * That initiates a viewnavigational change from CGlxNavigationalStateImp  HandleCollectionMessageL()
+         * In these types of scenarios we don't want a view switch. So ignoring the event. 
+         */
+        TApaTaskList taskList( iCoeEnv->WsSession() );
+        TApaTask task = taskList.FindApp( TUid::Uid( KGlxGalleryApplicationUid ) );
+        TApaTask taskForeGround = taskList.FindByPos(0); // get fopreground app
+        if ( task.Exists() && task.ThreadId() != taskForeGround.ThreadId() )
+            {
+            GLX_LOG_INFO("CGlxIVwrAppUi ::HandleNavigationalStateChanged: Return ");
+            return;
+            }
+        }
+
+    CleanupStack::PopAndDestroy( naviState );
+
+    HBufC* activationParam = iActivationParam;
+    iActivationParam = NULL; // release ownership
+    CleanupStack::PushL( activationParam );
+
+    if ( TUid::Null() != iStartupViewUid )
+        {
+        GLX_LOG_INFO("CGlxAppUi::HandleNavigationalStateChanged: Activating startup view");
+        // Activate startup view
+        iViewUtility->ActivateViewL( iStartupViewUid, activationParam );
+        iStartupViewUid = TUid::Null();
+        }
+    else
+        {
+        GLX_LOG_INFO("CGlxAppUi::HandleNavigationalStateChanged: Activating view");
+
+        // get ids for scoring a view
+        RArray< TUid > scoringIds;
+        CleanupClosePushL( scoringIds );
+        GetViewScoringIdsL( scoringIds );
+
+        GLX_LOG_INFO1( "CGlxIVwrAppUi::HandleNavigationalStateChanged: Uid count %d", scoringIds.Count());
+        // let view utility to select the best view based on scoring ids
+        iViewUtility->ActivateViewL( scoringIds, activationParam );
+
+        CleanupStack::PopAndDestroy( &scoringIds );
+        }
+
+    CleanupStack::PopAndDestroy( activationParam );
+    }
+
+// ---------------------------------------------------------------------------
+// Populate array with view scoring ids
+// ---------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::GetViewScoringIdsL( RArray<TUid>& aIds ) const
+{
+TRACER("void CGlxIVwrAppUi::GetViewScoringIdsL( RArray<TUid>& aIds ) const");
+
+aIds.Reset(); // For maintenance safety
+
+// get current navigational state
+CMPXCollectionPath* naviState = iNavigationalState->StateLC();
+
+// no if check in needed here ,it makes the aapui aware of the list view depth
+// to be removed.added by gopa   
+if ( naviState->Levels() >= 1)
+    {
+    if (iNavigationalState->ViewingMode() == NGlxNavigationalState::EBrowse) 
+        {
+        // For image viewer collection, goto view mode
+        if (naviState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
+            {
+            aIds.AppendL( TUid::Uid(  KGlxViewingModeView ) );
+            }
+        else
+            {
+            aIds.AppendL( TUid::Uid(  KGlxViewingModeBrowse ) );
+            }
+        } 
+    else 
+        {
+        aIds.AppendL( TUid::Uid(  KGlxViewingModeView ) );
+        }                 
+    }
+
+if( TUid::Null() != GetViewScoringIdForCollectionPlugin( *naviState ) )
+    {
+    // add scoring id for collection plugin
+    aIds.AppendL( GetViewScoringIdForCollectionPlugin( *naviState ) );
+    }
+
+if( TUid::Null() != ViewScoringIdForNaviStateDepth( *naviState ) )
+    {
+    // add scoring id for depth in the ui hierarchy
+    aIds.AppendL( ViewScoringIdForNaviStateDepth( *naviState ) );
+    }
+
+CleanupStack::PopAndDestroy( naviState );
+}
+// ---------------------------------------------------------------------------
+// Handles the foreground events
+// ---------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::HandleForegroundEventL( TBool aForeground )
+    {
+    TRACER("void CGlxIVwrAppUi::HandleForegroundEventL( TBool aForeground )");
+
+    // first let base class handle it so that we dont break anything
+    CAknViewAppUi::HandleForegroundEventL( aForeground );
+
+    }
+// ---------------------------------------------------------------------------
+// Return scoring id for collection plugin
+// ---------------------------------------------------------------------------
+//
+TUid CGlxIVwrAppUi::GetViewScoringIdForCollectionPlugin( const CMPXCollectionPath& aNaviState ) const
+{
+TRACER("TUid CGlxIVwrAppUi::GetViewScoringIdForCollectionPluginL( const CMPXCollectionPath& aNaviState ) const");
+
+GLX_LOG_INFO1( "CGlxIVwrAppUi::GetViewScoringIdForCollectionPluginL: Depth %d", aNaviState.Levels() );
+// score view based on collection plugin if not on root level
+if ( aNaviState.Levels() )
+    {
+    return TUid::Uid( aNaviState.Id( 0 ) );
+    }
+// return null as id to be ignored in scoring
+return TUid::Null(); 
+}
+
+// ---------------------------------------------------------------------------
+// Return scoring id for depth
+// ---------------------------------------------------------------------------
+//
+TUid CGlxIVwrAppUi::ViewScoringIdForNaviStateDepth( const CMPXCollectionPath& aNaviState ) const
+{
+TRACER("TUid CGlxIVwrAppUi::ViewScoringIdForNaviStateDepthL( const CMPXCollectionPath& aNaviState ) const");
+GLX_LOG_INFO1( "CGlxIVwrAppUi::ViewScoringIdForNaviStateDepthL: Level %d", aNaviState.Levels() );
+
+switch ( aNaviState.Levels() )
+    {
+    case 0:
+
+        GLX_LOG_INFO1( "CGlxIVwrAppUi::ViewScoringIdForNaviStateDepthL: \
+                Depth  case 0 %x", TUid::Uid( KGlxDepthOne ) );
+        return TUid::Uid( KGlxDepthOne );
+
+    case 1:
+
+        GLX_LOG_INFO1( "CGlxIVwrAppUi::ViewScoringIdForNaviStateDepthL: \
+                Depth case 1 %x", TUid::Uid( KGlxDepthTwo ) );
+        return TUid::Uid( KGlxDepthTwo );
+
+
+    case 2:
+
+        GLX_LOG_INFO1( "CGlxIVwrAppUi::GetViewScoringIdForUiHieararchyDepthL: \
+                Depth case 2 %x", TUid::Uid( KGlxDepthThree ) );
+        return TUid::Uid( KGlxDepthThree );
+
+    default:
+        GLX_LOG_WARNING( "CGlxIVwrAppUi::GetViewScoringIdsL: Navigational state deeper than supported" );
+        // return null as an id to be ignored in scoring
+        return TUid::Null(); 
+    }
+}
+
+// ---------------------------------------------------------------------------
+// HandleActivationMessageL
+// ---------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::HandleActivationMessageL(const TApaCommand& aCommand, 
+        const TFileName& aDocumentName, const TDesC8& aData)
+    {
+    TRACER("void CGlxIVwrAppUi::HandleActivationMessageL(const TApaCommand& aCommand, const TFileName& aDocumentName, const TDesC8& aData)");
+
+    delete iActivationParam;
+    iActivationParam = NULL;
+
+    if ( 0 == aData.CompareC(KNullDesC8) )
+        {
+        CMPXCollectionPath* path = CMPXCollectionPath::NewL();
+        CleanupStack::PushL(path);
+        path->AppendL( KGlxCollectionPluginImageViewerImplementationUid );
+        iNavigationalState->NavigateToL( *path );
+        CleanupStack::PopAndDestroy( path );
+        }
+
+    // Introduced to fix bug EMJN-78GH6N. Rowland Cook 10/12/2007
+    if (0 != iEikonEnv->RootWin().OrdinalPosition())
+        {
+        iEikonEnv->RootWin().SetOrdinalPosition(0);
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// SetActivationParamL
+// ---------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::SetActivationParamL(const TDesC8& aParam)
+    {
+    TRACER("void CGlxIVwrAppUi::SetActivationParamL(const TDesC8& aParam)");
+    iActivationParam = HBufC::NewL(aParam.Length());
+    iActivationParam->Des().Copy(aParam);
+    }
+
+// ---------------------------------------------------------------------------
+// HandleApplicationSpecificEventL
+// 
+// ---------------------------------------------------------------------------
+//
+
+void CGlxIVwrAppUi::HandleApplicationSpecificEventL(TInt aEventType, const TWsEvent& aWsEvent)
+    {
+    TRACER("CGlxIVwrAppUi::HandleApplicationSpecificEventL");
+    CAknViewAppUi::HandleApplicationSpecificEventL(aEventType,aWsEvent);
+    if(aWsEvent.Type() == KAknUidValueEndKeyCloseEvent)
+        {
+        CloseImgVwr();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CloseImgVwr
+// -----------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::CloseImgVwr()
+    {
+    TRACER("CGlxNsAppUi::CloseImgVwr()");
+    iUiUtility->SetViewNavigationDirection(EGlxNavigationBackwards);
+    iUiUtility->SetExitingState(ETrue);         
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/imgvwr/src/glxivwrdocument.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -0,0 +1,140 @@
+/*
+ * 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:    Document class 
+ *
+ */
+
+#include <mpxviewutility.h>
+
+#include "glxivwrappui.h"
+#include "glxivwrdocument.h"
+#include <glximageviewermanager.h>
+#include <glxtracer.h>
+
+// -----------------------------------------------------------------------------
+// NewL
+// -----------------------------------------------------------------------------
+//
+CGlxIVwrDocument* CGlxIVwrDocument::NewL(CEikApplication& aApp)
+    {
+    TRACER("CGlxIVwrDocument::NewL");
+    CGlxIVwrDocument* self = NewLC(aApp);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// NewLC
+// -----------------------------------------------------------------------------
+//
+CGlxIVwrDocument* CGlxIVwrDocument::NewLC(CEikApplication& aApp)
+    {
+    TRACER("CGlxIVwrDocument::NewLC");
+    CGlxIVwrDocument* self = new (ELeave) CGlxIVwrDocument(aApp);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// ConstructL
+// -----------------------------------------------------------------------------
+//
+void CGlxIVwrDocument::ConstructL()
+    {
+    TRACER("CGlxIVwrDocument::ConstructL");
+    iViewUtility = MMPXViewUtility::UtilityL();
+    iImageViewerInstance = CGlxImageViewerManager::InstanceL();
+    }    
+
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+CGlxIVwrDocument::CGlxIVwrDocument(CEikApplication& aApp) : CAknDocument(aApp) 
+            {
+            }
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CGlxIVwrDocument::~CGlxIVwrDocument()
+    {
+    TRACER("CGlxIVwrDocument::~CGlxDocument()");
+    if (iViewUtility != NULL)
+        {
+        iViewUtility->Close();
+        }
+    if ( NULL != iImageViewerInstance)
+        {
+        iImageViewerInstance->DeleteInstance();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// OpenFileL()
+// Open document.
+// -----------------------------------------------------------------------------
+CFileStore* CGlxIVwrDocument::OpenFileL( TBool /*aDoOpen*/,
+        const TDesC& aFilename, RFs& /*aFs*/ )
+    {
+    TRACER("CFileStore* CGlxIVwrDocument::OpenFileL");
+    // Reset old data
+    ResetDocument();
+    iImageViewerInstance->SetImageUriL(aFilename);
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CGlxDocument::OpenFileL()
+// Open document.
+// -----------------------------------------------------------------------------
+void CGlxIVwrDocument::OpenFileL( CFileStore*& /*aFileStore*/, RFile& aFile )
+    {	
+    TRACER("CGlxIVwrDocument::OpenFileL()");
+    // Make sure that aFile is closed in leave situation
+    CleanupClosePushL( aFile );
+
+    // Reset old data
+    ResetDocument();    
+    iImageViewerInstance->SetImageFileHandleL(aFile);	
+    CleanupStack::PopAndDestroy(); // Close aFile
+    }
+
+// ----------------------------------------------------------------------------
+// CGlxDocument::ResetDocument
+// Reset the document
+// ----------------------------------------------------------------------------
+//
+void CGlxIVwrDocument::ResetDocument()
+    {	
+    TRACER("CGlxIVwrDocument::ResetDocument()");
+    // Set document to NULL
+    iImageViewerInstance->Reset();    
+    }
+
+// -----------------------------------------------------------------------------
+// CreateAppUiL
+// -----------------------------------------------------------------------------
+//
+CEikAppUi* CGlxIVwrDocument::CreateAppUiL()
+    {
+    TRACER("CGlxIVwrDocument::CreateAppUiL()");
+    // Create the application user interface, and return a pointer to it,
+    // the framework takes ownership of this object
+    CEikAppUi* appUi = new (ELeave) CGlxIVwrAppUi();
+    return appUi;
+    }
+
--- a/photosgallery/rom/glxgallery.iby	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/rom/glxgallery.iby	Thu Jan 07 12:46:23 2010 +0200
@@ -24,6 +24,9 @@
 
 data=\epoc32\data\z\private\10003a3f\import\apps\glx_reg.rsc         private\10003a3f\import\apps\glx_reg.rsc
 
+// photos image viewer
+data=\epoc32\data\z\private\10003a3f\import\apps\glxivwr_reg.rsc         private\10003a3f\import\apps\glxivwr_reg.rsc
+
 //photosuitelauncher application resource file
 data=\epoc32\data\z\private\10003a3f\import\apps\photossuitelauncher_reg.rsc         private\10003a3f\import\apps\photossuitelauncher_reg.rsc
 
@@ -34,6 +37,10 @@
 
 //photosuitelauncher application 
 S60_APP_EXE(photossuitelauncher)
+
+//photos image viewer exe
+S60_APP_EXE(glxivwr)
+
 data=DATAZ_\APP_RESOURCE_DIR\photossuitelauncher.mif          APP_RESOURCE_DIR\photossuitelauncher.mif
 
 
--- a/photosgallery/rom/glxgallery_resources.iby	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/rom/glxgallery_resources.iby	Thu Jan 07 12:46:23 2010 +0200
@@ -26,7 +26,10 @@
 
   		
 data=DATAZ_\APP_RESOURCE_DIR\glx_loc.Rsc                      APP_RESOURCE_DIR\glx_loc.Rsc  
-data=DATAZ_\APP_RESOURCE_DIR\glx.Rsc                          APP_RESOURCE_DIR\glx.Rsc  
+data=DATAZ_\APP_RESOURCE_DIR\glx.Rsc                          APP_RESOURCE_DIR\glx.Rsc
+ 
+data=DATAZ_\APP_RESOURCE_DIR\glxivwr_loc.Rsc                      APP_RESOURCE_DIR\glxivwr_loc.Rsc  
+data=DATAZ_\APP_RESOURCE_DIR\glxivwr.Rsc                          APP_RESOURCE_DIR\glxivwr.Rsc 
 
 //photosuitelauncher application resource file
 data=DATAZ_\APP_RESOURCE_DIR\photossuitelauncher.Rsc          APP_RESOURCE_DIR\photossuitelauncher.Rsc  
--- a/photosgallery/slideshow/settingsdialog/src/shwslideshowsettingslist.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/slideshow/settingsdialog/src/shwslideshowsettingslist.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -1235,7 +1235,7 @@
     query->SetPromptL(*titleText);
     CleanupStack::Pop(query);
 	TInt retVal = query->ExecuteLD(R_SHW_CONFIRMATION_QUERY);
-	CleanupStack::PopAndDestroy(); //titleText
+	CleanupStack::PopAndDestroy(titleText);
     return (retVal == EAknSoftkeyOk || retVal == EAknSoftkeyYes);
     }
 
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/bwins/glxcommoncommandhandlersu.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/bwins/glxcommoncommandhandlersu.def	Thu Jan 07 12:46:23 2010 +0200
@@ -1,68 +1,67 @@
 EXPORTS
-	??1CGlxCommandHandlerFilterImagesOrVideos@@UAE@XZ @ 1 NONAME ; CGlxCommandHandlerFilterImagesOrVideos::~CGlxCommandHandlerFilterImagesOrVideos(void)
-	?OfferKeyEventL@CGlxSingleGraphicPopupMenuStyleListBox@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 2 NONAME ; enum TKeyResponse CGlxSingleGraphicPopupMenuStyleListBox::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	??0CGlxMediaListAdaptor@@QAE@PBVMGlxMediaList@@H@Z @ 3 NONAME ; CGlxMediaListAdaptor::CGlxMediaListAdaptor(class MGlxMediaList const *, int)
-	?NewL@CGlxCommandHandlerRename@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 4 NONAME ; class CGlxCommandHandlerRename * CGlxCommandHandlerRename::NewL(class MGlxMediaListProvider *, int)
-	?NewL@CGlxCommandHandlerSend@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 5 NONAME ; class CGlxCommandHandlerSend * CGlxCommandHandlerSend::NewL(class MGlxMediaListProvider *, int)
-	??1CGlxCommandHandlerNewMedia@@UAE@XZ @ 6 NONAME ; CGlxCommandHandlerNewMedia::~CGlxCommandHandlerNewMedia(void)
-	??1CGlxCommandHandlerSave@@UAE@XZ @ 7 NONAME ; CGlxCommandHandlerSave::~CGlxCommandHandlerSave(void)
-	?NewL@CGlxCommandHandlerDelete@@SAPAV1@PAVMGlxMediaListProvider@@HH@Z @ 8 NONAME ; class CGlxCommandHandlerDelete * CGlxCommandHandlerDelete::NewL(class MGlxMediaListProvider *, int, int)
-	?NewL@CGlxCommandHandlerRotate@@SAPAV1@PAVMGlxMediaListProvider@@PAVMGlxLayoutOwner@@H@Z @ 9 NONAME ; class CGlxCommandHandlerRotate * CGlxCommandHandlerRotate::NewL(class MGlxMediaListProvider *, class MGlxLayoutOwner *, int)
-	?ExecuteLD@CGlxMediaSelectionPopup@@QAEPAVCMPXCollectionPath@@AAV2@AAHHHPAVCMPXMedia@@@Z @ 10 NONAME ; class CMPXCollectionPath * CGlxMediaSelectionPopup::ExecuteLD(class CMPXCollectionPath &, int &, int, int, class CMPXMedia *)
-	?OkToExit@CGlxCommandHandlerNewMedia@@UBEHXZ @ 11 NONAME ; int CGlxCommandHandlerNewMedia::OkToExit(void) const
-	??1CGlxCommandHandlerBack@@UAE@XZ @ 12 NONAME ; CGlxCommandHandlerBack::~CGlxCommandHandlerBack(void)
-	?NewPreviousViewCommandHandlerL@CGlxCommandHandlerBack@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 13 NONAME ; class CGlxCommandHandlerBack * CGlxCommandHandlerBack::NewPreviousViewCommandHandlerL(class MGlxMediaListProvider *)
-	?NewL@CGlxCommandHandlerVideoPlayback@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 14 NONAME ; class CGlxCommandHandlerVideoPlayback * CGlxCommandHandlerVideoPlayback::NewL(class MGlxMediaListProvider *)
-	??0TGlxHelpContext@@QAE@XZ @ 15 NONAME ; TGlxHelpContext::TGlxHelpContext(void)
-	??1CGlxCommandHandlerSortOrder@@UAE@XZ @ 16 NONAME ; CGlxCommandHandlerSortOrder::~CGlxCommandHandlerSortOrder(void)
-	??1CGlxCommandHandlerRemoveFrom@@UAE@XZ @ 17 NONAME ; CGlxCommandHandlerRemoveFrom::~CGlxCommandHandlerRemoveFrom(void)
-	?ImageUri@CGlxImageViewerManager@@QAEPAVHBufC16@@XZ @ 18 NONAME ; class HBufC16 * CGlxImageViewerManager::ImageUri(void)
-	?NewL@CGlxCommandHandlerOpen@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 19 NONAME ; class CGlxCommandHandlerOpen * CGlxCommandHandlerOpen::NewL(class MGlxMediaListProvider *)
-	??1CGlxCommandHandlerDelete@@UAE@XZ @ 20 NONAME ; CGlxCommandHandlerDelete::~CGlxCommandHandlerDelete(void)
-	??1CGlxCommandHandlerDownload@@UAE@XZ @ 21 NONAME ; CGlxCommandHandlerDownload::~CGlxCommandHandlerDownload(void)
-	??1CGlxCommandHandlerOpen@@UAE@XZ @ 22 NONAME ; CGlxCommandHandlerOpen::~CGlxCommandHandlerOpen(void)
-	?NewL@CGlxCommandHandlerSlideshow@@SAPAV1@PAVMGlxMediaListProvider@@HH@Z @ 23 NONAME ; class CGlxCommandHandlerSlideshow * CGlxCommandHandlerSlideshow::NewL(class MGlxMediaListProvider *, int, int)
-	?IsPrivate@CGlxImageViewerManager@@QAEHXZ @ 24 NONAME ; int CGlxImageViewerManager::IsPrivate(void)
-	?NewL@CGlxCommandHandlerAiwShareOnOvi@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 25 NONAME ; class CGlxCommandHandlerAiwShareOnOvi * CGlxCommandHandlerAiwShareOnOvi::NewL(class MGlxMediaListProvider *, int)
-	?NewAddToAlbumCommandHandlerL@CGlxCommandHandlerAddToContainer@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 26 NONAME ; class CGlxCommandHandlerAddToContainer * CGlxCommandHandlerAddToContainer::NewAddToAlbumCommandHandlerL(class MGlxMediaListProvider *, int)
-	?MdcaPoint@CGlxMediaListAdaptor@@UBE?AVTPtrC16@@H@Z @ 27 NONAME ; class TPtrC16 CGlxMediaListAdaptor::MdcaPoint(int) const
-	?NewL@CGlxCommandHandlerDownload@@SAPAV1@XZ @ 28 NONAME ; class CGlxCommandHandlerDownload * CGlxCommandHandlerDownload::NewL(void)
-	??1CGlxCommandHandlerHelp@@UAE@XZ @ 29 NONAME ; CGlxCommandHandlerHelp::~CGlxCommandHandlerHelp(void)
-	?BypassFiltersForExecute@CGlxCommandHandlerNewMedia@@UBEHXZ @ 30 NONAME ; int CGlxCommandHandlerNewMedia::BypassFiltersForExecute(void) const
-	?NewL@CGlxCommandHandlerDetails@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 31 NONAME ; class CGlxCommandHandlerDetails * CGlxCommandHandlerDetails::NewL(class MGlxMediaListProvider *)
-	?NewL@CGlxCommandHandlerAiwEdit@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 32 NONAME ; class CGlxCommandHandlerAiwEdit * CGlxCommandHandlerAiwEdit::NewL(class MGlxMediaListProvider *, int)
-	?NewL@CGlxCommandHandlerHelp@@SAPAV1@VTGlxHelpContext@@@Z @ 33 NONAME ; class CGlxCommandHandlerHelp * CGlxCommandHandlerHelp::NewL(class TGlxHelpContext)
-	?ExecuteLD@CGlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 34 NONAME ; int CGlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &)
-	?HandleItemAddedL@CGlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 35 NONAME ; void CGlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *)
-	?IncrementRefCount@CGlxImageViewerManager@@QAEXXZ @ 36 NONAME ; void CGlxImageViewerManager::IncrementRefCount(void)
-	?NewRemFromFavCommandHandlerL@CGlxCommandHandlerRemoveFrom@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 37 NONAME ; class CGlxCommandHandlerRemoveFrom * CGlxCommandHandlerRemoveFrom::NewRemFromFavCommandHandlerL(class MGlxMediaListProvider *)
-	?NewL@CGlxCommandHandlerUpload@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 38 NONAME ; class CGlxCommandHandlerUpload * CGlxCommandHandlerUpload::NewL(class MGlxMediaListProvider *, int)
-	??1CGlxCommandHandlerUpload@@UAE@XZ @ 39 NONAME ; CGlxCommandHandlerUpload::~CGlxCommandHandlerUpload(void)
-	??1CGlxCommandHandlerSlideshow@@UAE@XZ @ 40 NONAME ; CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow(void)
-	?NewL@CGlxCommandHandlerAiwShowMap@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 41 NONAME ; class CGlxCommandHandlerAiwShowMap * CGlxCommandHandlerAiwShowMap::NewL(class MGlxMediaListProvider *, int)
-	??1CGlxCommandHandlerAddToContainer@@UAE@XZ @ 42 NONAME ; CGlxCommandHandlerAddToContainer::~CGlxCommandHandlerAddToContainer(void)
-	??0CGlxMediaSelectionPopup@@QAE@XZ @ 43 NONAME ; CGlxMediaSelectionPopup::CGlxMediaSelectionPopup(void)
-	?NewL@CGlxCommandHandlerNewMedia@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 44 NONAME ; class CGlxCommandHandlerNewMedia * CGlxCommandHandlerNewMedia::NewL(class MGlxMediaListProvider *)
-	?NewL@CGlxCommandHandlerRemoveFrom@@SAPAV1@PAVMGlxMediaListProvider@@W4TMPXGeneralCategory@@H@Z @ 45 NONAME ; class CGlxCommandHandlerRemoveFrom * CGlxCommandHandlerRemoveFrom::NewL(class MGlxMediaListProvider *, enum TMPXGeneralCategory, int)
-	?NewL@CGlxCommandHandlerCopyAndMove@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 46 NONAME ; class CGlxCommandHandlerCopyAndMove * CGlxCommandHandlerCopyAndMove::NewL(class MGlxMediaListProvider *, int)
-	??1CGlxCommandHandlerCopyAndMove@@UAE@XZ @ 47 NONAME ; CGlxCommandHandlerCopyAndMove::~CGlxCommandHandlerCopyAndMove(void)
-	?SetContainerId@CGlxCommandHandlerRemoveFrom@@QAEXVTGlxMediaId@@@Z @ 48 NONAME ; void CGlxCommandHandlerRemoveFrom::SetContainerId(class TGlxMediaId)
-	?MdcaCount@CGlxMediaListAdaptor@@UBEHXZ @ 49 NONAME ; int CGlxMediaListAdaptor::MdcaCount(void) const
-	?NewL@CGlxCommandHandlerFilterImagesOrVideos@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 50 NONAME ; class CGlxCommandHandlerFilterImagesOrVideos * CGlxCommandHandlerFilterImagesOrVideos::NewL(class MGlxMediaListProvider *)
-	?NewL@CGlxCommandHandlerAiwShowMapHardKey@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 51 NONAME ; class CGlxCommandHandlerAiwShowMapHardKey * CGlxCommandHandlerAiwShowMapHardKey::NewL(class MGlxMediaListProvider *, int)
-	?NewL@CGlxCommandHandlerHideUi@@SAPAV1@XZ @ 52 NONAME ; class CGlxCommandHandlerHideUi * CGlxCommandHandlerHideUi::NewL(void)
-	??1CGlxCommandHandlerSend@@UAE@XZ @ 53 NONAME ; CGlxCommandHandlerSend::~CGlxCommandHandlerSend(void)
-	?NewL@CGlxCommandHandlerAiwAssign@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 54 NONAME ; class CGlxCommandHandlerAiwAssign * CGlxCommandHandlerAiwAssign::NewL(class MGlxMediaListProvider *, int)
-	?NewAddToTagCommandHandlerL@CGlxCommandHandlerAddToContainer@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 55 NONAME ; class CGlxCommandHandlerAddToContainer * CGlxCommandHandlerAddToContainer::NewAddToTagCommandHandlerL(class MGlxMediaListProvider *, int)
-	??1CGlxCommandHandlerDetails@@UAE@XZ @ 56 NONAME ; CGlxCommandHandlerDetails::~CGlxCommandHandlerDetails(void)
-	?NewL@CGlxCommandHandlerSave@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 57 NONAME ; class CGlxCommandHandlerSave * CGlxCommandHandlerSave::NewL(class MGlxMediaListProvider *, int)
-	??1CGlxCommandHandlerVideoPlayback@@UAE@XZ @ 58 NONAME ; CGlxCommandHandlerVideoPlayback::~CGlxCommandHandlerVideoPlayback(void)
-	??1CGlxCommandHandlerRename@@UAE@XZ @ 59 NONAME ; CGlxCommandHandlerRename::~CGlxCommandHandlerRename(void)
-	?NewL@CGlxCommandHandlerAddToContainer@@SAPAV1@PAVMGlxMediaListProvider@@HH@Z @ 60 NONAME ; class CGlxCommandHandlerAddToContainer * CGlxCommandHandlerAddToContainer::NewL(class MGlxMediaListProvider *, int, int)
-	?ImageFileHandle@CGlxImageViewerManager@@QBEAAVRFile64@@XZ @ 61 NONAME ; class RFile64 & CGlxImageViewerManager::ImageFileHandle(void) const
-	?NewL@CGlxCommandHandlerAiwPrintPreview@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 62 NONAME ; class CGlxCommandHandlerAiwPrintPreview * CGlxCommandHandlerAiwPrintPreview::NewL(class MGlxMediaListProvider *, int)
-	?NewL@CGlxCommandHandlerSortOrder@@SAPAV1@PAVMGlxMediaListProvider@@K@Z @ 63 NONAME ; class CGlxCommandHandlerSortOrder * CGlxCommandHandlerSortOrder::NewL(class MGlxMediaListProvider *, unsigned long)
-	?NewBackCommandHandlerL@CGlxCommandHandlerBack@@SAPAV1@XZ @ 64 NONAME ; class CGlxCommandHandlerBack * CGlxCommandHandlerBack::NewBackCommandHandlerL(void)
+	?NewL@CGlxCommandHandlerHelp@@SAPAV1@VTGlxHelpContext@@@Z @ 1 NONAME ; class CGlxCommandHandlerHelp * CGlxCommandHandlerHelp::NewL(class TGlxHelpContext)
+	?HandleItemAddedL@CGlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 2 NONAME ; void CGlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *)
+	?ExecuteLD@CGlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 3 NONAME ; int CGlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &)
+	??1CGlxCommandHandlerFilterImagesOrVideos@@UAE@XZ @ 4 NONAME ; CGlxCommandHandlerFilterImagesOrVideos::~CGlxCommandHandlerFilterImagesOrVideos(void)
+	?OfferKeyEventL@CGlxSingleGraphicPopupMenuStyleListBox@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 5 NONAME ; enum TKeyResponse CGlxSingleGraphicPopupMenuStyleListBox::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
+	?IncrementRefCount@CGlxImageViewerManager@@QAEXXZ @ 6 NONAME ; void CGlxImageViewerManager::IncrementRefCount(void)
+	??0CGlxMediaListAdaptor@@QAE@PBVMGlxMediaList@@H@Z @ 7 NONAME ; CGlxMediaListAdaptor::CGlxMediaListAdaptor(class MGlxMediaList const *, int)
+	?NewL@CGlxCommandHandlerUpload@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 8 NONAME ; class CGlxCommandHandlerUpload * CGlxCommandHandlerUpload::NewL(class MGlxMediaListProvider *, int)
+	?NewL@CGlxCommandHandlerRename@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 9 NONAME ; class CGlxCommandHandlerRename * CGlxCommandHandlerRename::NewL(class MGlxMediaListProvider *, int)
+	?NewL@CGlxCommandHandlerSend@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 10 NONAME ; class CGlxCommandHandlerSend * CGlxCommandHandlerSend::NewL(class MGlxMediaListProvider *, int)
+	??1CGlxCommandHandlerUpload@@UAE@XZ @ 11 NONAME ; CGlxCommandHandlerUpload::~CGlxCommandHandlerUpload(void)
+	??1CGlxCommandHandlerNewMedia@@UAE@XZ @ 12 NONAME ; CGlxCommandHandlerNewMedia::~CGlxCommandHandlerNewMedia(void)
+	??1CGlxCommandHandlerSlideshow@@UAE@XZ @ 13 NONAME ; CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow(void)
+	?NewL@CGlxCommandHandlerAiwShowMap@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 14 NONAME ; class CGlxCommandHandlerAiwShowMap * CGlxCommandHandlerAiwShowMap::NewL(class MGlxMediaListProvider *, int)
+	??1CGlxCommandHandlerSave@@UAE@XZ @ 15 NONAME ; CGlxCommandHandlerSave::~CGlxCommandHandlerSave(void)
+	?NewL@CGlxCommandHandlerDelete@@SAPAV1@PAVMGlxMediaListProvider@@HH@Z @ 16 NONAME ; class CGlxCommandHandlerDelete * CGlxCommandHandlerDelete::NewL(class MGlxMediaListProvider *, int, int)
+	??1CGlxCommandHandlerAddToContainer@@UAE@XZ @ 17 NONAME ; CGlxCommandHandlerAddToContainer::~CGlxCommandHandlerAddToContainer(void)
+	??0CGlxMediaSelectionPopup@@QAE@XZ @ 18 NONAME ; CGlxMediaSelectionPopup::CGlxMediaSelectionPopup(void)
+	?NewL@CGlxCommandHandlerRotate@@SAPAV1@PAVMGlxMediaListProvider@@PAVMGlxLayoutOwner@@H@Z @ 19 NONAME ; class CGlxCommandHandlerRotate * CGlxCommandHandlerRotate::NewL(class MGlxMediaListProvider *, class MGlxLayoutOwner *, int)
+	?NewL@CGlxCommandHandlerNewMedia@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 20 NONAME ; class CGlxCommandHandlerNewMedia * CGlxCommandHandlerNewMedia::NewL(class MGlxMediaListProvider *)
+	?ExecuteLD@CGlxMediaSelectionPopup@@QAEPAVCMPXCollectionPath@@AAV2@AAHHHPAVCMPXMedia@@@Z @ 21 NONAME ; class CMPXCollectionPath * CGlxMediaSelectionPopup::ExecuteLD(class CMPXCollectionPath &, int &, int, int, class CMPXMedia *)
+	?NewL@CGlxCommandHandlerCopyAndMove@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 22 NONAME ; class CGlxCommandHandlerCopyAndMove * CGlxCommandHandlerCopyAndMove::NewL(class MGlxMediaListProvider *, int)
+	?OkToExit@CGlxCommandHandlerNewMedia@@UBEHXZ @ 23 NONAME ; int CGlxCommandHandlerNewMedia::OkToExit(void) const
+	??1CGlxCommandHandlerBack@@UAE@XZ @ 24 NONAME ; CGlxCommandHandlerBack::~CGlxCommandHandlerBack(void)
+	?NewPreviousViewCommandHandlerL@CGlxCommandHandlerBack@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 25 NONAME ; class CGlxCommandHandlerBack * CGlxCommandHandlerBack::NewPreviousViewCommandHandlerL(class MGlxMediaListProvider *)
+	??1CGlxCommandHandlerCopyAndMove@@UAE@XZ @ 26 NONAME ; CGlxCommandHandlerCopyAndMove::~CGlxCommandHandlerCopyAndMove(void)
+	?SetContainerId@CGlxCommandHandlerRemoveFrom@@QAEXVTGlxMediaId@@@Z @ 27 NONAME ; void CGlxCommandHandlerRemoveFrom::SetContainerId(class TGlxMediaId)
+	?NewL@CGlxCommandHandlerVideoPlayback@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 28 NONAME ; class CGlxCommandHandlerVideoPlayback * CGlxCommandHandlerVideoPlayback::NewL(class MGlxMediaListProvider *)
+	?MdcaCount@CGlxMediaListAdaptor@@UBEHXZ @ 29 NONAME ; int CGlxMediaListAdaptor::MdcaCount(void) const
+	??0TGlxHelpContext@@QAE@XZ @ 30 NONAME ; TGlxHelpContext::TGlxHelpContext(void)
+	??1CGlxCommandHandlerSortOrder@@UAE@XZ @ 31 NONAME ; CGlxCommandHandlerSortOrder::~CGlxCommandHandlerSortOrder(void)
+	?NewL@CGlxCommandHandlerFilterImagesOrVideos@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 32 NONAME ; class CGlxCommandHandlerFilterImagesOrVideos * CGlxCommandHandlerFilterImagesOrVideos::NewL(class MGlxMediaListProvider *)
+	??1CGlxCommandHandlerRemoveFrom@@UAE@XZ @ 33 NONAME ; CGlxCommandHandlerRemoveFrom::~CGlxCommandHandlerRemoveFrom(void)
+	?NewL@CGlxCommandHandlerAiwShowMapHardKey@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 34 NONAME ; class CGlxCommandHandlerAiwShowMapHardKey * CGlxCommandHandlerAiwShowMapHardKey::NewL(class MGlxMediaListProvider *, int)
+	?NewL@CGlxCommandHandlerHideUi@@SAPAV1@XZ @ 35 NONAME ; class CGlxCommandHandlerHideUi * CGlxCommandHandlerHideUi::NewL(void)
+	?NewL@CGlxCommandHandlerAiwAssign@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 36 NONAME ; class CGlxCommandHandlerAiwAssign * CGlxCommandHandlerAiwAssign::NewL(class MGlxMediaListProvider *, int)
+	??1CGlxCommandHandlerSend@@UAE@XZ @ 37 NONAME ; CGlxCommandHandlerSend::~CGlxCommandHandlerSend(void)
+	?NewAddToTagCommandHandlerL@CGlxCommandHandlerAddToContainer@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 38 NONAME ; class CGlxCommandHandlerAddToContainer * CGlxCommandHandlerAddToContainer::NewAddToTagCommandHandlerL(class MGlxMediaListProvider *, int)
+	?ImageUri@CGlxImageViewerManager@@QAEPAVHBufC16@@XZ @ 39 NONAME ; class HBufC16 * CGlxImageViewerManager::ImageUri(void)
+	?NewL@CGlxCommandHandlerOpen@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 40 NONAME ; class CGlxCommandHandlerOpen * CGlxCommandHandlerOpen::NewL(class MGlxMediaListProvider *)
+	??1CGlxCommandHandlerDelete@@UAE@XZ @ 41 NONAME ; CGlxCommandHandlerDelete::~CGlxCommandHandlerDelete(void)
+	??1CGlxCommandHandlerDetails@@UAE@XZ @ 42 NONAME ; CGlxCommandHandlerDetails::~CGlxCommandHandlerDetails(void)
+	??1CGlxCommandHandlerDownload@@UAE@XZ @ 43 NONAME ; CGlxCommandHandlerDownload::~CGlxCommandHandlerDownload(void)
+	??1CGlxCommandHandlerOpen@@UAE@XZ @ 44 NONAME ; CGlxCommandHandlerOpen::~CGlxCommandHandlerOpen(void)
+	?NewL@CGlxCommandHandlerSlideshow@@SAPAV1@PAVMGlxMediaListProvider@@HH@Z @ 45 NONAME ; class CGlxCommandHandlerSlideshow * CGlxCommandHandlerSlideshow::NewL(class MGlxMediaListProvider *, int, int)
+	?IsPrivate@CGlxImageViewerManager@@QAEHXZ @ 46 NONAME ; int CGlxImageViewerManager::IsPrivate(void)
+	?NewL@CGlxCommandHandlerSave@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 47 NONAME ; class CGlxCommandHandlerSave * CGlxCommandHandlerSave::NewL(class MGlxMediaListProvider *, int)
+	?NewL@CGlxCommandHandlerAiwShareOnOvi@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 48 NONAME ; class CGlxCommandHandlerAiwShareOnOvi * CGlxCommandHandlerAiwShareOnOvi::NewL(class MGlxMediaListProvider *, int)
+	?NewAddToAlbumCommandHandlerL@CGlxCommandHandlerAddToContainer@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 49 NONAME ; class CGlxCommandHandlerAddToContainer * CGlxCommandHandlerAddToContainer::NewAddToAlbumCommandHandlerL(class MGlxMediaListProvider *, int)
+	??1CGlxCommandHandlerRename@@UAE@XZ @ 50 NONAME ; CGlxCommandHandlerRename::~CGlxCommandHandlerRename(void)
+	??1CGlxCommandHandlerVideoPlayback@@UAE@XZ @ 51 NONAME ; CGlxCommandHandlerVideoPlayback::~CGlxCommandHandlerVideoPlayback(void)
+	?MdcaPoint@CGlxMediaListAdaptor@@UBE?AVTPtrC16@@H@Z @ 52 NONAME ; class TPtrC16 CGlxMediaListAdaptor::MdcaPoint(int) const
+	?NewL@CGlxCommandHandlerAddToContainer@@SAPAV1@PAVMGlxMediaListProvider@@HH@Z @ 53 NONAME ; class CGlxCommandHandlerAddToContainer * CGlxCommandHandlerAddToContainer::NewL(class MGlxMediaListProvider *, int, int)
+	?ImageFileHandle@CGlxImageViewerManager@@QBEAAVRFile64@@XZ @ 54 NONAME ; class RFile64 & CGlxImageViewerManager::ImageFileHandle(void) const
+	?NewL@CGlxCommandHandlerDownload@@SAPAV1@XZ @ 55 NONAME ; class CGlxCommandHandlerDownload * CGlxCommandHandlerDownload::NewL(void)
+	??1CGlxCommandHandlerHelp@@UAE@XZ @ 56 NONAME ; CGlxCommandHandlerHelp::~CGlxCommandHandlerHelp(void)
+	?BypassFiltersForExecute@CGlxCommandHandlerNewMedia@@UBEHXZ @ 57 NONAME ; int CGlxCommandHandlerNewMedia::BypassFiltersForExecute(void) const
+	?NewL@CGlxCommandHandlerRemoveFrom@@SAPAV1@PAVMGlxMediaListProvider@@W4TMPXGeneralCategory@@@Z @ 58 NONAME ; class CGlxCommandHandlerRemoveFrom * CGlxCommandHandlerRemoveFrom::NewL(class MGlxMediaListProvider *, enum TMPXGeneralCategory)
+	?NewL@CGlxCommandHandlerDetails@@SAPAV1@PAVMGlxMediaListProvider@@@Z @ 59 NONAME ; class CGlxCommandHandlerDetails * CGlxCommandHandlerDetails::NewL(class MGlxMediaListProvider *)
+	?NewL@CGlxCommandHandlerAiwPrintPreview@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 60 NONAME ; class CGlxCommandHandlerAiwPrintPreview * CGlxCommandHandlerAiwPrintPreview::NewL(class MGlxMediaListProvider *, int)
+	?NewL@CGlxCommandHandlerSortOrder@@SAPAV1@PAVMGlxMediaListProvider@@K@Z @ 61 NONAME ; class CGlxCommandHandlerSortOrder * CGlxCommandHandlerSortOrder::NewL(class MGlxMediaListProvider *, unsigned long)
+	?NewBackCommandHandlerL@CGlxCommandHandlerBack@@SAPAV1@XZ @ 62 NONAME ; class CGlxCommandHandlerBack * CGlxCommandHandlerBack::NewBackCommandHandlerL(void)
+	?NewL@CGlxCommandHandlerAiwEdit@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 63 NONAME ; class CGlxCommandHandlerAiwEdit * CGlxCommandHandlerAiwEdit::NewL(class MGlxMediaListProvider *, int)
+	?NewContainerPreviousViewCommandHandlerL@CGlxCommandHandlerBack@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 64 NONAME ; class CGlxCommandHandlerBack * CGlxCommandHandlerBack::NewContainerPreviousViewCommandHandlerL(class MGlxMediaListProvider *, int)
 	?NewAddToFavCommandHandlerL@CGlxCommandHandlerAddToContainer@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 65 NONAME ; class CGlxCommandHandlerAddToContainer * CGlxCommandHandlerAddToContainer::NewAddToFavCommandHandlerL(class MGlxMediaListProvider *, int)
-	?NewContainerPreviousViewCommandHandlerL@CGlxCommandHandlerBack@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 66 NONAME ; class CGlxCommandHandlerBack * CGlxCommandHandlerBack::NewContainerPreviousViewCommandHandlerL(class MGlxMediaListProvider *, int)
 
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/eabi/glxcommoncommandhandlersu.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/eabi/glxcommoncommandhandlersu.def	Thu Jan 07 12:46:23 2010 +0200
@@ -25,53 +25,53 @@
 	_ZN22CGlxCommandHandlerSendD0Ev @ 24 NONAME
 	_ZN22CGlxCommandHandlerSendD1Ev @ 25 NONAME
 	_ZN22CGlxCommandHandlerSendD2Ev @ 26 NONAME
-	_ZN22CGlxImageViewerManager8ImageUriEv @ 27 NONAME
-	_ZN22CGlxImageViewerManager9IsPrivateEv @ 28 NONAME
-	_ZN23CGlxMediaSelectionPopup9ExecuteLDER18CMPXCollectionPathRiiiP9CMPXMedia @ 29 NONAME
-	_ZN23CGlxMediaSelectionPopupC1Ev @ 30 NONAME
-	_ZN23CGlxMediaSelectionPopupC2Ev @ 31 NONAME
-	_ZN24CGlxCommandHandlerDelete4NewLEP21MGlxMediaListProviderii @ 32 NONAME
-	_ZN24CGlxCommandHandlerDeleteD0Ev @ 33 NONAME
-	_ZN24CGlxCommandHandlerDeleteD1Ev @ 34 NONAME
-	_ZN24CGlxCommandHandlerDeleteD2Ev @ 35 NONAME
-	_ZN24CGlxCommandHandlerHideUi4NewLEv @ 36 NONAME
-	_ZN24CGlxCommandHandlerRename4NewLEP21MGlxMediaListProvideri @ 37 NONAME
-	_ZN24CGlxCommandHandlerRenameD0Ev @ 38 NONAME
-	_ZN24CGlxCommandHandlerRenameD1Ev @ 39 NONAME
-	_ZN24CGlxCommandHandlerRenameD2Ev @ 40 NONAME
-	_ZN24CGlxCommandHandlerRotate4NewLEP21MGlxMediaListProviderP15MGlxLayoutOwneri @ 41 NONAME
-	_ZN24CGlxCommandHandlerUpload4NewLEP21MGlxMediaListProvideri @ 42 NONAME
-	_ZN24CGlxCommandHandlerUploadD0Ev @ 43 NONAME
-	_ZN24CGlxCommandHandlerUploadD1Ev @ 44 NONAME
-	_ZN24CGlxCommandHandlerUploadD2Ev @ 45 NONAME
-	_ZN25CGlxCommandHandlerAiwEdit4NewLEP21MGlxMediaListProvideri @ 46 NONAME
-	_ZN25CGlxCommandHandlerDetails4NewLEP21MGlxMediaListProvider @ 47 NONAME
-	_ZN25CGlxCommandHandlerDetailsD0Ev @ 48 NONAME
-	_ZN25CGlxCommandHandlerDetailsD1Ev @ 49 NONAME
-	_ZN25CGlxCommandHandlerDetailsD2Ev @ 50 NONAME
-	_ZN26CGlxCommandHandlerDownload4NewLEv @ 51 NONAME
-	_ZN26CGlxCommandHandlerDownloadD0Ev @ 52 NONAME
-	_ZN26CGlxCommandHandlerDownloadD1Ev @ 53 NONAME
-	_ZN26CGlxCommandHandlerDownloadD2Ev @ 54 NONAME
-	_ZN26CGlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 55 NONAME
-	_ZN26CGlxCommandHandlerNewMedia4NewLEP21MGlxMediaListProvider @ 56 NONAME
-	_ZN26CGlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 57 NONAME
-	_ZN26CGlxCommandHandlerNewMediaD0Ev @ 58 NONAME
-	_ZN26CGlxCommandHandlerNewMediaD1Ev @ 59 NONAME
-	_ZN26CGlxCommandHandlerNewMediaD2Ev @ 60 NONAME
-	_ZN27CGlxCommandHandlerAiwAssign4NewLEP21MGlxMediaListProvideri @ 61 NONAME
-	_ZN27CGlxCommandHandlerSlideshow4NewLEP21MGlxMediaListProviderii @ 62 NONAME
-	_ZN27CGlxCommandHandlerSlideshowD0Ev @ 63 NONAME
-	_ZN27CGlxCommandHandlerSlideshowD1Ev @ 64 NONAME
-	_ZN27CGlxCommandHandlerSlideshowD2Ev @ 65 NONAME
-	_ZN27CGlxCommandHandlerSortOrder4NewLEP21MGlxMediaListProviderm @ 66 NONAME
-	_ZN27CGlxCommandHandlerSortOrderD0Ev @ 67 NONAME
-	_ZN27CGlxCommandHandlerSortOrderD1Ev @ 68 NONAME
-	_ZN27CGlxCommandHandlerSortOrderD2Ev @ 69 NONAME
-	_ZN28CGlxCommandHandlerAiwShowMap4NewLEP21MGlxMediaListProvideri @ 70 NONAME
-	_ZN28CGlxCommandHandlerRemoveFrom14SetContainerIdE11TGlxMediaId @ 71 NONAME
-	_ZN28CGlxCommandHandlerRemoveFrom28NewRemFromFavCommandHandlerLEP21MGlxMediaListProvider @ 72 NONAME
-	_ZN28CGlxCommandHandlerRemoveFrom4NewLEP21MGlxMediaListProvider19TMPXGeneralCategoryi @ 73 NONAME
+	_ZN22CGlxImageViewerManager17IncrementRefCountEv @ 27 NONAME
+	_ZN22CGlxImageViewerManager8ImageUriEv @ 28 NONAME
+	_ZN22CGlxImageViewerManager9IsPrivateEv @ 29 NONAME
+	_ZN23CGlxMediaSelectionPopup9ExecuteLDER18CMPXCollectionPathRiiiP9CMPXMedia @ 30 NONAME
+	_ZN23CGlxMediaSelectionPopupC1Ev @ 31 NONAME
+	_ZN23CGlxMediaSelectionPopupC2Ev @ 32 NONAME
+	_ZN24CGlxCommandHandlerDelete4NewLEP21MGlxMediaListProviderii @ 33 NONAME
+	_ZN24CGlxCommandHandlerDeleteD0Ev @ 34 NONAME
+	_ZN24CGlxCommandHandlerDeleteD1Ev @ 35 NONAME
+	_ZN24CGlxCommandHandlerDeleteD2Ev @ 36 NONAME
+	_ZN24CGlxCommandHandlerHideUi4NewLEv @ 37 NONAME
+	_ZN24CGlxCommandHandlerRename4NewLEP21MGlxMediaListProvideri @ 38 NONAME
+	_ZN24CGlxCommandHandlerRenameD0Ev @ 39 NONAME
+	_ZN24CGlxCommandHandlerRenameD1Ev @ 40 NONAME
+	_ZN24CGlxCommandHandlerRenameD2Ev @ 41 NONAME
+	_ZN24CGlxCommandHandlerRotate4NewLEP21MGlxMediaListProviderP15MGlxLayoutOwneri @ 42 NONAME
+	_ZN24CGlxCommandHandlerUpload4NewLEP21MGlxMediaListProvideri @ 43 NONAME
+	_ZN24CGlxCommandHandlerUploadD0Ev @ 44 NONAME
+	_ZN24CGlxCommandHandlerUploadD1Ev @ 45 NONAME
+	_ZN24CGlxCommandHandlerUploadD2Ev @ 46 NONAME
+	_ZN25CGlxCommandHandlerAiwEdit4NewLEP21MGlxMediaListProvideri @ 47 NONAME
+	_ZN25CGlxCommandHandlerDetails4NewLEP21MGlxMediaListProvider @ 48 NONAME
+	_ZN25CGlxCommandHandlerDetailsD0Ev @ 49 NONAME
+	_ZN25CGlxCommandHandlerDetailsD1Ev @ 50 NONAME
+	_ZN25CGlxCommandHandlerDetailsD2Ev @ 51 NONAME
+	_ZN26CGlxCommandHandlerDownload4NewLEv @ 52 NONAME
+	_ZN26CGlxCommandHandlerDownloadD0Ev @ 53 NONAME
+	_ZN26CGlxCommandHandlerDownloadD1Ev @ 54 NONAME
+	_ZN26CGlxCommandHandlerDownloadD2Ev @ 55 NONAME
+	_ZN26CGlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 56 NONAME
+	_ZN26CGlxCommandHandlerNewMedia4NewLEP21MGlxMediaListProvider @ 57 NONAME
+	_ZN26CGlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 58 NONAME
+	_ZN26CGlxCommandHandlerNewMediaD0Ev @ 59 NONAME
+	_ZN26CGlxCommandHandlerNewMediaD1Ev @ 60 NONAME
+	_ZN26CGlxCommandHandlerNewMediaD2Ev @ 61 NONAME
+	_ZN27CGlxCommandHandlerAiwAssign4NewLEP21MGlxMediaListProvideri @ 62 NONAME
+	_ZN27CGlxCommandHandlerSlideshow4NewLEP21MGlxMediaListProviderii @ 63 NONAME
+	_ZN27CGlxCommandHandlerSlideshowD0Ev @ 64 NONAME
+	_ZN27CGlxCommandHandlerSlideshowD1Ev @ 65 NONAME
+	_ZN27CGlxCommandHandlerSlideshowD2Ev @ 66 NONAME
+	_ZN27CGlxCommandHandlerSortOrder4NewLEP21MGlxMediaListProviderm @ 67 NONAME
+	_ZN27CGlxCommandHandlerSortOrderD0Ev @ 68 NONAME
+	_ZN27CGlxCommandHandlerSortOrderD1Ev @ 69 NONAME
+	_ZN27CGlxCommandHandlerSortOrderD2Ev @ 70 NONAME
+	_ZN28CGlxCommandHandlerAiwShowMap4NewLEP21MGlxMediaListProvideri @ 71 NONAME
+	_ZN28CGlxCommandHandlerRemoveFrom14SetContainerIdE11TGlxMediaId @ 72 NONAME
+	_ZN28CGlxCommandHandlerRemoveFrom4NewLEP21MGlxMediaListProvider19TMPXGeneralCategory @ 73 NONAME
 	_ZN28CGlxCommandHandlerRemoveFromD0Ev @ 74 NONAME
 	_ZN28CGlxCommandHandlerRemoveFromD1Ev @ 75 NONAME
 	_ZN28CGlxCommandHandlerRemoveFromD2Ev @ 76 NONAME
@@ -100,9 +100,10 @@
 	_ZN38CGlxSingleGraphicPopupMenuStyleListBox14OfferKeyEventLERK9TKeyEvent10TEventCode @ 99 NONAME
 	_ZNK20CGlxMediaListAdaptor9MdcaCountEv @ 100 NONAME
 	_ZNK20CGlxMediaListAdaptor9MdcaPointEi @ 101 NONAME
-	_ZNK26CGlxCommandHandlerNewMedia23BypassFiltersForExecuteEv @ 102 NONAME
-	_ZNK26CGlxCommandHandlerNewMedia8OkToExitEv @ 103 NONAME
-	_ZThn48_N26CGlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 104 NONAME
-	_ZThn4_NK20CGlxMediaListAdaptor9MdcaCountEv @ 105 NONAME
-	_ZThn4_NK20CGlxMediaListAdaptor9MdcaPointEi @ 106 NONAME
+	_ZNK22CGlxImageViewerManager15ImageFileHandleEv @ 102 NONAME
+	_ZNK26CGlxCommandHandlerNewMedia23BypassFiltersForExecuteEv @ 103 NONAME
+	_ZNK26CGlxCommandHandlerNewMedia8OkToExitEv @ 104 NONAME
+	_ZThn48_N26CGlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 105 NONAME
+	_ZThn4_NK20CGlxMediaListAdaptor9MdcaCountEv @ 106 NONAME
+	_ZThn4_NK20CGlxMediaListAdaptor9MdcaPointEi @ 107 NONAME
 
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerremovefrom.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerremovefrom.h	Thu Jan 07 12:46:23 2010 +0200
@@ -48,17 +48,8 @@
      * unsupported types.
      */
 	IMPORT_C static CGlxCommandHandlerRemoveFrom* NewL(
-	    MGlxMediaListProvider* aMediaListProvider, 
-            TMPXGeneralCategory aContainerType, TInt aCommandId = NULL);
+	    MGlxMediaListProvider* aMediaListProvider, TMPXGeneralCategory aContainerType);
 	    
-    /** 
-    * Create remove (from) Favourites command handler 
-    * @param aMediaListProvider object that provides the media list.
-    */
-   IMPORT_C static CGlxCommandHandlerRemoveFrom* NewRemFromFavCommandHandlerL(
-       MGlxMediaListProvider* aMediaListProvider);
-
-
 	/** Destructor */
 	IMPORT_C ~CGlxCommandHandlerRemoveFrom();
 	
@@ -79,15 +70,13 @@
     /** See CGlxMpxCommandCommandHandler::ConfirmationTextL */
     virtual HBufC* ConfirmationTextL(TInt aCommandId, TBool aMultiSelection) const;
 
-    virtual HBufC* CompletionTextL() const;
-    
 protected: // from CGlxCommandHandler
     /** See @ref CGlxCommandHandler::DoActivateL */
     void DoActivateL(TInt /*aViewId*/);
     
 private:
     /** Second phase constructor */
-	void ConstructL(TInt aCommandId);
+	void ConstructL();
 
     /** Constructor */
 	CGlxCommandHandlerRemoveFrom(MGlxMediaListProvider* aMediaListProvider, TMPXGeneralCategory aContainerType);
@@ -97,7 +86,6 @@
 	TInt iResourceOffset;
 	TGlxMediaId iRemoveFromContainerId;
 	TMPXGeneralCategory iContainerType;
-	TInt iCommandId;
 	};
 
 #endif // __C_GLXCOMMANDHANDLERREMOVEFROM_H__
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -41,6 +41,7 @@
 #include <glxcollectionpluginalbums.hrh>
 #include <glxcollectionpluginmonths.hrh>
 #include <glxcollectionplugintags.hrh>
+#include <glxcollectionpluginimageviewer.hrh>
 #include <glxbackservicewrapper.h>
 #include <glxgallery.hrh>
 
@@ -199,25 +200,36 @@
     			break;
     			}
     		case EGlxCmdPreviousView:
-    			{
-    			GLX_LOG_INFO("CGlxCommandHandlerBack::ExecuteL::Go back \
-                to the previous view");
-                if (!(iNavigationalState->BackExitStatus()))
-                    {
-                    if(iAppUi)
-                        {
-                        iAppUi->ProcessCommandL(EAknSoftkeyExit);    
-                        }
-                    }
-    			if( iIsViewActivated )
-    			    {
-                    iIsViewActivated = EFalse;
-                    iNavigationalState->ActivatePreviousViewL();
-    			    
-    			    }
-    			consume = ETrue;
-    			break;
-    			}
+    		    {
+    		    GLX_LOG_INFO("CGlxCommandHandlerBack::ExecuteL::Go back \
+    		    to the previous view");
+    		    CMPXCollectionPath* path = iNavigationalState->StateLC();
+    		    if (path->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
+    		        {
+    		        if(iAppUi)
+    		            {
+    		            iAppUi->ProcessCommandL(EAknSoftkeyExit);    
+    		            }
+    		        }
+    		    else
+    		        {
+    		        if (!(iNavigationalState->BackExitStatus()))
+    		            {
+    		            if(iAppUi)
+    		                {
+    		                iAppUi->ProcessCommandL(EAknSoftkeyExit);    
+    		                }
+    		            }
+    		        if( iIsViewActivated )
+    		            {
+    		            iIsViewActivated = EFalse;
+    		            iNavigationalState->ActivatePreviousViewL();
+    		            }
+    		        }
+    		    CleanupStack::PopAndDestroy( path );
+    		    consume = ETrue;
+    		    break;
+    		    }
     			
     		case EGlxCmdContainerPreviousView:
     			{
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerremovefrom.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerremovefrom.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -37,30 +37,15 @@
 #include "glxcommandfactory.h"
 
 // ---------------------------------------------------------------------------
-// Return add (to) tags command handler
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CGlxCommandHandlerRemoveFrom* 
-    CGlxCommandHandlerRemoveFrom::NewRemFromFavCommandHandlerL(
-        MGlxMediaListProvider* aMediaListProvider) 
-    {
-    return CGlxCommandHandlerRemoveFrom::NewL(aMediaListProvider, 
-                                EMPXAlbum, EGlxCmdRemoveFromFavourites);
-    }
-
-
-// ---------------------------------------------------------------------------
 // Two-phased constructor.
 // ---------------------------------------------------------------------------
 //
 EXPORT_C CGlxCommandHandlerRemoveFrom* CGlxCommandHandlerRemoveFrom::NewL(
-        MGlxMediaListProvider* aMediaListProvider, TMPXGeneralCategory aContainerType, 
-                TInt aCommandId)
+        MGlxMediaListProvider* aMediaListProvider, TMPXGeneralCategory aContainerType)
     {
-    CGlxCommandHandlerRemoveFrom* self = new (ELeave) CGlxCommandHandlerRemoveFrom(
-            aMediaListProvider, aContainerType);
+    CGlxCommandHandlerRemoveFrom* self = new (ELeave) CGlxCommandHandlerRemoveFrom(aMediaListProvider, aContainerType);
     CleanupStack::PushL(self);
-    self->ConstructL(aCommandId);
+    self->ConstructL();
     CleanupStack::Pop(self);
     return self;
     }
@@ -70,9 +55,8 @@
 // might leave.
 // ---------------------------------------------------------------------------
 //
-CGlxCommandHandlerRemoveFrom::CGlxCommandHandlerRemoveFrom(MGlxMediaListProvider* 
-        aMediaListProvider, TMPXGeneralCategory aContainerType): 
-        CGlxMpxCommandCommandHandler(aMediaListProvider), iContainerType(aContainerType)
+CGlxCommandHandlerRemoveFrom::CGlxCommandHandlerRemoveFrom(MGlxMediaListProvider* aMediaListProvider, TMPXGeneralCategory aContainerType)
+        : CGlxMpxCommandCommandHandler(aMediaListProvider), iContainerType(aContainerType)
     {
     // Do nothing
     }
@@ -81,7 +65,7 @@
 // Symbian 2nd phase constructor can leave.
 // ---------------------------------------------------------------------------
 //
-void CGlxCommandHandlerRemoveFrom::ConstructL(TInt aCommandId)
+void CGlxCommandHandlerRemoveFrom::ConstructL()
     {
     // Load resource file
 	TParse parse;
@@ -97,15 +81,6 @@
     info.iMinSelectionLength = 1;
     info.iMaxSelectionLength = KMaxTInt;
    	AddCommandL(info);
-
-    // Add Remove From Favourites Command
-    TCommandInfo removeFav(EGlxCmdRemoveFromFavourites);
-    removeFav.iMinSelectionLength = 1;
-    removeFav.iMaxSelectionLength = 1;
-    AddCommandL(removeFav);
-
-    // Store this value to show the correct Text
-   	iCommandId = aCommandId;
 	}
 
 // ---------------------------------------------------------------------------
@@ -133,62 +108,37 @@
 // Create an add to container command
 // ---------------------------------------------------------------------------
 //
-CMPXCommand* CGlxCommandHandlerRemoveFrom::CreateCommandL(TInt aCommandId, 
+CMPXCommand* CGlxCommandHandlerRemoveFrom::CreateCommandL(TInt /*aCommandId*/, 
         MGlxMediaList& aMediaList, TBool& /*aConsume*/) const
     {
     CMPXCollectionPath* path = aMediaList.PathLC();
+    
     CMPXCommand* command = NULL;
-    if (aCommandId == EGlxCmdRemoveFromFavourites)
-        {
-        // Hardcoding this to the favourites
-        TGlxMediaId favId(1);
-
-        command = TGlxCommandFactory::RemoveFromContainerCommandLC(favId, *path);
-        }
+    if (iRemoveFromContainerId == KGlxIdNone)
+    	{
+    	command = TGlxCommandFactory::RemoveFromContainerCommandLC(*path);
+    	}
     else
-        {
-        if (iRemoveFromContainerId == KGlxIdNone)
-            {
-            command = TGlxCommandFactory::RemoveFromContainerCommandLC(*path);
-            }
-        else
-            {
-            command = TGlxCommandFactory::RemoveFromContainerCommandLC(iRemoveFromContainerId, *path);
-            }
-        }
+    	{
+    	command = TGlxCommandFactory::RemoveFromContainerCommandLC(iRemoveFromContainerId, *path);
+    	}
     CleanupStack::Pop(command);
     CleanupStack::PopAndDestroy(path);
     return command;
     } 
     
 // -----------------------------------------------------------------------------
-// CGlxCommandHandlerAddToFavourites::CompletionTextL
-// -----------------------------------------------------------------------------
-//  
-HBufC* CGlxCommandHandlerRemoveFrom::CompletionTextL() const
-    {
-    HBufC* text = NULL;
-    if (iCommandId == EGlxCmdRemoveFromFavourites)
-        {
-        text = StringLoader::LoadL(R_GLX_COMPLETION_REM_FROM_FAVOURITES);            
-        }
-    return text;
-    }
-    
-
-// -----------------------------------------------------------------------------
 // Return confirmation string
 // -----------------------------------------------------------------------------
 //	
-HBufC* CGlxCommandHandlerRemoveFrom::ConfirmationTextL(TInt aCommandId, 
+HBufC* CGlxCommandHandlerRemoveFrom::ConfirmationTextL(TInt /*aCommandId*/, 
         TBool aMultiSelection) const
     {
-    HBufC* text = NULL;
-    if (EGlxCmdRemoveFromFavourites != aCommandId)
-        {
-        switch (iContainerType)
-            {
-            case EMPXAlbum:
+	HBufC* text = NULL;
+    switch (iContainerType)
+    	{
+/// @todo Rowland Cook 08/06/07 Check the indenting is correct here
+    	case EMPXAlbum:
     	if (aMultiSelection)
     		{
     		text = StringLoader::LoadL(R_GLX_CONFIRMATION_REMOVE_ITEMS_ALBUM);
@@ -208,9 +158,8 @@
     		text = StringLoader::LoadL(R_GLX_CONFIRMATION_REMOVE_NAME_TAG);
     		}
     	break;
-            default: break; // return NULL
-            }
-        }
+    	default: break; // return NULL
+    	}
     return text;
     }
     
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxmediaselectionpopup.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxmediaselectionpopup.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -197,6 +197,7 @@
 	switch(aEventType)
 		{
 		case EEventItemClicked :
+		case EEventItemSingleClicked :
 			{
 			CGlxMediaListAdaptor* mediaListAdaptor = static_cast <CGlxMediaListAdaptor*>(Model()->ItemTextArray());
 	        if (mediaListAdaptor->MultiSelectionEnabled() && View()->CurrentItemIndex() >= 0 )
--- a/photosgallery/viewframework/dataprovider/bwins/glxdataprovideru.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/dataprovider/bwins/glxdataprovideru.def	Thu Jan 07 12:46:23 2010 +0200
@@ -1,39 +1,40 @@
 EXPORTS
-	??0TGlxMulBindingSetFactory@@IAE@XZ @ 1 NONAME ; TGlxMulBindingSetFactory::TGlxMulBindingSetFactory(void)
-	??1CGlxDetailsMulModelProvider@@UAE@XZ @ 2 NONAME ; CGlxDetailsMulModelProvider::~CGlxDetailsMulModelProvider(void)
-	??1CGlxMediaListMulModelProvider@@UAE@XZ @ 3 NONAME ; CGlxMediaListMulModelProvider::~CGlxMediaListMulModelProvider(void)
-	??1TGlxMulBindingSetFactory@@MAE@XZ @ 4 NONAME ; TGlxMulBindingSetFactory::~TGlxMulBindingSetFactory(void)
-	?AddCommandBindingL@TGlxMulBindingSetFactory@@IBEXPAVMGlxBoundCommand@@@Z @ 5 NONAME ; void TGlxMulBindingSetFactory::AddCommandBindingL(class MGlxBoundCommand *) const
-	?AddContainerListBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@ABVCMPXCollectionPath@@@Z @ 6 NONAME ; void TGlxMulBindingSetFactory::AddContainerListBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class CMPXCollectionPath const &) const
-	?AddEntryL@CGlxDetailsMulModelProvider@@QAEXABVTGlxMulBindingSetFactory@@@Z @ 7 NONAME ; void CGlxDetailsMulModelProvider::AddEntryL(class TGlxMulBindingSetFactory const &)
-	?AddFullScreenThumbnailBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@@Z @ 8 NONAME ; void TGlxMulBindingSetFactory::AddFullScreenThumbnailBindingL(enum Alf::mulvisualitem::TVisualAttribute const &) const
-	?AddIconBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@PBVCGlxMulIconProvider@@ABVTSize@@@Z @ 9 NONAME ; void TGlxMulBindingSetFactory::AddIconBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class CGlxMulIconProvider const *, class TSize const &) const
-	?AddMpxAttributeBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@ABVTMPXAttribute@@H@Z @ 10 NONAME ; void TGlxMulBindingSetFactory::AddMpxAttributeBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class TMPXAttribute const &, int) const
+	?NewL@CGlxResolutionBoundCommand@@SAPAV1@XZ @ 1 NONAME ; class CGlxResolutionBoundCommand * CGlxResolutionBoundCommand::NewL(void)
+	?NewL@CGlxDurationBoundCommand@@SAPAV1@XZ @ 2 NONAME ; class CGlxDurationBoundCommand * CGlxDurationBoundCommand::NewL(void)
+	?NewL@CGlxAlbumsBoundCommand@@SAPAV1@XZ @ 3 NONAME ; class CGlxAlbumsBoundCommand * CGlxAlbumsBoundCommand::NewL(void)
+	?OfferCommandL@CGlxDetailsMulModelProvider@@QAEHH@Z @ 4 NONAME ; int CGlxDetailsMulModelProvider::OfferCommandL(int)
+	?SetDetailsDailogObserver@CGlxDetailsMulModelProvider@@QAEXAAVMGlxMetadataDialogObserver@@@Z @ 5 NONAME ; void CGlxDetailsMulModelProvider::SetDetailsDailogObserver(class MGlxMetadataDialogObserver &)
+	?InitMenuL@CGlxDetailsMulModelProvider@@QAEXAAVCEikMenuPane@@@Z @ 6 NONAME ; void CGlxDetailsMulModelProvider::InitMenuL(class CEikMenuPane &)
+	?NewL@CGlxUsageRightsBoundCommand@@SAPAV1@XZ @ 7 NONAME ; class CGlxUsageRightsBoundCommand * CGlxUsageRightsBoundCommand::NewL(void)
+	?NewL@CGlxTagsBoundCommand@@SAPAV1@XZ @ 8 NONAME ; class CGlxTagsBoundCommand * CGlxTagsBoundCommand::NewL(void)
+	?AddContainerListBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@ABVCMPXCollectionPath@@@Z @ 9 NONAME ; void TGlxMulBindingSetFactory::AddContainerListBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class CMPXCollectionPath const &) const
+	?NewL@CGlxLocationBoundCommand@@SAPAV1@XZ @ 10 NONAME ; class CGlxLocationBoundCommand * CGlxLocationBoundCommand::NewL(void)
 	?AddPreviewThumbnailBindingL@TGlxMulBindingSetFactory@@IBEXXZ @ 11 NONAME ; void TGlxMulBindingSetFactory::AddPreviewThumbnailBindingL(void) const
-	?AddStringBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@H@Z @ 12 NONAME ; void TGlxMulBindingSetFactory::AddStringBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, int) const
-	?AddTemplateBindingL@TGlxMulBindingSetFactory@@IBEXW4TLogicalTemplate@mulwidget@Alf@@0@Z @ 13 NONAME ; void TGlxMulBindingSetFactory::AddTemplateBindingL(enum Alf::mulwidget::TLogicalTemplate, enum Alf::mulwidget::TLogicalTemplate) const
-	?AddThumbnailBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@ABVTSize@@@Z @ 14 NONAME ; void TGlxMulBindingSetFactory::AddThumbnailBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class TSize const &) const
-	?EnableMskL@CGlxDetailsMulModelProvider@@QAEXXZ @ 15 NONAME ; void CGlxDetailsMulModelProvider::EnableMskL(void)
-	?HideLocationMenuItem@CGlxDetailsMulModelProvider@@QAEXAAVCEikMenuPane@@@Z @ 16 NONAME ; void CGlxDetailsMulModelProvider::HideLocationMenuItem(class CEikMenuPane &)
-	?InitMenuL@CGlxDetailsMulModelProvider@@QAEXAAVCEikMenuPane@@@Z @ 17 NONAME ; void CGlxDetailsMulModelProvider::InitMenuL(class CEikMenuPane &)
-	?NewL@CGlxAlbumsBoundCommand@@SAPAV1@XZ @ 18 NONAME ; class CGlxAlbumsBoundCommand * CGlxAlbumsBoundCommand::NewL(void)
-	?NewL@CGlxAttributeRequirements@@SAPAV1@AAVMGlxMediaList@@@Z @ 19 NONAME ; class CGlxAttributeRequirements * CGlxAttributeRequirements::NewL(class MGlxMediaList &)
-	?NewL@CGlxDateAndTimeBoundCommand@@SAPAV1@XZ @ 20 NONAME ; class CGlxDateAndTimeBoundCommand * CGlxDateAndTimeBoundCommand::NewL(void)
-	?NewL@CGlxDescriptionBoundCommand@@SAPAV1@XZ @ 21 NONAME ; class CGlxDescriptionBoundCommand * CGlxDescriptionBoundCommand::NewL(void)
-	?NewL@CGlxDetailsMulModelProvider@@SAPAV1@AAVCAlfEnv@@AAVIMulWidget@Alf@@AAVMGlxMediaList@@W4TLogicalTemplate@mulwidget@4@H@Z @ 22 NONAME ; class CGlxDetailsMulModelProvider * CGlxDetailsMulModelProvider::NewL(class CAlfEnv &, class Alf::IMulWidget &, class MGlxMediaList &, enum Alf::mulwidget::TLogicalTemplate, int)
-	?NewL@CGlxDurationBoundCommand@@SAPAV1@XZ @ 23 NONAME ; class CGlxDurationBoundCommand * CGlxDurationBoundCommand::NewL(void)
-	?NewL@CGlxFileSizeBoundCommand@@SAPAV1@XZ @ 24 NONAME ; class CGlxFileSizeBoundCommand * CGlxFileSizeBoundCommand::NewL(void)
-	?NewL@CGlxLocationBoundCommand@@SAPAV1@XZ @ 25 NONAME ; class CGlxLocationBoundCommand * CGlxLocationBoundCommand::NewL(void)
-	?NewL@CGlxMediaListMulModelProvider@@SAPAV1@AAVCAlfEnv@@AAVIMulWidget@Alf@@AAVMGlxMediaList@@ABVTGlxMulBindingSetFactory@@W4TLogicalTemplate@mulwidget@4@H@Z @ 26 NONAME ; class CGlxMediaListMulModelProvider * CGlxMediaListMulModelProvider::NewL(class CAlfEnv &, class Alf::IMulWidget &, class MGlxMediaList &, class TGlxMulBindingSetFactory const &, enum Alf::mulwidget::TLogicalTemplate, int)
-	?NewL@CGlxMulDRMIconProvider@@SAPAV1@XZ @ 27 NONAME ; class CGlxMulDRMIconProvider * CGlxMulDRMIconProvider::NewL(void)
-	?NewL@CGlxMulDriveIconProvider@@SAPAV1@XZ @ 28 NONAME ; class CGlxMulDriveIconProvider * CGlxMulDriveIconProvider::NewL(void)
+	?UpdateItems@CGlxMediaListMulModelProvider@@QAEXHH@Z @ 12 NONAME ; void CGlxMediaListMulModelProvider::UpdateItems(int, int)
+	?AddEntryL@CGlxDetailsMulModelProvider@@QAEXABVTGlxMulBindingSetFactory@@@Z @ 13 NONAME ; void CGlxDetailsMulModelProvider::AddEntryL(class TGlxMulBindingSetFactory const &)
+	??1TGlxMulBindingSetFactory@@MAE@XZ @ 14 NONAME ; TGlxMulBindingSetFactory::~TGlxMulBindingSetFactory(void)
+	?NewL@CGlxMulDRMIconProvider@@SAPAV1@XZ @ 15 NONAME ; class CGlxMulDRMIconProvider * CGlxMulDRMIconProvider::NewL(void)
+	?NewL@CGlxTitleBoundCommand@@SAPAV1@XZ @ 16 NONAME ; class CGlxTitleBoundCommand * CGlxTitleBoundCommand::NewL(void)
+	?AddStringBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@H@Z @ 17 NONAME ; void TGlxMulBindingSetFactory::AddStringBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, int) const
+	?AddMpxAttributeBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@ABVTMPXAttribute@@H@Z @ 18 NONAME ; void TGlxMulBindingSetFactory::AddMpxAttributeBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class TMPXAttribute const &, int) const
+	??0TGlxMulBindingSetFactory@@IAE@XZ @ 19 NONAME ; TGlxMulBindingSetFactory::TGlxMulBindingSetFactory(void)
+	??1CGlxDetailsMulModelProvider@@UAE@XZ @ 20 NONAME ; CGlxDetailsMulModelProvider::~CGlxDetailsMulModelProvider(void)
+	??1CGlxMediaListMulModelProvider@@UAE@XZ @ 21 NONAME ; CGlxMediaListMulModelProvider::~CGlxMediaListMulModelProvider(void)
+	?NewL@CGlxMediaListMulModelProvider@@SAPAV1@AAVCAlfEnv@@AAVIMulWidget@Alf@@AAVMGlxMediaList@@ABVTGlxMulBindingSetFactory@@W4TLogicalTemplate@mulwidget@4@H@Z @ 22 NONAME ; class CGlxMediaListMulModelProvider * CGlxMediaListMulModelProvider::NewL(class CAlfEnv &, class Alf::IMulWidget &, class MGlxMediaList &, class TGlxMulBindingSetFactory const &, enum Alf::mulwidget::TLogicalTemplate, int)
+	?HideLocationMenuItem@CGlxDetailsMulModelProvider@@QAEXAAVCEikMenuPane@@@Z @ 23 NONAME ; void CGlxDetailsMulModelProvider::HideLocationMenuItem(class CEikMenuPane &)
+	?NewL@CGlxDescriptionBoundCommand@@SAPAV1@XZ @ 24 NONAME ; class CGlxDescriptionBoundCommand * CGlxDescriptionBoundCommand::NewL(void)
+	?AddFullScreenThumbnailBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@@Z @ 25 NONAME ; void TGlxMulBindingSetFactory::AddFullScreenThumbnailBindingL(enum Alf::mulvisualitem::TVisualAttribute const &) const
+	?AddIconBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@PBVCGlxMulIconProvider@@ABVTSize@@@Z @ 26 NONAME ; void TGlxMulBindingSetFactory::AddIconBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class CGlxMulIconProvider const *, class TSize const &) const
+	?NewL@CGlxAttributeRequirements@@SAPAV1@AAVMGlxMediaList@@@Z @ 27 NONAME ; class CGlxAttributeRequirements * CGlxAttributeRequirements::NewL(class MGlxMediaList &)
+	?EnableMskL@CGlxDetailsMulModelProvider@@QAEXXZ @ 28 NONAME ; void CGlxDetailsMulModelProvider::EnableMskL(void)
 	?NewL@CGlxMulLocationIconProvider@@SAPAV1@XZ @ 29 NONAME ; class CGlxMulLocationIconProvider * CGlxMulLocationIconProvider::NewL(void)
-	?NewL@CGlxMulStaticIconProvider@@SAPAV1@H@Z @ 30 NONAME ; class CGlxMulStaticIconProvider * CGlxMulStaticIconProvider::NewL(int)
-	?NewL@CGlxMulVideoIconProvider@@SAPAV1@H@Z @ 31 NONAME ; class CGlxMulVideoIconProvider * CGlxMulVideoIconProvider::NewL(int)
-	?NewL@CGlxResolutionBoundCommand@@SAPAV1@XZ @ 32 NONAME ; class CGlxResolutionBoundCommand * CGlxResolutionBoundCommand::NewL(void)
-	?NewL@CGlxTagsBoundCommand@@SAPAV1@XZ @ 33 NONAME ; class CGlxTagsBoundCommand * CGlxTagsBoundCommand::NewL(void)
-	?NewL@CGlxTitleBoundCommand@@SAPAV1@XZ @ 34 NONAME ; class CGlxTitleBoundCommand * CGlxTitleBoundCommand::NewL(void)
-	?NewL@CGlxUsageRightsBoundCommand@@SAPAV1@XZ @ 35 NONAME ; class CGlxUsageRightsBoundCommand * CGlxUsageRightsBoundCommand::NewL(void)
-	?OfferCommandL@CGlxDetailsMulModelProvider@@QAEHH@Z @ 36 NONAME ; int CGlxDetailsMulModelProvider::OfferCommandL(int)
-	?SetDetailsDailogObserver@CGlxDetailsMulModelProvider@@QAEXAAVMGlxMetadataDialogObserver@@@Z @ 37 NONAME ; void CGlxDetailsMulModelProvider::SetDetailsDailogObserver(class MGlxMetadataDialogObserver &)
+	?AddCommandBindingL@TGlxMulBindingSetFactory@@IBEXPAVMGlxBoundCommand@@@Z @ 30 NONAME ; void TGlxMulBindingSetFactory::AddCommandBindingL(class MGlxBoundCommand *) const
+	?NewL@CGlxDateAndTimeBoundCommand@@SAPAV1@XZ @ 31 NONAME ; class CGlxDateAndTimeBoundCommand * CGlxDateAndTimeBoundCommand::NewL(void)
+	?AddTemplateBindingL@TGlxMulBindingSetFactory@@IBEXW4TLogicalTemplate@mulwidget@Alf@@0@Z @ 32 NONAME ; void TGlxMulBindingSetFactory::AddTemplateBindingL(enum Alf::mulwidget::TLogicalTemplate, enum Alf::mulwidget::TLogicalTemplate) const
+	?NewL@CGlxFileSizeBoundCommand@@SAPAV1@XZ @ 33 NONAME ; class CGlxFileSizeBoundCommand * CGlxFileSizeBoundCommand::NewL(void)
+	?NewL@CGlxMulStaticIconProvider@@SAPAV1@H@Z @ 34 NONAME ; class CGlxMulStaticIconProvider * CGlxMulStaticIconProvider::NewL(int)
+	?NewL@CGlxMulVideoIconProvider@@SAPAV1@H@Z @ 35 NONAME ; class CGlxMulVideoIconProvider * CGlxMulVideoIconProvider::NewL(int)
+	?AddThumbnailBindingL@TGlxMulBindingSetFactory@@IBEXABW4TVisualAttribute@mulvisualitem@Alf@@ABVTSize@@@Z @ 36 NONAME ; void TGlxMulBindingSetFactory::AddThumbnailBindingL(enum Alf::mulvisualitem::TVisualAttribute const &, class TSize const &) const
+	?NewL@CGlxMulDriveIconProvider@@SAPAV1@XZ @ 37 NONAME ; class CGlxMulDriveIconProvider * CGlxMulDriveIconProvider::NewL(void)
+	?NewL@CGlxDetailsMulModelProvider@@SAPAV1@AAVCAlfEnv@@AAVIMulWidget@Alf@@AAVMGlxMediaList@@W4TLogicalTemplate@mulwidget@4@H@Z @ 38 NONAME ; class CGlxDetailsMulModelProvider * CGlxDetailsMulModelProvider::NewL(class CAlfEnv &, class Alf::IMulWidget &, class MGlxMediaList &, enum Alf::mulwidget::TLogicalTemplate, int)
 
--- a/photosgallery/viewframework/dataprovider/eabi/glxdataprovideru.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/dataprovider/eabi/glxdataprovideru.def	Thu Jan 07 12:46:23 2010 +0200
@@ -29,18 +29,19 @@
 	_ZN27CGlxDetailsMulModelProviderD2Ev @ 28 NONAME
 	_ZN27CGlxMulLocationIconProvider4NewLEv @ 29 NONAME
 	_ZN27CGlxUsageRightsBoundCommand4NewLEv @ 30 NONAME
-	_ZN29CGlxMediaListMulModelProvider4NewLER7CAlfEnvRN3Alf10IMulWidgetER13MGlxMediaListRK24TGlxMulBindingSetFactoryNS2_9mulwidget16TLogicalTemplateEi @ 31 NONAME
-	_ZNK24TGlxMulBindingSetFactory15AddIconBindingLERKN3Alf13mulvisualitem16TVisualAttributeEPK19CGlxMulIconProviderRK5TSize @ 32 NONAME
-	_ZNK24TGlxMulBindingSetFactory17AddStringBindingLERKN3Alf13mulvisualitem16TVisualAttributeEi @ 33 NONAME
-	_ZNK24TGlxMulBindingSetFactory18AddCommandBindingLEP16MGlxBoundCommand @ 34 NONAME
-	_ZNK24TGlxMulBindingSetFactory19AddTemplateBindingLEN3Alf9mulwidget16TLogicalTemplateES2_ @ 35 NONAME
-	_ZNK24TGlxMulBindingSetFactory20AddThumbnailBindingLERKN3Alf13mulvisualitem16TVisualAttributeERK5TSize @ 36 NONAME
-	_ZNK24TGlxMulBindingSetFactory23AddMpxAttributeBindingLERKN3Alf13mulvisualitem16TVisualAttributeERK13TMPXAttributei @ 37 NONAME
-	_ZNK24TGlxMulBindingSetFactory24AddContainerListBindingLERKN3Alf13mulvisualitem16TVisualAttributeERK18CMPXCollectionPath @ 38 NONAME
-	_ZNK24TGlxMulBindingSetFactory27AddPreviewThumbnailBindingLEv @ 39 NONAME
-	_ZNK24TGlxMulBindingSetFactory30AddFullScreenThumbnailBindingLERKN3Alf13mulvisualitem16TVisualAttributeE @ 40 NONAME
-	_ZTI24TGlxMulBindingSetFactory @ 41 NONAME ; #<TI>#
-	_ZTI25CGlxAttributeRequirements @ 42 NONAME ; #<TI>#
-	_ZTV24TGlxMulBindingSetFactory @ 43 NONAME ; #<VT>#
-	_ZTV25CGlxAttributeRequirements @ 44 NONAME ; #<VT>#
+	_ZN29CGlxMediaListMulModelProvider11UpdateItemsEii @ 31 NONAME
+	_ZN29CGlxMediaListMulModelProvider4NewLER7CAlfEnvRN3Alf10IMulWidgetER13MGlxMediaListRK24TGlxMulBindingSetFactoryNS2_9mulwidget16TLogicalTemplateEi @ 32 NONAME
+	_ZNK24TGlxMulBindingSetFactory15AddIconBindingLERKN3Alf13mulvisualitem16TVisualAttributeEPK19CGlxMulIconProviderRK5TSize @ 33 NONAME
+	_ZNK24TGlxMulBindingSetFactory17AddStringBindingLERKN3Alf13mulvisualitem16TVisualAttributeEi @ 34 NONAME
+	_ZNK24TGlxMulBindingSetFactory18AddCommandBindingLEP16MGlxBoundCommand @ 35 NONAME
+	_ZNK24TGlxMulBindingSetFactory19AddTemplateBindingLEN3Alf9mulwidget16TLogicalTemplateES2_ @ 36 NONAME
+	_ZNK24TGlxMulBindingSetFactory20AddThumbnailBindingLERKN3Alf13mulvisualitem16TVisualAttributeERK5TSize @ 37 NONAME
+	_ZNK24TGlxMulBindingSetFactory23AddMpxAttributeBindingLERKN3Alf13mulvisualitem16TVisualAttributeERK13TMPXAttributei @ 38 NONAME
+	_ZNK24TGlxMulBindingSetFactory24AddContainerListBindingLERKN3Alf13mulvisualitem16TVisualAttributeERK18CMPXCollectionPath @ 39 NONAME
+	_ZNK24TGlxMulBindingSetFactory27AddPreviewThumbnailBindingLEv @ 40 NONAME
+	_ZNK24TGlxMulBindingSetFactory30AddFullScreenThumbnailBindingLERKN3Alf13mulvisualitem16TVisualAttributeE @ 41 NONAME
+	_ZTI24TGlxMulBindingSetFactory @ 42 NONAME
+	_ZTI25CGlxAttributeRequirements @ 43 NONAME
+	_ZTV24TGlxMulBindingSetFactory @ 44 NONAME
+	_ZTV25CGlxAttributeRequirements @ 45 NONAME
 
--- a/photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelprovider.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelprovider.h	Thu Jan 07 12:46:23 2010 +0200
@@ -57,6 +57,14 @@
 	* Destructor
 	*/            
     IMPORT_C ~CGlxMediaListMulModelProvider();
+    
+      /**
+      * Requests the data model to update
+      * 
+      * @param aIndex Position from where items have to be updated.
+      * @param aCount Number of items to be updated.
+      */ 
+    IMPORT_C void UpdateItems( TInt aIndex, TInt aCount );
 
 private:
     CGlxMediaListMulModelProvider();
--- a/photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelproviderimpl.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelproviderimpl.h	Thu Jan 07 12:46:23 2010 +0200
@@ -69,6 +69,14 @@
 	*/                       
     ~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 );
+    
 private:
 	/**
 	* Constructor
--- a/photosgallery/viewframework/dataprovider/src/glxattributerequirement.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/dataprovider/src/glxattributerequirement.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -118,7 +118,7 @@
     TRACER("CGlxAttributeRequirements::AddThumbnailL");
     if( aSize.iHeight > 200 )
     	{
-    	iFromFocusOutwardIterator.SetRangeOffsets( 2,2 );
+    	iFromFocusOutwardIterator.SetRangeOffsets( 5,5 );
     	//check if Fullscreen thumbnail context is initialized
 		if(!iFsThumbnailContext)
 			{
--- a/photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelprovider.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelprovider.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -73,3 +73,12 @@
 	delete iImpl;
   	}
   	
+// ----------------------------------------------------------------------------
+// UpdateItems
+// ----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxMediaListMulModelProvider::UpdateItems( TInt aIndex, TInt aCount )
+    {
+    TRACER("CGlxMediaListMulModelProvider::UpdateItems");
+    iImpl->UpdateItems(aIndex, aCount);
+    }
--- a/photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelproviderimpl.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelproviderimpl.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -267,7 +267,7 @@
         {
         for(int i = aIndex; i < aIndex + aCount ; i++)
             {
-		    		SetDataT( *iBindingSet, iMediaList.Item(i), i );            
+		    SetDataT( *iBindingSet, iMediaList.Item(i), i );            
             }
         }
     else
@@ -308,3 +308,13 @@
     for(TInt index = 0;index<aItemIndexes.Count();index++)
         UpdateItems(aItemIndexes[index],1);
     }
+
+// ----------------------------------------------------------------------------
+// UpdateItems
+// ----------------------------------------------------------------------------
+//  
+void CGlxMediaListMulModelProviderImpl::UpdateItems( TInt aIndex, TInt aCount )
+    {
+    TRACER("CGlxMediaListMulModelProviderImpl::UpdateItems");
+    CGlxMulModelProviderBase::UpdateItems(aIndex, aCount);
+    }
--- a/photosgallery/viewframework/medialists/bwins/glxmedialistsu.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/medialists/bwins/glxmedialistsu.def	Thu Jan 07 12:46:23 2010 +0200
@@ -1,126 +1,127 @@
 EXPORTS
-	?SetToFirst@TGlxSelectionIterator@@UAEXPBVMGlxMediaList@@@Z @ 1 NONAME ; void TGlxSelectionIterator::SetToFirst(class MGlxMediaList const *)
-	??0TGlxExclusionIterator@@QAE@AAVMGlxMediaListIterator@@0@Z @ 2 NONAME ; TGlxExclusionIterator::TGlxExclusionIterator(class MGlxMediaListIterator &, class MGlxMediaListIterator &)
-	?SetHighQualityOnly@CGlxThumbnailContext@@QAEXH@Z @ 3 NONAME ; void CGlxThumbnailContext::SetHighQualityOnly(int)
-	??0TGlxFetchContextRemover@@QAE@PAVMGlxFetchContext@@AAVMGlxMediaList@@@Z @ 4 NONAME ; TGlxFetchContextRemover::TGlxFetchContextRemover(class MGlxFetchContext *, class MGlxMediaList &)
-	?SetToFirst@TGlxExclusionIterator@@UAEXPBVMGlxMediaList@@@Z @ 5 NONAME ; void TGlxExclusionIterator::SetToFirst(class MGlxMediaList const *)
-	?NewL@CGlxThumbnailContext@@SAPAV1@PAVMGlxMediaListIterator@@@Z @ 6 NONAME ; class CGlxThumbnailContext * CGlxThumbnailContext::NewL(class MGlxMediaListIterator *)
-	??1CGlxListWindow@@UAE@XZ @ 7 NONAME ; CGlxListWindow::~CGlxListWindow(void)
-	?SetDisabledIfMoreThanRangeSelected@TGlxSelectionIterator@@QAEXH@Z @ 8 NONAME ; void TGlxSelectionIterator::SetDisabledIfMoreThanRangeSelected(int)
-	??0TGlxWindowIterator@@QAE@ABV0@@Z @ 9 NONAME ; TGlxWindowIterator::TGlxWindowIterator(class TGlxWindowIterator const &)
-	?NewL@CGlxDefaultAttributeContext@@SAPAV1@XZ @ 10 NONAME ; class CGlxDefaultAttributeContext * CGlxDefaultAttributeContext::NewL(void)
-	?SetRangeOffsets@TGlxFromFocusOutwardIterator@@QAEXHH@Z @ 11 NONAME ; void TGlxFromFocusOutwardIterator::SetRangeOffsets(int, int)
-	?GetSize@TGlxMedia@@QBEHAAH@Z @ 12 NONAME ; int TGlxMedia::GetSize(int &) const
-	??ETGlxWindowIterator@@QAEHH@Z @ 13 NONAME ; int TGlxWindowIterator::operator++(int)
-	?__DbgTestInvariant@CGlxListWindow@@QBEXXZ @ 14 NONAME ; void CGlxListWindow::__DbgTestInvariant(void) const
-	?NewL@CGlxUStringConverter@@SAPAV1@XZ @ 15 NONAME ; class CGlxUStringConverter * CGlxUStringConverter::NewL(void)
-	?InstanceL@MGlxCache@@SAPAV1@XZ @ 16 NONAME ; class MGlxCache * MGlxCache::InstanceL(void)
-	?Reset@CGlxMedia@@QAEXXZ @ 17 NONAME ; void CGlxMedia::Reset(void)
-	?AddObjects@CGlxListWindow@@QAEXHHHH@Z @ 18 NONAME ; void CGlxListWindow::AddObjects(int, int, int, int)
-	??0CGlxThumbnailContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 19 NONAME ; CGlxThumbnailContext::CGlxThumbnailContext(class MGlxMediaListIterator *)
-	?SetRangeOffsetsL@CGlxListWindow@@QAEXHHHH@Z @ 20 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int, int, int)
-	??0TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 21 NONAME ; TGlxFromFocusOutwardBlockyIterator::TGlxFromFocusOutwardBlockyIterator(void)
-	?UnmarkAllL@MGlxMediaList@@SAXAAV1@@Z @ 22 NONAME ; void MGlxMediaList::UnmarkAllL(class MGlxMediaList &)
-	?IdSpaceId@TGlxMedia@@QBE?AV?$TGlxId@VTGlxIdSpaceIdBase@@@@XZ @ 23 NONAME ; class TGlxId<class TGlxIdSpaceIdBase> TGlxMedia::IdSpaceId(void) const
-	??1TGlxSelectionIterator@@QAE@XZ @ 24 NONAME ; TGlxSelectionIterator::~TGlxSelectionIterator(void)
-	?SetGranularity@CGlxAttributeContext@@QAEXI@Z @ 25 NONAME ; void CGlxAttributeContext::SetGranularity(unsigned int)
-	??0TGlxSelectionIterator@@QAE@XZ @ 26 NONAME ; TGlxSelectionIterator::TGlxSelectionIterator(void)
-	??0TGlxFromFocusOutwardIterator@@QAE@XZ @ 27 NONAME ; TGlxFromFocusOutwardIterator::TGlxFromFocusOutwardIterator(void)
+	??ETGlxSelectionIterator@@UAEHH@Z @ 1 NONAME ; int TGlxSelectionIterator::operator++(int)
+	??0TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 2 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::TGlxFromManualIndexOutwardBlockyIterator(void)
+	?UnmarkAllL@MGlxMediaList@@SAXAAV1@@Z @ 3 NONAME ; void MGlxMediaList::UnmarkAllL(class MGlxMediaList &)
+	??1TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 4 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::~TGlxFromManualIndexOutwardBlockyIterator(void)
+	?SetRangeOffsetsL@CGlxListWindow@@QAEXHH@Z @ 5 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int)
+	?InstanceL@MGlxCache@@SAPAV1@XZ @ 6 NONAME ; class MGlxCache * MGlxCache::InstanceL(void)
+	??ETGlxWindowIterator@@QAEHH@Z @ 7 NONAME ; int TGlxWindowIterator::operator++(int)
+	?ImageFileHandle@CGlxImageViewerManager@@QBEAAVRFile64@@XZ @ 8 NONAME ; class RFile64 & CGlxImageViewerManager::ImageFileHandle(void) const
+	??0CGlxListWindow@@QAE@AAVMGlxWindowObjectFactory@@@Z @ 9 NONAME ; CGlxListWindow::CGlxListWindow(class MGlxWindowObjectFactory &)
+	?At@CGlxListWindow@@QAEPAVCBase@@H@Z @ 10 NONAME ; class CBase * CGlxListWindow::At(int)
+	??0TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 11 NONAME ; TGlxFromManualIndexBlockyIterator::TGlxFromManualIndexBlockyIterator(void)
+	?SetDefaultSpec@CGlxThumbnailContext@@QAEXHH@Z @ 12 NONAME ; void CGlxThumbnailContext::SetDefaultSpec(int, int)
+	?SetTextValueL@CGlxMedia@@QAEXABVTMPXAttribute@@ABVTDesC16@@@Z @ 13 NONAME ; void CGlxMedia::SetTextValueL(class TMPXAttribute const &, class TDesC16 const &)
+	?GetStaticItemCommand@TGlxMedia@@QBEHAAH@Z @ 14 NONAME ; int TGlxMedia::GetStaticItemCommand(int &) const
+	?MatchById@TGlxMedia@@SAHABV1@0@Z @ 15 NONAME ; int TGlxMedia::MatchById(class TGlxMedia const &, class TGlxMedia const &)
+	?IsFullThumbnail@GlxThumbnailUtility@@SAHABVTMPXAttribute@@@Z @ 16 NONAME ; int GlxThumbnailUtility::IsFullThumbnail(class TMPXAttribute const &)
+	?GetSize@TGlxMedia@@QBEHAAH@Z @ 17 NONAME ; int TGlxMedia::GetSize(int &) const
+	?Iterator@CGlxListWindow@@QBE?AVTGlxWindowIterator@@XZ @ 18 NONAME ; class TGlxWindowIterator CGlxListWindow::Iterator(void) const
+	?AttributeCount@CGlxAttributeContext@@QAEHXZ @ 19 NONAME ; int CGlxAttributeContext::AttributeCount(void)
+	??1TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 20 NONAME ; TGlxFromManualIndexBlockyIterator::~TGlxFromManualIndexBlockyIterator(void)
+	??1TGlxExclusionIterator@@QAE@XZ @ 21 NONAME ; TGlxExclusionIterator::~TGlxExclusionIterator(void)
+	?RemoveAttribute@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 22 NONAME ; void CGlxAttributeContext::RemoveAttribute(class TMPXAttribute const &)
+	?GetDrmProtected@TGlxMedia@@QBEHAAH@Z @ 23 NONAME ; int TGlxMedia::GetDrmProtected(int &) const
+	??0TGlxSequentialIterator@@QAE@XZ @ 24 NONAME ; TGlxSequentialIterator::TGlxSequentialIterator(void)
+	?SetRangeOffsets@CGlxDefaultThumbnailContext@@QAEXHH@Z @ 25 NONAME ; void CGlxDefaultThumbnailContext::SetRangeOffsets(int, int)
+	?GetCoordinate@TGlxMedia@@QBEHAAVTCoordinate@@@Z @ 26 NONAME ; int TGlxMedia::GetCoordinate(class TCoordinate &) const
+	?SetToFirst@TGlxSelectionIterator@@UAEXPBVMGlxMediaList@@@Z @ 27 NONAME ; void TGlxSelectionIterator::SetToFirst(class MGlxMediaList const *)
 	?SubTitle@TGlxMedia@@QBEABVTDesC16@@XZ @ 28 NONAME ; class TDesC16 const & TGlxMedia::SubTitle(void) const
-	??1TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 29 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::~TGlxFromManualIndexOutwardBlockyIterator(void)
-	?GetFrameCount@TGlxMedia@@QBEHAAH@Z @ 30 NONAME ; int TGlxMedia::GetFrameCount(int &) const
-	??0TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 31 NONAME ; TGlxFromManualIndexBlockyIterator::TGlxFromManualIndexBlockyIterator(void)
-	?SetRangeOffsets@TGlxFromIndexOutwardBlockyIterator@@QAEXHH@Z @ 32 NONAME ; void TGlxFromIndexOutwardBlockyIterator::SetRangeOffsets(int, int)
-	?SetFocusIndex@CGlxListWindow@@QAEXH@Z @ 33 NONAME ; void CGlxListWindow::SetFocusIndex(int)
-	??1TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 34 NONAME ; TGlxFromFocusOutwardBlockyIterator::~TGlxFromFocusOutwardBlockyIterator(void)
-	??1CGlxDefaultThumbnailContext@@UAE@XZ @ 35 NONAME ; CGlxDefaultThumbnailContext::~CGlxDefaultThumbnailContext(void)
-	?IsFullThumbnail@GlxThumbnailUtility@@SAHABVTMPXAttribute@@@Z @ 36 NONAME ; int GlxThumbnailUtility::IsFullThumbnail(class TMPXAttribute const &)
-	??0TGlxFromIndexOutwardBlockyIterator@@QAE@ABVMGlxIndex@0@@Z @ 37 NONAME ; TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator(class TGlxFromIndexOutwardBlockyIterator::MGlxIndex const &)
-	?ConstructL@CGlxListWindow@@QAEXXZ @ 38 NONAME ; void CGlxListWindow::ConstructL(void)
-	?SetRange@TGlxSequentialIterator@@QAEXH@Z @ 39 NONAME ; void TGlxSequentialIterator::SetRange(int)
-	?ImageUri@CGlxImageViewerManager@@QAEPAVHBufC16@@XZ @ 40 NONAME ; class HBufC16 * CGlxImageViewerManager::ImageUri(void)
-	?GetStaticItemCommand@TGlxMedia@@QBEHAAH@Z @ 41 NONAME ; int TGlxMedia::GetStaticItemCommand(int &) const
-	?SetRangeOffsets@TGlxFromManualIndexBlockyIterator@@QAEXHH@Z @ 42 NONAME ; void TGlxFromManualIndexBlockyIterator::SetRangeOffsets(int, int)
-	?SetIndex@TGlxFromManualIndexOutwardBlockyIterator@@QAEXH@Z @ 43 NONAME ; void TGlxFromManualIndexOutwardBlockyIterator::SetIndex(int)
-	?HandleModified@CGlxMedia@@QAEXABV?$RArray@VTMPXAttribute@@@@@Z @ 44 NONAME ; void CGlxMedia::HandleModified(class RArray<class TMPXAttribute> const &)
-	?GetLastModifiedDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 45 NONAME ; int TGlxMedia::GetLastModifiedDate(class TTime &) const
-	?GetContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 46 NONAME ; int TGlxMedia::GetContainedItemCount(int &) const
-	?SetRange@TGlxSelectionIterator@@QAEXH@Z @ 47 NONAME ; void TGlxSelectionIterator::SetRange(int)
-	?GetDimensions@TGlxMedia@@QBEHAAVTSize@@@Z @ 48 NONAME ; int TGlxMedia::GetDimensions(class TSize &) const
-	?GetDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 49 NONAME ; int TGlxMedia::GetDate(class TTime &) const
-	?GetValueText@CGlxMedia@@QBEHAAVTPtrC16@@ABVTMPXAttribute@@@Z @ 50 NONAME ; int CGlxMedia::GetValueText(class TPtrC16 &, class TMPXAttribute const &) const
-	?IsPrivate@CGlxImageViewerManager@@QAEHXZ @ 51 NONAME ; int CGlxImageViewerManager::IsPrivate(void)
-	?SetTextValueL@CGlxMedia@@QAEXABVTMPXAttribute@@ABVTDesC16@@@Z @ 52 NONAME ; void CGlxMedia::SetTextValueL(class TMPXAttribute const &, class TDesC16 const &)
-	?IsStatic@TGlxMedia@@QBEHXZ @ 53 NONAME ; int TGlxMedia::IsStatic(void) const
-	??0CGlxListWindow@@QAE@AAVMGlxWindowObjectFactory@@@Z @ 54 NONAME ; CGlxListWindow::CGlxListWindow(class MGlxWindowObjectFactory &)
-	?AddSpecForItemL@CGlxThumbnailContext@@QAEXHHH@Z @ 55 NONAME ; void CGlxThumbnailContext::AddSpecForItemL(int, int, int)
-	??1CGlxDefaultAttributeContext@@UAE@XZ @ 56 NONAME ; CGlxDefaultAttributeContext::~CGlxDefaultAttributeContext(void)
-	?ThumbnailAttribute@TGlxMedia@@QBEPBVCGlxThumbnailAttribute@@AAVTMPXAttribute@@@Z @ 57 NONAME ; class CGlxThumbnailAttribute const * TGlxMedia::ThumbnailAttribute(class TMPXAttribute &) const
-	??1TGlxFirstThenLastIterator@@QAE@XZ @ 58 NONAME ; TGlxFirstThenLastIterator::~TGlxFirstThenLastIterator(void)
-	?Title@TGlxMedia@@QBEABVTDesC16@@XZ @ 59 NONAME ; class TDesC16 const & TGlxMedia::Title(void) const
-	??ETGlxSelectionIterator@@UAEHH@Z @ 60 NONAME ; int TGlxSelectionIterator::operator++(int)
-	?AddAttributeL@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 61 NONAME ; void CGlxAttributeContext::AddAttributeL(class TMPXAttribute const &)
-	?SetRangeOffsets@CGlxDefaultThumbnailContext@@QAEXHH@Z @ 62 NONAME ; void CGlxDefaultThumbnailContext::SetRangeOffsets(int, int)
-	?__DbgTestInvariant@CGlxStaticItemList@@QBEXXZ @ 63 NONAME ; void CGlxStaticItemList::__DbgTestInvariant(void) const
-	?GetDuration@TGlxMedia@@QBEHAAM@Z @ 64 NONAME ; int TGlxMedia::GetDuration(float &) const
-	?DeleteAttribute@CGlxMedia@@QAEXABVTMPXAttribute@@@Z @ 65 NONAME ; void CGlxMedia::DeleteAttribute(class TMPXAttribute const &)
-	?IncrementRefCount@CGlxImageViewerManager@@QAEXXZ @ 66 NONAME ; void CGlxImageViewerManager::IncrementRefCount(void)
-	?InstanceL@MGlxMediaList@@SAPAV1@ABVCMPXCollectionPath@@ABV?$TGlxId@VTGlxIdHierarchyBase@@@@PAVCMPXMedia@@@Z @ 67 NONAME ; class MGlxMediaList * MGlxMediaList::InstanceL(class CMPXCollectionPath const &, class TGlxId<class TGlxIdHierarchyBase> const &, class CMPXMedia *)
-	?SetCObjectValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAVCBase@@@Z @ 68 NONAME ; void CGlxMedia::SetCObjectValueL(class TMPXAttribute const &, class CBase *)
-	?RemoveObjects@CGlxListWindow@@QAEXHHHH@Z @ 69 NONAME ; void CGlxListWindow::RemoveObjects(int, int, int, int)
-	?Iterator@CGlxListWindow@@QBE?AVTGlxWindowIterator@@XZ @ 70 NONAME ; class TGlxWindowIterator CGlxListWindow::Iterator(void) const
-	?Category@TGlxMedia@@QBE?AW4TMPXGeneralCategory@@XZ @ 71 NONAME ; enum TMPXGeneralCategory TGlxMedia::Category(void) const
-	??0CGlxAttributeContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 72 NONAME ; CGlxAttributeContext::CGlxAttributeContext(class MGlxMediaListIterator *)
-	?GetIconInfo@TGlxMedia@@QBEHAAUTIconInfo@@@Z @ 73 NONAME ; int TGlxMedia::GetIconInfo(struct TIconInfo &) const
-	?__DbgTestInvariant@CGlxItemList@@QBEXXZ @ 74 NONAME ; void CGlxItemList::__DbgTestInvariant(void) const
-	?AddObjects@CGlxListWindow@@QAEXHH@Z @ 75 NONAME ; void CGlxListWindow::AddObjects(int, int)
-	?Comment@TGlxMedia@@QBEABVTDesC16@@XZ @ 76 NONAME ; class TDesC16 const & TGlxMedia::Comment(void) const
-	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@ABVTMPXAttribute@@@Z @ 77 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, class TMPXAttribute const &)
-	??0TGlxSequentialIterator@@QAE@XZ @ 78 NONAME ; TGlxSequentialIterator::TGlxSequentialIterator(void)
-	?AttributeCount@CGlxAttributeContext@@QAEHXZ @ 79 NONAME ; int CGlxAttributeContext::AttributeCount(void)
-	?GetDrmValidity@TGlxMedia@@QBEHAAW4TGlxMediaGeneralRightsValidity@@@Z @ 80 NONAME ; int TGlxMedia::GetDrmValidity(enum TGlxMediaGeneralRightsValidity &) const
-	?__DbgTestInvariant@CGlxNavigableList@@QBEXXZ @ 81 NONAME ; void CGlxNavigableList::__DbgTestInvariant(void) const
-	?SetFocusIndex@CGlxListWindow@@QAEXHH@Z @ 82 NONAME ; void CGlxListWindow::SetFocusIndex(int, int)
-	?SetValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAXW4TMPXAttributeType@@@Z @ 83 NONAME ; void CGlxMedia::SetValueL(class TMPXAttribute const &, void *, enum TMPXAttributeType)
-	?ValueText@CGlxMedia@@QBEABVTDesC16@@ABVTMPXAttribute@@@Z @ 84 NONAME ; class TDesC16 const & CGlxMedia::ValueText(class TMPXAttribute const &) const
-	??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 85 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &)
-	?DeleteLocationAttribute@TGlxMedia@@QAEXXZ @ 86 NONAME ; void TGlxMedia::DeleteLocationAttribute(void)
-	?GetClosestThumbnail@TGlxMedia@@QBEHAAVTMPXAttribute@@ABVTSize@@H@Z @ 87 NONAME ; int TGlxMedia::GetClosestThumbnail(class TMPXAttribute &, class TSize const &, int) const
-	??1CGlxMedia@@UAE@XZ @ 88 NONAME ; CGlxMedia::~CGlxMedia(void)
-	?__DbgTestInvariant@CGlxMedia@@QBEXXZ @ 89 NONAME ; void CGlxMedia::__DbgTestInvariant(void) const
-	?IsDrmProtected@TGlxMedia@@QBEHXZ @ 90 NONAME ; int TGlxMedia::IsDrmProtected(void) const
-	??1CGlxThumbnailContext@@UAE@XZ @ 91 NONAME ; CGlxThumbnailContext::~CGlxThumbnailContext(void)
-	?GetDrmProtected@TGlxMedia@@QBEHAAH@Z @ 92 NONAME ; int TGlxMedia::GetDrmProtected(int &) const
-	?GetSystemItem@TGlxMedia@@QBEHAAH@Z @ 93 NONAME ; int TGlxMedia::GetSystemItem(int &) const
-	?RemoveObjects@CGlxListWindow@@QAEXHH@Z @ 94 NONAME ; void CGlxListWindow::RemoveObjects(int, int)
-	?Close@TGlxFetchContextRemover@@QAEXXZ @ 95 NONAME ; void TGlxFetchContextRemover::Close(void)
-	?At@CGlxListWindow@@QBEPBVCBase@@H@Z @ 96 NONAME ; class CBase const * CGlxListWindow::At(int) const
-	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@H@Z @ 97 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, int)
-	?At@CGlxListWindow@@QAEPAVCBase@@H@Z @ 98 NONAME ; class CBase * CGlxListWindow::At(int)
-	??1TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 99 NONAME ; TGlxFromManualIndexBlockyIterator::~TGlxFromManualIndexBlockyIterator(void)
-	?RemoveAttribute@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 100 NONAME ; void CGlxAttributeContext::RemoveAttribute(class TMPXAttribute const &)
-	??1TGlxFromIndexOutwardBlockyIterator@@QAE@XZ @ 101 NONAME ; TGlxFromIndexOutwardBlockyIterator::~TGlxFromIndexOutwardBlockyIterator(void)
-	?ClosestThumbnail@GlxThumbnailUtility@@SAHABVTSize@@ABVCGlxMedia@@H@Z @ 102 NONAME ; int GlxThumbnailUtility::ClosestThumbnail(class TSize const &, class CGlxMedia const &, int)
-	??0TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 103 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::TGlxFromManualIndexOutwardBlockyIterator(void)
-	?Cleanup@CGlxListWindow@@QAEXXZ @ 104 NONAME ; void CGlxListWindow::Cleanup(void)
-	??1TGlxExclusionIterator@@QAE@XZ @ 105 NONAME ; TGlxExclusionIterator::~TGlxExclusionIterator(void)
-	??1TGlxFetchContextRemover@@QAE@XZ @ 106 NONAME ; TGlxFetchContextRemover::~TGlxFetchContextRemover(void)
-	?SetDefaultSpec@CGlxThumbnailContext@@QAEXHH@Z @ 107 NONAME ; void CGlxThumbnailContext::SetDefaultSpec(int, int)
-	?ImageFileHandle@CGlxImageViewerManager@@QBEAAVRFile64@@XZ @ 108 NONAME ; class RFile64 & CGlxImageViewerManager::ImageFileHandle(void) const
-	??0TGlxSpecificIdIterator@@QAE@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@VTGlxMediaId@@@Z @ 109 NONAME ; TGlxSpecificIdIterator::TGlxSpecificIdIterator(class TGlxId<class TGlxIdSpaceIdBase> const &, class TGlxMediaId)
-	?GetSlideshowPlayableContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 110 NONAME ; int TGlxMedia::GetSlideshowPlayableContainedItemCount(int &) const
-	?MatchById@TGlxMedia@@SAHABV1@0@Z @ 111 NONAME ; int TGlxMedia::MatchById(class TGlxMedia const &, class TGlxMedia const &)
-	?SetRangeOffsetsL@CGlxListWindow@@QAEXHH@Z @ 112 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int)
-	?MimeType@TGlxMedia@@QBEABVTDesC16@@XZ @ 113 NONAME ; class TDesC16 const & TGlxMedia::MimeType(void) const
-	?Uri@TGlxMedia@@QBEABVTDesC16@@XZ @ 114 NONAME ; class TDesC16 const & TGlxMedia::Uri(void) const
-	??0TGlxFirstThenLastIterator@@QAE@XZ @ 115 NONAME ; TGlxFirstThenLastIterator::TGlxFirstThenLastIterator(void)
-	??1CGlxAttributeContext@@UAE@XZ @ 116 NONAME ; CGlxAttributeContext::~CGlxAttributeContext(void)
-	?SetRangeOffsets@CGlxDefaultAttributeContext@@QAEXHH@Z @ 117 NONAME ; void CGlxDefaultAttributeContext::SetRangeOffsets(int, int)
-	?AsStringL@CGlxUStringConverter@@QBEXABVTGlxMedia@@ABVTMPXAttribute@@HAAPAVHBufC16@@@Z @ 118 NONAME ; void CGlxUStringConverter::AsStringL(class TGlxMedia const &, class TMPXAttribute const &, int, class HBufC16 * &) const
-	?ValueCObject@CGlxMedia@@QBEPBVCBase@@ABVTMPXAttribute@@@Z @ 119 NONAME ; class CBase const * CGlxMedia::ValueCObject(class TMPXAttribute const &) const
-	?GetCoordinate@TGlxMedia@@QBEHAAVTCoordinate@@@Z @ 120 NONAME ; int TGlxMedia::GetCoordinate(class TCoordinate &) const
-	?NewL@CGlxDefaultThumbnailContext@@SAPAV1@XZ @ 121 NONAME ; class CGlxDefaultThumbnailContext * CGlxDefaultThumbnailContext::NewL(void)
-	?IsSlideShowPlayableContent@TGlxMedia@@QBEHXZ @ 122 NONAME ; int TGlxMedia::IsSlideShowPlayableContent(void) const
-	??1TGlxFromFocusOutwardIterator@@QAE@XZ @ 123 NONAME ; TGlxFromFocusOutwardIterator::~TGlxFromFocusOutwardIterator(void)
-	?InRange@TGlxSelectionIterator@@UBEHH@Z @ 124 NONAME ; int TGlxSelectionIterator::InRange(int) const
+	?HandleModified@CGlxMedia@@QAEXABV?$RArray@VTMPXAttribute@@@@@Z @ 29 NONAME ; void CGlxMedia::HandleModified(class RArray<class TMPXAttribute> const &)
+	??1TGlxFetchContextRemover@@QAE@XZ @ 30 NONAME ; TGlxFetchContextRemover::~TGlxFetchContextRemover(void)
+	?DeleteAttribute@CGlxMedia@@QAEXABVTMPXAttribute@@@Z @ 31 NONAME ; void CGlxMedia::DeleteAttribute(class TMPXAttribute const &)
+	?AddAttributeL@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 32 NONAME ; void CGlxAttributeContext::AddAttributeL(class TMPXAttribute const &)
+	?GetClosestThumbnail@TGlxMedia@@QBEHAAVTMPXAttribute@@ABVTSize@@H@Z @ 33 NONAME ; int TGlxMedia::GetClosestThumbnail(class TMPXAttribute &, class TSize const &, int) const
+	?__DbgTestInvariant@CGlxStaticItemList@@QBEXXZ @ 34 NONAME ; void CGlxStaticItemList::__DbgTestInvariant(void) const
+	?Category@TGlxMedia@@QBE?AW4TMPXGeneralCategory@@XZ @ 35 NONAME ; enum TMPXGeneralCategory TGlxMedia::Category(void) const
+	??0TGlxSelectionIterator@@QAE@XZ @ 36 NONAME ; TGlxSelectionIterator::TGlxSelectionIterator(void)
+	??1TGlxFromFocusOutwardIterator@@QAE@XZ @ 37 NONAME ; TGlxFromFocusOutwardIterator::~TGlxFromFocusOutwardIterator(void)
+	??1TGlxSelectionIterator@@QAE@XZ @ 38 NONAME ; TGlxSelectionIterator::~TGlxSelectionIterator(void)
+	?SetValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAXW4TMPXAttributeType@@@Z @ 39 NONAME ; void CGlxMedia::SetValueL(class TMPXAttribute const &, void *, enum TMPXAttributeType)
+	?SetRangeOffsetsL@CGlxListWindow@@QAEXHHHH@Z @ 40 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int, int, int)
+	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@ABVTMPXAttribute@@@Z @ 41 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, class TMPXAttribute const &)
+	??0TGlxFromFocusOutwardIterator@@QAE@XZ @ 42 NONAME ; TGlxFromFocusOutwardIterator::TGlxFromFocusOutwardIterator(void)
+	??0CGlxAttributeContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 43 NONAME ; CGlxAttributeContext::CGlxAttributeContext(class MGlxMediaListIterator *)
+	??1CGlxDefaultAttributeContext@@UAE@XZ @ 44 NONAME ; CGlxDefaultAttributeContext::~CGlxDefaultAttributeContext(void)
+	?ConstructL@CGlxListWindow@@QAEXXZ @ 45 NONAME ; void CGlxListWindow::ConstructL(void)
+	?GetSystemItem@TGlxMedia@@QBEHAAH@Z @ 46 NONAME ; int TGlxMedia::GetSystemItem(int &) const
+	??0TGlxSpecificIdIterator@@QAE@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@VTGlxMediaId@@@Z @ 47 NONAME ; TGlxSpecificIdIterator::TGlxSpecificIdIterator(class TGlxId<class TGlxIdSpaceIdBase> const &, class TGlxMediaId)
+	?__DbgTestInvariant@CGlxItemList@@QBEXXZ @ 48 NONAME ; void CGlxItemList::__DbgTestInvariant(void) const
+	?SetToFirst@TGlxExclusionIterator@@UAEXPBVMGlxMediaList@@@Z @ 49 NONAME ; void TGlxExclusionIterator::SetToFirst(class MGlxMediaList const *)
+	?GetDuration@TGlxMedia@@QBEHAAM@Z @ 50 NONAME ; int TGlxMedia::GetDuration(float &) const
+	??1TGlxFromIndexOutwardBlockyIterator@@QAE@XZ @ 51 NONAME ; TGlxFromIndexOutwardBlockyIterator::~TGlxFromIndexOutwardBlockyIterator(void)
+	?RemoveObjects@CGlxListWindow@@QAEXHHHH@Z @ 52 NONAME ; void CGlxListWindow::RemoveObjects(int, int, int, int)
+	?SetRangeOffsets@CGlxDefaultAttributeContext@@QAEXHH@Z @ 53 NONAME ; void CGlxDefaultAttributeContext::SetRangeOffsets(int, int)
+	?RemoveObjects@CGlxListWindow@@QAEXHH@Z @ 54 NONAME ; void CGlxListWindow::RemoveObjects(int, int)
+	?ValueText@CGlxMedia@@QBEABVTDesC16@@ABVTMPXAttribute@@@Z @ 55 NONAME ; class TDesC16 const & CGlxMedia::ValueText(class TMPXAttribute const &) const
+	??0TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 56 NONAME ; TGlxFromFocusOutwardBlockyIterator::TGlxFromFocusOutwardBlockyIterator(void)
+	??1TGlxFirstThenLastIterator@@QAE@XZ @ 57 NONAME ; TGlxFirstThenLastIterator::~TGlxFirstThenLastIterator(void)
+	?IsSlideShowPlayableContent@TGlxMedia@@QBEHXZ @ 58 NONAME ; int TGlxMedia::IsSlideShowPlayableContent(void) const
+	??1TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 59 NONAME ; TGlxFromFocusOutwardBlockyIterator::~TGlxFromFocusOutwardBlockyIterator(void)
+	?IncrementRefCount@CGlxImageViewerManager@@QAEXXZ @ 60 NONAME ; void CGlxImageViewerManager::IncrementRefCount(void)
+	?At@CGlxListWindow@@QBEPBVCBase@@H@Z @ 61 NONAME ; class CBase const * CGlxListWindow::At(int) const
+	?SetRangeOffsets@TGlxFromFocusOutwardIterator@@QAEXHH@Z @ 62 NONAME ; void TGlxFromFocusOutwardIterator::SetRangeOffsets(int, int)
+	?ClosestThumbnail@GlxThumbnailUtility@@SAHABVTSize@@ABVCGlxMedia@@H@Z @ 63 NONAME ; int GlxThumbnailUtility::ClosestThumbnail(class TSize const &, class CGlxMedia const &, int)
+	?InRange@TGlxSelectionIterator@@UBEHH@Z @ 64 NONAME ; int TGlxSelectionIterator::InRange(int) const
+	?GetDrmValidity@TGlxMedia@@QBEHAAW4TGlxMediaGeneralRightsValidity@@@Z @ 65 NONAME ; int TGlxMedia::GetDrmValidity(enum TGlxMediaGeneralRightsValidity &) const
+	?InstanceL@MGlxMediaList@@SAPAV1@ABVCMPXCollectionPath@@ABV?$TGlxId@VTGlxIdHierarchyBase@@@@PAVCMPXMedia@@@Z @ 66 NONAME ; class MGlxMediaList * MGlxMediaList::InstanceL(class CMPXCollectionPath const &, class TGlxId<class TGlxIdHierarchyBase> const &, class CMPXMedia *)
+	?Reset@CGlxMedia@@QAEXXZ @ 67 NONAME ; void CGlxMedia::Reset(void)
+	?GetContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 68 NONAME ; int TGlxMedia::GetContainedItemCount(int &) const
+	?SetDefaultSpec@CGlxAttributeContext@@QAEXHH@Z @ 69 NONAME ; void CGlxAttributeContext::SetDefaultSpec(int, int)
+	??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 70 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &)
+	?MimeType@TGlxMedia@@QBEABVTDesC16@@XZ @ 71 NONAME ; class TDesC16 const & TGlxMedia::MimeType(void) const
+	?AddObjects@CGlxListWindow@@QAEXHH@Z @ 72 NONAME ; void CGlxListWindow::AddObjects(int, int)
+	?SetDisabledIfMoreThanRangeSelected@TGlxSelectionIterator@@QAEXH@Z @ 73 NONAME ; void TGlxSelectionIterator::SetDisabledIfMoreThanRangeSelected(int)
+	??0TGlxWindowIterator@@QAE@ABV0@@Z @ 74 NONAME ; TGlxWindowIterator::TGlxWindowIterator(class TGlxWindowIterator const &)
+	?AsStringL@CGlxUStringConverter@@QBEXABVTGlxMedia@@ABVTMPXAttribute@@HAAPAVHBufC16@@@Z @ 75 NONAME ; void CGlxUStringConverter::AsStringL(class TGlxMedia const &, class TMPXAttribute const &, int, class HBufC16 * &) const
+	?SetIndex@TGlxFromManualIndexOutwardBlockyIterator@@QAEXH@Z @ 76 NONAME ; void TGlxFromManualIndexOutwardBlockyIterator::SetIndex(int)
+	?NewL@CGlxThumbnailContext@@SAPAV1@PAVMGlxMediaListIterator@@@Z @ 77 NONAME ; class CGlxThumbnailContext * CGlxThumbnailContext::NewL(class MGlxMediaListIterator *)
+	?SetFocusIndex@CGlxListWindow@@QAEXHH@Z @ 78 NONAME ; void CGlxListWindow::SetFocusIndex(int, int)
+	?ValueCObject@CGlxMedia@@QBEPBVCBase@@ABVTMPXAttribute@@@Z @ 79 NONAME ; class CBase const * CGlxMedia::ValueCObject(class TMPXAttribute const &) const
+	??0TGlxExclusionIterator@@QAE@AAVMGlxMediaListIterator@@0@Z @ 80 NONAME ; TGlxExclusionIterator::TGlxExclusionIterator(class MGlxMediaListIterator &, class MGlxMediaListIterator &)
+	?AddSpecForItemL@CGlxThumbnailContext@@QAEXHHH@Z @ 81 NONAME ; void CGlxThumbnailContext::AddSpecForItemL(int, int, int)
+	?DeleteLocationAttribute@TGlxMedia@@QAEXXZ @ 82 NONAME ; void TGlxMedia::DeleteLocationAttribute(void)
+	??1CGlxMedia@@UAE@XZ @ 83 NONAME ; CGlxMedia::~CGlxMedia(void)
+	?GetSlideshowPlayableContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 84 NONAME ; int TGlxMedia::GetSlideshowPlayableContainedItemCount(int &) const
+	?IsDrmProtected@TGlxMedia@@QBEHXZ @ 85 NONAME ; int TGlxMedia::IsDrmProtected(void) const
+	?SetRangeOffsets@TGlxFromManualIndexBlockyIterator@@QAEXHH@Z @ 86 NONAME ; void TGlxFromManualIndexBlockyIterator::SetRangeOffsets(int, int)
+	?NewL@CGlxDefaultThumbnailContext@@SAPAV1@XZ @ 87 NONAME ; class CGlxDefaultThumbnailContext * CGlxDefaultThumbnailContext::NewL(void)
+	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@H@Z @ 88 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, int)
+	?GetValueText@CGlxMedia@@QBEHAAVTPtrC16@@ABVTMPXAttribute@@@Z @ 89 NONAME ; int CGlxMedia::GetValueText(class TPtrC16 &, class TMPXAttribute const &) const
+	??1CGlxThumbnailContext@@UAE@XZ @ 90 NONAME ; CGlxThumbnailContext::~CGlxThumbnailContext(void)
+	?SetCObjectValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAVCBase@@@Z @ 91 NONAME ; void CGlxMedia::SetCObjectValueL(class TMPXAttribute const &, class CBase *)
+	?SetRangeOffsets@TGlxFromIndexOutwardBlockyIterator@@QAEXHH@Z @ 92 NONAME ; void TGlxFromIndexOutwardBlockyIterator::SetRangeOffsets(int, int)
+	?SetRange@TGlxSequentialIterator@@QAEXH@Z @ 93 NONAME ; void TGlxSequentialIterator::SetRange(int)
+	??1CGlxAttributeContext@@UAE@XZ @ 94 NONAME ; CGlxAttributeContext::~CGlxAttributeContext(void)
+	?GetIconInfo@TGlxMedia@@QBEHAAUTIconInfo@@@Z @ 95 NONAME ; int TGlxMedia::GetIconInfo(struct TIconInfo &) const
+	?SetHighQualityOnly@CGlxThumbnailContext@@QAEXH@Z @ 96 NONAME ; void CGlxThumbnailContext::SetHighQualityOnly(int)
+	?IdSpaceId@TGlxMedia@@QBE?AV?$TGlxId@VTGlxIdSpaceIdBase@@@@XZ @ 97 NONAME ; class TGlxId<class TGlxIdSpaceIdBase> TGlxMedia::IdSpaceId(void) const
+	??0TGlxFromIndexOutwardBlockyIterator@@QAE@ABVMGlxIndex@0@@Z @ 98 NONAME ; TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator(class TGlxFromIndexOutwardBlockyIterator::MGlxIndex const &)
+	?Comment@TGlxMedia@@QBEABVTDesC16@@XZ @ 99 NONAME ; class TDesC16 const & TGlxMedia::Comment(void) const
+	?GetLastModifiedDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 100 NONAME ; int TGlxMedia::GetLastModifiedDate(class TTime &) const
+	?IsPrivate@CGlxImageViewerManager@@QAEHXZ @ 101 NONAME ; int CGlxImageViewerManager::IsPrivate(void)
+	?AddObjects@CGlxListWindow@@QAEXHHHH@Z @ 102 NONAME ; void CGlxListWindow::AddObjects(int, int, int, int)
+	?ThumbnailAttribute@TGlxMedia@@QBEPBVCGlxThumbnailAttribute@@AAVTMPXAttribute@@@Z @ 103 NONAME ; class CGlxThumbnailAttribute const * TGlxMedia::ThumbnailAttribute(class TMPXAttribute &) const
+	??0TGlxFetchContextRemover@@QAE@PAVMGlxFetchContext@@AAVMGlxMediaList@@@Z @ 104 NONAME ; TGlxFetchContextRemover::TGlxFetchContextRemover(class MGlxFetchContext *, class MGlxMediaList &)
+	?GetFrameCount@TGlxMedia@@QBEHAAH@Z @ 105 NONAME ; int TGlxMedia::GetFrameCount(int &) const
+	?GetDimensions@TGlxMedia@@QBEHAAVTSize@@@Z @ 106 NONAME ; int TGlxMedia::GetDimensions(class TSize &) const
+	?__DbgTestInvariant@CGlxMedia@@QBEXXZ @ 107 NONAME ; void CGlxMedia::__DbgTestInvariant(void) const
+	?SetRange@TGlxSelectionIterator@@QAEXH@Z @ 108 NONAME ; void TGlxSelectionIterator::SetRange(int)
+	??0TGlxFirstThenLastIterator@@QAE@XZ @ 109 NONAME ; TGlxFirstThenLastIterator::TGlxFirstThenLastIterator(void)
+	?NewL@CGlxDefaultAttributeContext@@SAPAV1@XZ @ 110 NONAME ; class CGlxDefaultAttributeContext * CGlxDefaultAttributeContext::NewL(void)
+	??0CGlxThumbnailContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 111 NONAME ; CGlxThumbnailContext::CGlxThumbnailContext(class MGlxMediaListIterator *)
+	?Close@TGlxFetchContextRemover@@QAEXXZ @ 112 NONAME ; void TGlxFetchContextRemover::Close(void)
+	?NewL@CGlxUStringConverter@@SAPAV1@XZ @ 113 NONAME ; class CGlxUStringConverter * CGlxUStringConverter::NewL(void)
+	?IsStatic@TGlxMedia@@QBEHXZ @ 114 NONAME ; int TGlxMedia::IsStatic(void) const
+	??1CGlxDefaultThumbnailContext@@UAE@XZ @ 115 NONAME ; CGlxDefaultThumbnailContext::~CGlxDefaultThumbnailContext(void)
+	?__DbgTestInvariant@CGlxNavigableList@@QBEXXZ @ 116 NONAME ; void CGlxNavigableList::__DbgTestInvariant(void) const
+	?Title@TGlxMedia@@QBEABVTDesC16@@XZ @ 117 NONAME ; class TDesC16 const & TGlxMedia::Title(void) const
+	??1CGlxListWindow@@UAE@XZ @ 118 NONAME ; CGlxListWindow::~CGlxListWindow(void)
+	?__DbgTestInvariant@CGlxListWindow@@QBEXXZ @ 119 NONAME ; void CGlxListWindow::__DbgTestInvariant(void) const
+	?Cleanup@CGlxListWindow@@QAEXXZ @ 120 NONAME ; void CGlxListWindow::Cleanup(void)
+	?SetFocusIndex@CGlxListWindow@@QAEXH@Z @ 121 NONAME ; void CGlxListWindow::SetFocusIndex(int)
+	?ImageUri@CGlxImageViewerManager@@QAEPAVHBufC16@@XZ @ 122 NONAME ; class HBufC16 * CGlxImageViewerManager::ImageUri(void)
+	?Uri@TGlxMedia@@QBEABVTDesC16@@XZ @ 123 NONAME ; class TDesC16 const & TGlxMedia::Uri(void) const
+	?GetDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 124 NONAME ; int TGlxMedia::GetDate(class TTime &) const
+	?SetGranularity@CGlxAttributeContext@@QAEXI@Z @ 125 NONAME ; void CGlxAttributeContext::SetGranularity(unsigned int)
 
--- a/photosgallery/viewframework/medialists/eabi/glxmedialistsu.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/medialists/eabi/glxmedialistsu.def	Thu Jan 07 12:46:23 2010 +0200
@@ -26,170 +26,171 @@
 	_ZN19GlxThumbnailUtility16ClosestThumbnailERK5TSizeRK9CGlxMediai @ 25 NONAME
 	_ZN20CGlxAttributeContext13AddAttributeLERK13TMPXAttribute @ 26 NONAME
 	_ZN20CGlxAttributeContext14AttributeCountEv @ 27 NONAME
-	_ZN20CGlxAttributeContext14SetGranularityEj @ 28 NONAME
-	_ZN20CGlxAttributeContext15RemoveAttributeERK13TMPXAttribute @ 29 NONAME
-	_ZN20CGlxAttributeContextC1EP21MGlxMediaListIterator @ 30 NONAME
-	_ZN20CGlxAttributeContextC2EP21MGlxMediaListIterator @ 31 NONAME
-	_ZN20CGlxAttributeContextD0Ev @ 32 NONAME
-	_ZN20CGlxAttributeContextD1Ev @ 33 NONAME
-	_ZN20CGlxAttributeContextD2Ev @ 34 NONAME
-	_ZN20CGlxThumbnailContext14SetDefaultSpecEii @ 35 NONAME
-	_ZN20CGlxThumbnailContext15AddSpecForItemLEiii @ 36 NONAME
-	_ZN20CGlxThumbnailContext18SetHighQualityOnlyEi @ 37 NONAME
-	_ZN20CGlxThumbnailContext4NewLEP21MGlxMediaListIterator @ 38 NONAME
-	_ZN20CGlxThumbnailContextC1EP21MGlxMediaListIterator @ 39 NONAME
-	_ZN20CGlxThumbnailContextC2EP21MGlxMediaListIterator @ 40 NONAME
-	_ZN20CGlxThumbnailContextD0Ev @ 41 NONAME
-	_ZN20CGlxThumbnailContextD1Ev @ 42 NONAME
-	_ZN20CGlxThumbnailContextD2Ev @ 43 NONAME
-	_ZN20CGlxUStringConverter4NewLEv @ 44 NONAME
-	_ZN21TGlxExclusionIterator10SetToFirstEPK13MGlxMediaList @ 45 NONAME
-	_ZN21TGlxExclusionIteratorC1ER21MGlxMediaListIteratorS1_ @ 46 NONAME
-	_ZN21TGlxExclusionIteratorC2ER21MGlxMediaListIteratorS1_ @ 47 NONAME
-	_ZN21TGlxExclusionIteratorD1Ev @ 48 NONAME
-	_ZN21TGlxExclusionIteratorD2Ev @ 49 NONAME
-	_ZN21TGlxSelectionIterator10SetToFirstEPK13MGlxMediaList @ 50 NONAME
-	_ZN21TGlxSelectionIterator34SetDisabledIfMoreThanRangeSelectedEi @ 51 NONAME
-	_ZN21TGlxSelectionIterator8SetRangeEi @ 52 NONAME
-	_ZN21TGlxSelectionIteratorC1Ev @ 53 NONAME
-	_ZN21TGlxSelectionIteratorC2Ev @ 54 NONAME
-	_ZN21TGlxSelectionIteratorD1Ev @ 55 NONAME
-	_ZN21TGlxSelectionIteratorD2Ev @ 56 NONAME
-	_ZN21TGlxSelectionIteratorppEi @ 57 NONAME
-	_ZN22CGlxImageViewerManager8ImageUriEv @ 58 NONAME
-	_ZN22CGlxImageViewerManager9IsPrivateEv @ 59 NONAME
-	_ZN22TGlxSequentialIterator8SetRangeEi @ 60 NONAME
-	_ZN22TGlxSequentialIteratorC1Ev @ 61 NONAME
-	_ZN22TGlxSequentialIteratorC2Ev @ 62 NONAME
-	_ZN22TGlxSpecificIdIteratorC1ERK6TGlxIdI17TGlxIdSpaceIdBaseE11TGlxMediaId @ 63 NONAME
-	_ZN22TGlxSpecificIdIteratorC2ERK6TGlxIdI17TGlxIdSpaceIdBaseE11TGlxMediaId @ 64 NONAME
-	_ZN23TGlxFetchContextRemover5CloseEv @ 65 NONAME
-	_ZN23TGlxFetchContextRemoverC1EP16MGlxFetchContextR13MGlxMediaList @ 66 NONAME
-	_ZN23TGlxFetchContextRemoverC2EP16MGlxFetchContextR13MGlxMediaList @ 67 NONAME
-	_ZN23TGlxFetchContextRemoverD1Ev @ 68 NONAME
-	_ZN23TGlxFetchContextRemoverD2Ev @ 69 NONAME
-	_ZN25TGlxFirstThenLastIteratorC1Ev @ 70 NONAME
-	_ZN25TGlxFirstThenLastIteratorC2Ev @ 71 NONAME
-	_ZN25TGlxFirstThenLastIteratorD1Ev @ 72 NONAME
-	_ZN25TGlxFirstThenLastIteratorD2Ev @ 73 NONAME
-	_ZN27CGlxDefaultAttributeContext15SetRangeOffsetsEii @ 74 NONAME
-	_ZN27CGlxDefaultAttributeContext4NewLEv @ 75 NONAME
-	_ZN27CGlxDefaultAttributeContextD0Ev @ 76 NONAME
-	_ZN27CGlxDefaultAttributeContextD1Ev @ 77 NONAME
-	_ZN27CGlxDefaultAttributeContextD2Ev @ 78 NONAME
-	_ZN27CGlxDefaultThumbnailContext15SetRangeOffsetsEii @ 79 NONAME
-	_ZN27CGlxDefaultThumbnailContext4NewLEv @ 80 NONAME
-	_ZN27CGlxDefaultThumbnailContextD0Ev @ 81 NONAME
-	_ZN27CGlxDefaultThumbnailContextD1Ev @ 82 NONAME
-	_ZN27CGlxDefaultThumbnailContextD2Ev @ 83 NONAME
-	_ZN28TGlxFromFocusOutwardIterator15SetRangeOffsetsEii @ 84 NONAME
-	_ZN28TGlxFromFocusOutwardIteratorC1Ev @ 85 NONAME
-	_ZN28TGlxFromFocusOutwardIteratorC2Ev @ 86 NONAME
-	_ZN28TGlxFromFocusOutwardIteratorD1Ev @ 87 NONAME
-	_ZN28TGlxFromFocusOutwardIteratorD2Ev @ 88 NONAME
-	_ZN33TGlxFromManualIndexBlockyIterator15SetRangeOffsetsEii @ 89 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorC1Ev @ 90 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorC2Ev @ 91 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorD1Ev @ 92 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorD2Ev @ 93 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorC1Ev @ 94 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorC2Ev @ 95 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorD1Ev @ 96 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorD2Ev @ 97 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIterator15SetRangeOffsetsEii @ 98 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorC1ERKNS_9MGlxIndexE @ 99 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorC2ERKNS_9MGlxIndexE @ 100 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorD1Ev @ 101 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorD2Ev @ 102 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIterator8SetIndexEi @ 103 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC1Ev @ 104 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC2Ev @ 105 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD1Ev @ 106 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD2Ev @ 107 NONAME
-	_ZN9CGlxMedia13SetTextValueLERK13TMPXAttributeRK7TDesC16 @ 108 NONAME
-	_ZN9CGlxMedia14HandleModifiedERK6RArrayI13TMPXAttributeE @ 109 NONAME
-	_ZN9CGlxMedia15DeleteAttributeERK13TMPXAttribute @ 110 NONAME
-	_ZN9CGlxMedia16SetCObjectValueLERK13TMPXAttributeP5CBase @ 111 NONAME
-	_ZN9CGlxMedia5ResetEv @ 112 NONAME
-	_ZN9CGlxMedia9SetValueLERK13TMPXAttributePv17TMPXAttributeType @ 113 NONAME
-	_ZN9CGlxMediaC1ERK11TGlxMediaId @ 114 NONAME
-	_ZN9CGlxMediaC2ERK11TGlxMediaId @ 115 NONAME
-	_ZN9CGlxMediaD0Ev @ 116 NONAME
-	_ZN9CGlxMediaD1Ev @ 117 NONAME
-	_ZN9CGlxMediaD2Ev @ 118 NONAME
-	_ZN9MGlxCache9InstanceLEv @ 119 NONAME
-	_ZN9TGlxMedia23DeleteLocationAttributeEv @ 120 NONAME
-	_ZN9TGlxMedia9MatchByIdERKS_S1_ @ 121 NONAME
-	_ZNK14CGlxListWindow2AtEi @ 122 NONAME
-	_ZNK14CGlxListWindow8IteratorEv @ 123 NONAME
-	_ZNK20CGlxUStringConverter9AsStringLERK9TGlxMediaRK13TMPXAttributeiRP7HBufC16 @ 124 NONAME
-	_ZNK21TGlxSelectionIterator7InRangeEi @ 125 NONAME
-	_ZNK22CGlxImageViewerManager15ImageFileHandleEv @ 126 NONAME
-	_ZNK9CGlxMedia12GetValueTextER7TPtrC16RK13TMPXAttribute @ 127 NONAME
-	_ZNK9CGlxMedia12ValueCObjectERK13TMPXAttribute @ 128 NONAME
-	_ZNK9CGlxMedia9ValueTextERK13TMPXAttribute @ 129 NONAME
-	_ZNK9TGlxMedia11GetDurationERf @ 130 NONAME
-	_ZNK9TGlxMedia11GetIconInfoER9TIconInfo @ 131 NONAME
-	_ZNK9TGlxMedia13GetCoordinateER11TCoordinate @ 132 NONAME
-	_ZNK9TGlxMedia13GetDimensionsER5TSize @ 133 NONAME
-	_ZNK9TGlxMedia13GetFrameCountERi @ 134 NONAME
-	_ZNK9TGlxMedia13GetSystemItemERi @ 135 NONAME
-	_ZNK9TGlxMedia14GetDrmValidityER30TGlxMediaGeneralRightsValidity @ 136 NONAME
-	_ZNK9TGlxMedia14IsDrmProtectedEv @ 137 NONAME
-	_ZNK9TGlxMedia15GetDrmProtectedERi @ 138 NONAME
-	_ZNK9TGlxMedia18ThumbnailAttributeER13TMPXAttribute @ 139 NONAME
-	_ZNK9TGlxMedia19GetClosestThumbnailER13TMPXAttributeRK5TSizei @ 140 NONAME
-	_ZNK9TGlxMedia19GetLastModifiedDateER5TTime @ 141 NONAME
-	_ZNK9TGlxMedia20GetStaticItemCommandERi @ 142 NONAME
-	_ZNK9TGlxMedia21GetContainedItemCountERi @ 143 NONAME
-	_ZNK9TGlxMedia26IsSlideShowPlayableContentEv @ 144 NONAME
-	_ZNK9TGlxMedia38GetSlideshowPlayableContainedItemCountERi @ 145 NONAME
-	_ZNK9TGlxMedia3UriEv @ 146 NONAME
-	_ZNK9TGlxMedia5TitleEv @ 147 NONAME
-	_ZNK9TGlxMedia7CommentEv @ 148 NONAME
-	_ZNK9TGlxMedia7GetDateER5TTime @ 149 NONAME
-	_ZNK9TGlxMedia7GetSizeERi @ 150 NONAME
-	_ZNK9TGlxMedia8CategoryEv @ 151 NONAME
-	_ZNK9TGlxMedia8IsStaticEv @ 152 NONAME
-	_ZNK9TGlxMedia8MimeTypeEv @ 153 NONAME
-	_ZNK9TGlxMedia8SubTitleEv @ 154 NONAME
-	_ZNK9TGlxMedia9IdSpaceIdEv @ 155 NONAME
-	_ZTI13CGlxMediaList @ 156 NONAME
-	_ZTI14CGlxListWindow @ 157 NONAME
-	_ZTI15CGlxImageReader @ 158 NONAME
-	_ZTI16CGlxCacheManager @ 159 NONAME
-	_ZTI20CGlxAttributeContext @ 160 NONAME
-	_ZTI20CGlxGarbageCollector @ 161 NONAME
-	_ZTI20CGlxThumbnailContext @ 162 NONAME
-	_ZTI21TGlxExclusionIterator @ 163 NONAME
-	_ZTI21TGlxSelectionIterator @ 164 NONAME
-	_ZTI22TGlxSequentialIterator @ 165 NONAME
-	_ZTI22TGlxSpecificIdIterator @ 166 NONAME
-	_ZTI25TGlxFirstThenLastIterator @ 167 NONAME
-	_ZTI27CGlxDefaultAttributeContext @ 168 NONAME
-	_ZTI27CGlxDefaultThumbnailContext @ 169 NONAME
-	_ZTI28TGlxFromFocusOutwardIterator @ 170 NONAME
-	_ZTI33TGlxFromManualIndexBlockyIterator @ 171 NONAME
-	_ZTI34TGlxFromFocusOutwardBlockyIterator @ 172 NONAME
-	_ZTI34TGlxFromIndexOutwardBlockyIterator @ 173 NONAME
-	_ZTI40TGlxFromManualIndexOutwardBlockyIterator @ 174 NONAME
-	_ZTV13CGlxMediaList @ 175 NONAME
-	_ZTV14CGlxListWindow @ 176 NONAME
-	_ZTV15CGlxImageReader @ 177 NONAME
-	_ZTV16CGlxCacheManager @ 178 NONAME
-	_ZTV20CGlxAttributeContext @ 179 NONAME
-	_ZTV20CGlxGarbageCollector @ 180 NONAME
-	_ZTV20CGlxThumbnailContext @ 181 NONAME
-	_ZTV21TGlxExclusionIterator @ 182 NONAME
-	_ZTV21TGlxSelectionIterator @ 183 NONAME
-	_ZTV22TGlxSequentialIterator @ 184 NONAME
-	_ZTV22TGlxSpecificIdIterator @ 185 NONAME
-	_ZTV25TGlxFirstThenLastIterator @ 186 NONAME
-	_ZTV27CGlxDefaultAttributeContext @ 187 NONAME
-	_ZTV27CGlxDefaultThumbnailContext @ 188 NONAME
-	_ZTV28TGlxFromFocusOutwardIterator @ 189 NONAME
-	_ZTV33TGlxFromManualIndexBlockyIterator @ 190 NONAME
-	_ZTV34TGlxFromFocusOutwardBlockyIterator @ 191 NONAME
-	_ZTV34TGlxFromIndexOutwardBlockyIterator @ 192 NONAME
-	_ZTV40TGlxFromManualIndexOutwardBlockyIterator @ 193 NONAME
+	_ZN20CGlxAttributeContext14SetDefaultSpecEii @ 28 NONAME
+	_ZN20CGlxAttributeContext14SetGranularityEj @ 29 NONAME
+	_ZN20CGlxAttributeContext15RemoveAttributeERK13TMPXAttribute @ 30 NONAME
+	_ZN20CGlxAttributeContextC1EP21MGlxMediaListIterator @ 31 NONAME
+	_ZN20CGlxAttributeContextC2EP21MGlxMediaListIterator @ 32 NONAME
+	_ZN20CGlxAttributeContextD0Ev @ 33 NONAME
+	_ZN20CGlxAttributeContextD1Ev @ 34 NONAME
+	_ZN20CGlxAttributeContextD2Ev @ 35 NONAME
+	_ZN20CGlxThumbnailContext14SetDefaultSpecEii @ 36 NONAME
+	_ZN20CGlxThumbnailContext15AddSpecForItemLEiii @ 37 NONAME
+	_ZN20CGlxThumbnailContext18SetHighQualityOnlyEi @ 38 NONAME
+	_ZN20CGlxThumbnailContext4NewLEP21MGlxMediaListIterator @ 39 NONAME
+	_ZN20CGlxThumbnailContextC1EP21MGlxMediaListIterator @ 40 NONAME
+	_ZN20CGlxThumbnailContextC2EP21MGlxMediaListIterator @ 41 NONAME
+	_ZN20CGlxThumbnailContextD0Ev @ 42 NONAME
+	_ZN20CGlxThumbnailContextD1Ev @ 43 NONAME
+	_ZN20CGlxThumbnailContextD2Ev @ 44 NONAME
+	_ZN20CGlxUStringConverter4NewLEv @ 45 NONAME
+	_ZN21TGlxExclusionIterator10SetToFirstEPK13MGlxMediaList @ 46 NONAME
+	_ZN21TGlxExclusionIteratorC1ER21MGlxMediaListIteratorS1_ @ 47 NONAME
+	_ZN21TGlxExclusionIteratorC2ER21MGlxMediaListIteratorS1_ @ 48 NONAME
+	_ZN21TGlxExclusionIteratorD1Ev @ 49 NONAME
+	_ZN21TGlxExclusionIteratorD2Ev @ 50 NONAME
+	_ZN21TGlxSelectionIterator10SetToFirstEPK13MGlxMediaList @ 51 NONAME
+	_ZN21TGlxSelectionIterator34SetDisabledIfMoreThanRangeSelectedEi @ 52 NONAME
+	_ZN21TGlxSelectionIterator8SetRangeEi @ 53 NONAME
+	_ZN21TGlxSelectionIteratorC1Ev @ 54 NONAME
+	_ZN21TGlxSelectionIteratorC2Ev @ 55 NONAME
+	_ZN21TGlxSelectionIteratorD1Ev @ 56 NONAME
+	_ZN21TGlxSelectionIteratorD2Ev @ 57 NONAME
+	_ZN21TGlxSelectionIteratorppEi @ 58 NONAME
+	_ZN22CGlxImageViewerManager8ImageUriEv @ 59 NONAME
+	_ZN22CGlxImageViewerManager9IsPrivateEv @ 60 NONAME
+	_ZN22TGlxSequentialIterator8SetRangeEi @ 61 NONAME
+	_ZN22TGlxSequentialIteratorC1Ev @ 62 NONAME
+	_ZN22TGlxSequentialIteratorC2Ev @ 63 NONAME
+	_ZN22TGlxSpecificIdIteratorC1ERK6TGlxIdI17TGlxIdSpaceIdBaseE11TGlxMediaId @ 64 NONAME
+	_ZN22TGlxSpecificIdIteratorC2ERK6TGlxIdI17TGlxIdSpaceIdBaseE11TGlxMediaId @ 65 NONAME
+	_ZN23TGlxFetchContextRemover5CloseEv @ 66 NONAME
+	_ZN23TGlxFetchContextRemoverC1EP16MGlxFetchContextR13MGlxMediaList @ 67 NONAME
+	_ZN23TGlxFetchContextRemoverC2EP16MGlxFetchContextR13MGlxMediaList @ 68 NONAME
+	_ZN23TGlxFetchContextRemoverD1Ev @ 69 NONAME
+	_ZN23TGlxFetchContextRemoverD2Ev @ 70 NONAME
+	_ZN25TGlxFirstThenLastIteratorC1Ev @ 71 NONAME
+	_ZN25TGlxFirstThenLastIteratorC2Ev @ 72 NONAME
+	_ZN25TGlxFirstThenLastIteratorD1Ev @ 73 NONAME
+	_ZN25TGlxFirstThenLastIteratorD2Ev @ 74 NONAME
+	_ZN27CGlxDefaultAttributeContext15SetRangeOffsetsEii @ 75 NONAME
+	_ZN27CGlxDefaultAttributeContext4NewLEv @ 76 NONAME
+	_ZN27CGlxDefaultAttributeContextD0Ev @ 77 NONAME
+	_ZN27CGlxDefaultAttributeContextD1Ev @ 78 NONAME
+	_ZN27CGlxDefaultAttributeContextD2Ev @ 79 NONAME
+	_ZN27CGlxDefaultThumbnailContext15SetRangeOffsetsEii @ 80 NONAME
+	_ZN27CGlxDefaultThumbnailContext4NewLEv @ 81 NONAME
+	_ZN27CGlxDefaultThumbnailContextD0Ev @ 82 NONAME
+	_ZN27CGlxDefaultThumbnailContextD1Ev @ 83 NONAME
+	_ZN27CGlxDefaultThumbnailContextD2Ev @ 84 NONAME
+	_ZN28TGlxFromFocusOutwardIterator15SetRangeOffsetsEii @ 85 NONAME
+	_ZN28TGlxFromFocusOutwardIteratorC1Ev @ 86 NONAME
+	_ZN28TGlxFromFocusOutwardIteratorC2Ev @ 87 NONAME
+	_ZN28TGlxFromFocusOutwardIteratorD1Ev @ 88 NONAME
+	_ZN28TGlxFromFocusOutwardIteratorD2Ev @ 89 NONAME
+	_ZN33TGlxFromManualIndexBlockyIterator15SetRangeOffsetsEii @ 90 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorC1Ev @ 91 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorC2Ev @ 92 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorD1Ev @ 93 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorD2Ev @ 94 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorC1Ev @ 95 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorC2Ev @ 96 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorD1Ev @ 97 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorD2Ev @ 98 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIterator15SetRangeOffsetsEii @ 99 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorC1ERKNS_9MGlxIndexE @ 100 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorC2ERKNS_9MGlxIndexE @ 101 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorD1Ev @ 102 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorD2Ev @ 103 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIterator8SetIndexEi @ 104 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC1Ev @ 105 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC2Ev @ 106 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD1Ev @ 107 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD2Ev @ 108 NONAME
+	_ZN9CGlxMedia13SetTextValueLERK13TMPXAttributeRK7TDesC16 @ 109 NONAME
+	_ZN9CGlxMedia14HandleModifiedERK6RArrayI13TMPXAttributeE @ 110 NONAME
+	_ZN9CGlxMedia15DeleteAttributeERK13TMPXAttribute @ 111 NONAME
+	_ZN9CGlxMedia16SetCObjectValueLERK13TMPXAttributeP5CBase @ 112 NONAME
+	_ZN9CGlxMedia5ResetEv @ 113 NONAME
+	_ZN9CGlxMedia9SetValueLERK13TMPXAttributePv17TMPXAttributeType @ 114 NONAME
+	_ZN9CGlxMediaC1ERK11TGlxMediaId @ 115 NONAME
+	_ZN9CGlxMediaC2ERK11TGlxMediaId @ 116 NONAME
+	_ZN9CGlxMediaD0Ev @ 117 NONAME
+	_ZN9CGlxMediaD1Ev @ 118 NONAME
+	_ZN9CGlxMediaD2Ev @ 119 NONAME
+	_ZN9MGlxCache9InstanceLEv @ 120 NONAME
+	_ZN9TGlxMedia23DeleteLocationAttributeEv @ 121 NONAME
+	_ZN9TGlxMedia9MatchByIdERKS_S1_ @ 122 NONAME
+	_ZNK14CGlxListWindow2AtEi @ 123 NONAME
+	_ZNK14CGlxListWindow8IteratorEv @ 124 NONAME
+	_ZNK20CGlxUStringConverter9AsStringLERK9TGlxMediaRK13TMPXAttributeiRP7HBufC16 @ 125 NONAME
+	_ZNK21TGlxSelectionIterator7InRangeEi @ 126 NONAME
+	_ZNK22CGlxImageViewerManager15ImageFileHandleEv @ 127 NONAME
+	_ZNK9CGlxMedia12GetValueTextER7TPtrC16RK13TMPXAttribute @ 128 NONAME
+	_ZNK9CGlxMedia12ValueCObjectERK13TMPXAttribute @ 129 NONAME
+	_ZNK9CGlxMedia9ValueTextERK13TMPXAttribute @ 130 NONAME
+	_ZNK9TGlxMedia11GetDurationERf @ 131 NONAME
+	_ZNK9TGlxMedia11GetIconInfoER9TIconInfo @ 132 NONAME
+	_ZNK9TGlxMedia13GetCoordinateER11TCoordinate @ 133 NONAME
+	_ZNK9TGlxMedia13GetDimensionsER5TSize @ 134 NONAME
+	_ZNK9TGlxMedia13GetFrameCountERi @ 135 NONAME
+	_ZNK9TGlxMedia13GetSystemItemERi @ 136 NONAME
+	_ZNK9TGlxMedia14GetDrmValidityER30TGlxMediaGeneralRightsValidity @ 137 NONAME
+	_ZNK9TGlxMedia14IsDrmProtectedEv @ 138 NONAME
+	_ZNK9TGlxMedia15GetDrmProtectedERi @ 139 NONAME
+	_ZNK9TGlxMedia18ThumbnailAttributeER13TMPXAttribute @ 140 NONAME
+	_ZNK9TGlxMedia19GetClosestThumbnailER13TMPXAttributeRK5TSizei @ 141 NONAME
+	_ZNK9TGlxMedia19GetLastModifiedDateER5TTime @ 142 NONAME
+	_ZNK9TGlxMedia20GetStaticItemCommandERi @ 143 NONAME
+	_ZNK9TGlxMedia21GetContainedItemCountERi @ 144 NONAME
+	_ZNK9TGlxMedia26IsSlideShowPlayableContentEv @ 145 NONAME
+	_ZNK9TGlxMedia38GetSlideshowPlayableContainedItemCountERi @ 146 NONAME
+	_ZNK9TGlxMedia3UriEv @ 147 NONAME
+	_ZNK9TGlxMedia5TitleEv @ 148 NONAME
+	_ZNK9TGlxMedia7CommentEv @ 149 NONAME
+	_ZNK9TGlxMedia7GetDateER5TTime @ 150 NONAME
+	_ZNK9TGlxMedia7GetSizeERi @ 151 NONAME
+	_ZNK9TGlxMedia8CategoryEv @ 152 NONAME
+	_ZNK9TGlxMedia8IsStaticEv @ 153 NONAME
+	_ZNK9TGlxMedia8MimeTypeEv @ 154 NONAME
+	_ZNK9TGlxMedia8SubTitleEv @ 155 NONAME
+	_ZNK9TGlxMedia9IdSpaceIdEv @ 156 NONAME
+	_ZTI13CGlxMediaList @ 157 NONAME
+	_ZTI14CGlxListWindow @ 158 NONAME
+	_ZTI15CGlxImageReader @ 159 NONAME
+	_ZTI16CGlxCacheManager @ 160 NONAME
+	_ZTI20CGlxAttributeContext @ 161 NONAME
+	_ZTI20CGlxGarbageCollector @ 162 NONAME
+	_ZTI20CGlxThumbnailContext @ 163 NONAME
+	_ZTI21TGlxExclusionIterator @ 164 NONAME
+	_ZTI21TGlxSelectionIterator @ 165 NONAME
+	_ZTI22TGlxSequentialIterator @ 166 NONAME
+	_ZTI22TGlxSpecificIdIterator @ 167 NONAME
+	_ZTI25TGlxFirstThenLastIterator @ 168 NONAME
+	_ZTI27CGlxDefaultAttributeContext @ 169 NONAME
+	_ZTI27CGlxDefaultThumbnailContext @ 170 NONAME
+	_ZTI28TGlxFromFocusOutwardIterator @ 171 NONAME
+	_ZTI33TGlxFromManualIndexBlockyIterator @ 172 NONAME
+	_ZTI34TGlxFromFocusOutwardBlockyIterator @ 173 NONAME
+	_ZTI34TGlxFromIndexOutwardBlockyIterator @ 174 NONAME
+	_ZTI40TGlxFromManualIndexOutwardBlockyIterator @ 175 NONAME
+	_ZTV13CGlxMediaList @ 176 NONAME
+	_ZTV14CGlxListWindow @ 177 NONAME
+	_ZTV15CGlxImageReader @ 178 NONAME
+	_ZTV16CGlxCacheManager @ 179 NONAME
+	_ZTV20CGlxAttributeContext @ 180 NONAME
+	_ZTV20CGlxGarbageCollector @ 181 NONAME
+	_ZTV20CGlxThumbnailContext @ 182 NONAME
+	_ZTV21TGlxExclusionIterator @ 183 NONAME
+	_ZTV21TGlxSelectionIterator @ 184 NONAME
+	_ZTV22TGlxSequentialIterator @ 185 NONAME
+	_ZTV22TGlxSpecificIdIterator @ 186 NONAME
+	_ZTV25TGlxFirstThenLastIterator @ 187 NONAME
+	_ZTV27CGlxDefaultAttributeContext @ 188 NONAME
+	_ZTV27CGlxDefaultThumbnailContext @ 189 NONAME
+	_ZTV28TGlxFromFocusOutwardIterator @ 190 NONAME
+	_ZTV33TGlxFromManualIndexBlockyIterator @ 191 NONAME
+	_ZTV34TGlxFromFocusOutwardBlockyIterator @ 192 NONAME
+	_ZTV34TGlxFromIndexOutwardBlockyIterator @ 193 NONAME
+	_ZTV40TGlxFromManualIndexOutwardBlockyIterator @ 194 NONAME
 
--- a/photosgallery/viewframework/medialists/inc/glxattributecontext.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/medialists/inc/glxattributecontext.h	Thu Jan 07 12:46:23 2010 +0200
@@ -70,6 +70,13 @@
 	 * Sets granularity of the item index array returned from AttributeRequestL
 	 */
 	IMPORT_C void SetGranularity(TUint aGranularity);
+	
+	/**
+	 * Sets the default fetch specification. 
+	 * @param aWidth the width of required bitmap. 
+	 * @param aHeight the heigth of required bitmap. 
+	 */
+	IMPORT_C void SetDefaultSpec(TInt aWidth, TInt aHeight);
 
 public: // From MGlxFetchContext
     /// See @ref MGlxFetchContext::AttributeRequestL
@@ -114,6 +121,9 @@
 	 * Granularity of the item index array returned from AttributeRequestL
 	 */
 	TUint iGranularity;
+	
+	/** Size of the default spec */
+	TSize iDefaultSpecSize;
 
 	/** Tester class */
 	friend class T_CGlxAttributeContext;
--- a/photosgallery/viewframework/medialists/src/glxattributecontext.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/medialists/src/glxattributecontext.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -23,6 +23,7 @@
 #include "glxtracer.h"
 #include "glxlog.h"
 #include "glxlistutils.h"
+#include "glxthumbnailattributeinfo.h"
 
 // Default granularity of items to request for
 const TUint KGlxAttributeContextDefaultGranularity = 200;
@@ -120,7 +121,7 @@
 //
 TInt CGlxAttributeContext::AttributeRequestL(const MGlxMediaList* aList, 
         RArray<TInt>& aItemIndices, RArray<TMPXAttribute>& aAttributes, 
-        CMPXAttributeSpecs*& /*aDetailedSpecs*/) const
+        CMPXAttributeSpecs*& aDetailedSpecs) const
     {
     TRACER("CGlxAttributeContext::AttributeRequestL");
     
@@ -170,6 +171,34 @@
             error = KErrNone;
             }
         }
+    
+    
+    // If the attribute request is for Thumbnail, Check if there is a match found.
+    // And set the size and thumbnail quality
+	TIdentityRelation<TMPXAttribute> matchContent(&TMPXAttribute::MatchContentId);
+	TMPXAttribute tnAttr(KGlxMediaIdThumbnail, 0);
+	
+	if (iAttributes.Find(tnAttr, matchContent) != KErrNotFound) 
+		{
+		// Allocate CMPXAttributeSpecs
+		CMPXAttributeSpecs* attributeSpecs = CMPXAttributeSpecs::NewL();
+		CleanupStack::PushL(attributeSpecs);
+		
+	attributeSpecs->SetTObjectValueL(
+	   TMPXAttribute( KGlxMediaIdThumbnail,
+					   KGlxAttribSpecThumbnailSize ), 
+					   TSize(iDefaultSpecSize.iWidth,iDefaultSpecSize.iHeight) );
+		
+		attributeSpecs->SetTObjectValueL(
+		   TMPXAttribute( KGlxMediaIdThumbnail,
+					   KGlxAttribSpecThumbnailQualityOverSpeed ), ETrue );
+		
+		aDetailedSpecs = attributeSpecs;
+		
+		// Pop from stack
+		CleanupStack::Pop(attributeSpecs);
+		
+		}
 
     // If an error was found, return KErrGeneral
     if (error != KErrNone)
@@ -372,3 +401,16 @@
     
     iFromFocusIterator.SetRangeOffsets(aRearOffset, aFrontOffset);
     }
+
+// -----------------------------------------------------------------------------
+// Sets the default fetch specification
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxAttributeContext::SetDefaultSpec(TInt aWidth, TInt aHeight)
+
+    {
+    TRACER( " CGlxAttributeContext::SetDefaultSpec");
+
+    iDefaultSpecSize = TSize(aWidth, aHeight);
+    }
+
--- a/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -50,6 +50,7 @@
 _LIT(KFileIdentifier, ":\\");
 #endif
 
+_LIT(KDefaultType, "image/jpg");
 /// How long to wait before rechecking for cleared temporary errors
 /// @todo Find optimal value for this
 const TInt KGlxTemporaryErrorRecheckPeriodInSeconds = 5;
@@ -629,27 +630,23 @@
                             
                             if (list->Collection().UidL().iUid == KGlxCollectionPluginImageViewerImplementationUid)
                                 {
-                                RDebug::Printf("void CGlxCacheManager::MaintainCacheL:ABC: IV TN");
                                 _LIT( KPrivateFolder, "\\Private\\" );    // Platsec private folder  
                                 TParsePtrC parse( item.Uri() );
                                 if( parse.PathPresent() &&
                                     parse.Path().Length() > KPrivateFolder().Length() &&
                                     parse.Path().Left( KPrivateFolder().Length() ).CompareF( KPrivateFolder ) == 0 )
                                     {
-                                    RDebug::Printf("void CGlxCacheManager::MaintainCacheL:ABC: In if");
                                     GLX_DEBUG1("KGlxCollectionPluginImageViewerImplementationUid - Fetch (Private) TN!");
                                     CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(iImageViewerInstance->ImageFileHandle());
                                     iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId));
-                                    CleanupStack::PopAndDestroy();
-                                    
+                                    CleanupStack::PopAndDestroy(source);
                                     }
                                 else
                                     {
-                                    RDebug::Printf("void CGlxCacheManager::MaintainCacheL:ABC: In else");
                                     GLX_DEBUG1("KGlxCollectionPluginImageViewerImplementationUid - Fetch TN!");
                                     CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(item.Uri(), 0);
                                     iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId));
-                                    CleanupStack::PopAndDestroy();
+                                    CleanupStack::PopAndDestroy(source);
                                     }
                                 }
                             else
@@ -659,7 +656,7 @@
 #else
 						    CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(item.Uri(), 0);
 						    iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId));
-						    CleanupStack::PopAndDestroy();
+						    CleanupStack::PopAndDestroy(source);
 #endif
                                 }
 		                    iThumbnailId = itemId;
@@ -704,7 +701,7 @@
                     if (collection.UidL().iUid == KGlxCollectionPluginImageViewerImplementationUid)
                         {
                         TInt mediaCnt = list->Count();
-                        
+                        TInt errInImage = KErrNone;
  
                         
                         GLX_DEBUG3("Image Viewer Collection - Attrib population! mediaCnt=%d, Media Id=%d",
@@ -714,15 +711,27 @@
                         iMPXMedia = NULL;
 
                         TFileName fileName;
-                        fileName.Append(iImageViewerInstance->ImageUri()->Des());
-                            
+                        //retrieve the filename as per the caller app.
+						if(!iImageViewerInstance->IsPrivate())
+                            {
+							//filemngr
+                            fileName.Append(iImageViewerInstance->ImageUri()->Des());
+                            }
+                        else
+                            {
+							//msging
+                            fileName.Append(iImageViewerInstance->ImageFileHandle().FullName(fileName));
+                            }
                         iMPXMedia = CMPXMedia::NewL();
                         if(!iReader)
                             {
-                            iReader = CGlxImageReader::NewL(*this);
-                            iSchedulerWait->Start();
+                            TRAP(errInImage,iReader = CGlxImageReader::NewL(*this));
+                            if(errInImage == KErrNone)
+                                {
+                                iSchedulerWait->Start();
+                                }
                             }
-
+                    
                         for ( TInt i = 0; i < iRequestedAttrs.Count(); i++ )
                             {
                             if ( iRequestedAttrs[i] == KMPXMediaGeneralId )
@@ -761,7 +770,30 @@
                                 }
                             else if ( iRequestedAttrs[i] == KMPXMediaGeneralSize )
                                 {
-                                iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 1000);
+				if(errInImage == KErrNone)
+					{
+					RFs fs; 
+					TInt err = fs.Connect();   
+					if(err == KErrNone)
+				    	{
+						TEntry entry;   
+                    	fs.Entry(fileName,entry);    
+						TInt sz;
+						sz = entry.iSize;   
+						fs.Close();                                    
+						iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, sz);
+						}
+					else
+				    	{
+						iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 0);
+						}
+					}
+                                // If any error while image is being decoded by image decorder, Need to set
+                                // default vaule for that image. Typical case is corrupted image.
+                                else
+                                    {
+                                    iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 0);
+                                    }
                                 }
                             else if ( iRequestedAttrs[i] == KMPXMediaGeneralDrive )
                                 {
@@ -770,9 +802,16 @@
                                 }
                             else if ( iRequestedAttrs[i] == KMPXMediaGeneralMimeType )
                                 {
-                                TDataType dataType;
-                                GetMimeType(fileName, dataType);
-                                iMPXMedia->SetTextValueL(KMPXMediaGeneralMimeType, dataType.Des());
+                                if(errInImage == KErrNone)
+                                    {
+                                    TDataType dataType;
+                                    GetMimeType(fileName, dataType);
+                                    iMPXMedia->SetTextValueL(KMPXMediaGeneralMimeType, dataType.Des());
+                                    }
+                                else
+                                    {
+                                    iMPXMedia->SetTextValueL(KMPXMediaGeneralMimeType, KDefaultType);
+                                    }                                
                                 }
                             else if ( iRequestedAttrs[i] == KMPXMediaGeneralDuration )
                                 {
@@ -784,10 +823,17 @@
                                 }
                             else if ( iRequestedAttrs[i] == KGlxMediaGeneralDimensions )
                                 {
-                                //need to fetch the original file dimensions
-                                TSize dimensions(iImgSz.iWidth,iImgSz.iHeight);
-
-                                iMPXMedia->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions);
+                                if(errInImage == KErrNone)
+                                    {
+                                    //need to fetch the original file dimensions
+                                    TSize dimensions(iImgSz.iWidth,iImgSz.iHeight);
+                                    iMPXMedia->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions);
+                                    }
+                                else
+                                    {
+                                    TSize dimensions(0,0);
+                                    iMPXMedia->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions);
+                                    }
                                 }
                             else if ( iRequestedAttrs[i] == KGlxMediaGeneralFramecount )
                                 {
@@ -1368,7 +1414,7 @@
 
     TUid uid;
     User::LeaveIfError( session.AppForDocument( aFileName, uid, aMimeType ) );
-    CleanupStack::PopAndDestroy(); // session
+    CleanupStack::PopAndDestroy(&session);
 
     }
 void CGlxCacheManager::ImageReadyL(const TInt& aError, const TSize aSz)
--- a/photosgallery/viewframework/medialists/src/glximagereader.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/medialists/src/glximagereader.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -69,10 +69,17 @@
 CGlxImageReader::~CGlxImageReader()
     {
     TRACER("CGlxImageReader::~");
-    
-    Cancel();
-    delete iFrame;
-    delete iImageDecoder;
+    if(iImageDecoder)
+        {
+        Cancel();
+        delete iImageDecoder;
+        }  
+
+    if(iFrame)
+        {
+        delete iFrame;
+        }
+
     if(iImgViewerMgr)
         {
         iImgViewerMgr->DeleteInstance();
@@ -89,7 +96,6 @@
     
     CActiveScheduler::Add(this);
     iIsLaunchedFromFMngr = EFalse;
-    TDataType imageType;
 
     iImgViewerMgr = CGlxImageViewerManager::InstanceL();
     if (iImgViewerMgr && iImgViewerMgr->IsPrivate())
@@ -97,47 +103,27 @@
         iIsLaunchedFromFMngr = ETrue;    
         }
     
-    GetFileTypeL(imageType);
+    TInt errInImage = KErrNone;
     if (iIsLaunchedFromFMngr)
         {
         // TODO type cast handle to RFile
-        iImageDecoder = CImageDecoder::FileNewL(iImgViewerMgr->ImageFileHandle(), ContentAccess::EPeek);
+        TRAP(errInImage,iImageDecoder = CImageDecoder::FileNewL(iImgViewerMgr->ImageFileHandle(), ContentAccess::EPeek));
         }
     else
-        { 
-        iImageDecoder = CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(), iImgViewerMgr->ImageUri()->Des());
+        {
+        TRAP(errInImage,iImageDecoder = CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(), iImgViewerMgr->ImageUri()->Des()));
         }
 
+    if(errInImage != KErrNone)
+        {
+        User::Leave(errInImage);
+        }
     iFrame = new(ELeave)CFbsBitmap();
     iFrame->Create(iImageDecoder->FrameInfo(0).iOverallSizeInPixels,iImageDecoder->FrameInfo(0).iFrameDisplayMode);
     iImageDecoder->Convert(&iStatus,*iFrame,0);
     SetActive();
     }
 
-// ---------------------------------------------------------
-// CGlxImageReader::GetFileTypeL
-// ---------------------------------------------------------
-//
-void CGlxImageReader::GetFileTypeL(TDataType aMimeType)
-    {
-    TRACER("CGlxImageReader::GetFileTypeL");
-    
-    RApaLsSession session;
-    User::LeaveIfError(session.Connect());
-    CleanupClosePushL(session);
-
-    TUid uid;
-    if(iIsLaunchedFromFMngr)
-        {
-        // TODO type cast handle to RFile
-        User::LeaveIfError(session.AppForDocument(iImgViewerMgr->ImageFileHandle(), uid, aMimeType));
-        }
-    else
-        {
-        User::LeaveIfError(session.AppForDocument(iImgViewerMgr->ImageUri()->Des(),uid,aMimeType));
-        }
-    CleanupStack::PopAndDestroy(); // session
-    }
 
 // ---------------------------------------------------------
 // CGlxImageReader::DoCancel
@@ -189,13 +175,13 @@
     attributeSet.GetValue(EIsProtected,drmProtected);
     if(!drmProtected)
         {
-        CleanupStack::PopAndDestroy();
+        CleanupStack::PopAndDestroy(&attributeSet);
         delete content;
         content = NULL;
         return EFalse;
         }
     attributeSet.GetValue(ECanView,rights);
-    CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy(&attributeSet);
 
     if(content)
         {
--- a/photosgallery/viewframework/medialists/src/glxmedialist.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/medialists/src/glxmedialist.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -39,16 +39,6 @@
 #include "mglxmedialistobserver.h"
 #include "glxmediastaticitemdefs.h"
 
-/**
- * Min & Max wait interval for a modify event, in microseconds
- * This is to allow thumbnail manager to procees the event first.
- */
-const TInt KModifyEventMinWaitInterval = 2000000;
-const TInt KModifyEventMaxWaitInterval = 3000000;
-/**
- * Maximum items count for minimum wait interval.
- */
-const TInt KMaxItemsCount = 500;
 namespace NGlxMediaList
     {
     /**
@@ -1520,31 +1510,6 @@
             }
 
         CleanupStack::PopAndDestroy(&itemIndices);
-        RPointerArray<CGlxMediaList>& mediaLists = iMediaListArray->Array();
-        TInt listCount = mediaLists.Count();
-        GLX_DEBUG2("ML:HandleItemModifiedL listCount=%d", listCount);
-        if (listCount > 0)
-            {
-            CGlxMediaList* mediaList = mediaLists[listCount-1];
-            // Force a delay to allow TNM to process the modified event
-            if (mediaList == this)
-                {
-                GLX_DEBUG3("ML:HandleItemModifiedL(wait) listCount=%d, Id=%d",
-                                                  listCount, id.Value());
-                TTimeIntervalMicroSeconds32 timeout;
-                timeout = (mediaList->Count() > KMaxItemsCount ?
-                  KModifyEventMaxWaitInterval : KModifyEventMinWaitInterval );
-                RTimer timer;
-                CleanupClosePushL(timer);
-                TRequestStatus status;
-                timer.CreateLocal();
-                timer.After(status, timeout);
-			 	// User::WaitForRequest() will add codescanner warning but is necessary 
-			 	// as User::WaitForAnyRequest() cannot be used in this case
-                User::WaitForRequest(status);
-                CleanupStack::PopAndDestroy(&timer);
-                }
-            }
         }
     }
 
--- a/photosgallery/viewframework/plugins/fullscreenviewplugin/data/2000A7C3.rss	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/plugins/fullscreenviewplugin/data/2000A7C3.rss	Thu Jan 07 12:46:23 2010 +0200
@@ -158,9 +158,9 @@
                     {
                     implementation_uid = KGlxImageViewerFullScreenViewImplementationId;
                     version_no = 1;
-                    display_name = "Tag fullscreen view";
+                    display_name = "Image Viewer fullscreen view";
                     default_data = "";
-                    opaque_data = "<p>0x200104DD;0x200071CC;0x200104E6;0x200104E6;0x200104E6;0x200104E6</p>"                
+                    opaque_data = "<p>0x200104DD;0x2000A775;0x200104E6;0x200104E6;0x200104E6;0x200104E6</p>"                
                     "<t>0x2000D24F</t>"
                     "<f>0x0002</f>"
                     "<i>"EMPXViewPluginPriorityLowest"</i>";
--- a/photosgallery/viewframework/plugins/fullscreenviewplugin/src/glxtagfullscreenviewplugin.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/plugins/fullscreenviewplugin/src/glxtagfullscreenviewplugin.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -98,7 +98,7 @@
     
    //For tag tile view
    GLX_LOG_INFO("Adding CGlxCommandHandlerRemoveFrom");
-   //iTileView->AddCommandHandlerL(CGlxCommandHandlerRemoveFrom::NewL(iTileView, EMPXTag)); 
+   iFullScreenView->AddCommandHandlerL(CGlxCommandHandlerRemoveFrom::NewL(iFullScreenView, EMPXTag)); 
 
     // set up help context info
     TGlxHelpContext helpInfo;
--- a/photosgallery/viewframework/plugins/fullscreenviewpluginbase/eabi/glxfullscreenviewpluginbaseu.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/plugins/fullscreenviewpluginbase/eabi/glxfullscreenviewpluginbaseu.def	Thu Jan 07 12:46:23 2010 +0200
@@ -1,12 +1,16 @@
 EXPORTS
-	_ZN28CGlxFullScreenViewPluginBase15ConstructViewLCEv @ 1 NONAME
-	_ZN28CGlxFullScreenViewPluginBase19AddCommandHandlersLEv @ 2 NONAME
-	_ZN28CGlxFullScreenViewPluginBase20GetResourceFilenameLER4TBufILi256EE @ 3 NONAME
-	_ZN28CGlxFullScreenViewPluginBaseC1Ev @ 4 NONAME
-	_ZN28CGlxFullScreenViewPluginBaseC2Ev @ 5 NONAME
-	_ZN28CGlxFullScreenViewPluginBaseD0Ev @ 6 NONAME
-	_ZN28CGlxFullScreenViewPluginBaseD1Ev @ 7 NONAME
-	_ZN28CGlxFullScreenViewPluginBaseD2Ev @ 8 NONAME
-	_ZTI28CGlxFullScreenViewPluginBase @ 9 NONAME
-	_ZTV28CGlxFullScreenViewPluginBase @ 10 NONAME
+	_ZN22CGlxImageViewerManager17IncrementRefCountEv @ 1 NONAME
+	_ZN22CGlxImageViewerManager8ImageUriEv @ 2 NONAME
+	_ZN22CGlxImageViewerManager9IsPrivateEv @ 3 NONAME
+	_ZN28CGlxFullScreenViewPluginBase15ConstructViewLCEv @ 4 NONAME
+	_ZN28CGlxFullScreenViewPluginBase19AddCommandHandlersLEv @ 5 NONAME
+	_ZN28CGlxFullScreenViewPluginBase20GetResourceFilenameLER4TBufILi256EE @ 6 NONAME
+	_ZN28CGlxFullScreenViewPluginBaseC1Ev @ 7 NONAME
+	_ZN28CGlxFullScreenViewPluginBaseC2Ev @ 8 NONAME
+	_ZN28CGlxFullScreenViewPluginBaseD0Ev @ 9 NONAME
+	_ZN28CGlxFullScreenViewPluginBaseD1Ev @ 10 NONAME
+	_ZN28CGlxFullScreenViewPluginBaseD2Ev @ 11 NONAME
+	_ZNK22CGlxImageViewerManager15ImageFileHandleEv @ 12 NONAME
+	_ZTI28CGlxFullScreenViewPluginBase @ 13 NONAME
+	_ZTV28CGlxFullScreenViewPluginBase @ 14 NONAME
 
--- a/photosgallery/viewframework/plugins/fullscreenviewpluginbase/src/glxfullscreenviewpluginbase.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/plugins/fullscreenviewpluginbase/src/glxfullscreenviewpluginbase.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -257,15 +257,6 @@
     GLX_LOG_INFO("Adding CGlxCommandHandlerAiwShowMapHardKey");
     iFullScreenView->AddCommandHandlerL(CGlxCommandHandlerAiwShowMapHardKey::NewL(
             iFullScreenView, ETrue));
-
-    GLX_LOG_INFO("Adding CGlxCommandHandlerRemoveFrom");
-    iFullScreenView->AddCommandHandlerL(CGlxCommandHandlerRemoveFrom::
-            NewL(iFullScreenView, EMPXTag));
-    
-    GLX_LOG_INFO("Adding CGlxCommandHandlerRemoveFromFavourites");
-    iFullScreenView->AddCommandHandlerL(CGlxCommandHandlerRemoveFrom::
-            NewRemFromFavCommandHandlerL(iFullScreenView ));
-
     }
 
 // ---------------------------------------------------------------------------
--- a/photosgallery/viewframework/plugins/gridviewplugin/data/glxgridviewdata.rss	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/plugins/gridviewplugin/data/glxgridviewdata.rss	Thu Jan 07 12:46:23 2010 +0200
@@ -223,7 +223,8 @@
                               txt = qtn_lgal_options_add_to_album; 
                               flags = EEikMenuItemSpecific; },                  
                   MENU_ITEM { command = EGlxCmdAddTag;
-                              txt = qtn_lgal_options_properties_add_tag; }, 
+                              txt = qtn_lgal_options_properties_add_tag;
+                              flags = EEikMenuItemSpecific;}, 
                   MENU_ITEM { command = EGlxCmdAiwAssign;
                               txt = qtn_lgal_options_use_items; 
                               cascade = AIW_INTELLIGENT_CASCADE_ID|AIW_LOCK_SUBMENU_TITLE; },                     
@@ -272,14 +273,15 @@
         MENU_ITEM { command = EGlxCmdAiwEdit; 
                     txt = qtn_lgal_options_edit; 
                     cascade = AIW_INTELLIGENT_CASCADE_ID|AIW_LOCK_SUBMENU_TITLE; 
-                    flags = EEikMenuItemSpecific;},
+                    flags = EEikMenuItemSpecificListQuery;},
         MENU_ITEM { command = EGlxCmdDetails;
                     txt = qtn_lgal_options_details; },    
         MENU_ITEM { command = EGlxCmdMarkingSubmenu;
                     txt = qtn_options_list;
                     cascade = r_viu_editlist_menu; },                        
         MENU_ITEM { command = EGlxCmdAddToAlbum;
-                    txt = qtn_lgal_options_add_to_album; },
+                    txt = qtn_lgal_options_add_to_album;
+                    flags = EEikMenuItemSpecific;},
         MENU_ITEM { command = EGlxCmdAddTag;
                     txt = qtn_lgal_options_properties_add_tag; 
                     flags = EEikMenuItemSpecific; }, 
--- a/photosgallery/viewframework/texturemanager/bwins/glxtexturemanageru.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/texturemanager/bwins/glxtexturemanageru.def	Thu Jan 07 12:46:23 2010 +0200
@@ -1,17 +1,19 @@
 EXPORTS
-	?CreateColorAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@HVTRgb@@0HVTSize@@@Z @ 1 NONAME ; class CAlfTexture & CGlxTextureManager::CreateColorAvkonIconTextureL(class TAknsItemID const &, int, class TRgb, class TAknsItemID const &, int, class TSize)
-	?CreateFlatColourTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@VTRgb@@@Z @ 2 NONAME ; class CAlfTexture & CGlxTextureManager::CreateFlatColourTextureL(class TRgb)
-	?CreateAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@HVTSize@@@Z @ 3 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAvkonIconTextureL(class TAknsItemID const &, int, class TSize)
-	?CreateIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@HAAVTDesC16@@VTSize@@@Z @ 4 NONAME ; class CAlfTexture & CGlxTextureManager::CreateIconTextureL(int, class TDesC16 &, class TSize)
-	?CreateZoomedTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTGlxMedia@@ABVTMPXAttribute@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@PAVMGlxTextureObserver@@@Z @ 5 NONAME ; class CAlfTexture & CGlxTextureManager::CreateZoomedTextureL(class TGlxMedia const &, class TMPXAttribute const &, class TGlxId<class TGlxIdSpaceIdBase>, class MGlxTextureObserver *)
-	?NewL@CGlxTextureManager@@SAPAV1@AAVCAlfTextureManager@@@Z @ 6 NONAME ; class CGlxTextureManager * CGlxTextureManager::NewL(class CAlfTextureManager &)
-	?RemoveTexture@CGlxTextureManager@@QAEXABVTGlxMediaId@@H@Z @ 7 NONAME ; void CGlxTextureManager::RemoveTexture(class TGlxMediaId const &, int)
-	?TextureNeedsUpdating@CGlxTextureManager@@QAEHVTGlxMedia@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@ABVTSize@@@Z @ 8 NONAME ; int CGlxTextureManager::TextureNeedsUpdating(class TGlxMedia, class TGlxId<class TGlxIdSpaceIdBase>, class TSize const &)
-	?RemoveTexture@CGlxTextureManager@@QAEXABVCAlfTexture@@@Z @ 9 NONAME ; void CGlxTextureManager::RemoveTexture(class CAlfTexture const &)
-	?RemoveZoomList@CGlxTextureManager@@QAEXXZ @ 10 NONAME ; void CGlxTextureManager::RemoveZoomList(void)
-	?CreateAnimatedGifTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTDesC16@@ABVTSize@@@Z @ 11 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAnimatedGifTextureL(class TDesC16 const &, class TSize const &)
-	?CreateAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@VTSize@@@Z @ 12 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAvkonIconTextureL(class TAknsItemID const &, class TSize)
-	?CreateColorIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@HAAVTDesC16@@VTRgb@@ABVTAknsItemID@@HVTSize@@@Z @ 13 NONAME ; class CAlfTexture & CGlxTextureManager::CreateColorIconTextureL(int, class TDesC16 &, class TRgb, class TAknsItemID const &, int, class TSize)
-	?CreateThumbnailTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTGlxMedia@@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@ABVTSize@@PAVMGlxTextureObserver@@H@Z @ 14 NONAME ; class CAlfTexture & CGlxTextureManager::CreateThumbnailTextureL(class TGlxMedia const &, class TGlxId<class TGlxIdSpaceIdBase> const &, class TSize const &, class MGlxTextureObserver *, int)
-	?CreateNewTextureForMediaL@CGlxTextureManager@@QAEAAVCAlfTexture@@VTSize@@ABVTGlxMedia@@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@PAVMGlxTextureObserver@@@Z @ 15 NONAME ; class CAlfTexture & CGlxTextureManager::CreateNewTextureForMediaL(class TSize, class TGlxMedia const &, class TGlxId<class TGlxIdSpaceIdBase> const &, class MGlxTextureObserver *)
+	?FlushTextures@CGlxTextureManager@@QAEXXZ @ 1 NONAME ; void CGlxTextureManager::FlushTextures(void)
+	?CreateZoomedTextureL@CGlxTextureManager@@QAEPAVCAlfTexture@@XZ @ 2 NONAME ; class CAlfTexture * CGlxTextureManager::CreateZoomedTextureL(void)
+	?CreateColorAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@HVTRgb@@0HVTSize@@@Z @ 3 NONAME ; class CAlfTexture & CGlxTextureManager::CreateColorAvkonIconTextureL(class TAknsItemID const &, int, class TRgb, class TAknsItemID const &, int, class TSize)
+	?CreateFlatColourTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@VTRgb@@@Z @ 4 NONAME ; class CAlfTexture & CGlxTextureManager::CreateFlatColourTextureL(class TRgb)
+	?CreateAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@HVTSize@@@Z @ 5 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAvkonIconTextureL(class TAknsItemID const &, int, class TSize)
+	?CreateIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@HAAVTDesC16@@VTSize@@@Z @ 6 NONAME ; class CAlfTexture & CGlxTextureManager::CreateIconTextureL(int, class TDesC16 &, class TSize)
+	?CreateZoomedTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTGlxMedia@@ABVTMPXAttribute@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@PAVMGlxTextureObserver@@@Z @ 7 NONAME ; class CAlfTexture & CGlxTextureManager::CreateZoomedTextureL(class TGlxMedia const &, class TMPXAttribute const &, class TGlxId<class TGlxIdSpaceIdBase>, class MGlxTextureObserver *)
+	?NewL@CGlxTextureManager@@SAPAV1@AAVCAlfTextureManager@@@Z @ 8 NONAME ; class CGlxTextureManager * CGlxTextureManager::NewL(class CAlfTextureManager &)
+	?RemoveTexture@CGlxTextureManager@@QAEXABVTGlxMediaId@@H@Z @ 9 NONAME ; void CGlxTextureManager::RemoveTexture(class TGlxMediaId const &, int)
+	?TextureNeedsUpdating@CGlxTextureManager@@QAEHVTGlxMedia@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@ABVTSize@@@Z @ 10 NONAME ; int CGlxTextureManager::TextureNeedsUpdating(class TGlxMedia, class TGlxId<class TGlxIdSpaceIdBase>, class TSize const &)
+	?RemoveTexture@CGlxTextureManager@@QAEXABVCAlfTexture@@@Z @ 11 NONAME ; void CGlxTextureManager::RemoveTexture(class CAlfTexture const &)
+	?RemoveZoomList@CGlxTextureManager@@QAEXXZ @ 12 NONAME ; void CGlxTextureManager::RemoveZoomList(void)
+	?CreateAnimatedGifTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTDesC16@@ABVTSize@@@Z @ 13 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAnimatedGifTextureL(class TDesC16 const &, class TSize const &)
+	?CreateAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@VTSize@@@Z @ 14 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAvkonIconTextureL(class TAknsItemID const &, class TSize)
+	?CreateColorIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@HAAVTDesC16@@VTRgb@@ABVTAknsItemID@@HVTSize@@@Z @ 15 NONAME ; class CAlfTexture & CGlxTextureManager::CreateColorIconTextureL(int, class TDesC16 &, class TRgb, class TAknsItemID const &, int, class TSize)
+	?CreateThumbnailTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTGlxMedia@@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@ABVTSize@@PAVMGlxTextureObserver@@H@Z @ 16 NONAME ; class CAlfTexture & CGlxTextureManager::CreateThumbnailTextureL(class TGlxMedia const &, class TGlxId<class TGlxIdSpaceIdBase> const &, class TSize const &, class MGlxTextureObserver *, int)
+	?CreateNewTextureForMediaL@CGlxTextureManager@@QAEAAVCAlfTexture@@VTSize@@ABVTGlxMedia@@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@PAVMGlxTextureObserver@@@Z @ 17 NONAME ; class CAlfTexture & CGlxTextureManager::CreateNewTextureForMediaL(class TSize, class TGlxMedia const &, class TGlxId<class TGlxIdSpaceIdBase> const &, class MGlxTextureObserver *)
 
--- a/photosgallery/viewframework/texturemanager/eabi/glxtexturemanageru.def	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/texturemanager/eabi/glxtexturemanageru.def	Thu Jan 07 12:46:23 2010 +0200
@@ -1,21 +1,23 @@
 EXPORTS
-	_ZN18CGlxTextureManager13RemoveTextureERK11CAlfTexture @ 1 NONAME
-	_ZN18CGlxTextureManager13RemoveTextureERK11TGlxMediaIdi @ 2 NONAME
-	_ZN18CGlxTextureManager14RemoveZoomListEv @ 3 NONAME
-	_ZN18CGlxTextureManager18CreateIconTextureLEiR7TDesC165TSize @ 4 NONAME
-	_ZN18CGlxTextureManager20CreateZoomedTextureLERK9TGlxMediaRK13TMPXAttribute6TGlxIdI17TGlxIdSpaceIdBaseEP19MGlxTextureObserver @ 5 NONAME
-	_ZN18CGlxTextureManager20TextureNeedsUpdatingE9TGlxMedia6TGlxIdI17TGlxIdSpaceIdBaseERK5TSize @ 6 NONAME
-	_ZN18CGlxTextureManager23CreateAvkonIconTextureLERK11TAknsItemID5TSize @ 7 NONAME
-	_ZN18CGlxTextureManager23CreateAvkonIconTextureLERK11TAknsItemIDi5TSize @ 8 NONAME
-	_ZN18CGlxTextureManager23CreateColorIconTextureLEiR7TDesC164TRgbRK11TAknsItemIDi5TSize @ 9 NONAME
-	_ZN18CGlxTextureManager23CreateThumbnailTextureLERK9TGlxMediaRK6TGlxIdI17TGlxIdSpaceIdBaseERK5TSizeP19MGlxTextureObserveri @ 10 NONAME
-	_ZN18CGlxTextureManager24CreateFlatColourTextureLE4TRgb @ 11 NONAME
-	_ZN18CGlxTextureManager25CreateAnimatedGifTextureLERK7TDesC16RK5TSize @ 12 NONAME
-	_ZN18CGlxTextureManager25CreateNewTextureForMediaLE5TSizeRK9TGlxMediaRK6TGlxIdI17TGlxIdSpaceIdBaseEP19MGlxTextureObserver @ 13 NONAME
-	_ZN18CGlxTextureManager28CreateColorAvkonIconTextureLERK11TAknsItemIDi4TRgbS2_i5TSize @ 14 NONAME
-	_ZN18CGlxTextureManager4NewLER18CAlfTextureManager @ 15 NONAME
-	_ZTI22CGlxTextureManagerImpl @ 16 NONAME
-	_ZTI24CGlxBitmapDecoderWrapper @ 17 NONAME
-	_ZTV22CGlxTextureManagerImpl @ 18 NONAME
-	_ZTV24CGlxBitmapDecoderWrapper @ 19 NONAME
+	_ZN18CGlxTextureManager13FlushTexturesEv @ 1 NONAME
+	_ZN18CGlxTextureManager13RemoveTextureERK11CAlfTexture @ 2 NONAME
+	_ZN18CGlxTextureManager13RemoveTextureERK11TGlxMediaIdi @ 3 NONAME
+	_ZN18CGlxTextureManager14RemoveZoomListEv @ 4 NONAME
+	_ZN18CGlxTextureManager18CreateIconTextureLEiR7TDesC165TSize @ 5 NONAME
+	_ZN18CGlxTextureManager20CreateZoomedTextureLERK9TGlxMediaRK13TMPXAttribute6TGlxIdI17TGlxIdSpaceIdBaseEP19MGlxTextureObserver @ 6 NONAME
+	_ZN18CGlxTextureManager20CreateZoomedTextureLEv @ 7 NONAME
+	_ZN18CGlxTextureManager20TextureNeedsUpdatingE9TGlxMedia6TGlxIdI17TGlxIdSpaceIdBaseERK5TSize @ 8 NONAME
+	_ZN18CGlxTextureManager23CreateAvkonIconTextureLERK11TAknsItemID5TSize @ 9 NONAME
+	_ZN18CGlxTextureManager23CreateAvkonIconTextureLERK11TAknsItemIDi5TSize @ 10 NONAME
+	_ZN18CGlxTextureManager23CreateColorIconTextureLEiR7TDesC164TRgbRK11TAknsItemIDi5TSize @ 11 NONAME
+	_ZN18CGlxTextureManager23CreateThumbnailTextureLERK9TGlxMediaRK6TGlxIdI17TGlxIdSpaceIdBaseERK5TSizeP19MGlxTextureObserveri @ 12 NONAME
+	_ZN18CGlxTextureManager24CreateFlatColourTextureLE4TRgb @ 13 NONAME
+	_ZN18CGlxTextureManager25CreateAnimatedGifTextureLERK7TDesC16RK5TSize @ 14 NONAME
+	_ZN18CGlxTextureManager25CreateNewTextureForMediaLE5TSizeRK9TGlxMediaRK6TGlxIdI17TGlxIdSpaceIdBaseEP19MGlxTextureObserver @ 15 NONAME
+	_ZN18CGlxTextureManager28CreateColorAvkonIconTextureLERK11TAknsItemIDi4TRgbS2_i5TSize @ 16 NONAME
+	_ZN18CGlxTextureManager4NewLER18CAlfTextureManager @ 17 NONAME
+	_ZTI22CGlxTextureManagerImpl @ 18 NONAME
+	_ZTI24CGlxBitmapDecoderWrapper @ 19 NONAME
+	_ZTV22CGlxTextureManagerImpl @ 20 NONAME
+	_ZTV24CGlxBitmapDecoderWrapper @ 21 NONAME
 
--- a/photosgallery/viewframework/texturemanager/inc/glxtexturemanager.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/texturemanager/inc/glxtexturemanager.h	Thu Jan 07 12:46:23 2010 +0200
@@ -188,6 +188,13 @@
                                             TGlxIdSpaceId aIdSpaceId, MGlxTextureObserver* aObserver);
 
     /**
+    * Create a texture from a zoomed thumbnail for a given texture ID
+    * @param aTextureId The texture id, for which the texture is removed.
+    * @return Created texture
+    */
+    IMPORT_C CAlfTexture* CreateZoomedTextureL() ;
+    
+    /**
     * Create an animated texture from a GIF file
     * @param aFilename The filename of the GIF file
     * @param aSize The size of the GIF file
@@ -225,6 +232,11 @@
     */
     IMPORT_C void RemoveTexture(const TGlxMediaId& aMediaId, TBool aAllTexture=EFalse);
     
+    /**
+       * Removes ALL Textures 
+       */
+    IMPORT_C void FlushTextures() ;
+    
 public: // from MGlxSkinChangeObserver
 
     void HandleSkinChanged();    
--- a/photosgallery/viewframework/texturemanager/inc/glxtexturemanagerimpl.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/texturemanager/inc/glxtexturemanagerimpl.h	Thu Jan 07 12:46:23 2010 +0200
@@ -144,6 +144,13 @@
                                             TGlxIdSpaceId aIdSpaceId, MGlxTextureObserver* aObserver);
 
     /**
+    * If we have a texture ID, we recreate the Zoomed texture based on that
+    * 
+    * @param aTextureID the texture ID to create the texture on. 
+    */
+    CAlfTexture* CreateZoomedTextureL( );
+
+    /**
     * Create an animated texture from a GIF file
     * @param aFilename The filename of the GIF file
     * @param aSize The size of the GIF file
@@ -158,6 +165,13 @@
      * @param aTexture The texture to be removed
      */
     void RemoveTexture( const CAlfTexture& aTexture );
+    
+    /**
+     * Removes all Texteures 
+     * 
+     */
+    void FlushTextures() ;
+    
     /**
      * Removes the texture if it was created by CreateThumbnailTextureL or
      * CreateZoomedTextureL
--- a/photosgallery/viewframework/texturemanager/src/glxtexturemanager.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/texturemanager/src/glxtexturemanager.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -215,6 +215,17 @@
     }
 
 // -----------------------------------------------------------------------------
+// CreateZoomedTextureL
+// -----------------------------------------------------------------------------
+//  
+EXPORT_C CAlfTexture* CGlxTextureManager::CreateZoomedTextureL()
+    {
+    TRACER("CGlxTextureManager::CreateZoomedTextureL 2");
+    GLX_LOG_INFO( "CGlxTextureManager::CreateZoomedTextureL 2" );
+    return iImpl->CreateZoomedTextureL();
+    }
+
+// -----------------------------------------------------------------------------
 // CreateAnimatedGifTextureL
 // -----------------------------------------------------------------------------
 //  
@@ -262,6 +273,16 @@
     }
 
 // -----------------------------------------------------------------------------
+// FlushTextures
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxTextureManager::FlushTextures() 
+    {
+    TRACER("CGlxTextureManager::FlushTextures ");
+    iImpl->FlushTextures();
+    }
+
+// -----------------------------------------------------------------------------
 // IsBetterThumbnailAvailable
 // -----------------------------------------------------------------------------
 //  
--- a/photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -284,7 +284,7 @@
        TRAPD(err, texture = &iAlfTextureManager.CreateTextureL(
                                                icon.iTextureId, 
                                                this, 
-                                               EAlfTextureFlagDefault));                                     
+                                               EAlfTextureFlagDefault));
         if(err)
             {
             // if error delete entry and leave
@@ -298,7 +298,11 @@
             }
         }
 
-    User::LeaveIfNull(texture); //should not be possible        
+    if (NULL == texture)
+        {
+        User::Leave(KErrNotFound);
+        }
+    
     return *texture;
     }
 
@@ -324,6 +328,15 @@
     // create a new one.
     if (!GetThumbnailAttributeAndIndexL(aSize, aMedia, aIdSpaceId, thumbnailIndex, thumbNailAttribute))
         {
+        // only texture is missing. 
+        if ( (NULL != iThumbnailList[thumbnailIndex].iBitmap) && (NULL == iThumbnailList[thumbnailIndex].iTexture)) 
+            {
+            CAlfTexture* newTexture = &iAlfTextureManager.CreateTextureL(
+                                                                    iThumbnailList[thumbnailIndex].iTextureId, 
+                                                                    this, 
+                                                                    EAlfTextureFlagDefault);
+            iThumbnailList[thumbnailIndex].iTexture = newTexture ;
+            }
         return *iThumbnailList[thumbnailIndex].iTexture;
         }
          
@@ -517,6 +530,45 @@
             }
         }
     }
+
+// -----------------------------------------------------------------------------
+// FlushTextures Removes All Textures
+// -----------------------------------------------------------------------------
+//
+void CGlxTextureManagerImpl::FlushTextures()
+    {
+    TRACER("CGlxTextureManagerImpl::FlushTextures");
+
+    TInt textureID ;
+    TInt i = iThumbnailList.Count();
+    
+    while(i > 0)
+        {
+        --i;
+        textureID = iThumbnailList[i].iTextureId;
+        iAlfTextureManager.UnloadTexture(textureID );
+        iThumbnailList[i].iTexture = NULL;
+        }
+    
+    i = iIconList.Count();
+    while(i > 0)
+        {
+        --i;
+        textureID = iIconList[i].iTextureId;
+        iAlfTextureManager.UnloadTexture(textureID );
+        iIconList[i].iTexture = NULL;
+        }
+    
+    i = iZoomedList.Count();
+    while(i > 0)
+        {
+        --i;
+        textureID = iZoomedList[i].iTextureId;
+        iAlfTextureManager.UnloadTexture(textureID );
+        iZoomedList[i].iTexture = NULL;
+        }
+    }
+
 // -----------------------------------------------------------------------------
 // GetThumbnailAttributeAndIndexL
 // -----------------------------------------------------------------------------
@@ -551,10 +603,35 @@
                 }
             }
         }
-        
     return ETrue;
     }
-
+// -----------------------------------------------------------------------------
+// CreateNewTextureL
+// -----------------------------------------------------------------------------
+CAlfTexture* CGlxTextureManagerImpl::CreateZoomedTextureL()
+    {
+    TRACER("CGlxTextureManagerImpl::CreateZoomedTextureL");
+    TInt count = iZoomedList.Count();
+    TInt index = 0 ;
+    
+    for (index = count-1; index >=0  ; index--)
+        {
+        if (NULL == iZoomedList[index].iTexture)
+            {
+            if (NULL != iZoomedList[index].iBitmap)
+                {
+                // If we got this far we need to create a new texture
+                iZoomedList[index].iTextureId = NextTextureId();
+                iZoomedList[index].iTexture = &iAlfTextureManager.CreateTextureL(
+                                                                       iZoomedList[index].iTextureId, 
+                                                                       this, 
+                                                                       EAlfTextureFlagDefault);
+                return iZoomedList[index].iTexture ;
+                }
+            }
+        }
+    return NULL;
+    }
 // -----------------------------------------------------------------------------
 // CreateNewTextureL
 // -----------------------------------------------------------------------------
@@ -610,7 +687,7 @@
 	     //Add to the thumbnail list
         GLX_LOG_INFO("CGlxTextureManagerImpl::CreateNewTextureL iThumbnailList.Append ");
 	    iThumbnailList.Append(aThumbData); 	
-	    }   
+	    }
    else
 	   {
         GLX_LOG_INFO1("CGlxTextureManagerImpl::CreateNewTextureL,count=%d",iZoomedList.Count());
@@ -631,7 +708,6 @@
 	    iThumbnailList[index].iTexture = newTexture;
 	    iThumbnailList[index].iRequiredSize = aSize;
 	    }
-	    
 	else
 	    {
         GLX_LOG_INFO("CGlxTextureManagerImpl::CreateNewTextureL else aIsThumbnailTexture ");
@@ -656,7 +732,6 @@
     return *newTexture;
     }
 
-
 // -----------------------------------------------------------------------------
 // CreateZoomedTextureL
 // -----------------------------------------------------------------------------
@@ -667,13 +742,13 @@
     {
     TRACER("CGlxTextureManagerImpl::CreateZoomedTextureL");
     if(!iZoomDecoder)
-		{
-		 GLX_LOG_INFO("CGlxTextureManagerImpl:: CreateZoomedTextureL,iZoomDecoder == NULL");
-		 iZoomDecoder = CGlxBitmapDecoderWrapper::NewL(this);
-		}
-    
+        {
+        GLX_LOG_INFO("CGlxTextureManagerImpl:: CreateZoomedTextureL,iZoomDecoder == NULL");
+        iZoomDecoder = CGlxBitmapDecoderWrapper::NewL(this);
+        }
+        
     TGlxThumbnailIcon aThumbData;
-        
+            
     aThumbData.iTextureId = NextTextureId();
     aThumbData.iTexture = NULL;
     aThumbData.iAttribId = aAttribute;
@@ -693,7 +768,6 @@
 	iZoomedList[index].iObserver = aObserver ;  
 
 	iZoomDecoder->DoDecodeImageL(aMedia.Uri(), iZoomedList.Count()-1);
-		
 	return *(iZoomedList[index].iTexture);
     }
 
@@ -881,8 +955,12 @@
         }
 
     // Leave if bitmap or mask is NULL.
-    User::LeaveIfNull( aBitmap );
-
+    
+    if (NULL == aBitmap)
+        {
+        User::Leave(KErrNotFound);
+        }
+    
     // set size
     // In preference use requested size if there is one
     TInt height =TInt(iResUtil->PossToPixels(icon.iHeightInPoss));
@@ -1023,66 +1101,60 @@
     TBool textureCreated = ETrue;
     TInt textureID = -1;
     TInt textureToBeUnloaded = -1;
-    
+
     //check if the image is decoded
     if(aBitmap != NULL)
-		    {
-		    iZoomedList[aThumbnailIndex].iBitmap = aBitmap;
-  			
-  			//if we already have a texture then dont unload the texture before creating 
-  			//the next one. It might happen that because of low memory we might not be able
-  			//to create a new texture.
-			  if(iZoomedList[aThumbnailIndex].iTexture)
-			    {				    
-			    textureID = NextTextureId();
-			    textureToBeUnloaded = iZoomedList[aThumbnailIndex].iTextureId  ;   
-			    iZoomedList[aThumbnailIndex].iTextureId = textureID  ;
-			  	}
-			  else
-				  {
-				  textureID = iZoomedList[aThumbnailIndex].iTextureId;
-				  }
-				  		
-		    TRAPD(err, newTexture = &iAlfTextureManager.CreateTextureL(
-		    												 textureID, this, EAlfTextureFlagDefault));
-		    if ( KErrNone != err && KErrNoMemory == err )
-		        {  
-		        GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded ReleaseRam : START RAM  RELEASE");
-		        iCache->ReleaseRAML(ETrue);
-		        TRAPD(err, newTexture = &iAlfTextureManager.CreateTextureL(textureID, this, EAlfTextureFlagDefault));
-		        if ( KErrNone != err && KErrNoMemory == err )
-		            {
-		            GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded CreateTextureL : LOW MEMORY CONDITION");
-		            textureCreated = EFalse;
-		            }		
-		        }
-		    }    
-		    else
-		    {
-		     textureCreated = EFalse;	     
-		    }
-    
-    if(iZoomedList[aThumbnailIndex].iBitmap)
         {
-        GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded delete iBitmap");
-    		delete iZoomedList[aThumbnailIndex].iBitmap;
-    		iZoomedList[aThumbnailIndex].iBitmap = NULL;
+        iZoomedList[aThumbnailIndex].iBitmap = aBitmap;
+
+        //if we already have a texture then dont unload the texture before creating 
+        //the next one. It might happen that because of low memory we might not be able
+        //to create a new texture.
+        if(iZoomedList[aThumbnailIndex].iTexture)
+            {				    
+            textureID = NextTextureId();
+            textureToBeUnloaded = iZoomedList[aThumbnailIndex].iTextureId  ;   
+            iZoomedList[aThumbnailIndex].iTextureId = textureID  ;
+            }
+        else
+            {
+            textureID = iZoomedList[aThumbnailIndex].iTextureId;
+            }
+        
+        TRAPD(err, newTexture = &iAlfTextureManager.CreateTextureL(
+                                             textureID, this, EAlfTextureFlagDefault));
+        if ( KErrNone != err && KErrNoMemory == err )
+            {  
+            GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded ReleaseRam : START RAM  RELEASE");
+            iCache->ReleaseRAML(ETrue);
+            TRAPD(err, newTexture = &iAlfTextureManager.CreateTextureL(textureID, this, EAlfTextureFlagDefault));
+            if ( KErrNone != err && KErrNoMemory == err )
+                {
+                GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded CreateTextureL : LOW MEMORY CONDITION");
+                textureCreated = EFalse;
+                }		
+            }
+        }    
+    else
+        {
+        textureCreated = EFalse;	     
         }
-        
+
+
+
     if (textureCreated && (NULL != newTexture))
         {
         GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded textureCreated && newTexture");
         //If the new texture is created then unload the old texture and store the new texture and textureID.
         if(iZoomedList[aThumbnailIndex].iTexture)
-				    {				    
-				    GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded Unloading Old Texture");
-				    iAlfTextureManager.UnloadTexture(textureToBeUnloaded );
-				  	}
-				iZoomedList[aThumbnailIndex].iTextureId = textureID;
-				
+            {				    
+            GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded Unloading Old Texture");
+            iAlfTextureManager.UnloadTexture(textureToBeUnloaded );
+            }
+        iZoomedList[aThumbnailIndex].iTextureId = textureID;
         iZoomedList[aThumbnailIndex].iTexture = newTexture;
         }
-    
+
     if (iZoomedList[aThumbnailIndex].iObserver)
         {
         GLX_LOG_INFO("CGlxTextureManagerImpl::HandleBitmapDecoded TextureContentChangedL");
--- a/photosgallery/viewframework/uiutilities/src/glxuiutility.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/uiutilities/src/glxuiutility.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -673,7 +673,6 @@
 EXPORT_C TBool CGlxUiUtility::IsExitingState()
     {
     TRACER("CGlxUiUtility::ExitingState");
-    RDebug::Printf("iIsExiting = %d", iIsExiting);
     return iIsExiting;
     }
 
--- a/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Thu Jan 07 12:46:23 2010 +0200
@@ -227,10 +227,10 @@
     /*
     * Calculates and returns the Initial Zoom factor
     */		
-    TInt GetIntialZoomLevel();
+    TInt GetInitialZoomLevel();
     
     /*
-    * Calls GetIntialZoomLevel() to get the Zoom Level and Sets the Value to the
+    * Calls GetInitialZoomLevel() to get the Zoom Level and Sets the Value to the
     * Slider Level
     */
     void SetSliderLevel();
--- a/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -74,13 +74,11 @@
 #define GetAppViewUi() (dynamic_cast<CAknViewAppUi*>(CEikonEnv::Static()->EikAppUi()))
 const TInt KGlxScreenTimeout =10000000;
 const TInt KCoverflowDataWindowSize = 1;
-const TInt KGlxRotationDelay = 800;    // Milliseconds
 const TInt KGlxMaxSmallImageZoomLevel =150;
 const TInt KGlxMaxBigImageZoomLevel   =100;
 const TInt KGlxMinSmallImageZoomLevel =100;
 const TInt KGlxNeutralPinchPosition   =100;
 const TInt KGlxSliderTickValue        =5;
-_LIT(KGlxIconsFilename, "glxicons.mif");
 /**
  * Start Delay for the periodic timer, in microseconds
  */
@@ -291,6 +289,12 @@
 		const TDesC8 & /* aCustomMessage */)
 	{
     TRACER("CGlxFullScreenViewImp::DoMLViewActivateL");
+    // hide the toolbar
+    CAknToolbar* toolbar = Toolbar();
+    if(toolbar)
+        {
+        toolbar->SetToolbarVisibility(EFalse); 
+        }
     	//Fix For EPKA-7U5DT7-slideshow launched from FullScreen and connect USB in mass storage mode results in Photos crash
 	if(!iMediaList->Count())
 		{
@@ -317,6 +321,9 @@
             }    
 	    }
     iScreenFurniture->SetActiveView(iViewUid);
+
+    // create the screen furniture for touch devices
+    CreateScreenFurnitureL();
     
     //set the ui state to off,when the Fullscreen launches
     SetUiSate(NGlxNFullScreenUIState::EUiOff);
@@ -326,8 +333,6 @@
     // create the coverflow
     CreateCoverflowWidgetL();
     
-    // create the screen furniture for touch devices
-    CreateScreenFurnitureL();
     
     CreateSliderWidgetL();
     
@@ -391,13 +396,13 @@
     iCoverFlowWidget->SetFlags(IMulMultiItemWidget::EMulWidgetDoubleTap);
 
     // Widget takes the ownership
-        iCoverFlowWidget->AddEventHandler (*this);
-    
-        // hide appui's status pane  
-        GetAppViewUi()->StatusPane()->MakeVisible(EFalse);
-    
-        // hide appui's softkeys
-        GetAppViewUi()->Cba()->MakeVisible(EFalse);
+    iCoverFlowWidget->AddEventHandler (*this);
+
+    // hide appui's status pane  
+    GetAppViewUi()->StatusPane()->MakeVisible(EFalse);
+
+    // hide appui's softkeys
+    GetAppViewUi()->Cba()->MakeVisible(EFalse);
     iCoverFlowWidget->ShowWidget(ETrue);
     iCoverFlowWidget->control()->AcquireFocus();
 
@@ -555,6 +560,9 @@
     CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
     CleanupStack::PushL( cba );
     cba->SetCommandSetL(R_GLX_FULLSCREEN_SOFTKEYS);
+    // hide the softkeys
+    cba->MakeVisible( EFalse );
+    cba->DrawNow();
     CleanupStack::Pop(cba);
     }
 
@@ -665,11 +673,10 @@
             if(iZoomControl && !iZoomControl->Activated())
                 {
                 iHdmiController->ActivateZoom();
-                iZoomControl->ActivateL(GetIntialZoomLevel(),aStartMode, focus, item, apZoomFocus);
-                
-                //==Removing all textures other than the focussed one===============
+                iZoomControl->ActivateL(GetInitialZoomLevel(),aStartMode, focus, item, apZoomFocus);
+
+                // Now to remove all textures other than the one we are focussing on.  
                 TInt count = iMediaList->Count();
-                
                 while (count > 0)
                     {
                     TGlxMedia mediaItem = iMediaList->Item(count-1);	
@@ -679,7 +686,6 @@
                         }
                     count--;
                     }
-                //==\Removing all textures==============
                 }
             else
                 {
@@ -755,14 +761,25 @@
     {
     TRACER("CGlxFullScreenViewImp::HandleForegroundEventL");
     CAknView::HandleForegroundEventL(aForeground);
+    
 	
-	if(!aForeground)
-	    {
-	    if(iZoomControl && iZoomControl->Activated())
-	        {
-			iZoomControl->HandleZoomForegroundEvent(aForeground);
-			}
-		}
+    if(iZoomControl && iZoomControl->Activated())
+        {
+        iZoomControl->HandleZoomForegroundEvent(aForeground);
+        }
+
+    if (!aForeground)
+        {
+        iUiUtility->GlxTextureManager().FlushTextures();
+        }
+    else
+        {
+        if (iMediaList && iMediaList->Count() && iMediaListMulModelProvider)
+            {
+            TInt focusIndex = iMediaList->FocusIndex();
+            iMediaListMulModelProvider->UpdateItems(focusIndex, 1);
+            }
+        }
     }
 
 
@@ -1053,14 +1070,10 @@
 	 // and activates the fullscreenview
 	 if((aControl == iZoomControl)&& (aCommandId == KGlxZoomOutCommand))
 	     {
-	     	SetSliderLevel();
-        DeactivateZoomControlL();
-        }
-    /*else if(aControl == iSingleLineMetaPane)
-        {
-        ProcessCommandL(aCommandId);
-        }*/
-    } 
+	     SetSliderLevel();
+	     DeactivateZoomControlL();
+	     }
+	 } 
 
 // ---------------------------------------------------------------------------
 // From HandleResourceChangeL..
@@ -1082,12 +1095,12 @@
     }   
 
 //----------------------------------------------------------------------------------
-// IntialZoomLevel:Calculate the initial Zoom Level for the Image
+// InitialZoomLevel:Calculate the initial Zoom Level for the Image
 //----------------------------------------------------------------------------------
 //
-TInt CGlxFullScreenViewImp::GetIntialZoomLevel()
+TInt CGlxFullScreenViewImp::GetInitialZoomLevel()
     {
-    TRACER("CGlxFullScreenViewImp::IntialZoomLevel");
+    TRACER("CGlxFullScreenViewImp::InitialZoomLevel");
     TInt focus     = iMediaList->FocusIndex();
     TGlxMedia item = iMediaList->Item( focus );
     TSize size;
@@ -1120,7 +1133,7 @@
     {
     TRACER("CGlxFullScreenViewImp::SetSliderLevel");
 
-    TInt value = GetIntialZoomLevel();
+    TInt value = GetInitialZoomLevel();
     if(iSliderModel)
         {
         iSliderModel->SetMinRange(value);
@@ -1308,5 +1321,5 @@
     TRACER("CGlxFullScreenViewImp::RemoveTexture");
     
     const TGlxMedia& item = iMediaList->Item(GetIndexToBeRemoved());
-     iUiUtility->GlxTextureManager().RemoveTexture(item.Id(),EFalse);
+    iUiUtility->GlxTextureManager().RemoveTexture(item.Id(),EFalse);
     }
--- a/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -558,7 +558,7 @@
 	
 	if(iMediaList == aList)
 		{
-		for(TInt i = aStartIndex;i <= aEndIndex; i++ )
+		for(TInt i = aEndIndex ;i >= aStartIndex; i-- )
 			{
 			iList->RemoveItem(i);
 			}
--- a/photosgallery/viewframework/views/metadatadialog/data/glxmetadatadialog.rss	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/metadatadialog/data/glxmetadatadialog.rss	Thu Jan 07 12:46:23 2010 +0200
@@ -109,7 +109,7 @@
                         {
                         identifier = EDateAndTimeItem;
                         setting_page_resource = r_metadata_name_settings_page;
-                        name = qtn_lgal_details_date_time;
+                        name = qtn_lgal_details_date_and_time;
                         empty_item_text = " ";
                         },
                     AVKON_SETTING_ITEM
@@ -374,7 +374,7 @@
 //
 RESOURCE TBUF r_glx_metadata_view_date_time_nseries
     {
-    buf = qtn_lgal_details_date_time;
+    buf = qtn_lgal_details_date_and_time;
     }
 // -----------------------------------------------------------------------------
 // reource for metadata view file size pane
@@ -415,6 +415,36 @@
 //===========================start of Imageviewer details Dialog================//
 //==============================================================================//
 
+RESOURCE EIK_APP_INFO
+    {
+    menubar = r_imgvwr_metadata_menubar;
+    cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
+    }
+    // -----------------------------------------------------------------------------
+// reource for menubar
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_BAR r_imgvwr_metadata_menubar
+	{
+	titles=
+		{
+		MENU_TITLE { menu_pane = r_imgvwr_metadata_menu; txt = qtn_lgal_title_details; }
+		};
+	}
+	
+
+// -----------------------------------------------------------------------------
+// reource for menupane
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_imgvwr_metadata_menu
+	{
+	items=
+		{
+		MENU_ITEM { command = EAknCmdHelp; txt = qtn_options_help; }
+	  	};
+	}
+	
 // -----------------------------------------------------------------------------
 // Metadata Dialog 
 // -----------------------------------------------------------------------------
@@ -452,7 +482,7 @@
                         {
                         identifier = EImgVwrDateAndTimeItem;
                         setting_page_resource = r_metadata_name_settings_page;
-                        name = qtn_lgal_details_date_time;
+                        name = qtn_lgal_details_date_and_time;
                         empty_item_text = " ";
                         },                        
                     AVKON_SETTING_ITEM
--- a/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatadialog.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatadialog.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -116,7 +116,7 @@
     iUiUtility = CGlxUiUtility::UtilityL(); 
 
     // Call the base class' two-phased constructor
-    CAknDialog::ConstructL( R_METADATA_MENUBAR );
+    CAknDialog::ConstructL( R_IMGVWR_METADATA_MENUBAR );
 
     } 
 
@@ -190,7 +190,36 @@
 // -----------------------------------------------------------------------------
 //
 void CGlxImgVwrMetadataDialog::ProcessCommandL( TInt aCommandId )
-    {}
+    {
+
+    TRACER("CGlxImgVwrMetadataDialog::ProcessCommandL");
+    // hide menu bar
+    iMenuBar->StopDisplayingMenuBar();
+    switch( aCommandId )
+        {
+        /// @todo need to put the proper help file.for the time being it will not do any thing.
+        /*
+        case EAknCmdHelp:
+            {
+            TCoeHelpContext helpContext;
+            helpContext.iMajor = TUid::Uid( KGlxGalleryApplicationUid );
+            helpContext.iContext.Copy( LGAL_HLP_DETAILS_VIEW );
+            const TInt KListSz = 1;
+            CArrayFix<TCoeHelpContext>* contextList =
+            new (ELeave) CArrayFixFlat<TCoeHelpContext>( KListSz );
+            CleanupStack::PushL(contextList);
+            contextList->AppendL(helpContext);
+            HlpLauncher::LaunchHelpApplicationL(
+            iEikonEnv->WsSession(), contextList );
+            CleanupStack::Pop( contextList );
+            break;
+            }*/
+        
+        default:
+            break;
+        }
+    
+    }
 //-----------------------------------------------------------------------------
 // CGlxImgVwrMetadataDialog::CreateCustomControlL
 //-----------------------------------------------------------------------------
--- a/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -543,12 +543,11 @@
     if( aMenuId == R_METADATA_MENU )
         {
         //Set dim the options based on the utem selected
-        //Edit option will be available only for ENameItem,EDescriptionItem,ETagsItem,EAlbumItem
         //Viewdetails option will be availble only for the license item
         //Delete option will be available only for the location item	
-        //aMenuPane->SetItemDimmed(KGlxEditBoundMenuCommandId,IsItemModifiable());
         aMenuPane->SetItemDimmed(KGlxViewBoundMenuCommandId,IsLicenseItem());
-        aMenuPane->SetItemDimmed(KGlxDeleteBoundMenuCommandId,IsLocationItem());
+        //location info will be enabled if the item has a location info
+		aMenuPane->SetItemDimmed(KGlxDeleteBoundMenuCommandId,IsLocationItem());
         aMenuPane->SetItemDimmed(EGlxCmdAiwShowMap,IsLocationItem());
         }
         
--- a/photosgallery/viewframework/views/zoomview/inc/glxzoomcontrol.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/zoomview/inc/glxzoomcontrol.h	Thu Jan 07 12:46:23 2010 +0200
@@ -220,7 +220,7 @@
 
     TBool HandlePointerEventsL(const TAlfEvent &aEvent);
     
-    TInt GetIntialZoomLevel(TSize& aSize );
+    TInt GetInitialZoomLevel(TSize& aSize );
 
 private:    // Data
     CAlfEnv* iEnv;                                      // AlfEnv
--- a/photosgallery/viewframework/views/zoomview/inc/glxzoomeventhandler.h	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/zoomview/inc/glxzoomeventhandler.h	Thu Jan 07 12:46:23 2010 +0200
@@ -62,6 +62,13 @@
     */     
     void CancelZoomPanTimer();
     
+    void CancelAnimationTimer();
+
+    /**
+    * Stops the timer for showing the UI. 
+    */ 
+    void CancelUITimer();
+    
     /*
      * ActivateZoom from the Zoom control
      */
@@ -167,10 +174,6 @@
     */ 
     void StartPanTimer();
     
-    /**
-    * Stops the timer for showing the UI. 
-    */ 
-    void CancelUITimer();
     
     /**
     * Starts the timer for showing the UI.
@@ -250,7 +253,6 @@
 
     void NextStepInerticPan();
 
-    void CancelAnimationTimer();
     
 
     
@@ -268,7 +270,7 @@
     TPoint              iStartDisplayPoint;             // The variable holds the starting pointer posistion to determine the Drag Distance
     TTime               iDoubleTap;                     // This Variable is used to determine the double tap,by using the difference of the time 
                                                         // between subsequent single Tap.
-    // [todo] do we need this variable to be global
+    // [todo] do we need this variable to be at a class level
     TInt                iZoomRatio;
     TRect               iDoubleTapRect;                 // This varaible holds the rect for the Double Tap
     TBool               iDragOngoing;                   // Is a drag event ongoing
@@ -278,25 +280,20 @@
     TPoint              iPreviousPointerPosition;
     TPoint              iPreviousDragStartPosition;
 
-    // for the animated zoom to 50 % allowed. 
     TBool               iIsZoomingInAnimatedState;
     TAnimationMode      iAnimatedZoomMode;
     CPeriodic*          iZoomAnimationTimer;
     TInt                iZoomPerInterval;
     TInt                iTargetAnimatedZoomRatio;
-    // for the animated zoom to 50 % allowed. END 
-
-    // For considering Zoom Focus. 
-    TPoint              iZoomFocus;            // Not used right now. WIll soon carry the coordinates of the zoom focus. 
-    // For considering Zoom Focus. END 
+    
     
-    // For Pan Inertia.
+    TPoint              iZoomFocus;             
+    
     GestureHelper::TGestureCode        iPreviousGestureCode ;
-    // For Pan Inertia. END
     
     
     
-    TGlxZoomAndPanMathsEngine iMathsEngine;             // The new Maths engine at the core of the Zoom Component
+    TGlxZoomAndPanMathsEngine iMathsEngine;             
     
     
     };
--- a/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp	Thu Dec 17 08:45:44 2009 +0200
+++ b/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp	Thu Jan 07 12:46:23 2010 +0200
@@ -195,7 +195,6 @@
     iImageVisual->SetScaleMode(CAlfImageVisual::EScaleFitInside);
 
     iEventHandler = CGlxZoomPanEventHandler::NewL(*this);
-    
     }
 
 // -----------------------------------------------------------------------------
@@ -275,12 +274,13 @@
         //This Varaiable updates that we are in zoom state now.
         iZoomActive = ETrue;
         //To Retrive the image details
-        TMPXAttribute thumbNailAttribute(0,0);        
+        TMPXAttribute thumbNailAttribute(0,0);
+
         TGlxIdSpaceId idspace = iMediaList.IdSpaceId( aFocusIndex );
         //Get the texture Created in fullscreen View.
         iImageTexture = &(iTextureMgr->CreateNewTextureForMediaL(
-              ScreenSize(),aItem, idspace, this ));
-        iImageVisual->SetImage(*iImageTexture);         
+                ScreenSize(),aItem, idspace, this ));
+        iImageVisual->SetImage(*iImageTexture);
         
         if(iGlxTvOut->IsConnected())
             {
@@ -292,52 +292,53 @@
             iZoomSliderWidget.AddEventHandler(*this);
             iZoomSliderWidget.SetHandleKeyEvent(EFalse);
             iZoomSliderModel = (IMulSliderModel*) iZoomSliderWidget.model();
-        // Get size, return value tells us if it was available
-        //We need this Value to calculate the size of the visual/Layout corresponding to the Zoom factor
-        TSize imageSize;
-        aItem.GetDimensions( imageSize );
-        TSize maxVirtualImageSize = imageSize;
-
-        if (KGlxDecodingThreshold < (imageSize.iWidth * imageSize.iHeight))
-            {
-            TReal areaRatio = TReal(imageSize.iWidth*imageSize.iHeight)/KGlxDecodingThreshold ;
-            
-            TReal sideRatio;
-            Math::Sqrt(sideRatio, areaRatio);
-
+            // Get size, return value tells us if it was available
+            //We need this Value to calculate the size of the visual/Layout corresponding to the Zoom factor
+            TSize imageSize;
+            aItem.GetDimensions( imageSize );
+            TSize maxVirtualImageSize = imageSize;
+    
+            if (KGlxDecodingThreshold < (imageSize.iWidth * imageSize.iHeight))
+                {
+                TReal areaRatio = TReal(imageSize.iWidth*imageSize.iHeight)/KGlxDecodingThreshold ;
+                
+                TReal sideRatio;
+                Math::Sqrt(sideRatio, areaRatio);
+                
+                maxVirtualImageSize.iHeight = imageSize.iHeight /  sideRatio ;
+                maxVirtualImageSize.iWidth  = imageSize.iWidth  /  sideRatio ;
+                }
             
-            maxVirtualImageSize.iHeight = imageSize.iHeight /  sideRatio ;
-            maxVirtualImageSize.iWidth  = imageSize.iWidth  /  sideRatio ;
-
-            }
-        
-        TInt initialZoomRatio = GetIntialZoomLevel(maxVirtualImageSize);
-        iZoomSliderModel->SetMinRange(initialZoomRatio);
-
-        iEventHandler->SetZoomActivated(ETrue);
-        iEventHandler->ActivateZoom(initialZoomRatio,
-                maxVirtualImageSize,
-                aStartMode,
-                iZoomSliderModel->MinRange(), 
-                iZoomSliderModel->MaxRange(),
-                maxVirtualImageSize,
-                aZoomFocus);
-        
-        TRAP_IGNORE(iImageTexture = 
-        &(iTextureMgr->CreateZoomedTextureL(aItem,thumbNailAttribute,idspace,this)));
-       
-        //This is for handling the alaram interrupt events,that causes the phone to freeze.
-        CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-        if (NULL != cba)
-            {
-            if (cba->IsVisible())
+            // Now since our maximum size possible is 3 MP. all our zoom percentages will be relative to it. 
+            // So our initial zoom ratio will be different and cnsequently our minimum slider value too will change. 
+            // Maximum is an
+            TInt initialZoomRatio = GetInitialZoomLevel(maxVirtualImageSize);
+            iZoomSliderModel->SetMinRange(initialZoomRatio);
+    
+            iEventHandler->SetZoomActivated(ETrue);
+            iEventHandler->ActivateZoom(initialZoomRatio,
+                    maxVirtualImageSize,
+                    aStartMode,
+                    iZoomSliderModel->MinRange(), 
+                    iZoomSliderModel->MaxRange(),
+                    maxVirtualImageSize,
+                    aZoomFocus);
+            
+            TRAP_IGNORE(iImageTexture = 
+            &(iTextureMgr->CreateZoomedTextureL(aItem,thumbNailAttribute,idspace,this)));
+           
+            //This is for handling the alaram interrupt events,that causes the phone to freeze.
+            CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
+            if (NULL != cba)
                 {
-                cba->ActivateL();
+                if (cba->IsVisible())
+                    {
+                    cba->ActivateL();
+                    }
                 }
             }
         }
     }
-}
 // ---------------------------------------------------------------------------
 // StartZoomAnimation
 // ---------------------------------------------------------------------------
@@ -433,9 +434,35 @@
 EXPORT_C void CGlxZoomControl::HandleZoomForegroundEvent(TBool aForeground)
     {
     TRACER("CGlxZoomControl::HandleZoomForegroundEventL()");
+
+    //Refeed the textures if we are coming back to foreground from background
+    //To Retrive the image details
+    TMPXAttribute thumbNailAttribute(0,0);
+    TInt focusIndex = iMediaList.FocusIndex();
+    TGlxIdSpaceId idspace = iMediaList.IdSpaceId( focusIndex );
+    //Get the texture Created in fullscreen View.
+    TGlxMedia item = iMediaList.Item( focusIndex );
+    
     if (!aForeground)
         {
         iEventHandler->CancelZoomPanTimer();
+        iEventHandler->CancelUITimer();
+        iEventHandler->CancelAnimationTimer();
+        }
+    else
+        {
+        // if we already have the decoded zoomed image bitmap use the texture corresponding to that.
+        // Else make do with the fullscreen texture till that happens.  
+        TRAP_IGNORE(iImageTexture = 
+            iTextureMgr->CreateZoomedTextureL());
+        
+        if (NULL == iImageTexture)
+            {
+            iImageTexture = &(iTextureMgr->CreateNewTextureForMediaL(
+                    ScreenSize(),item, idspace, this ));
+            }
+
+        iImageVisual->SetImage(*iImageTexture);
         }
     } 
 
@@ -504,9 +531,9 @@
     //decode and show anything. So try and check if the fullscreen texture 
     //is created by now if not then go to fullscreen view.
 
-    if(aNewTexture == NULL)
+    if(NULL == aNewTexture )
         {
-        if(iImageTexture == NULL)
+        if(NULL == iImageTexture)
             {
             TSize TextureSize = ScreenSize();
             TInt focus = iMediaList.FocusIndex();
@@ -818,9 +845,13 @@
     iEventHandler->SetPreviousEventCode(code);
     }
 
-TInt CGlxZoomControl::GetIntialZoomLevel(TSize& aSize )
+// -----------------------------------------------------------------------------
+// GetInitialZoomLevel
+// -----------------------------------------------------------------------------
+//
+TInt CGlxZoomControl::GetInitialZoomLevel(TSize& aSize )
     {
-    TRACER("CGlxZoomControl::IntialZoomLevel");
+    TRACER("CGlxZoomControl::InitialZoomLevel");
 
     TRect rect = AlfUtil::ScreenSize();
     TUint8 initialZoomLevel;