Revision: 201017 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 11 May 2010 16:13:40 +0300
branchRCL_3
changeset 30 a60acebbbd9d
parent 25 191387a8b767
child 32 78ad99c24f08
Revision: 201017 Kit: 201019
photosgallery/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp
photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp
photosgallery/collectionframework/plugins/glxcollectionpluginmonths/src/glxcollectionpluginmonths.cpp
photosgallery/collectionframework/plugins/tagcollectionplugin/rom/tagcollectionplugin.iby
photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp
photosgallery/controllers/imageviewer/inc/glximageviewermanager.h
photosgallery/gallery/group/glx_loc.rss
photosgallery/gallery/src/glxappui.cpp
photosgallery/imgvwr/group/glxivwr_loc.rss
photosgallery/slideshow/engine/bwins/shwslideshowengineu.def
photosgallery/slideshow/engine/controlsrc/shwmusiccontrol.cpp
photosgallery/slideshow/engine/controlsrc/shwmusiccontrol.h
photosgallery/slideshow/engine/coresrc/shwplaybackfactory.cpp
photosgallery/slideshow/engine/coresrc/shwplaybackfactory.h
photosgallery/slideshow/engine/coresrc/shwslideshowengine.cpp
photosgallery/slideshow/engine/coresrc/shwslideshowengineimpl.cpp
photosgallery/slideshow/engine/coresrc/shwslideshowengineimpl.h
photosgallery/slideshow/engine/eabi/shwslideshowengineu.def
photosgallery/slideshow/engine/effectsrc/shwdefaulteffectmanager.cpp
photosgallery/slideshow/engine/inc/shwslideshowengine.h
photosgallery/slideshow/view/src/shwgesturecontrol.cpp
photosgallery/slideshow/view/src/shwslideshowview.cpp
photosgallery/viewframework/commandhandlers/commandhandlerbase/inc/glxmpxcommandcommandhandler.h
photosgallery/viewframework/commandhandlers/commandhandlerbase/src/glxmedialistcommandhandler.cpp
photosgallery/viewframework/commandhandlers/commandhandlerupnp/eabi/glxupnpcommandhandleru.def
photosgallery/viewframework/commandhandlers/commandhandlerupnp/src/glxcommandhandlercopytohomenetwork.cpp
photosgallery/viewframework/commandhandlers/commandhandlerupnp/src/glxcommandhandlershowviaupnp.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersave.cpp
photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxdummyhuiutility.cpp
photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/bwins/t_glxcommandhandlermoreinfou.def
photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/eabi/t_glxcommandhandlermoreinfou.def
photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelproviderimpl.h
photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelproviderimpl.cpp
photosgallery/viewframework/medialists/eabi/glxmedialistsu.def
photosgallery/viewframework/medialists/src/glxcache.cpp
photosgallery/viewframework/medialists/src/glxcachemanager.cpp
photosgallery/viewframework/medialists/src/glxitemlist.cpp
photosgallery/viewframework/medialists/src/glxlistwindow.cpp
photosgallery/viewframework/medialists/src/glxmedia.cpp
photosgallery/viewframework/medialists/src/glxnavigablelist.cpp
photosgallery/viewframework/medialists/src/glxstaticitemlist.cpp
photosgallery/viewframework/medialists/src/glxustringconverter.cpp
photosgallery/viewframework/plugins/fullscreenviewplugin/data/glxfullscreenviewdata.rss
photosgallery/viewframework/plugins/fullscreenviewplugin/src/glxmainfullscreenviewplugin.cpp
photosgallery/viewframework/plugins/fullscreenviewpluginbase/inc/glxfullscreenviewpluginbase.h
photosgallery/viewframework/plugins/gridviewpluginbase/inc/glxgridviewpluginbase.h
photosgallery/viewframework/plugins/listviewplugin/src/glxmainlistviewplugin.cpp
photosgallery/viewframework/plugins/tagsbrowserviewplugin/rom/tagsbrowserviewplugin.iby
photosgallery/viewframework/plugins/tagsbrowserviewplugin/rom/tagsbrowserviewplugin_resources.iby
photosgallery/viewframework/tvout/data/Thumbs.db
photosgallery/viewframework/tvout/inc/glxhdmicontroller.h
photosgallery/viewframework/tvout/inc/glxtvconnectionmonitor.h
photosgallery/viewframework/tvout/rom/glxtvout.iby
photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp
photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp
photosgallery/viewframework/uiutilities/bwins/glxuiutilitiesu.def
photosgallery/viewframework/uiutilities/eabi/glxuiutilitiesu.def
photosgallery/viewframework/uiutilities/group/glxuiutilities.mmp
photosgallery/viewframework/uiutilities/inc/glxprogressindicator.h
photosgallery/viewframework/uiutilities/inc/glxuiutility.h
photosgallery/viewframework/uiutilities/src/glxprogressindicator.cpp
photosgallery/viewframework/uiutilities/src/glxuiutility.cpp
photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp
photosgallery/viewframework/views/fullscreenview/group/glxfullscreenview.mmp
photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenview.hrh
photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h
photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp
photosgallery/viewframework/views/gridview/src/glxgridviewimp.cpp
photosgallery/viewframework/views/gridview/src/glxgridviewmlobserver.cpp
photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp
photosgallery/viewframework/views/metadatadialog/bwins/glxmetadatadialogu.def
photosgallery/viewframework/views/metadatadialog/eabi/glxmetadatadialogu.def
photosgallery/viewframework/views/metadatadialog/group/glxmetadatadialog.mmp
photosgallery/viewframework/views/metadatadialog/inc/glxresourceutilities.h
photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp
photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp
photosgallery/viewframework/views/metadatadialog/src/glxresourceutilities.cpp
photosgallery/viewframework/views/viewbase/src/glxmedialistviewbase.cpp
photosgallery/viewframework/views/viewbase/src/glxtitlefetcher.cpp
photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp
photosgallery/viewframework/views/zoomview/bwins/glxzoomviewu.def
photosgallery/viewframework/views/zoomview/eabi/glxzoomviewu.def
photosgallery/viewframework/views/zoomview/inc/glxzoomcontrol.h
photosgallery/viewframework/views/zoomview/inc/glxzoomeventhandler.h
photosgallery/viewframework/views/zoomview/inc/glxzoomview.hrh
photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp
photosgallery/viewframework/views/zoomview/src/glxzoomeventhandler.cpp
--- a/photosgallery/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Tue May 11 16:13:40 2010 +0300
@@ -102,26 +102,40 @@
 // ----------------------------------------------------------------------------
 //
 EXPORT_C void CGlxCollectionPluginBase::OpenL(const CMPXCollectionPath& aPath,
-                   const TArray<TMPXAttribute>& /*aAttrs*/,
+                   const TArray<TMPXAttribute>& aAttrs,
                    CMPXFilter* aFilter)
     {
     TRACER("void CGlxCollectionPluginBase::OpenL()");
     iPath = CMPXCollectionPath::NewL(aPath);
-    if(aFilter)
+    // When a collection is opened for browsing, 
+    // there are two queries executed with similar filter. 
+    // First query to open the collection from list / cloud view.
+    // Second one from grid view construction. To improve the grid opening
+    // performance, the first query will be completed with empty Id list.
+    TBool openRequest = EFalse;
+    for (TInt index = 0; index < aAttrs.Count(); index++)
         {
-        if(aFilter->IsSupported(KGlxFilterGeneralNavigationalStateOnly))
+        const TMPXAttribute attr = aAttrs[index];
+
+        if (attr == KGlxFilterGeneralNavigationalStateOnly)
             {
-            RArray<TMPXItemId> mpxIds;
-         	CleanupClosePushL(mpxIds);
-            iPath->AppendL(mpxIds.Array());
-            iObs->HandleOpen(iPath, KErrNone);
-            CleanupStack::PopAndDestroy(&mpxIds);
-            delete iPath;
-            iPath = NULL;
-            return;
+            openRequest = ETrue;
             }
         }
 
+    if ((aFilter && aFilter->IsSupported(
+            KGlxFilterGeneralNavigationalStateOnly)) || openRequest)
+        {
+        RArray<TMPXItemId> mpxIds;
+        CleanupClosePushL(mpxIds);
+        iPath->AppendL(mpxIds.Array());
+        iObs->HandleOpen(iPath, KErrNone);
+        CleanupStack::PopAndDestroy(&mpxIds);
+        delete iPath;
+        iPath = NULL;
+        return;
+        }
+
     TGlxMediaId targetId(aPath.Id());
     if (aPath.Levels() == KGlxCollectionRootLevel)
         {
--- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Tue May 11 16:13:40 2010 +0300
@@ -189,13 +189,12 @@
     
     // retrieve the value
     TInt value = 0;
-    TInt Err = iProperty.Get(value);
-    GLX_DEBUG2("CGlxMDSShutdownObserver::RunL(): iProperty.Get(value); returns %d", Err);
+    TInt err = iProperty.Get(value);
+    GLX_DEBUG2("CGlxMDSShutdownObserver::RunL(): iProperty.Get(value); returns %d", err);
     
-    User::LeaveIfError(Err);
+    User::LeaveIfError(err);
 
     iObserver.ShutdownNotification(value);
-    
     }
 
 // ---------------------------------------------------------------------------
@@ -345,10 +344,7 @@
 void CGlxDataSourceMde::HandleSessionError(CMdESession& /*aSession*/, TInt aError )    
     {
     TRACER("CGlxDataSourceMde::HandleSessionError(CMdESession& /*aSession*/, TInt aError)")
-    delete iSession;
-    iSession = NULL;
-    
-    GLX_DEBUG2("void CGlxDataSourceMde::HandleSessionError() Session Error = %d", aError);
+    GLX_DEBUG2("void CGlxDataSourceMde::HandleSessionError() aError(%d)", aError);
 
     iDataSourceReady = EFalse;
     iSessionOpen = EFalse;
@@ -362,7 +358,6 @@
         }
     }
 
-
 // ---------------------------------------------------------------------------
 // CreateTaskL
 // ---------------------------------------------------------------------------
@@ -533,7 +528,9 @@
 	iSession->AddObjectObserverL(*this, addCondition );
 	iSession->AddObjectPresentObserverL(*this );
 		
-	CleanupStack::Pop( addCondition ); //This addCondition should only be popped. The destroy part will be done by MDS.
+	// This addCondition should only be popped. 
+	// As the ownership is transferred, the same will be destroyed by MdS.
+	CleanupStack::Pop( addCondition ); 
     }
 
 // ---------------------------------------------------------------------------
@@ -711,9 +708,10 @@
 void CGlxDataSourceMde::CreateSessionL()
     {
     TRACER("CGlxDataSourceMde::CreateSessionL()");
+    delete iSession;
+    iSession = NULL;
 	iSession = CMdESession::NewL( *this );
     }
-            
 
 // ---------------------------------------------------------------------------
 // ProcessItemUpdate
@@ -1245,15 +1243,25 @@
         }
     }
 
+// ---------------------------------------------------------------------------
+// ShutdownNotification
+// ---------------------------------------------------------------------------
+//  
 void CGlxDataSourceMde::ShutdownNotification(TInt aShutdownState)
     {
     TRACER("void CGlxDataSourceMde::ShutdownNotification(TInt aShutdownState)")
-    GLX_DEBUG2("CGlxDataSourceMde::ShutdownNotification(TInt aShutdownState)  aShutdownState = %d", aShutdownState);
+    GLX_DEBUG2("CGlxDataSourceMde::ShutdownNotification(aShutdownState=%d)", 
+            aShutdownState);
 
-    // iDataSourceReady is set to false if we have lost an MDS session.
-    // a ShutdownNotification with aaShutdownState == 0 means that MDS has restarted. So this is the time to recreate a session with MDS.  
-    if ( (!iDataSourceReady) && (0 == aShutdownState) )
+    if (!iDataSourceReady && 0 == aShutdownState)
         {
+        GLX_DEBUG1("Photos MdS ShutdownNotification - MdS Server restarted!");
         CreateSession();
         }
+
+    if (iDataSourceReady && 1 == aShutdownState)
+        {
+        GLX_DEBUG1("Photos MdS ShutdownNotification - MdS Server Shutdown!");
+        HandleSessionError(*iSession, KErrServerTerminated);
+        }
     }
--- a/photosgallery/collectionframework/plugins/glxcollectionpluginmonths/src/glxcollectionpluginmonths.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/collectionframework/plugins/glxcollectionpluginmonths/src/glxcollectionpluginmonths.cpp	Tue May 11 16:13:40 2010 +0300
@@ -55,8 +55,11 @@
 const TInt KDateBufferPaddingMin = 10;
 const TInt KDateBufferPaddingMax = 20;
 const TInt KDateFormat1 = 1;
+
+#ifdef SHOW_MONTHS_START_END_SUB_TITLE 
 const TInt KDateFormat2 = 2;
 const TInt KDateFormat3 = 3;
+#endif
 
 _LIT(KResourceFile, "z:glxpluginmonths.rsc");
 
@@ -120,8 +123,10 @@
 		// need to add the usage count. but check first if it is already present
 		TInt attrCount = aAttributeArray.Count();
 		TBool found = EFalse;
+#if defined(GLX_SUB_TITLE_REL8) || defined(SHOW_MONTHS_START_END_SUB_TITLE)		
 		TBool startfound = EFalse;
 		TBool endfound = EFalse;
+#endif
 		
 #ifdef GLX_SUB_TITLE_REL8		
 
@@ -177,6 +182,7 @@
 	            {
 	            found = ETrue;
 	            }
+#ifdef SHOW_MONTHS_START_END_SUB_TITLE			
 	        else if ( aAttributeArray[index] == KGlxMediaCollectionInternalStartDate )
 	            {
 	            startfound = ETrue;
@@ -185,12 +191,14 @@
 	        	{
 	        	endfound = ETrue;
 	        	}
+#endif // #ifdef SHOW_MONTHS_START_END_SUB_TITLE				
 	        }
 	        
 	    if (!found)
 	        {
 	        aAttributeArray.Append(KGlxMediaCollectionInternalUsageCount);
 	        }
+#ifdef SHOW_MONTHS_START_END_SUB_TITLE				
 	    if (!startfound)
 	        {
 	        aAttributeArray.Append(KGlxMediaCollectionInternalStartDate);
@@ -199,7 +207,8 @@
 	    	{
 	    	aAttributeArray.Append(KGlxMediaCollectionInternalEndDate);
 	        }
-#endif	        
+#endif // #ifdef SHOW_MONTHS_START_END_SUB_TITLE
+#endif // #ifdef GLX_SUB_TITLE_REL8
 	    // end date will be returned when start date is requested.			
 		}
 	}
@@ -284,11 +293,10 @@
 	    if (attr == KGlxMediaCollectionPluginSpecificSubTitle)
 			{
 			GLX_LOG_INFO("Attribute : SubTitle");
-			
+#if defined(GLX_SUB_TITLE_REL8) || defined(SHOW_MONTHS_START_END_SUB_TITLE)				
 			if (TGlxMediaId(KGlxCollectionRootId) == aMediaId)
 				{
 				GLX_LOG_INFO("Attribute : SubTitle-RootId");
-				
 #ifdef GLX_SUB_TITLE_REL8
 					            
 				//The usage Count is required for the subtitle in the main list view	                
@@ -410,8 +418,8 @@
 #endif				                 
 				}
 			else
+#endif // #if defined(GLX_SUB_TITLE_REL8) || defined(SHOW_MONTHS_START_END_SUB_TITLE)			    
 				{
-				
 #ifdef GLX_SUB_TITLE_REL8				
 
 				HBufC* tempTitle = NULL;
--- a/photosgallery/collectionframework/plugins/tagcollectionplugin/rom/tagcollectionplugin.iby	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/collectionframework/plugins/tagcollectionplugin/rom/tagcollectionplugin.iby	Tue May 11 16:13:40 2010 +0300
@@ -26,4 +26,3 @@
 #endif // __TAGCOLLECTIONPLUGIN_IBY__
 
 // End of file
------------------------------------------------------------
\ No newline at end of file
--- a/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Tue May 11 16:13:40 2010 +0300
@@ -244,7 +244,7 @@
         }
 
 	// Set the grid to use different layout for landscape mode in fetcher
-    //iHgGrid->SetToolbarVisibility(EFalse);
+    iHgGrid->SetToolbarVisibility(EFalse);
     iHgGrid->SetSelectedIndex(iMediaList->FocusIndex());
     // Setting to MopParent to update background skin
     iHgGrid->SetMopParent(this);
--- a/photosgallery/controllers/imageviewer/inc/glximageviewermanager.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/controllers/imageviewer/inc/glximageviewermanager.h	Tue May 11 16:13:40 2010 +0300
@@ -44,8 +44,8 @@
     /**
      * Singleton constructor.
      */
-    static CGlxImageViewerManager* InstanceL();
-    
+    IMPORT_C static CGlxImageViewerManager* InstanceL();
+
 public:
     IMPORT_C HBufC* ImageUri();
     IMPORT_C RFile64& ImageFileHandle();
--- a/photosgallery/gallery/group/glx_loc.rss	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/gallery/group/glx_loc.rss	Tue May 11 16:13:40 2010 +0300
@@ -41,12 +41,12 @@
 
 RESOURCE LOCALISABLE_APP_INFO r_glx_localisable_app_info
 	{
-	short_caption = qtn_lgal_title_main_view;
+	short_caption = qtn_lgal_photos_app_title;
 	caption_and_icon =
 		{
 		CAPTION_AND_ICON_INFO 
 			{
-			caption=qtn_lgal_title_main_view;
+			caption=qtn_lgal_photos_app_title;
 			number_of_icons=1;
 			icon_file="\\resource\\apps\\glx_aif.mif";
 			}
--- a/photosgallery/gallery/src/glxappui.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/gallery/src/glxappui.cpp	Tue May 11 16:13:40 2010 +0300
@@ -223,6 +223,12 @@
             HandleActivationMessageL(aMessageParameters);           
             break;
         }
+    
+    //Safely we can call Destroy screen here, as there can be already 
+    //photos in background and bringing it to foreground does not 
+    //give the ViewActivate( ) callback to view.
+    iUiUtility->DestroyScreenClearer();
+    
     return response;
     }
 
@@ -246,6 +252,18 @@
         CleanupStack::PopAndDestroy( newState );
         }
 
+    //Start a timer to check for thr IAD update after 60 Secs.
+    //Only when any view is launched in photos.
+    if(!iPeriodic)
+        {
+        iPeriodic = CPeriodic::NewL(CActive::EPriorityLow);
+        }    
+    if ( !iPeriodic->IsActive() )
+        {
+        iPeriodic->Start( KPeriodicStartDelay, KMaxTInt, 
+                TCallBack( &PeriodicCallback, static_cast<TAny*>(this) ) );
+        }
+    
     if(0 == aTail.CompareC(KNullDesC8))
         {
       	return ETrue;
@@ -469,23 +487,19 @@
     CleanupClosePushL(stream);
     stream >> msgUid;
     
-    //Start a timer to check for thr IAD update after 30 Secs.
-    if(!iPeriodic)
-        {
-        iPeriodic = CPeriodic::NewL(CActive::EPriorityLow);
-        }    
-    if ( !iPeriodic->IsActive() )
-        {
-        iPeriodic->Start( KPeriodicStartDelay, KMaxTInt, 
-                TCallBack( &PeriodicCallback, static_cast<TAny*>(this) ) );
-        }
-    
     switch ( msgUid.iUid )
         {
         case KGlxActivationCmdShowLastModified:
         case KGlxActivationCameraAlbum:
         case KGlxActivationCmdShowAll:
             {
+            GLX_LOG_INFO("CGlxAppUi::HandleActivationMessageL: Creating Screen Clearer");
+            iUiUtility->DisplayScreenClearerL();
+            HBufC8* activationParam = HBufC8::NewLC(KMaxUidName);
+            activationParam->Des().AppendNum(KGlxActivationCmdShowAll);
+            SetActivationParamL(*activationParam);
+            CleanupStack::PopAndDestroy(activationParam);
+            
             // Go to All grid view
             GLX_LOG_INFO("CGlxAppUi::HandleActivationMessageL: All Grid View");
             // Send the command to reset the view
@@ -751,9 +765,6 @@
 	//Temparory fix provided for Kern Exec 3 bug
 	//UPnP Stop Showin is explicitly called when exiting the gallery
 	GlxUpnpRenderer:: StopShowingL();
-
-	iUiUtility->SetExitingState(ETrue);         
-	GLX_LOG_INFO("CGlxAppUi::HandleWsEventL: Exit() for C key being Called");	
-
+	iUiUtility->SetExitingState(ETrue);
     }
 //OOM
--- a/photosgallery/imgvwr/group/glxivwr_loc.rss	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/imgvwr/group/glxivwr_loc.rss	Tue May 11 16:13:40 2010 +0300
@@ -41,12 +41,12 @@
 
 RESOURCE LOCALISABLE_APP_INFO r_glx_localisable_app_info
 	{
-	short_caption = qtn_lgal_title_main_view;
+	short_caption = qtn_lgal_photos_app_title;
 	caption_and_icon =
 		{
 		CAPTION_AND_ICON_INFO 
 			{
-			caption=qtn_lgal_title_main_view;
+			caption=qtn_lgal_photos_app_title;
 			number_of_icons=1;
 			icon_file="\\resource\\apps\\glx_aif.mif";
 			}
--- a/photosgallery/slideshow/engine/bwins/shwslideshowengineu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/bwins/shwslideshowengineu.def	Tue May 11 16:13:40 2010 +0300
@@ -1,27 +1,28 @@
 EXPORTS
-	??1CShwSettingsModel@@UAE@XZ @ 1 NONAME ; CShwSettingsModel::~CShwSettingsModel(void)
+	?StartL@CShwSlideshowEngine@@QAEXAAVCAlfEnv@@AAVCAlfDisplay@@AAVMGlxMediaList@@AAVMShwMusicObserver@@VTSize@@@Z @ 1 NONAME ; void CShwSlideshowEngine::StartL(class CAlfEnv &, class CAlfDisplay &, class MGlxMediaList &, class MShwMusicObserver &, class TSize)
 	??1CShwSlideshowEngine@@UAE@XZ @ 2 NONAME ; CShwSlideshowEngine::~CShwSlideshowEngine(void)
-	?AvailableEffectsL@CShwSlideshowEngine@@SAXAAV?$RArray@VTShwEffectInfo@@@@@Z @ 3 NONAME ; void CShwSlideshowEngine::AvailableEffectsL(class RArray<class TShwEffectInfo> &)
-	?LSKPressedL@CShwSlideshowEngine@@QAEXXZ @ 4 NONAME ; void CShwSlideshowEngine::LSKPressedL(void)
-	?MusicNamePathL@CShwSettingsModel@@QBEXAAVTDes16@@@Z @ 5 NONAME ; void CShwSettingsModel::MusicNamePathL(class TDes16 &) const
-	?MusicOnL@CShwSettingsModel@@QBEHXZ @ 6 NONAME ; int CShwSettingsModel::MusicOnL(void) const
-	?NewL@CShwSettingsModel@@SAPAV1@XZ @ 7 NONAME ; class CShwSettingsModel * CShwSettingsModel::NewL(void)
-	?NewL@CShwSlideshowEngine@@SAPAV1@AAVMShwEngineObserver@@@Z @ 8 NONAME ; class CShwSlideshowEngine * CShwSlideshowEngine::NewL(class MShwEngineObserver &)
-	?NextItemL@CShwSlideshowEngine@@QAEXXZ @ 9 NONAME ; void CShwSlideshowEngine::NextItemL(void)
-	?PauseL@CShwSlideshowEngine@@QAEXXZ @ 10 NONAME ; void CShwSlideshowEngine::PauseL(void)
-	?PlayOrderL@CShwSettingsModel@@QAEHXZ @ 11 NONAME ; int CShwSettingsModel::PlayOrderL(void)
-	?PreviousItemL@CShwSlideshowEngine@@QAEXXZ @ 12 NONAME ; void CShwSlideshowEngine::PreviousItemL(void)
-	?ResumeL@CShwSlideshowEngine@@QAEXXZ @ 13 NONAME ; void CShwSlideshowEngine::ResumeL(void)
-	?SaveMusicNamePathL@CShwSettingsModel@@QAEXABVTDesC16@@@Z @ 14 NONAME ; void CShwSettingsModel::SaveMusicNamePathL(class TDesC16 const &)
-	?SaveMusicStateL@CShwSettingsModel@@QAEXH@Z @ 15 NONAME ; void CShwSettingsModel::SaveMusicStateL(int)
-	?SavePlayOrderL@CShwSettingsModel@@QAEXH@Z @ 16 NONAME ; void CShwSettingsModel::SavePlayOrderL(int)
-	?SaveTransDelayL@CShwSettingsModel@@QAEXH@Z @ 17 NONAME ; void CShwSettingsModel::SaveTransDelayL(int)
-	?SaveTransitionTypeL@CShwSettingsModel@@QAEXVTUid@@I@Z @ 18 NONAME ; void CShwSettingsModel::SaveTransitionTypeL(class TUid, unsigned int)
-	?StartL@CShwSlideshowEngine@@QAEXAAVCAlfEnv@@AAVCAlfDisplay@@AAVMGlxMediaList@@AAVMShwMusicObserver@@VTSize@@@Z @ 19 NONAME ; void CShwSlideshowEngine::StartL(class CAlfEnv &, class CAlfDisplay &, class MGlxMediaList &, class MShwMusicObserver &, class TSize)
-	?State@CShwSlideshowEngine@@QBE?AW4TShwState@1@XZ @ 20 NONAME ; enum CShwSlideshowEngine::TShwState CShwSlideshowEngine::State(void) const
-	?ToggleUiControlsVisibiltyL@CShwSlideshowEngine@@QAEXXZ @ 21 NONAME ; void CShwSlideshowEngine::ToggleUiControlsVisibiltyL(void)
+	??1CShwSettingsModel@@UAE@XZ @ 3 NONAME ; CShwSettingsModel::~CShwSettingsModel(void)
+	?AvailableEffectsL@CShwSlideshowEngine@@SAXAAV?$RArray@VTShwEffectInfo@@@@@Z @ 4 NONAME ; void CShwSlideshowEngine::AvailableEffectsL(class RArray<class TShwEffectInfo> &)
+	?SaveMusicNamePathL@CShwSettingsModel@@QAEXABVTDesC16@@@Z @ 5 NONAME ; void CShwSettingsModel::SaveMusicNamePathL(class TDesC16 const &)
+	?State@CShwSlideshowEngine@@QBE?AW4TShwState@1@XZ @ 6 NONAME ; enum CShwSlideshowEngine::TShwState CShwSlideshowEngine::State(void) const
+	?LSKPressedL@CShwSlideshowEngine@@QAEXXZ @ 7 NONAME ; void CShwSlideshowEngine::LSKPressedL(void)
+	?PlayOrderL@CShwSettingsModel@@QAEHXZ @ 8 NONAME ; int CShwSettingsModel::PlayOrderL(void)
+	?SaveMusicStateL@CShwSettingsModel@@QAEXH@Z @ 9 NONAME ; void CShwSettingsModel::SaveMusicStateL(int)
+	?PreviousItemL@CShwSlideshowEngine@@QAEXXZ @ 10 NONAME ; void CShwSlideshowEngine::PreviousItemL(void)
+	?VolumeDownL@CShwSlideshowEngine@@QAEXXZ @ 11 NONAME ; void CShwSlideshowEngine::VolumeDownL(void)
+	?VolumeUpL@CShwSlideshowEngine@@QAEXXZ @ 12 NONAME ; void CShwSlideshowEngine::VolumeUpL(void)
+	?SaveTransitionTypeL@CShwSettingsModel@@QAEXVTUid@@I@Z @ 13 NONAME ; void CShwSettingsModel::SaveTransitionTypeL(class TUid, unsigned int)
+	?MusicNamePathL@CShwSettingsModel@@QBEXAAVTDes16@@@Z @ 14 NONAME ; void CShwSettingsModel::MusicNamePathL(class TDes16 &) const
+	?NewL@CShwSettingsModel@@SAPAV1@XZ @ 15 NONAME ; class CShwSettingsModel * CShwSettingsModel::NewL(void)
+	?NextItemL@CShwSlideshowEngine@@QAEXXZ @ 16 NONAME ; void CShwSlideshowEngine::NextItemL(void)
+	?MusicOnL@CShwSettingsModel@@QBEHXZ @ 17 NONAME ; int CShwSettingsModel::MusicOnL(void) const
+	?TransitionTypeL@CShwSettingsModel@@QBEXAAVTUid@@AAI@Z @ 18 NONAME ; void CShwSettingsModel::TransitionTypeL(class TUid &, unsigned int &) const
+	?ResumeL@CShwSlideshowEngine@@QAEXXZ @ 19 NONAME ; void CShwSlideshowEngine::ResumeL(void)
+	?SavePlayOrderL@CShwSettingsModel@@QAEXH@Z @ 20 NONAME ; void CShwSettingsModel::SavePlayOrderL(int)
+	?SaveTransDelayL@CShwSettingsModel@@QAEXH@Z @ 21 NONAME ; void CShwSettingsModel::SaveTransDelayL(int)
 	?TransDelayL@CShwSettingsModel@@QBEHXZ @ 22 NONAME ; int CShwSettingsModel::TransDelayL(void) const
-	?TransitionTypeL@CShwSettingsModel@@QBEXAAVTUid@@AAI@Z @ 23 NONAME ; void CShwSettingsModel::TransitionTypeL(class TUid &, unsigned int &) const
-	?VolumeDownL@CShwSlideshowEngine@@QAEXXZ @ 24 NONAME ; void CShwSlideshowEngine::VolumeDownL(void)
-	?VolumeUpL@CShwSlideshowEngine@@QAEXXZ @ 25 NONAME ; void CShwSlideshowEngine::VolumeUpL(void)
+	?GetMusicVolumeL@CShwSlideshowEngine@@QAEXXZ @ 23 NONAME ; void CShwSlideshowEngine::GetMusicVolumeL(void)
+	?PauseL@CShwSlideshowEngine@@QAEXXZ @ 24 NONAME ; void CShwSlideshowEngine::PauseL(void)
+	?ToggleUiControlsVisibiltyL@CShwSlideshowEngine@@QAEXXZ @ 25 NONAME ; void CShwSlideshowEngine::ToggleUiControlsVisibiltyL(void)
+	?NewL@CShwSlideshowEngine@@SAPAV1@AAVMShwEngineObserver@@@Z @ 26 NONAME ; class CShwSlideshowEngine * CShwSlideshowEngine::NewL(class MShwEngineObserver &)
 
--- a/photosgallery/slideshow/engine/controlsrc/shwmusiccontrol.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/controlsrc/shwmusiccontrol.cpp	Tue May 11 16:13:40 2010 +0300
@@ -238,6 +238,18 @@
     }
 
 // ---------------------------------------------------------------------------
+// GetMusicVolumeL
+// ---------------------------------------------------------------------------
+void CShwMusicControl::GetMusicVolumeL()
+    {
+    TRACER("CShwMusicControl::GetMusicVolumeL");
+    if ( iCanPlay )
+        {
+        VolumeL();
+        }
+    }
+	
+// ---------------------------------------------------------------------------
 // From class MMPXPlaybackObserver 
 // Handle playback message - required for debugging state of MPX 
 // Player component
--- a/photosgallery/slideshow/engine/controlsrc/shwmusiccontrol.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/controlsrc/shwmusiccontrol.h	Tue May 11 16:13:40 2010 +0300
@@ -126,6 +126,11 @@
          */
 		void HandleMediaL(
 		    const CMPXMedia& aProperties, TInt aError );
+		
+		/**
+		 * Get the latest music volume value. 
+		 */
+		void GetMusicVolumeL();
 
 	private:	// From MMPXPlaybackObserver 
 	
--- a/photosgallery/slideshow/engine/coresrc/shwplaybackfactory.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/coresrc/shwplaybackfactory.cpp	Tue May 11 16:13:40 2010 +0300
@@ -97,6 +97,8 @@
 		/// @ref CShwSlideshowEngine::AvailableEffectsL
 		// @returns ownership of array of effects
 		static void CreateEffectsL( RPointerArray<MShwEffect>& aEffects );
+		/// @ref CShwSlideshowEngine::GetMusicVolumeL
+		void GetMusicVolumeL();
 
 	private:
 
@@ -207,6 +209,15 @@
 	CleanupStack::PopAndDestroy( &effects );
     }
 
+// -----------------------------------------------------------------------------
+// GetMusicVolumeL
+// -----------------------------------------------------------------------------
+void CShwPlaybackFactory::GetMusicVolumeL()
+	{
+	TRACER("CShwPlaybackFactory::GetMusicVolumeL");
+	this->iImpl->GetMusicVolumeL();
+	}
+
 //------------------------------------------------------------------------------
 // CShwPlaybackFactoryImpl
 //------------------------------------------------------------------------------
@@ -364,3 +375,15 @@
 	CleanupStack::Pop(); // CShwCrossFadeEffect::NewLC()
     CleanupStack::Pop(&aEffects);
     }
+
+//------------------------------------------------------------------------------
+// CShwPlaybackFactoryImpl::GetMusicVolumeL
+//------------------------------------------------------------------------------
+void CShwPlaybackFactory::CShwPlaybackFactoryImpl::GetMusicVolumeL()
+    {
+    TRACER("CShwPlaybackFactory::CShwPlaybackFactoryImpl::GetMusicVolumeL");
+    if(iMusicControl)
+        {
+        iMusicControl->GetMusicVolumeL();
+        }
+    }
--- a/photosgallery/slideshow/engine/coresrc/shwplaybackfactory.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/coresrc/shwplaybackfactory.h	Tue May 11 16:13:40 2010 +0300
@@ -90,6 +90,9 @@
         /// @ref CShwSlideshowEngine::AvailableEffectsL
         static void AvailableEffectsL( RArray<TShwEffectInfo>& aEffects );
         
+        /// @ref CShwSlideshowEngine::GetMusicVolumeL
+        void GetMusicVolumeL();
+        
     private:
 
         /// Own: The implementation of the class, hidden from the clients
--- a/photosgallery/slideshow/engine/coresrc/shwslideshowengine.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/coresrc/shwslideshowengine.cpp	Tue May 11 16:13:40 2010 +0300
@@ -145,7 +145,7 @@
 	}
 
 // -----------------------------------------------------------------------------
-// ResumeL.
+// VolumeDownL.
 // -----------------------------------------------------------------------------
 EXPORT_C void CShwSlideshowEngine::VolumeDownL()
 	{
@@ -153,6 +153,16 @@
 	GLX_LOG_INFO("CShwSlideshowEngine::VolumeDownL");
 	this->iImpl->VolumeDownL();
 	}
+
+// -----------------------------------------------------------------------------
+// GetMusicVolumeL
+// -----------------------------------------------------------------------------
+EXPORT_C void CShwSlideshowEngine::GetMusicVolumeL()
+    {
+    TRACER("CShwSlideshowEngine::GetMusicVolumeL");
+    this->iImpl->GetMusicVolumeL();
+    }
+
 // -----------------------------------------------------------------------------
 // ToggleControlsVisibiltyL. LSKPressed
 // -----------------------------------------------------------------------------
--- a/photosgallery/slideshow/engine/coresrc/shwslideshowengineimpl.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/coresrc/shwslideshowengineimpl.cpp	Tue May 11 16:13:40 2010 +0300
@@ -275,6 +275,17 @@
 		}
 	}
 
+// -----------------------------------------------------------------------------
+// GetMusicVolumeL
+// -----------------------------------------------------------------------------
+void CShwSlideshowEngineImpl::GetMusicVolumeL()
+    {
+    TRACER("CShwSlideshowEngineImpl::GetMusicVolumeL");
+    if(iFactory)
+        {
+        iFactory->GetMusicVolumeL();
+        }
+    }
 
 // -----------------------------------------------------------------------------
 // ResumeL.
--- a/photosgallery/slideshow/engine/coresrc/shwslideshowengineimpl.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/coresrc/shwslideshowengineimpl.h	Tue May 11 16:13:40 2010 +0300
@@ -107,6 +107,8 @@
 		void VolumeUpL();
 		/// @ref CShwSlideshowEngine::VolumeDownL
 		void VolumeDownL();
+	    /// @ref CShwSlideshowEngine::GetMusicVolumeL
+	    void GetMusicVolumeL();
 
 	public: // From MShwEventObserver
 
--- a/photosgallery/slideshow/engine/eabi/shwslideshowengineu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/eabi/shwslideshowengineu.def	Tue May 11 16:13:40 2010 +0300
@@ -12,20 +12,21 @@
 	_ZN19CShwSlideshowEngine11LSKPressedLEv @ 11 NONAME
 	_ZN19CShwSlideshowEngine11VolumeDownLEv @ 12 NONAME
 	_ZN19CShwSlideshowEngine13PreviousItemLEv @ 13 NONAME
-	_ZN19CShwSlideshowEngine17AvailableEffectsLER6RArrayI14TShwEffectInfoE @ 14 NONAME
-	_ZN19CShwSlideshowEngine26ToggleUiControlsVisibiltyLEv @ 15 NONAME
-	_ZN19CShwSlideshowEngine4NewLER18MShwEngineObserver @ 16 NONAME
-	_ZN19CShwSlideshowEngine6PauseLEv @ 17 NONAME
-	_ZN19CShwSlideshowEngine6StartLER7CAlfEnvR11CAlfDisplayR13MGlxMediaListR17MShwMusicObserver5TSize @ 18 NONAME
-	_ZN19CShwSlideshowEngine7ResumeLEv @ 19 NONAME
-	_ZN19CShwSlideshowEngine9NextItemLEv @ 20 NONAME
-	_ZN19CShwSlideshowEngine9VolumeUpLEv @ 21 NONAME
-	_ZN19CShwSlideshowEngineD0Ev @ 22 NONAME
-	_ZN19CShwSlideshowEngineD1Ev @ 23 NONAME
-	_ZN19CShwSlideshowEngineD2Ev @ 24 NONAME
-	_ZNK17CShwSettingsModel11TransDelayLEv @ 25 NONAME
-	_ZNK17CShwSettingsModel14MusicNamePathLER6TDes16 @ 26 NONAME
-	_ZNK17CShwSettingsModel15TransitionTypeLER4TUidRj @ 27 NONAME
-	_ZNK17CShwSettingsModel8MusicOnLEv @ 28 NONAME
-	_ZNK19CShwSlideshowEngine5StateEv @ 29 NONAME
+	_ZN19CShwSlideshowEngine15GetMusicVolumeLEv @ 14 NONAME
+	_ZN19CShwSlideshowEngine17AvailableEffectsLER6RArrayI14TShwEffectInfoE @ 15 NONAME
+	_ZN19CShwSlideshowEngine26ToggleUiControlsVisibiltyLEv @ 16 NONAME
+	_ZN19CShwSlideshowEngine4NewLER18MShwEngineObserver @ 17 NONAME
+	_ZN19CShwSlideshowEngine6PauseLEv @ 18 NONAME
+	_ZN19CShwSlideshowEngine6StartLER7CAlfEnvR11CAlfDisplayR13MGlxMediaListR17MShwMusicObserver5TSize @ 19 NONAME
+	_ZN19CShwSlideshowEngine7ResumeLEv @ 20 NONAME
+	_ZN19CShwSlideshowEngine9NextItemLEv @ 21 NONAME
+	_ZN19CShwSlideshowEngine9VolumeUpLEv @ 22 NONAME
+	_ZN19CShwSlideshowEngineD0Ev @ 23 NONAME
+	_ZN19CShwSlideshowEngineD1Ev @ 24 NONAME
+	_ZN19CShwSlideshowEngineD2Ev @ 25 NONAME
+	_ZNK17CShwSettingsModel11TransDelayLEv @ 26 NONAME
+	_ZNK17CShwSettingsModel14MusicNamePathLER6TDes16 @ 27 NONAME
+	_ZNK17CShwSettingsModel15TransitionTypeLER4TUidRj @ 28 NONAME
+	_ZNK17CShwSettingsModel8MusicOnLEv @ 29 NONAME
+	_ZNK19CShwSlideshowEngine5StateEv @ 30 NONAME
 
--- a/photosgallery/slideshow/engine/effectsrc/shwdefaulteffectmanager.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/effectsrc/shwdefaulteffectmanager.cpp	Tue May 11 16:13:40 2010 +0300
@@ -25,8 +25,8 @@
 
 #include <glxlog.h>
 #include <glxtracer.h>
-#include <shwcleanupwrapper.h>
 
+#include "shwcleanupwrapper.h"
 #include "shweffect.h"
 #include "shwconstants.h"
 #include "shwslideshowenginepanic.h"
--- a/photosgallery/slideshow/engine/inc/shwslideshowengine.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/engine/inc/shwslideshowengine.h	Tue May 11 16:13:40 2010 +0300
@@ -131,6 +131,11 @@
          */
         IMPORT_C void VolumeDownL();
         
+		/**
+		 * Get the latest music volume value. 
+		 */
+        IMPORT_C void GetMusicVolumeL();
+        
         /**
          * This method change the ui staus in slideshow when MSK Preesed
          */
--- a/photosgallery/slideshow/view/src/shwgesturecontrol.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/view/src/shwgesturecontrol.cpp	Tue May 11 16:13:40 2010 +0300
@@ -75,7 +75,7 @@
 CShwGestureControl::~CShwGestureControl()
     {
 	TRACER("CShwGestureControl::~CShwGestureControl");
-    //no implementation
+	iObservers.ResetAndDestroy();
     }
 
 // -----------------------------------------------------------------------------
--- a/photosgallery/slideshow/view/src/shwslideshowview.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/slideshow/view/src/shwslideshowview.cpp	Tue May 11 16:13:40 2010 +0300
@@ -390,6 +390,10 @@
 	iIsForegrnd = aForeground;
     if( aForeground )
         {
+        if (iHdmiController && iHdmiActive)
+            {
+            iHdmiController->ShiftToPostingMode();
+            }
         // we gained the foreground
         if(iMMCState && iPrevNotInBackground)
             {
@@ -398,10 +402,15 @@
         else
             {
             iPauseHandler->SwitchToForegroundL();
+            iEngine->GetMusicVolumeL();
             }
         }
     else
         {
+        if (iHdmiController && iHdmiActive)
+            {
+            iHdmiController->ShiftToCloningMode();
+            }
         // Something else has gained the foreground
         iPauseHandler->SwitchToBackgroundL();
         }
@@ -790,6 +799,7 @@
 	{
 	TRACER("CShwSlideshowView::EngineResumedL");
   	GLX_LOG_INFO( "CShwSlideshowView::EngineResumedL" );
+	iEngine->GetMusicVolumeL();
     // Re-enable the backlight if it's off
     if ( !iBackLightTimer->IsRunning() )
         {
--- a/photosgallery/viewframework/commandhandlers/commandhandlerbase/inc/glxmpxcommandcommandhandler.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commandhandlerbase/inc/glxmpxcommandcommandhandler.h	Tue May 11 16:13:40 2010 +0300
@@ -181,7 +181,7 @@
 
 private:
     /** See @ref CGlxMediaListCommandHandler::DoExecuteL */
-	virtual TBool DoExecuteL(TInt aCommandId, MGlxMediaList& aList);
+	IMPORT_C virtual TBool DoExecuteL(TInt aCommandId, MGlxMediaList& aList);
 
 	/**
 	 * Launch a confirmation note (single or multiple depending on media list selection)
--- a/photosgallery/viewframework/commandhandlers/commandhandlerbase/src/glxmedialistcommandhandler.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commandhandlerbase/src/glxmedialistcommandhandler.cpp	Tue May 11 16:13:40 2010 +0300
@@ -344,7 +344,7 @@
                 if( (!isDisabled )&&( info.iDisallowDRM ) )
                     {
                     // disable if DRM protected
-                    isDisabled = item.IsDrmProtected();
+		            item.GetDrmProtected(isDisabled);
                     }
                 // Check animated GIF if not yet disabled by previous rules
                 TInt frameCount(0);
--- a/photosgallery/viewframework/commandhandlers/commandhandlerupnp/eabi/glxupnpcommandhandleru.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commandhandlerupnp/eabi/glxupnpcommandhandleru.def	Tue May 11 16:13:40 2010 +0300
@@ -3,4 +3,10 @@
 	_ZN15GlxUpnpRenderer6StatusEv @ 2 NONAME
 	_ZN29CGlxCommandHandlerShowViaUpnp4NewLEP21MGlxMediaListProvideri @ 3 NONAME
 	_ZN35CGlxCommandHandlerCopyToHomeNetwork4NewLER21MGlxMediaListProvider @ 4 NONAME
+	_ZN29CGlxCommandHandlerShowViaUpnpD0Ev @ 5 NONAME
+	_ZN29CGlxCommandHandlerShowViaUpnpD1Ev @ 6 NONAME
+	_ZN29CGlxCommandHandlerShowViaUpnpD2Ev @ 7 NONAME
+	_ZN35CGlxCommandHandlerCopyToHomeNetworkD0Ev @ 8 NONAME
+	_ZN35CGlxCommandHandlerCopyToHomeNetworkD1Ev @ 9 NONAME
+	_ZN35CGlxCommandHandlerCopyToHomeNetworkD2Ev @ 10 NONAME
 
--- a/photosgallery/viewframework/commandhandlers/commandhandlerupnp/src/glxcommandhandlercopytohomenetwork.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commandhandlerupnp/src/glxcommandhandlercopytohomenetwork.cpp	Tue May 11 16:13:40 2010 +0300
@@ -84,7 +84,7 @@
 //-----------------------------------------------------------------------------------------
 // Destructor
 //-----------------------------------------------------------------------------------------
-CGlxCommandHandlerCopyToHomeNetwork::~CGlxCommandHandlerCopyToHomeNetwork()
+ EXPORT_C CGlxCommandHandlerCopyToHomeNetwork::~CGlxCommandHandlerCopyToHomeNetwork()
     {
     }
   
--- a/photosgallery/viewframework/commandhandlers/commandhandlerupnp/src/glxcommandhandlershowviaupnp.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commandhandlerupnp/src/glxcommandhandlershowviaupnp.cpp	Tue May 11 16:13:40 2010 +0300
@@ -57,7 +57,7 @@
 //-----------------------------------------------------------------------------------------
 // Destructor
 //-----------------------------------------------------------------------------------------
-CGlxCommandHandlerShowViaUpnp::~CGlxCommandHandlerShowViaUpnp()
+EXPORT_C CGlxCommandHandlerShowViaUpnp::~CGlxCommandHandlerShowViaUpnp()
     {
     //Do Nothing  
     }  
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersave.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersave.cpp	Tue May 11 16:13:40 2010 +0300
@@ -91,7 +91,7 @@
                 TDataType nullType;
                 CDocumentHandler* handler = CDocumentHandler::NewLC(NULL);
                 __ASSERT_ALWAYS(handler, Panic(EGlxPanicNullPointer));
-                TRAPD(err, handler->CopyL(imageHandle, KNullDesC, nullType, NULL));
+                TInt err = handler->CopyL(imageHandle, KNullDesC, nullType, NULL);
                 CleanupStack::PopAndDestroy(handler);
                 if (err == KErrNone)
                     {
--- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxdummyhuiutility.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxdummyhuiutility.cpp	Tue May 11 16:13:40 2010 +0300
@@ -109,7 +109,7 @@
 // Env
 // -----------------------------------------------------------------------------
 //
-EXPORT_C CAlfEnv* CGlxUiUtility::Env() const
+EXPORT_C CAlfEnv* CGlxUiUtility::Env() 
 	{
 	return iEnv;
 	}
--- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/bwins/t_glxcommandhandlermoreinfou.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/bwins/t_glxcommandhandlermoreinfou.def	Tue May 11 16:13:40 2010 +0300
@@ -1,62 +1,62 @@
 EXPORTS
-	?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * CreateTestSuiteL(void)
-	?MediaList@CGlxMediaListCommandHandler@@IBEABVMGlxMediaList@@XZ @ 2 NONAME ; class MGlxMediaList const & CGlxMediaListCommandHandler::MediaList(void) const
-	?ViewNavigationDirection@CGlxUiUtility@@QAE?AW4TGlxNavigationDirection@@XZ @ 3 NONAME ; enum TGlxNavigationDirection CGlxUiUtility::ViewNavigationDirection(void)
-	?InstanceL@CGlxDRMUtility@@SAPAV1@XZ @ 4 NONAME ; class CGlxDRMUtility * CGlxDRMUtility::InstanceL(void)
-	?CanShowInfoOnlineL@CGlxDRMUtility@@QAEHAAVTDesC16@@@Z @ 5 NONAME ; int CGlxDRMUtility::CanShowInfoOnlineL(class TDesC16 &)
-	??1CGlxCommandHandlerMoreInfo@@UAE@XZ @ 6 NONAME ; CGlxCommandHandlerMoreInfo::~CGlxCommandHandlerMoreInfo(void)
-	?CreateIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@HAAVTDesC16@@VTSize@@@Z @ 7 NONAME ; class CAlfTexture & CGlxTextureManager::CreateIconTextureL(int, class TDesC16 &, class TSize)
-	??1CGlxMediaListCommandHandler@@UAE@XZ @ 8 NONAME ; CGlxMediaListCommandHandler::~CGlxMediaListCommandHandler(void)
-	?DRMThumbnailSize@CGlxDRMUtility@@QAE?AVTSize@@AAV2@@Z @ 9 NONAME ; class TSize CGlxDRMUtility::DRMThumbnailSize(class TSize &)
-	?SelectionLength@CGlxMediaListCommandHandler@@IBEHXZ @ 10 NONAME ; int CGlxMediaListCommandHandler::SelectionLength(void) const
-	?CreateThumbnailTextureL@@YAAAVCAlfTexture@@VTGlxMediaId@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@ABVTSize@@PAVMGlxTextureObserver@@AAH@Z @ 11 NONAME ; class CAlfTexture & CreateThumbnailTextureL(class TGlxMediaId, class TGlxId<class TGlxIdSpaceIdBase>, class TSize const &, class MGlxTextureObserver *, int &)
-	?CommandInfo@CGlxMediaListCommandHandler@@IAEAAUTCommandInfo@1@H@Z @ 12 NONAME ; struct CGlxMediaListCommandHandler::TCommandInfo & CGlxMediaListCommandHandler::CommandInfo(int)
-	?GlxTextureManager@CGlxUiUtility@@QAEAAVCGlxTextureManager@@XZ @ 13 NONAME ; class CGlxTextureManager & CGlxUiUtility::GlxTextureManager(void)
+	?MediaList@CGlxMediaListCommandHandler@@IBEABVMGlxMediaList@@XZ @ 1 NONAME ; class MGlxMediaList const & CGlxMediaListCommandHandler::MediaList(void) const
+	?ViewNavigationDirection@CGlxUiUtility@@QAE?AW4TGlxNavigationDirection@@XZ @ 2 NONAME ; enum TGlxNavigationDirection CGlxUiUtility::ViewNavigationDirection(void)
+	?InstanceL@CGlxDRMUtility@@SAPAV1@XZ @ 3 NONAME ; class CGlxDRMUtility * CGlxDRMUtility::InstanceL(void)
+	??1CGlxCommandHandlerMoreInfo@@UAE@XZ @ 4 NONAME ; CGlxCommandHandlerMoreInfo::~CGlxCommandHandlerMoreInfo(void)
+	?CreateIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@HAAVTDesC16@@VTSize@@@Z @ 5 NONAME ; class CAlfTexture & CGlxTextureManager::CreateIconTextureL(int, class TDesC16 &, class TSize)
+	??1CGlxMediaListCommandHandler@@UAE@XZ @ 6 NONAME ; CGlxMediaListCommandHandler::~CGlxMediaListCommandHandler(void)
+	?DRMThumbnailSize@CGlxDRMUtility@@QAE?AVTSize@@AAV2@@Z @ 7 NONAME ; class TSize CGlxDRMUtility::DRMThumbnailSize(class TSize &)
+	?ItemRightsValidityCheckL@CGlxDRMUtility@@QAEHABVTDesC16@@H@Z @ 8 NONAME ; int CGlxDRMUtility::ItemRightsValidityCheckL(class TDesC16 const &, int)
+	?SelectionLength@CGlxMediaListCommandHandler@@IBEHXZ @ 9 NONAME ; int CGlxMediaListCommandHandler::SelectionLength(void) const
+	?CreateThumbnailTextureL@@YAAAVCAlfTexture@@VTGlxMediaId@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@ABVTSize@@PAVMGlxTextureObserver@@AAH@Z @ 10 NONAME ; class CAlfTexture & CreateThumbnailTextureL(class TGlxMediaId, class TGlxId<class TGlxIdSpaceIdBase>, class TSize const &, class MGlxTextureObserver *, int &)
+	?CommandInfo@CGlxMediaListCommandHandler@@IAEAAUTCommandInfo@1@H@Z @ 11 NONAME ; struct CGlxMediaListCommandHandler::TCommandInfo & CGlxMediaListCommandHandler::CommandInfo(int)
+	?GlxTextureManager@CGlxUiUtility@@QAEAAVCGlxTextureManager@@XZ @ 12 NONAME ; class CGlxTextureManager & CGlxUiUtility::GlxTextureManager(void)
+	?DynInitMenuPaneL@CGlxMediaListCommandHandler@@UAEXHPAVCEikMenuPane@@H@Z @ 13 NONAME ; void CGlxMediaListCommandHandler::DynInitMenuPaneL(int, class CEikMenuPane *, int)
 	?Deactivate@CGlxMediaListCommandHandler@@UAEXXZ @ 14 NONAME ; void CGlxMediaListCommandHandler::Deactivate(void)
-	?DynInitMenuPaneL@CGlxMediaListCommandHandler@@UAEXHPAVCEikMenuPane@@@Z @ 15 NONAME ; void CGlxMediaListCommandHandler::DynInitMenuPaneL(int, class CEikMenuPane *)
-	?Close@CGlxDRMUtility@@QAEXXZ @ 16 NONAME ; void CGlxDRMUtility::Close(void)
-	?ShowAlfDisplayL@CGlxUiUtility@@SAXXZ @ 17 NONAME ; void CGlxUiUtility::ShowAlfDisplayL(void)
-	?HandleActionL@CGlxUiUtility@@UAEXABVTAlfActionCommand@@@Z @ 18 NONAME ; void CGlxUiUtility::HandleActionL(class TAlfActionCommand const &)
-	??0TCommandInfo@CGlxMediaListCommandHandler@@QAE@H@Z @ 19 NONAME ; CGlxMediaListCommandHandler::TCommandInfo::TCommandInfo(int)
-	?BypassFiltersForExecute@CGlxMediaListCommandHandler@@MBEHXZ @ 20 NONAME ; int CGlxMediaListCommandHandler::BypassFiltersForExecute(void) const
-	?ConsumeRightsL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 21 NONAME ; int CGlxDRMUtility::ConsumeRightsL(class TDesC16 const &)
-	?DoIsDisabled@CGlxMediaListCommandHandler@@MBEHHAAVMGlxMediaList@@@Z @ 22 NONAME ; int CGlxMediaListCommandHandler::DoIsDisabled(int, class MGlxMediaList &) const
-	?CreateAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@HVTSize@@@Z @ 23 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAvkonIconTextureL(class TAknsItemID const &, int, class TSize)
-	??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 24 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &)
-	?HandleTvStatusChangedL@CGlxUiUtility@@UAEXW4TTvChangeType@@@Z @ 25 NONAME ; void CGlxUiUtility::HandleTvStatusChangedL(enum TTvChangeType)
-	?AddCommandL@CGlxMediaListCommandHandler@@IAEXABUTCommandInfo@1@@Z @ 26 NONAME ; void CGlxMediaListCommandHandler::AddCommandL(struct CGlxMediaListCommandHandler::TCommandInfo const &)
-	?MediaList@CGlxMediaListCommandHandler@@IAEAAVMGlxMediaList@@XZ @ 27 NONAME ; class MGlxMediaList & CGlxMediaListCommandHandler::MediaList(void)
-	?Close@CGlxUiUtility@@QAEXXZ @ 28 NONAME ; void CGlxUiUtility::Close(void)
-	?NewL@CGlxTextureManager@@SAPAV1@AAVCAlfTextureManager@@@Z @ 29 NONAME ; class CGlxTextureManager * CGlxTextureManager::NewL(class CAlfTextureManager &)
-	?IsDisabledL@CGlxMediaListCommandHandler@@IBEHHAAVMGlxMediaList@@@Z @ 30 NONAME ; int CGlxMediaListCommandHandler::IsDisabledL(int, class MGlxMediaList &) const
-	?CreateZoomedTextureL@@YAAAVCAlfTexture@@ABVTGlxMedia@@ABVTMPXAttribute@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@AAH@Z @ 31 NONAME ; class CAlfTexture & CreateZoomedTextureL(class TGlxMedia const &, class TMPXAttribute const &, class TGlxId<class TGlxIdSpaceIdBase>, int &)
-	??1CGlxMedia@@UAE@XZ @ 32 NONAME ; CGlxMedia::~CGlxMedia(void)
-	?NewL@CGlxCommandHandlerMoreInfo@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 33 NONAME ; class CGlxCommandHandlerMoreInfo * CGlxCommandHandlerMoreInfo::NewL(class MGlxMediaListProvider *, int)
-	?HandleSkinChanged@CGlxTextureManager@@UAEXXZ @ 34 NONAME ; void CGlxTextureManager::HandleSkinChanged(void)
-	?UtilityL@CGlxUiUtility@@SAPAV1@XZ @ 35 NONAME ; class CGlxUiUtility * CGlxUiUtility::UtilityL(void)
-	?HideAlfDisplayL@CGlxUiUtility@@SAXXZ @ 36 NONAME ; void CGlxUiUtility::HideAlfDisplayL(void)
-	?ExecuteL@CGlxMediaListCommandHandler@@UAEHH@Z @ 37 NONAME ; int CGlxMediaListCommandHandler::ExecuteL(int)
-	?DisplaySize@CGlxUiUtility@@QBE?AVTSize@@XZ @ 38 NONAME ; class TSize CGlxUiUtility::DisplaySize(void) const
-	?ShowRightsInfoL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 39 NONAME ; void CGlxDRMUtility::ShowRightsInfoL(class TDesC16 const &)
-	?IsSupported@CGlxMediaListCommandHandler@@IBEHH@Z @ 40 NONAME ; int CGlxMediaListCommandHandler::IsSupported(int) const
-	?GetRequiredAttributesL@CGlxMediaListCommandHandler@@UBEXAAV?$RArray@VTMPXAttribute@@@@HHH@Z @ 41 NONAME ; void CGlxMediaListCommandHandler::GetRequiredAttributesL(class RArray<class TMPXAttribute> &, int, int, int) const
-	?DoActivateL@CGlxMediaListCommandHandler@@MAEXH@Z @ 42 NONAME ; void CGlxMediaListCommandHandler::DoActivateL(int)
-	?RemoveTexture@CGlxTextureManager@@QAEXABVCAlfTexture@@@Z @ 43 NONAME ; void CGlxTextureManager::RemoveTexture(class CAlfTexture const &)
-	?PreDynInitMenuPaneL@CGlxMediaListCommandHandler@@UAEXH@Z @ 44 NONAME ; void CGlxMediaListCommandHandler::PreDynInitMenuPaneL(int)
-	?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 45 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int)
-	?DoGetRequiredAttributesL@CGlxMediaListCommandHandler@@MBEXAAV?$RArray@VTMPXAttribute@@@@H@Z @ 46 NONAME ; void CGlxMediaListCommandHandler::DoGetRequiredAttributesL(class RArray<class TMPXAttribute> &, int) const
-	?TextStyleIdL@CGlxUiUtility@@QAEHHH@Z @ 47 NONAME ; int CGlxUiUtility::TextStyleIdL(int, int)
-	?BypassFiltersForMenu@CGlxMediaListCommandHandler@@MBEHXZ @ 48 NONAME ; int CGlxMediaListCommandHandler::BypassFiltersForMenu(void) const
-	?ViewingState@CGlxMediaListCommandHandler@@IBE?AW4TViewingState@TCommandInfo@1@XZ @ 49 NONAME ; enum CGlxMediaListCommandHandler::TCommandInfo::TViewingState CGlxMediaListCommandHandler::ViewingState(void) const
-	?ShowInfoOnlineL@CGlxDRMUtility@@QAEXAAVTDesC16@@@Z @ 50 NONAME ; void CGlxDRMUtility::ShowInfoOnlineL(class TDesC16 &)
-	?CommandInfoIndex@CGlxMediaListCommandHandler@@ABEHH@Z @ 51 NONAME ; int CGlxMediaListCommandHandler::CommandInfoIndex(int) const
-	?IsForwardLockedL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 52 NONAME ; int CGlxDRMUtility::IsForwardLockedL(class TDesC16 const &)
-	?OfferKeyEventL@CGlxMediaListCommandHandler@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 53 NONAME ; enum TKeyResponse CGlxMediaListCommandHandler::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	?Display@CGlxUiUtility@@QBEPAVCAlfDisplay@@XZ @ 54 NONAME ; class CAlfDisplay * CGlxUiUtility::Display(void) const
-	??0CGlxMediaListCommandHandler@@QAE@PAVMGlxMediaListProvider@@H@Z @ 55 NONAME ; CGlxMediaListCommandHandler::CGlxMediaListCommandHandler(class MGlxMediaListProvider *, int)
-	?Env@CGlxUiUtility@@QBEPAVCAlfEnv@@XZ @ 56 NONAME ; class CAlfEnv * CGlxUiUtility::Env(void) const
+	?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 15 NONAME ; class MEUnitTest * CreateTestSuiteL(void)
+	?CanShowInfoOnlineL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 16 NONAME ; int CGlxDRMUtility::CanShowInfoOnlineL(class TDesC16 const &)
+	?Close@CGlxDRMUtility@@QAEXXZ @ 17 NONAME ; void CGlxDRMUtility::Close(void)
+	?ShowAlfDisplayL@CGlxUiUtility@@SAXXZ @ 18 NONAME ; void CGlxUiUtility::ShowAlfDisplayL(void)
+	?HandleActionL@CGlxUiUtility@@UAEXABVTAlfActionCommand@@@Z @ 19 NONAME ; void CGlxUiUtility::HandleActionL(class TAlfActionCommand const &)
+	??0TCommandInfo@CGlxMediaListCommandHandler@@QAE@H@Z @ 20 NONAME ; CGlxMediaListCommandHandler::TCommandInfo::TCommandInfo(int)
+	?BypassFiltersForExecute@CGlxMediaListCommandHandler@@MBEHXZ @ 21 NONAME ; int CGlxMediaListCommandHandler::BypassFiltersForExecute(void) const
+	?ConsumeRightsL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 22 NONAME ; int CGlxDRMUtility::ConsumeRightsL(class TDesC16 const &)
+	?DoIsDisabled@CGlxMediaListCommandHandler@@MBEHHAAVMGlxMediaList@@@Z @ 23 NONAME ; int CGlxMediaListCommandHandler::DoIsDisabled(int, class MGlxMediaList &) const
+	?CreateAvkonIconTextureL@CGlxTextureManager@@QAEAAVCAlfTexture@@ABVTAknsItemID@@HVTSize@@@Z @ 24 NONAME ; class CAlfTexture & CGlxTextureManager::CreateAvkonIconTextureL(class TAknsItemID const &, int, class TSize)
+	??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 25 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &)
+	?HandleTvStatusChangedL@CGlxUiUtility@@UAEXW4TTvChangeType@@@Z @ 26 NONAME ; void CGlxUiUtility::HandleTvStatusChangedL(enum TTvChangeType)
+	?AddCommandL@CGlxMediaListCommandHandler@@IAEXABUTCommandInfo@1@@Z @ 27 NONAME ; void CGlxMediaListCommandHandler::AddCommandL(struct CGlxMediaListCommandHandler::TCommandInfo const &)
+	?MediaList@CGlxMediaListCommandHandler@@IAEAAVMGlxMediaList@@XZ @ 28 NONAME ; class MGlxMediaList & CGlxMediaListCommandHandler::MediaList(void)
+	?Close@CGlxUiUtility@@QAEXXZ @ 29 NONAME ; void CGlxUiUtility::Close(void)
+	?NewL@CGlxTextureManager@@SAPAV1@AAVCAlfTextureManager@@@Z @ 30 NONAME ; class CGlxTextureManager * CGlxTextureManager::NewL(class CAlfTextureManager &)
+	?IsDisabledL@CGlxMediaListCommandHandler@@IBEHHAAVMGlxMediaList@@@Z @ 31 NONAME ; int CGlxMediaListCommandHandler::IsDisabledL(int, class MGlxMediaList &) const
+	?CreateZoomedTextureL@@YAAAVCAlfTexture@@ABVTGlxMedia@@ABVTMPXAttribute@@V?$TGlxId@VTGlxIdSpaceIdBase@@@@AAH@Z @ 32 NONAME ; class CAlfTexture & CreateZoomedTextureL(class TGlxMedia const &, class TMPXAttribute const &, class TGlxId<class TGlxIdSpaceIdBase>, int &)
+	??1CGlxMedia@@UAE@XZ @ 33 NONAME ; CGlxMedia::~CGlxMedia(void)
+	?NewL@CGlxCommandHandlerMoreInfo@@SAPAV1@PAVMGlxMediaListProvider@@H@Z @ 34 NONAME ; class CGlxCommandHandlerMoreInfo * CGlxCommandHandlerMoreInfo::NewL(class MGlxMediaListProvider *, int)
+	?HandleSkinChanged@CGlxTextureManager@@UAEXXZ @ 35 NONAME ; void CGlxTextureManager::HandleSkinChanged(void)
+	?UtilityL@CGlxUiUtility@@SAPAV1@XZ @ 36 NONAME ; class CGlxUiUtility * CGlxUiUtility::UtilityL(void)
+	?HideAlfDisplayL@CGlxUiUtility@@SAXXZ @ 37 NONAME ; void CGlxUiUtility::HideAlfDisplayL(void)
+	?ExecuteL@CGlxMediaListCommandHandler@@UAEHH@Z @ 38 NONAME ; int CGlxMediaListCommandHandler::ExecuteL(int)
+	?DisplaySize@CGlxUiUtility@@QBE?AVTSize@@XZ @ 39 NONAME ; class TSize CGlxUiUtility::DisplaySize(void) const
+	?ShowRightsInfoL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 40 NONAME ; void CGlxDRMUtility::ShowRightsInfoL(class TDesC16 const &)
+	?IsSupported@CGlxMediaListCommandHandler@@IBEHH@Z @ 41 NONAME ; int CGlxMediaListCommandHandler::IsSupported(int) const
+	?GetRequiredAttributesL@CGlxMediaListCommandHandler@@UBEXAAV?$RArray@VTMPXAttribute@@@@HHH@Z @ 42 NONAME ; void CGlxMediaListCommandHandler::GetRequiredAttributesL(class RArray<class TMPXAttribute> &, int, int, int) const
+	?DoActivateL@CGlxMediaListCommandHandler@@MAEXH@Z @ 43 NONAME ; void CGlxMediaListCommandHandler::DoActivateL(int)
+	?Env@CGlxUiUtility@@QAEPAVCAlfEnv@@XZ @ 44 NONAME ; class CAlfEnv * CGlxUiUtility::Env(void)
+	?RemoveTexture@CGlxTextureManager@@QAEXABVCAlfTexture@@@Z @ 45 NONAME ; void CGlxTextureManager::RemoveTexture(class CAlfTexture const &)
+	?PreDynInitMenuPaneL@CGlxMediaListCommandHandler@@UAEXH@Z @ 46 NONAME ; void CGlxMediaListCommandHandler::PreDynInitMenuPaneL(int)
+	?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 47 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int)
+	?DoGetRequiredAttributesL@CGlxMediaListCommandHandler@@MBEXAAV?$RArray@VTMPXAttribute@@@@H@Z @ 48 NONAME ; void CGlxMediaListCommandHandler::DoGetRequiredAttributesL(class RArray<class TMPXAttribute> &, int) const
+	?TextStyleIdL@CGlxUiUtility@@QAEHHH@Z @ 49 NONAME ; int CGlxUiUtility::TextStyleIdL(int, int)
+	?BypassFiltersForMenu@CGlxMediaListCommandHandler@@MBEHXZ @ 50 NONAME ; int CGlxMediaListCommandHandler::BypassFiltersForMenu(void) const
+	?ViewingState@CGlxMediaListCommandHandler@@IBE?AW4TViewingState@TCommandInfo@1@XZ @ 51 NONAME ; enum CGlxMediaListCommandHandler::TCommandInfo::TViewingState CGlxMediaListCommandHandler::ViewingState(void) const
+	?CommandInfoIndex@CGlxMediaListCommandHandler@@ABEHH@Z @ 52 NONAME ; int CGlxMediaListCommandHandler::CommandInfoIndex(int) const
+	?IsForwardLockedL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 53 NONAME ; int CGlxDRMUtility::IsForwardLockedL(class TDesC16 const &)
+	?OfferKeyEventL@CGlxMediaListCommandHandler@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 54 NONAME ; enum TKeyResponse CGlxMediaListCommandHandler::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
+	?Display@CGlxUiUtility@@QBEPAVCAlfDisplay@@XZ @ 55 NONAME ; class CAlfDisplay * CGlxUiUtility::Display(void) const
+	??0CGlxMediaListCommandHandler@@QAE@PAVMGlxMediaListProvider@@H@Z @ 56 NONAME ; CGlxMediaListCommandHandler::CGlxMediaListCommandHandler(class MGlxMediaListProvider *, int)
 	?DoDynInitMenuPaneL@CGlxMediaListCommandHandler@@MAEXHPAVCEikMenuPane@@@Z @ 57 NONAME ; void CGlxMediaListCommandHandler::DoDynInitMenuPaneL(int, class CEikMenuPane *)
 	?SetViewNavigationDirection@CGlxUiUtility@@QAEXW4TGlxNavigationDirection@@@Z @ 58 NONAME ; void CGlxUiUtility::SetViewNavigationDirection(enum TGlxNavigationDirection)
-	?CheckOpenRightsL@CGlxDRMUtility@@QAEHABVTDesC16@@H@Z @ 59 NONAME ; int CGlxDRMUtility::CheckOpenRightsL(class TDesC16 const &, int)
+	?ShowInfoOnlineL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 59 NONAME ; void CGlxDRMUtility::ShowInfoOnlineL(class TDesC16 const &)
 	?ScreenFurniture@CGlxUiUtility@@QAEPAVCGlxScreenFurniture@@XZ @ 60 NONAME ; class CGlxScreenFurniture * CGlxUiUtility::ScreenFurniture(void)
 
--- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/eabi/t_glxcommandhandlermoreinfou.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/eabi/t_glxcommandhandlermoreinfou.def	Tue May 11 16:13:40 2010 +0300
@@ -11,35 +11,35 @@
 	_ZN13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 10 NONAME
 	_ZN13CGlxUiUtility23ViewNavigationDirectionEv @ 11 NONAME
 	_ZN13CGlxUiUtility26SetViewNavigationDirectionE23TGlxNavigationDirection @ 12 NONAME
-	_ZN13CGlxUiUtility5CloseEv @ 13 NONAME
-	_ZN13CGlxUiUtility8UtilityLEv @ 14 NONAME
-	_ZN18CGlxTextureManager13RemoveTextureERK11CAlfTexture @ 15 NONAME
-	_ZN18CGlxTextureManager17HandleSkinChangedEv @ 16 NONAME
-	_ZN18CGlxTextureManager18CreateIconTextureLEiR7TDesC165TSize @ 17 NONAME
-	_ZN18CGlxTextureManager23CreateAvkonIconTextureLERK11TAknsItemIDi5TSize @ 18 NONAME
-	_ZN18CGlxTextureManager4NewLER18CAlfTextureManager @ 19 NONAME
-	_ZN26CGlxCommandHandlerMoreInfo4NewLEP21MGlxMediaListProvideri @ 20 NONAME
-	_ZN26CGlxCommandHandlerMoreInfoD0Ev @ 21 NONAME
-	_ZN26CGlxCommandHandlerMoreInfoD1Ev @ 22 NONAME
-	_ZN26CGlxCommandHandlerMoreInfoD2Ev @ 23 NONAME
-	_ZN27CGlxMediaListCommandHandler10DeactivateEv @ 24 NONAME
-	_ZN27CGlxMediaListCommandHandler11AddCommandLERKNS_12TCommandInfoE @ 25 NONAME
-	_ZN27CGlxMediaListCommandHandler11CommandInfoEi @ 26 NONAME
-	_ZN27CGlxMediaListCommandHandler11DoActivateLEi @ 27 NONAME
-	_ZN27CGlxMediaListCommandHandler12TCommandInfoC1Ei @ 28 NONAME
-	_ZN27CGlxMediaListCommandHandler12TCommandInfoC2Ei @ 29 NONAME
-	_ZN27CGlxMediaListCommandHandler14OfferKeyEventLERK9TKeyEvent10TEventCode @ 30 NONAME
-	_ZN27CGlxMediaListCommandHandler16DynInitMenuPaneLEiP12CEikMenuPane @ 31 NONAME
-	_ZN27CGlxMediaListCommandHandler18DoDynInitMenuPaneLEiP12CEikMenuPane @ 32 NONAME
-	_ZN27CGlxMediaListCommandHandler19PreDynInitMenuPaneLEi @ 33 NONAME
-	_ZN27CGlxMediaListCommandHandler8ExecuteLEi @ 34 NONAME
-	_ZN27CGlxMediaListCommandHandler9MediaListEv @ 35 NONAME
-	_ZN27CGlxMediaListCommandHandlerC2EP21MGlxMediaListProvideri @ 36 NONAME
-	_ZN27CGlxMediaListCommandHandlerD0Ev @ 37 NONAME
-	_ZN27CGlxMediaListCommandHandlerD1Ev @ 38 NONAME
-	_ZN27CGlxMediaListCommandHandlerD2Ev @ 39 NONAME
-	_ZNK13CGlxUiUtility11DisplaySizeEv @ 40 NONAME
-	_ZNK13CGlxUiUtility3EnvEv @ 41 NONAME
+	_ZN13CGlxUiUtility3EnvEv @ 13 NONAME
+	_ZN13CGlxUiUtility5CloseEv @ 14 NONAME
+	_ZN13CGlxUiUtility8UtilityLEv @ 15 NONAME
+	_ZN18CGlxTextureManager13RemoveTextureERK11CAlfTexture @ 16 NONAME
+	_ZN18CGlxTextureManager17HandleSkinChangedEv @ 17 NONAME
+	_ZN18CGlxTextureManager18CreateIconTextureLEiR7TDesC165TSize @ 18 NONAME
+	_ZN18CGlxTextureManager23CreateAvkonIconTextureLERK11TAknsItemIDi5TSize @ 19 NONAME
+	_ZN18CGlxTextureManager4NewLER18CAlfTextureManager @ 20 NONAME
+	_ZN26CGlxCommandHandlerMoreInfo4NewLEP21MGlxMediaListProvideri @ 21 NONAME
+	_ZN26CGlxCommandHandlerMoreInfoD0Ev @ 22 NONAME
+	_ZN26CGlxCommandHandlerMoreInfoD1Ev @ 23 NONAME
+	_ZN26CGlxCommandHandlerMoreInfoD2Ev @ 24 NONAME
+	_ZN27CGlxMediaListCommandHandler10DeactivateEv @ 25 NONAME
+	_ZN27CGlxMediaListCommandHandler11AddCommandLERKNS_12TCommandInfoE @ 26 NONAME
+	_ZN27CGlxMediaListCommandHandler11CommandInfoEi @ 27 NONAME
+	_ZN27CGlxMediaListCommandHandler11DoActivateLEi @ 28 NONAME
+	_ZN27CGlxMediaListCommandHandler12TCommandInfoC1Ei @ 29 NONAME
+	_ZN27CGlxMediaListCommandHandler12TCommandInfoC2Ei @ 30 NONAME
+	_ZN27CGlxMediaListCommandHandler14OfferKeyEventLERK9TKeyEvent10TEventCode @ 31 NONAME
+	_ZN27CGlxMediaListCommandHandler16DynInitMenuPaneLEiP12CEikMenuPanei @ 32 NONAME
+	_ZN27CGlxMediaListCommandHandler18DoDynInitMenuPaneLEiP12CEikMenuPane @ 33 NONAME
+	_ZN27CGlxMediaListCommandHandler19PreDynInitMenuPaneLEi @ 34 NONAME
+	_ZN27CGlxMediaListCommandHandler8ExecuteLEi @ 35 NONAME
+	_ZN27CGlxMediaListCommandHandler9MediaListEv @ 36 NONAME
+	_ZN27CGlxMediaListCommandHandlerC2EP21MGlxMediaListProvideri @ 37 NONAME
+	_ZN27CGlxMediaListCommandHandlerD0Ev @ 38 NONAME
+	_ZN27CGlxMediaListCommandHandlerD1Ev @ 39 NONAME
+	_ZN27CGlxMediaListCommandHandlerD2Ev @ 40 NONAME
+	_ZNK13CGlxUiUtility11DisplaySizeEv @ 41 NONAME
 	_ZNK13CGlxUiUtility7DisplayEv @ 42 NONAME
 	_ZNK27CGlxMediaListCommandHandler11IsDisabledLEiR13MGlxMediaList @ 43 NONAME
 	_ZNK27CGlxMediaListCommandHandler11IsSupportedEi @ 44 NONAME
@@ -52,11 +52,11 @@
 	_ZNK27CGlxMediaListCommandHandler23BypassFiltersForExecuteEv @ 51 NONAME
 	_ZNK27CGlxMediaListCommandHandler24DoGetRequiredAttributesLER6RArrayI13TMPXAttributeEi @ 52 NONAME
 	_ZNK27CGlxMediaListCommandHandler9MediaListEv @ 53 NONAME
-	_ZTI13CGlxUiUtility @ 54 NONAME ; #<TI>#
-	_ZTI27CGlxMediaListCommandHandler @ 55 NONAME ; #<TI>#
-	_ZTV13CGlxUiUtility @ 56 NONAME ; #<VT>#
-	_ZTV27CGlxMediaListCommandHandler @ 57 NONAME ; #<VT>#
-	_ZThn4_N13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 58 NONAME ; #<thunk>#
-	_ZThn4_N18CGlxTextureManager17HandleSkinChangedEv @ 59 NONAME ; #<thunk>#
-	_ZThn8_N13CGlxUiUtility13HandleActionLERK17TAlfActionCommand @ 60 NONAME ; #<thunk>#
+	_ZTI13CGlxUiUtility @ 54 NONAME
+	_ZTI27CGlxMediaListCommandHandler @ 55 NONAME
+	_ZTV13CGlxUiUtility @ 56 NONAME
+	_ZTV27CGlxMediaListCommandHandler @ 57 NONAME
+	_ZThn4_N13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 58 NONAME
+	_ZThn4_N18CGlxTextureManager17HandleSkinChangedEv @ 59 NONAME
+	_ZThn8_N13CGlxUiUtility13HandleActionLERK17TAlfActionCommand @ 60 NONAME
 
--- a/photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelproviderimpl.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/dataprovider/inc/glxmedialistmulmodelproviderimpl.h	Tue May 11 16:13:40 2010 +0300
@@ -23,6 +23,7 @@
 #define _GLXMEDIALISTMULMODELPROVIDERIMPL_H_
 
 #include <e32base.h>                       // Container Base Class
+#include <glxmediaid.h>
 #include "glxmulmodelproviderbase.h"       // DataProvider Base
 #include "mglxbindingobserver.h"           // Notifies that binding has changed
  
@@ -130,7 +131,7 @@
     CGlxResolutionUtility* iResolutionUtility;
     Alf::IMulWidget& iWidget;
     CGlxUiUtility* iUiUtility;
-
+    TGlxMediaId iMediaIDForTextureDeletion;
     };
     
 #endif // _GLXMEDIALISTMULMODELPROVIDERIMPL_H_
--- a/photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelproviderimpl.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/dataprovider/src/glxmedialistmulmodelproviderimpl.cpp	Tue May 11 16:13:40 2010 +0300
@@ -100,6 +100,7 @@
 			iBindingSet->HandleItemChangedL( *path ); 
 			CleanupStack::PopAndDestroy( path );
 			}
+		iMediaIDForTextureDeletion = iMediaList.Item(iMediaList.FocusIndex()).Id();
 	    }
 	    
 	if(UString( KListWidget ) == UString(iWidget.widgetName() ) ||  UString( KCoverFlowWidget ) == UString(iWidget.widgetName() ) )
@@ -175,6 +176,26 @@
         }
 	
 	CleanupStack::PopAndDestroy( path );
+	// Check for the deletion of a media item and delete the texture of the deleted media item.
+	// Deleting the texture after removing the item from the mul model and updating the new image.
+	// Hence the texture deletion is done at a later stage here instead of in HandleItemRemovedL().
+	if ((aNewIndex == aOldIndex) && (iMediaIDForTextureDeletion.Value()
+            != KGlxInvalidIdValue) || (aNewIndex == KErrNotFound && aOldIndex
+            == 0))
+        {
+        iUiUtility->GlxTextureManager().RemoveTexture(
+                iMediaIDForTextureDeletion, EFalse);
+        }
+    
+    // Storing the focussed media id for use during the focussed media item deletion operation
+    if (aNewIndex >= 0 && aNewIndex < aList->Count())
+        {
+        iMediaIDForTextureDeletion = aList->Item(aNewIndex).Id();
+        }
+    else
+        {
+        iMediaIDForTextureDeletion.SetValue(KGlxInvalidIdValue);
+        }
 	}
 
 // ----------------------------------------------------------------------------
--- a/photosgallery/viewframework/medialists/eabi/glxmedialistsu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/eabi/glxmedialistsu.def	Tue May 11 16:13:40 2010 +0300
@@ -190,4 +190,9 @@
 	_ZTV34TGlxFromFocusOutwardBlockyIterator @ 189 NONAME
 	_ZTV34TGlxFromIndexOutwardBlockyIterator @ 190 NONAME
 	_ZTV40TGlxFromManualIndexOutwardBlockyIterator @ 191 NONAME
+	_ZNK12CGlxItemList18__DbgTestInvariantEv @ 192 NONAME
+	_ZNK14CGlxListWindow18__DbgTestInvariantEv @ 193 NONAME
+	_ZNK17CGlxNavigableList18__DbgTestInvariantEv @ 194 NONAME
+	_ZNK18CGlxStaticItemList18__DbgTestInvariantEv @ 195 NONAME
+	_ZNK9CGlxMedia18__DbgTestInvariantEv @ 196 NONAME
 
--- a/photosgallery/viewframework/medialists/src/glxcache.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxcache.cpp	Tue May 11 16:13:40 2010 +0300
@@ -314,7 +314,10 @@
                         }
                     else if (attrib == KGlxMediaGeneralLastModifiedDate)
                         {
-                        aTarget.SetTObjectValueL(attrib, aSource.ValueTObjectL<TInt64>(attrib));
+                        TTime modified = aSource.ValueTObjectL<TInt64>(attrib);
+                        TTimeIntervalSeconds utcOffset = User::UTCOffset();
+                        modified += utcOffset;
+                        aTarget.SetTObjectValueL(attrib, modified);
                         }
                     else if (attrib == KMPXMediaGeneralSize)
                         {
--- a/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Tue May 11 16:13:40 2010 +0300
@@ -802,92 +802,67 @@
                                 TParsePtrC parser(fileName);
                                 iMPXMedia->SetTextValueL(KMPXMediaGeneralTitle, parser.Name());
                                 }
-                            else if ( iRequestedAttrs[i] == KMPXMediaGeneralDate )
+                            else if ((iRequestedAttrs[i] == KGlxMediaGeneralLastModifiedDate)
+                                    || (iRequestedAttrs[i] == KMPXMediaGeneralDate))
                                 {
+                                // Image viewer use case, no need of genaral date, 
+                                // but, the same is added for attribute completion purpose.
+                                TMPXAttribute attrib = iRequestedAttrs[i];
                                 TTime time;
                                 time.HomeTime();
-                                iMPXMedia->SetTObjectValueL(KMPXMediaGeneralDate, time.Int64());
-                                }
-                            else if ( iRequestedAttrs[i] == KGlxMediaGeneralLastModifiedDate )
-                                {
-                                if(errInImage == KErrNone)
+                                if (errInImage == KErrNone)
                                     {
                                     RFs fs;
                                     CleanupClosePushL(fs);
-                                    TInt err = fs.Connect();   
-                                    if(err == KErrNone)
-                                        {                                    
-                                        TEntry entry;   
-                                        fs.Entry(fileName,entry);    
-                                        TTime time = entry.iModified;   
-                                        iMPXMedia->SetTObjectValueL(
-                                                KGlxMediaGeneralLastModifiedDate, 
-                                                time.Int64());
-                                        }
-                                    else
+                                    TInt err = fs.Connect();
+                                    if (err == KErrNone)
                                         {
-                                        TTime time;
-                                        time.HomeTime();
-                                        iMPXMedia->SetTObjectValueL(
-                                                KGlxMediaGeneralLastModifiedDate, 
-                                                time.Int64());
+                                        TEntry entry;
+                                        fs.Entry(fileName, entry);
+                                        time = entry.iModified;
                                         }
-                                    CleanupStack::PopAndDestroy(&fs);                                    
+                                    CleanupStack::PopAndDestroy(&fs);
                                     }
-                                else
-                                    {
-                                    TTime time;
-                                    time.HomeTime();
-                                    iMPXMedia->SetTObjectValueL(KGlxMediaGeneralLastModifiedDate, time.Int64());
-                                    }
+                                iMPXMedia->SetTObjectValueL(attrib,
+                                        time.Int64());
                                 }
                             else if ( iRequestedAttrs[i] == KMPXMediaGeneralSize )
                                 {
-                                if(errInImage == KErrNone)
+                                TInt64 size = 0;
+                                TInt err = KErrNotFound;
+                                if (errInImage == KErrNone)
                                     {
-                                    if(iImageViewerInstance->IsPrivate())
+                                    if (iImageViewerInstance->IsPrivate())
                                         {
-                                        TInt64 sz = 0;
-                                        TInt err = KErrNotFound;                                      
-                                        RFile64& imageHandle = iImageViewerInstance->ImageFileHandle();
-                                        if ( imageHandle.SubSessionHandle() != KNullHandle )
+                                        RFile64& imageHandle =
+                                                iImageViewerInstance->ImageFileHandle();
+                                        if (imageHandle.SubSessionHandle()
+                                                != KNullHandle)
                                             {
-                                            err = imageHandle.Size(sz);
-                                            }
-                                        if(err == KErrNone)
-                                            {
-                                            iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, (TUint)sz);
-                                            }
-                                        else
-                                            {
-                                            iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 0);                                            
+                                            err = imageHandle.Size(size);
                                             }
                                         }
                                     else
                                         {
                                         RFs fs;
                                         CleanupClosePushL(fs);
-                                        TInt err = fs.Connect();   
-                                        if(err == KErrNone)
+                                        err = fs.Connect();
+                                        if (err == KErrNone)
                                             {
-                                            TEntry entry;   
-                                            fs.Entry(fileName,entry);    
-                                            TUint sz = entry.iSize;                                      
-                                            iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, sz);
-                                            }
-                                        else
-                                            {
-                                            iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 0);
+                                            TEntry entry;
+                                            fs.Entry(fileName, entry);
+                                            size = (TUint) entry.iSize;
                                             }
                                         CleanupStack::PopAndDestroy(&fs);
                                         }
+
+                                    if (err != KErrNone)
+                                        {
+                                        size = 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);
-                                    }
+                                iMPXMedia->SetTObjectValueL(
+                                        KMPXMediaGeneralSize, size);
                                 }
                             else if ( iRequestedAttrs[i] == KMPXMediaGeneralDrive )
                                 {
--- a/photosgallery/viewframework/medialists/src/glxitemlist.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxitemlist.cpp	Tue May 11 16:13:40 2010 +0300
@@ -538,7 +538,7 @@
 // ---------------------------------------------------------------------------
 // Test invariant
 // ---------------------------------------------------------------------------
-void CGlxItemList::__DbgTestInvariant() const
+EXPORT_C void CGlxItemList::__DbgTestInvariant() const
     {
     #ifdef _DEBUG
     
--- a/photosgallery/viewframework/medialists/src/glxlistwindow.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxlistwindow.cpp	Tue May 11 16:13:40 2010 +0300
@@ -731,7 +731,7 @@
 // ---------------------------------------------------------------------------
 // Test invariant
 // ---------------------------------------------------------------------------
-void CGlxListWindow::__DbgTestInvariant() const
+EXPORT_C void CGlxListWindow::__DbgTestInvariant() const
     {
     TRACER("CGlxListWindow::__DbgTestInvariant");
     
--- a/photosgallery/viewframework/medialists/src/glxmedia.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxmedia.cpp	Tue May 11 16:13:40 2010 +0300
@@ -982,7 +982,7 @@
 // ---------------------------------------------------------------------------
 // Test invariant
 // ---------------------------------------------------------------------------
-void CGlxMedia::__DbgTestInvariant() const
+EXPORT_C void CGlxMedia::__DbgTestInvariant() const
     {
     TRACER("CGlxMedia::__DbgTestInvariant");
     
--- a/photosgallery/viewframework/medialists/src/glxnavigablelist.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxnavigablelist.cpp	Tue May 11 16:13:40 2010 +0300
@@ -918,7 +918,7 @@
 // ---------------------------------------------------------------------------
 // Test invariant
 // ---------------------------------------------------------------------------
-void CGlxNavigableList::__DbgTestInvariant() const
+EXPORT_C void CGlxNavigableList::__DbgTestInvariant() const
     {
     TRACER( "CGlxNavigableList::__DbgTestInvariant");
     
--- a/photosgallery/viewframework/medialists/src/glxstaticitemlist.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxstaticitemlist.cpp	Tue May 11 16:13:40 2010 +0300
@@ -720,7 +720,7 @@
 // ---------------------------------------------------------------------------
 // Test invariant
 // ---------------------------------------------------------------------------
-void CGlxStaticItemList::__DbgTestInvariant() const
+EXPORT_C void CGlxStaticItemList::__DbgTestInvariant() const
     {
     TRACER( "CGlxStaticItemList::__DbgTestInvariant");
     
--- a/photosgallery/viewframework/medialists/src/glxustringconverter.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxustringconverter.cpp	Tue May 11 16:13:40 2010 +0300
@@ -96,17 +96,18 @@
                 }
            break;
 
-
     		case EMPXTypeTObject:
     			{
-    			if( aAttribute == KMPXMediaGeneralDate )
+                if (aAttribute == KMPXMediaGeneralDate || aAttribute
+                        == KGlxMediaGeneralLastModifiedDate)
     				{
+                    TMPXAttribute mpxAttrib = aAttribute;
     				TTime date(0);
     				if( aFormatString == R_QTN_DATE_USUAL_WITH_ZERO )
                         {
                         HBufC* dateString = HBufC::NewLC(KMaxLongDateFormatSpec);
                         TPtr dateStringPtr (dateString->Des());
-                        media->GetValueTObject(date,KMPXMediaGeneralDate);
+                        media->GetValueTObject(date, mpxAttrib);
                         HBufC* dateFormat = CCoeEnv::Static()->AllocReadResourceLC
                             ( R_QTN_DATE_USUAL_WITH_ZERO );
                         date.FormatL( dateStringPtr , *dateFormat );
@@ -115,7 +116,7 @@
                         
                         HBufC* timeString = HBufC::NewLC(KMaxTimeFormatSpec);
                         TPtr timeStringPtr (timeString->Des());
-                        media->GetValueTObject(date,KMPXMediaGeneralDate);
+                        media->GetValueTObject(date, mpxAttrib);
                         HBufC* timeFormat = CCoeEnv::Static()->AllocReadResourceLC
                              ( R_QTN_TIME_USUAL_WITH_ZERO );
                         date.FormatL(  timeStringPtr , *timeFormat );
@@ -135,7 +136,7 @@
     				else if( aFormatString == R_QTN_TIME_USUAL_WITH_ZERO)
     					{
     					TBuf<20> timeString;
-    					media->GetValueTObject(date,KMPXMediaGeneralDate);
+    					media->GetValueTObject(date, mpxAttrib);
     					HBufC* timeFormat = CCoeEnv::Static()->AllocReadResourceLC
     						( R_QTN_TIME_USUAL_WITH_ZERO );
     					
@@ -147,7 +148,7 @@
                     else if( aFormatString == R_QTN_DATE_USUAL)
                         {
                         TBuf<20> dateString;
-                        media->GetValueTObject(date,KMPXMediaGeneralDate);
+                        media->GetValueTObject(date, mpxAttrib);
                         HBufC* dateFormat = CCoeEnv::Static()->AllocReadResourceLC
                             ( R_QTN_DATE_USUAL );
                         
--- a/photosgallery/viewframework/plugins/fullscreenviewplugin/data/glxfullscreenviewdata.rss	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/plugins/fullscreenviewplugin/data/glxfullscreenviewdata.rss	Tue May 11 16:13:40 2010 +0300
@@ -50,7 +50,7 @@
 RESOURCE AVKON_VIEW r_glx_fullscreen_view
 	{
 	menubar = r_glx_fullscreen_menubar;
-	cba = r_glx_fullscreen_softkeys;
+	cba = r_glx_fullscreen_emptysoftkeys;
 	toolbar = r_glx_fullscreen_view_toolbar;
 	}
 
@@ -308,6 +308,30 @@
 // Softkey Resources
 // ------------------------------------------------------------------------------------
 
+// Fullscreen Empty softkeys
+RESOURCE CBA r_glx_fullscreen_emptysoftkeys
+    {
+    flags = EEikCbaFlagTransparent;
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = " ";
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = " ";
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = " ";
+            }
+        };
+    }
+
 // Fullscreen softkeys
 RESOURCE CBA r_glx_fullscreen_softkeys
     {
--- a/photosgallery/viewframework/plugins/fullscreenviewplugin/src/glxmainfullscreenviewplugin.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/plugins/fullscreenviewplugin/src/glxmainfullscreenviewplugin.cpp	Tue May 11 16:13:40 2010 +0300
@@ -53,7 +53,8 @@
     TRACER("CGlxMainFullScreenViewPlugin::CGlxMainFullScreenViewPlugin()");
     iResourceIds.iMenuId = R_GLX_FULLSCREEN_MENU;
     iResourceIds.iViewId = R_GLX_FULLSCREEN_VIEW;
-    iResourceIds.iCbaId = R_GLX_FULLSCREEN_SOFTKEYS;
+    //Load empty soft keys at initialization
+    iResourceIds.iCbaId = R_GLX_FULLSCREEN_EMPTYSOFTKEYS;
     iViewUID = KGlxMainFullScreenViewImplementationId;
     
     }
--- a/photosgallery/viewframework/plugins/fullscreenviewpluginbase/inc/glxfullscreenviewpluginbase.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/plugins/fullscreenviewpluginbase/inc/glxfullscreenviewpluginbase.h	Tue May 11 16:13:40 2010 +0300
@@ -62,13 +62,13 @@
      * Override to add command handlers to the view
      *
      */
-virtual void AddCommandHandlersL();
+IMPORT_C virtual void AddCommandHandlersL();
 
     /**
      * Override to define resource file 
      *
      */
-virtual void GetResourceFilenameL(TFileName& aResFile);
+IMPORT_C virtual void GetResourceFilenameL(TFileName& aResFile);
 
 public:
 
--- a/photosgallery/viewframework/plugins/gridviewpluginbase/inc/glxgridviewpluginbase.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/plugins/gridviewpluginbase/inc/glxgridviewpluginbase.h	Tue May 11 16:13:40 2010 +0300
@@ -62,13 +62,13 @@
      * Override to add command handlers to the view
      *
      */
-virtual void AddCommandHandlersL();
+IMPORT_C virtual void AddCommandHandlersL();
 
     /**
      * Override to define resource file 
      *
      */
-virtual void GetResourceFilenameL(TFileName& aResFile);
+IMPORT_C virtual void GetResourceFilenameL(TFileName& aResFile);
 
 public:
 
--- a/photosgallery/viewframework/plugins/listviewplugin/src/glxmainlistviewplugin.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/plugins/listviewplugin/src/glxmainlistviewplugin.cpp	Tue May 11 16:13:40 2010 +0300
@@ -101,9 +101,7 @@
     // add help command handler
     TGlxHelpContext helpInfo;
     helpInfo.iBrowseContext =  LGAL_HLP_VIEW_LIST;
-    iListView->AddCommandHandlerL(CGlxCommandHandlerHelp::NewL(helpInfo)); 
-    //add ShowViaUpnp Command Handler for stop showing
-    iListView->AddCommandHandlerL(CGlxCommandHandlerShowViaUpnp::NewL(iListView, EFalse)); 
+    iListView->AddCommandHandlerL(CGlxCommandHandlerHelp::NewL(helpInfo));  
     }
 
 //  End of File
--- a/photosgallery/viewframework/plugins/tagsbrowserviewplugin/rom/tagsbrowserviewplugin.iby	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/plugins/tagsbrowserviewplugin/rom/tagsbrowserviewplugin.iby	Tue May 11 16:13:40 2010 +0300
@@ -29,4 +29,3 @@
 #endif // __TAGSBROWSERVIEWPLUGIN_IBY__
 
 // End of file
------------------------------------------------------------
\ No newline at end of file
--- a/photosgallery/viewframework/plugins/tagsbrowserviewplugin/rom/tagsbrowserviewplugin_resources.iby	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/plugins/tagsbrowserviewplugin/rom/tagsbrowserviewplugin_resources.iby	Tue May 11 16:13:40 2010 +0300
@@ -29,4 +29,3 @@
 #endif // __TAGSBROWSERVIEWPLUGIN__RESOURCES_IBY__
 
 // End of file
------------------------------------------------------------
\ No newline at end of file
Binary file photosgallery/viewframework/tvout/data/Thumbs.db has changed
--- a/photosgallery/viewframework/tvout/inc/glxhdmicontroller.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/tvout/inc/glxhdmicontroller.h	Tue May 11 16:13:40 2010 +0300
@@ -80,7 +80,7 @@
     IMPORT_C TBool IsHDMIConnected();
 
 private:// From MGlxTvObserver
-    virtual void HandleTvStatusChangedL ( TTvChangeType aChangeType );
+    void HandleTvStatusChangedL ( TTvChangeType aChangeType );
 
 private:
     /*
@@ -127,7 +127,8 @@
     CGlxHdmiContainer*      iHdmiContainer;
     CGlxHdmiSurfaceUpdater* iSurfaceUpdater;
     CGlxTv*  iGlxTvOut;
-    TBool iIsImageSupported;
+    TBool   iIsImageSupported;          // Flag to see if Image is supported
+    TBool   iPhotosForeground;             // Flag for determining if the image needs to be in posting mode
     };
 
 #endif /* GLXHDMICONTROLLER_H_ */
--- a/photosgallery/viewframework/tvout/inc/glxtvconnectionmonitor.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/tvout/inc/glxtvconnectionmonitor.h	Tue May 11 16:13:40 2010 +0300
@@ -114,6 +114,10 @@
      */
     void IssueNotificationL();
 
+    /**
+	 * Updates the ConnectionState of Tv Out and HDMI
+	 */
+	void UpdateConnectionStatusL();
 
 private: // class member data
 
--- a/photosgallery/viewframework/tvout/rom/glxtvout.iby	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/tvout/rom/glxtvout.iby	Tue May 11 16:13:40 2010 +0300
@@ -26,4 +26,3 @@
 #endif // __GLX_TVOUT_IBY__
 
 // End of file
------------------------------------------------------------
\ No newline at end of file
--- a/photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp	Tue May 11 16:13:40 2010 +0300
@@ -23,7 +23,6 @@
 #include "glxhdmicontainer.h"
 #include "glxhdmisurfaceupdater.h"
 
-
 #include "glxhdmicontroller.h"
 
 // -----------------------------------------------------------------------------
@@ -67,6 +66,11 @@
                                              TBool aStore)
     {
     TRACER("CGlxHdmiController::SetImageL()");
+    if (aFsBitmap == NULL || !aImageFile.Length())
+        {
+        GLX_LOG_INFO("CGlxHdmiController::SetImageL() - NULL Uri");
+        return;
+        }
     if (aStore)
         {
         iIsImageSupported = ETrue;
@@ -74,21 +78,22 @@
         }
     if (iGlxTvOut->IsHDMIConnected())
         {
-            GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
-            // do not close the surface , use the same surface instead.
-            // Call a function to pass imagefile
-            if (!iHdmiContainer)
-                {            
-                CreateHdmiContainerL(); 
-                }            
-            if (!iSurfaceUpdater)
-                {
-                // This case would come when surface updater is not created at the first instance and also
-                // it satisfies the 720p condition                
-                CreateSurfaceUpdaterL(aImageFile);
-                }
-            else
-                {
+        iPhotosForeground = ETrue;         // the image should be in posting mode
+        GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
+        // do not close the surface , use the same surface instead.
+        // Call a function to pass imagefile
+        if (!iHdmiContainer)
+            {            
+            CreateHdmiContainerL(); 
+            }            
+        if (!iSurfaceUpdater)
+            {
+            // This case would come when surface updater is not created at the first instance and also
+            // it satisfies the 720p condition                
+            CreateSurfaceUpdaterL(aImageFile);
+            }
+        else
+            {
             GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
             iSurfaceUpdater->UpdateNewImageL(aImageFile, aFsBitmap);
             }
@@ -97,7 +102,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// IsVideo 
+// ItemNotSupported 
 // -----------------------------------------------------------------------------
 EXPORT_C void CGlxHdmiController::ItemNotSupported()
     {
@@ -116,7 +121,7 @@
 EXPORT_C void CGlxHdmiController::ActivateZoom(TBool aAutoZoomOut)
     {
     TRACER("CGlxHdmiController::ActivateZoom()");
-    if (iGlxTvOut->IsHDMIConnected())
+    if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
         {
         iSurfaceUpdater->ActivateZoom(aAutoZoomOut);
         }
@@ -128,7 +133,7 @@
 EXPORT_C void CGlxHdmiController::DeactivateZoom()
     {
     TRACER("CGlxHdmiController::DeactivateZoom()");
-    if (iGlxTvOut->IsHDMIConnected())
+    if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
         {
         iSurfaceUpdater->DeactivateZoom();
         }
@@ -140,6 +145,8 @@
 EXPORT_C void CGlxHdmiController::ShiftToCloningMode()
     {
     TRACER("CGlxHdmiController::ShiftToCloningMode()");
+    iPhotosForeground = EFalse;
+    // Shift to cloning only if HDMI is connected and surfaceupdater available.
     if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
         {
         iSurfaceUpdater->ShiftToCloningMode();
@@ -152,17 +159,47 @@
 EXPORT_C void CGlxHdmiController::ShiftToPostingMode()
     {
     TRACER("CGlxHdmiController::ShiftToPostingMode()");
-    if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
+    iPhotosForeground = ETrue;
+    if (iGlxTvOut->IsHDMIConnected())
         {
-        iSurfaceUpdater->ShiftToPostingMode();
+        if (!iSurfaceUpdater)
+            {
+            GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - 1");
+            // This case would come when HDMI connected, TvOut /headphones being connected
+            // and then it shows a popup of "microphone connected" 
+            // thus Background - Foreground when headphones connected during HDMI connected
+            if (iFsBitmap == NULL || !iStoredImagePath->Length())
+                {
+                GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - NULL Uri");
+                return;
+                }
+            SetImageL(iStoredImagePath->Des(), iFsBitmap, EFalse);
+            }
+        else
+            {
+            GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - 2");
+            iSurfaceUpdater->ShiftToPostingMode();
+            }
         }
     }
 
 // -----------------------------------------------------------------------------
+// IsHDMIConnected 
+// -----------------------------------------------------------------------------
+EXPORT_C TBool CGlxHdmiController::IsHDMIConnected()
+    {
+    TRACER("CGlxHdmiController::IsHDMIConnected()");
+    return iGlxTvOut->IsHDMIConnected(); 
+    }
+
+
+// -----------------------------------------------------------------------------
 // Constructor
 // -----------------------------------------------------------------------------
 CGlxHdmiController::CGlxHdmiController():
-            iFsBitmap(NULL)
+            iFsBitmap(NULL),
+            iStoredImagePath(NULL),
+            iPhotosForeground(EFalse)
     {
     TRACER("CGlxHdmiController::CGlxHdmiController()");
     // Implement nothing here
@@ -204,7 +241,6 @@
         }    
     }
 
-
 // -----------------------------------------------------------------------------
 // CreateHdmiContainerL 
 // -----------------------------------------------------------------------------
@@ -256,7 +292,14 @@
     TRACER("CGlxHdmiController::HandleTvStatusChangedL()");
     if ( aChangeType == ETvConnectionChanged )          
         {
-        if ( iGlxTvOut->IsHDMIConnected() && iIsImageSupported )
+        if ( iGlxTvOut->IsHDMIConnected() && iGlxTvOut->IsConnected() && iSurfaceUpdater)
+            {
+            GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI and TV Connected");
+            // Do nothing , as this means HDMI is already connected and headset/tv cable connected
+            // meaning we shouldnt destroy HDMI and neither have to create surface updater.
+            return;
+            }
+        else if ( iGlxTvOut->IsHDMIConnected() && iIsImageSupported && iPhotosForeground)
             {
             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected");
             // Calling SetImageL() with appropriate parameters
@@ -264,8 +307,8 @@
             }
         else
             {
-            GLX_LOG_INFO2("CGlxHdmiController::HandleTvStatusChangedL() iIsImageSupported=%d, iGlxTvOut->IsHDMIConnected()=%d", 
-                    iIsImageSupported,iGlxTvOut->IsHDMIConnected());
+            GLX_LOG_INFO3("CGlxHdmiController::HandleTvStatusChangedL() iIsImageSupported=%d, iGlxTvOut->IsHDMIConnected()=%d, iIsPostingMode=%d", 
+                    iIsImageSupported,iGlxTvOut->IsHDMIConnected(),iPhotosForeground);
             // if it gets disconnected, destroy the surface 
             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Not Connected");
             DestroySurfaceUpdater();
@@ -273,12 +316,3 @@
         }
     }
 
-// -----------------------------------------------------------------------------
-// HandleTvStatusChangedL 
-// -----------------------------------------------------------------------------
-EXPORT_C TBool CGlxHdmiController::IsHDMIConnected()
-    {
-    TRACER("CGlxHdmiController::IsHDMIConnected()");
-    return iGlxTvOut->IsHDMIConnected(); 
-    }
-
--- a/photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp	Tue May 11 16:13:40 2010 +0300
@@ -29,6 +29,7 @@
 //  INTERNAL INCLUDES
 
 #include <glxlog.h>
+#include <glxtracer.h>
 #include <glxpanic.h>
 #include "glxtv.h"
 #include <AccPolGenericIdDefinitions.h>
@@ -40,7 +41,7 @@
 CGlxTvConnectionMonitor* CGlxTvConnectionMonitor::NewL(
                                MGlxTvConnectionObserver& aConnectionObserver ) 
     {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor::NewL");
+    TRACER("CGlxTvConnectionMonitor::NewL");
     CGlxTvConnectionMonitor* self = new (ELeave) 
                 CGlxTvConnectionMonitor( aConnectionObserver );
     CleanupStack::PushL( self );
@@ -56,7 +57,7 @@
 //
 CGlxTvConnectionMonitor::~CGlxTvConnectionMonitor()
     {
-    GLX_LOG_INFO("~CGlxTvConnectionMonitor");
+    TRACER("~CGlxTvConnectionMonitor");
     Cancel();
     iTvAccCon.CloseSubSession();
     iTvAccServer.Disconnect();
@@ -67,14 +68,15 @@
 // Default C++ constructor
 //-----------------------------------------------------------------------------
 //
-CGlxTvConnectionMonitor::CGlxTvConnectionMonitor
-                           ( MGlxTvConnectionObserver& aConnectionObserver ) 
-                            :CActive(EPriorityStandard), 
-                             iConnectionObserver ( aConnectionObserver )
-    {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor");
-    CActiveScheduler::Add( this );
-    }
+CGlxTvConnectionMonitor::CGlxTvConnectionMonitor(
+		MGlxTvConnectionObserver& aConnectionObserver) :
+	CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver),
+			iTvOutConnectionState(EFalse), iHDMIConnectionState(EFalse)
+
+	{
+	TRACER("CGlxTvConnectionMonitor");
+	CActiveScheduler::Add(this);
+	}
 
 
 //-----------------------------------------------------------------------------
@@ -83,19 +85,11 @@
 //
 void CGlxTvConnectionMonitor::ConstructL()
     {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor::ConstructL");
+    TRACER("CGlxTvConnectionMonitor::ConstructL");
     User::LeaveIfError(iTvAccServer.Connect());
 	User::LeaveIfError(iTvAccCon.CreateSubSession(iTvAccServer));
-	User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
-	for (int i = 0; i < iCurrentAccArray.Count(); i++)
-		{
-		iTvOutConnectionState
-				= (iCurrentAccArray.GetGenericIDL(i).PhysicalConnectionCaps()
-						== KPCWired);
-		iHDMIConnectionState
-				= (iCurrentAccArray.GetGenericIDL(i).PhysicalConnectionCaps()
-						== KPCHDMI);
-		}
+
+	UpdateConnectionStatusL();
 	IssueRequest();  
     }
 
@@ -106,7 +100,7 @@
 //
 void CGlxTvConnectionMonitor::RunL()
     {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor::RunL");
+    TRACER("CGlxTvConnectionMonitor::RunL");
     // Check for errors
     User::LeaveIfError( iStatus.Int() );
     // Notify observers
@@ -123,7 +117,7 @@
 //
 void CGlxTvConnectionMonitor::DoCancel()
     {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor::DoCancel");
+    TRACER("CGlxTvConnectionMonitor::DoCancel");
     iTvAccCon.CancelGetAccessoryConnectionStatus();
     iTvAccCon.CancelNotifyAccessoryConnectionStatusChanged();
     }
@@ -148,7 +142,7 @@
 //
 TBool CGlxTvConnectionMonitor::IsConnected() const
     {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor::IsConnected");
+    TRACER("CGlxTvConnectionMonitor::IsConnected");
     GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsConnected iTvOutConnectionState=%d",iTvOutConnectionState);
     return iTvOutConnectionState;
     }
@@ -160,7 +154,7 @@
 //
 TBool CGlxTvConnectionMonitor::IsHDMIConnected() const
     {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor::IsHDMIConnected");
+    TRACER("CGlxTvConnectionMonitor::IsHDMIConnected");
     GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsHDMIConnected iHDMIConnectionState=%d",iHDMIConnectionState);
     return iHDMIConnectionState;
     }
@@ -171,7 +165,7 @@
 //
 void CGlxTvConnectionMonitor::IssueRequest()
     {
-    GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueRequest");
+    TRACER("CGlxTvConnectionMonitor::IssueRequest");
     if (!IsActive()) // required for testing
         {
         iTvAccCon.NotifyAccessoryConnectionStatusChanged(iStatus,iCurrentAccArray);
@@ -184,65 +178,91 @@
 //-----------------------------------------------------------------------------
 //
 void CGlxTvConnectionMonitor::IssueNotificationL()
-    {
-	GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL");
+	{
+	TRACER("CGlxTvConnectionMonitor::IssueNotificationL");
 	TBool previousTvState = iTvOutConnectionState;
 	TBool previousHDMIState = iHDMIConnectionState;
-	GLX_LOG_INFO2("previousTvState = %d , previousHDMIState = %d",
-			previousTvState,previousHDMIState);
-
-	//gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
-	User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
-
-	CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();
-	CleanupStack::PushL(nameArray);
 
-	//
-	//  Get the number of currently connected accessories
-	//  Loop through each connected accessory looking for
-	//  the desired capabilities
-	//
-	iTvOutConnectionState = EFalse;
-	iHDMIConnectionState = EFalse;
-	const TInt count = iCurrentAccArray.Count();
-	for (TInt index = 0; index < count; index++)
-		{
-		TAccPolGenericID genId = iCurrentAccArray.GetGenericIDL(index);
-		//  Get all supported capabilities for this connected accessory.
-		iTvAccCon.GetSubblockNameArrayL(genId, *nameArray);
-		//  Check if this connected accessory supports TV-Out capabality.
-		if (nameArray->HasName(KAccVideoOut))
-			{
-			GLX_LOG_INFO("TV-Out Capabilities Exist");
-			TAccPolNameRecord nameRecord;
-			nameRecord.SetNameL(KAccVideoOut);
-			TAccValueTypeTInt value;
-			iTvAccCon.GetValueL(genId, nameRecord, value);
-			if (value.iValue == EAccVideoOutEHDMI)
-				{
-				GLX_LOG_INFO("HDMI is connected Capabilities Exist");
-				iHDMIConnectionState = ETrue;
-				break;
-				}
-			else if (value.iValue == EAccVideoOutCVideo)
-				{
-				GLX_LOG_INFO("TV is connected Capabilities Exist");
-				iTvOutConnectionState = ETrue;
-				break;
-				}
-			}
+	// Update the connection status
+	UpdateConnectionStatusL();
 
-		}
-	CleanupStack::PopAndDestroy(nameArray);
-
+	// trigger tvstatus change only when there is actually a change the in the connection and not 
+	// for spurious events
 	if (previousTvState != iTvOutConnectionState || previousHDMIState
 			!= iHDMIConnectionState)
 		{
-		GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL -"
-				" TvConnectionStatusChanged");
-		GLX_LOG_INFO2("CurrentTvState = %d , CurrentHDMIState = %d",
-				iTvOutConnectionState,iHDMIConnectionState);
+		GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered");
 		iConnectionObserver.HandleTvConnectionStatusChangedL();
 		}
 	}
 
+//-----------------------------------------------------------------------------
+// UpdateConnectionStatusL()
+//-----------------------------------------------------------------------------
+//
+void CGlxTvConnectionMonitor::UpdateConnectionStatusL()
+    {
+    TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()");
+
+    GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d",
+            iTvOutConnectionState,iHDMIConnectionState);
+
+    // reset the states
+    iHDMIConnectionState = EFalse;
+    iTvOutConnectionState = EFalse;
+
+    //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
+    User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
+
+    CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();
+    CleanupStack::PushL(nameArray);
+
+    //  Get the number of currently connected accessories
+    //  Loop through each connected accessory looking for
+    //  the desired capabilities
+    //
+    const TInt count = iCurrentAccArray.Count();
+    GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current count value is %d",count);
+    for (TInt index = 0; index < count; index++)
+        {
+        const TAccPolGenericID genId = iCurrentAccArray.GetGenericIDL(index);
+        //  Check if this connected accessory supports TV-Out capabality.
+        GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current index value is %d",index);
+        GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Video Accessory Supported");
+        TAccPolNameRecord nameRecord;
+        nameRecord.SetNameL(KAccVideoOut);
+
+        if (genId.DeviceTypeCaps( KDTAVDevice ) &&
+                genId.PhysicalConnectionCaps( KPCHDMI ))
+            {
+            TAccValueTypeTInt value;
+            TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
+            if (err ==KErrNone)
+                {
+                if (value.iValue == EAccVideoOutEHDMI)
+                    {
+                    GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HDMI is connected");
+                    iHDMIConnectionState = ETrue;
+                    }
+                }
+            }
+        else if (genId.DeviceTypeCaps( KDTAVDevice ) &&
+                genId.PhysicalConnectionCaps( KPCWired ))
+            {
+            TAccValueTypeTInt value;
+            TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
+            if (err ==KErrNone)
+                {
+                if (value.iValue == EAccVideoOutCVideo)
+                    {
+                    GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected");
+                    iTvOutConnectionState = ETrue;
+                    }
+                }
+            }
+        }
+    CleanupStack::PopAndDestroy(nameArray);
+
+    GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d",
+            iTvOutConnectionState,iHDMIConnectionState);
+    }
--- a/photosgallery/viewframework/uiutilities/bwins/glxuiutilitiesu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/bwins/glxuiutilitiesu.def	Tue May 11 16:13:40 2010 +0300
@@ -11,57 +11,60 @@
 	?RegisterActiveMediaList@CGlxActiveMediaListRegistry@@QAEXPAVMGlxMediaList@@@Z @ 10 NONAME ; void CGlxActiveMediaListRegistry::RegisterActiveMediaList(class MGlxMediaList *)
 	?FormatString@GlxGeneralUiUtilities@@SAXAAVTDes16@@ABVTDesC16@@HHH@Z @ 11 NONAME ; void GlxGeneralUiUtilities::FormatString(class TDes16 &, class TDesC16 const &, int, int, int)
 	?AppOrientation@CGlxUiUtility@@QBE?AW4TGlxOrientation@@XZ @ 12 NONAME ; enum TGlxOrientation CGlxUiUtility::AppOrientation(void) const
-	?StopTNMDaemon@CGlxUiUtility@@QAEHXZ @ 13 NONAME ; int CGlxUiUtility::StopTNMDaemon(void)
-	?NewLC@CGlxScreenFurniture@@SAPAV1@AAVCGlxUiUtility@@@Z @ 14 NONAME ; class CGlxScreenFurniture * CGlxScreenFurniture::NewLC(class CGlxUiUtility &)
-	?ShowAlfDisplayL@CGlxUiUtility@@SAXXZ @ 15 NONAME ; void CGlxUiUtility::ShowAlfDisplayL(void)
-	?LayoutIsMirrored@GlxGeneralUiUtilities@@SAHXZ @ 16 NONAME ; int GlxGeneralUiUtilities::LayoutIsMirrored(void)
-	?IsLandscape@GlxGeneralUiUtilities@@SAHXZ @ 17 NONAME ; int GlxGeneralUiUtilities::IsLandscape(void)
-	?SetToolbarPosition@CGlxScreenFurniture@@QAEXXZ @ 18 NONAME ; void CGlxScreenFurniture::SetToolbarPosition(void)
-	?HandleTvStatusChangedL@CGlxUiUtility@@UAEXW4TTvChangeType@@@Z @ 19 NONAME ; void CGlxUiUtility::HandleTvStatusChangedL(enum TTvChangeType)
-	?ModifySoftkeyIdL@CGlxScreenFurniture@@QAEXW4TCommandPosition@CEikButtonGroupContainer@@HHABVTDesC16@@@Z @ 20 NONAME ; void CGlxScreenFurniture::ModifySoftkeyIdL(enum CEikButtonGroupContainer::TCommandPosition, int, int, class TDesC16 const &)
-	?Close@CGlxUiUtility@@QAEXXZ @ 21 NONAME ; void CGlxUiUtility::Close(void)
-	?ViewDeactivated@CGlxScreenFurniture@@QAEXH@Z @ 22 NONAME ; void CGlxScreenFurniture::ViewDeactivated(int)
-	?GetItemsLeftCount@CGlxUiUtility@@QAEHXZ @ 23 NONAME ; int CGlxUiUtility::GetItemsLeftCount(void)
-	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@AAV?$RPointerArray@VCAlfControlGroup@@@@@Z @ 24 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class RPointerArray<class CAlfControlGroup> &)
-	?ShowProgressbarL@CGlxProgressIndicator@@QAEXXZ @ 25 NONAME ; void CGlxProgressIndicator::ShowProgressbarL(void)
-	?SetGridToolBar@CGlxUiUtility@@QAEXPAVCAknToolbar@@@Z @ 26 NONAME ; void CGlxUiUtility::SetGridToolBar(class CAknToolbar *)
-	?AppState@GlxSetAppState@@SA?AW4TGlxAppState@@XZ @ 27 NONAME ; enum TGlxAppState GlxSetAppState::AppState(void)
-	?ShowInfoNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 28 NONAME ; void GlxGeneralUiUtilities::ShowInfoNoteL(class TDesC16 const &, int)
-	?RemoveSkinChangeObserver@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 29 NONAME ; void CGlxUiUtility::RemoveSkinChangeObserver(class MGlxSkinChangeObserver &)
-	?UtilityL@CGlxUiUtility@@SAPAV1@XZ @ 30 NONAME ; class CGlxUiUtility * CGlxUiUtility::UtilityL(void)
-	?StartTNMDaemon@CGlxUiUtility@@QAEHXZ @ 31 NONAME ; int CGlxUiUtility::StartTNMDaemon(void)
-	?HideAlfDisplayL@CGlxUiUtility@@SAXXZ @ 32 NONAME ; void CGlxUiUtility::HideAlfDisplayL(void)
-	?DisplaySize@CGlxUiUtility@@QBE?AVTSize@@XZ @ 33 NONAME ; class TSize CGlxUiUtility::DisplaySize(void) const
-	?ShowErrorNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 34 NONAME ; void GlxGeneralUiUtilities::ShowErrorNoteL(class TDesC16 const &, int)
-	?SetActiveView@CGlxScreenFurniture@@QAEXH@Z @ 35 NONAME ; void CGlxScreenFurniture::SetActiveView(int)
-	?SetState@GlxSetAppState@@SAXW4TGlxAppState@@@Z @ 36 NONAME ; void GlxSetAppState::SetState(enum TGlxAppState)
-	?SetLeftSoftKeyL@CGlxTextEntryPopup@@QAEXH@Z @ 37 NONAME ; void CGlxTextEntryPopup::SetLeftSoftKeyL(int)
-	?GetGridToolBar@CGlxUiUtility@@QAEPAVCAknToolbar@@XZ @ 38 NONAME ; class CAknToolbar * CGlxUiUtility::GetGridToolBar(void)
-	?SetToolbarItemVisibility@CGlxScreenFurniture@@QAEXHH@Z @ 39 NONAME ; void CGlxScreenFurniture::SetToolbarItemVisibility(int, int)
-	?AddSkinChangeObserverL@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 40 NONAME ; void CGlxUiUtility::AddSkinChangeObserverL(class MGlxSkinChangeObserver &)
-	?SetTooltipL@CGlxScreenFurniture@@QAEXHW4TTooltipPosition@CAknButton@@ABVTDesC16@@@Z @ 41 NONAME ; void CGlxScreenFurniture::SetTooltipL(int, enum CAknButton::TTooltipPosition, class TDesC16 const &)
-	?GetRotatedImageSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 42 NONAME ; class TSize CGlxUiUtility::GetRotatedImageSize(void)
-	?SetToolbarVisibility@CGlxScreenFurniture@@QAEXH@Z @ 43 NONAME ; void CGlxScreenFurniture::SetToolbarVisibility(int)
-	?IsPenSupported@CGlxUiUtility@@QAEHXZ @ 44 NONAME ; int CGlxUiUtility::IsPenSupported(void)
-	?IsExitingState@CGlxUiUtility@@QAEHXZ @ 45 NONAME ; int CGlxUiUtility::IsExitingState(void)
-	?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 46 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int)
-	?TextStyleIdL@CGlxUiUtility@@QAEHHH@Z @ 47 NONAME ; int CGlxUiUtility::TextStyleIdL(int, int)
-	?InstanceL@CGlxActiveMediaListRegistry@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 48 NONAME ; class CGlxActiveMediaListRegistry * CGlxActiveMediaListRegistry::InstanceL(class MGlxActiveMediaListChangeObserver *)
-	?DeregisterActiveMediaList@CGlxActiveMediaListRegistry@@QAEXPAVMGlxMediaList@@@Z @ 49 NONAME ; void CGlxActiveMediaListRegistry::DeregisterActiveMediaList(class MGlxMediaList *)
-	?CreateImageLoadingAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@AAVCAlfVisual@@AAVCAlfTexture@@@Z @ 50 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateImageLoadingAnimationL(class CAlfVisual &, class CAlfTexture &)
-	?SetAppOrientationL@CGlxUiUtility@@QAEXW4TGlxOrientation@@@Z @ 51 NONAME ; void CGlxUiUtility::SetAppOrientationL(enum TGlxOrientation)
-	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHABVTDesC16@@@Z @ 52 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(class TDesC16 const &)
-	?SetToolbarItemDimmed@CGlxScreenFurniture@@QAEXHH@Z @ 53 NONAME ; void CGlxScreenFurniture::SetToolbarItemDimmed(int, int)
-	?NewL@CGlxTextEntryPopup@@SAPAV1@ABVTDesC16@@AAVTDes16@@@Z @ 54 NONAME ; class CGlxTextEntryPopup * CGlxTextEntryPopup::NewL(class TDesC16 const &, class TDes16 &)
-	?Display@CGlxUiUtility@@QBEPAVCAlfDisplay@@XZ @ 55 NONAME ; class CAlfDisplay * CGlxUiUtility::Display(void) const
-	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@PAVCAlfControlGroup@@@Z @ 56 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class CAlfControlGroup *)
-	?Env@CGlxUiUtility@@QBEPAVCAlfEnv@@XZ @ 57 NONAME ; class CAlfEnv * CGlxUiUtility::Env(void) const
-	?NewL@CGlxProgressIndicator@@SAPAV1@AAVMDialogDismisedObserver@@@Z @ 58 NONAME ; class CGlxProgressIndicator * CGlxProgressIndicator::NewL(class MDialogDismisedObserver &)
-	?SetViewNavigationDirection@CGlxUiUtility@@QAEXW4TGlxNavigationDirection@@@Z @ 59 NONAME ; void CGlxUiUtility::SetViewNavigationDirection(enum TGlxNavigationDirection)
-	?ShowConfirmationNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 60 NONAME ; void GlxGeneralUiUtilities::ShowConfirmationNoteL(class TDesC16 const &, int)
-	?ScreenFurniture@CGlxUiUtility@@QAEPAVCGlxScreenFurniture@@XZ @ 61 NONAME ; class CGlxScreenFurniture * CGlxUiUtility::ScreenFurniture(void)
-	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHHABVTDesC16@@@Z @ 62 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(int, class TDesC16 const &)
-	?SetFocusL@CGlxScreenFurniture@@QAEXH@Z @ 63 NONAME ; void CGlxScreenFurniture::SetFocusL(int)
-	?GetGridIconSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 64 NONAME ; class TSize CGlxUiUtility::GetGridIconSize(void)
-	?InstanceL@MGlxActiveMediaListResolver@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 65 NONAME ; class MGlxActiveMediaListResolver * MGlxActiveMediaListResolver::InstanceL(class MGlxActiveMediaListChangeObserver *)
+	?DismissProgressDialog@CGlxProgressIndicator@@QAEXXZ @ 13 NONAME ; void CGlxProgressIndicator::DismissProgressDialog(void)
+	?StopTNMDaemon@CGlxUiUtility@@QAEHXZ @ 14 NONAME ; int CGlxUiUtility::StopTNMDaemon(void)
+	?NewLC@CGlxScreenFurniture@@SAPAV1@AAVCGlxUiUtility@@@Z @ 15 NONAME ; class CGlxScreenFurniture * CGlxScreenFurniture::NewLC(class CGlxUiUtility &)
+	?ShowAlfDisplayL@CGlxUiUtility@@SAXXZ @ 16 NONAME ; void CGlxUiUtility::ShowAlfDisplayL(void)
+	?LayoutIsMirrored@GlxGeneralUiUtilities@@SAHXZ @ 17 NONAME ; int GlxGeneralUiUtilities::LayoutIsMirrored(void)
+	?IsLandscape@GlxGeneralUiUtilities@@SAHXZ @ 18 NONAME ; int GlxGeneralUiUtilities::IsLandscape(void)
+	?SetToolbarPosition@CGlxScreenFurniture@@QAEXXZ @ 19 NONAME ; void CGlxScreenFurniture::SetToolbarPosition(void)
+	?HandleTvStatusChangedL@CGlxUiUtility@@UAEXW4TTvChangeType@@@Z @ 20 NONAME ; void CGlxUiUtility::HandleTvStatusChangedL(enum TTvChangeType)
+	?ModifySoftkeyIdL@CGlxScreenFurniture@@QAEXW4TCommandPosition@CEikButtonGroupContainer@@HHABVTDesC16@@@Z @ 21 NONAME ; void CGlxScreenFurniture::ModifySoftkeyIdL(enum CEikButtonGroupContainer::TCommandPosition, int, int, class TDesC16 const &)
+	?Close@CGlxUiUtility@@QAEXXZ @ 22 NONAME ; void CGlxUiUtility::Close(void)
+	?ViewDeactivated@CGlxScreenFurniture@@QAEXH@Z @ 23 NONAME ; void CGlxScreenFurniture::ViewDeactivated(int)
+	?GetItemsLeftCount@CGlxUiUtility@@QAEHXZ @ 24 NONAME ; int CGlxUiUtility::GetItemsLeftCount(void)
+	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@AAV?$RPointerArray@VCAlfControlGroup@@@@@Z @ 25 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class RPointerArray<class CAlfControlGroup> &)
+	?ShowProgressbarL@CGlxProgressIndicator@@QAEXXZ @ 26 NONAME ; void CGlxProgressIndicator::ShowProgressbarL(void)
+	?SetGridToolBar@CGlxUiUtility@@QAEXPAVCAknToolbar@@@Z @ 27 NONAME ; void CGlxUiUtility::SetGridToolBar(class CAknToolbar *)
+	?AppState@GlxSetAppState@@SA?AW4TGlxAppState@@XZ @ 28 NONAME ; enum TGlxAppState GlxSetAppState::AppState(void)
+	?ShowInfoNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 29 NONAME ; void GlxGeneralUiUtilities::ShowInfoNoteL(class TDesC16 const &, int)
+	?RemoveSkinChangeObserver@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 30 NONAME ; void CGlxUiUtility::RemoveSkinChangeObserver(class MGlxSkinChangeObserver &)
+	?UtilityL@CGlxUiUtility@@SAPAV1@XZ @ 31 NONAME ; class CGlxUiUtility * CGlxUiUtility::UtilityL(void)
+	?StartTNMDaemon@CGlxUiUtility@@QAEHXZ @ 32 NONAME ; int CGlxUiUtility::StartTNMDaemon(void)
+	?HideAlfDisplayL@CGlxUiUtility@@SAXXZ @ 33 NONAME ; void CGlxUiUtility::HideAlfDisplayL(void)
+	?DisplaySize@CGlxUiUtility@@QBE?AVTSize@@XZ @ 34 NONAME ; class TSize CGlxUiUtility::DisplaySize(void) const
+	?ShowErrorNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 35 NONAME ; void GlxGeneralUiUtilities::ShowErrorNoteL(class TDesC16 const &, int)
+	?SetActiveView@CGlxScreenFurniture@@QAEXH@Z @ 36 NONAME ; void CGlxScreenFurniture::SetActiveView(int)
+	?SetState@GlxSetAppState@@SAXW4TGlxAppState@@@Z @ 37 NONAME ; void GlxSetAppState::SetState(enum TGlxAppState)
+	?SetLeftSoftKeyL@CGlxTextEntryPopup@@QAEXH@Z @ 38 NONAME ; void CGlxTextEntryPopup::SetLeftSoftKeyL(int)
+	?GetGridToolBar@CGlxUiUtility@@QAEPAVCAknToolbar@@XZ @ 39 NONAME ; class CAknToolbar * CGlxUiUtility::GetGridToolBar(void)
+	?SetToolbarItemVisibility@CGlxScreenFurniture@@QAEXHH@Z @ 40 NONAME ; void CGlxScreenFurniture::SetToolbarItemVisibility(int, int)
+	?AddSkinChangeObserverL@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 41 NONAME ; void CGlxUiUtility::AddSkinChangeObserverL(class MGlxSkinChangeObserver &)
+	?SetTooltipL@CGlxScreenFurniture@@QAEXHW4TTooltipPosition@CAknButton@@ABVTDesC16@@@Z @ 42 NONAME ; void CGlxScreenFurniture::SetTooltipL(int, enum CAknButton::TTooltipPosition, class TDesC16 const &)
+	?GetRotatedImageSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 43 NONAME ; class TSize CGlxUiUtility::GetRotatedImageSize(void)
+	?SetToolbarVisibility@CGlxScreenFurniture@@QAEXH@Z @ 44 NONAME ; void CGlxScreenFurniture::SetToolbarVisibility(int)
+	?IsPenSupported@CGlxUiUtility@@QAEHXZ @ 45 NONAME ; int CGlxUiUtility::IsPenSupported(void)
+	?IsExitingState@CGlxUiUtility@@QAEHXZ @ 46 NONAME ; int CGlxUiUtility::IsExitingState(void)
+	?Env@CGlxUiUtility@@QAEPAVCAlfEnv@@XZ @ 47 NONAME ; class CAlfEnv * CGlxUiUtility::Env(void)
+	?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 48 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int)
+	?TextStyleIdL@CGlxUiUtility@@QAEHHH@Z @ 49 NONAME ; int CGlxUiUtility::TextStyleIdL(int, int)
+	?InstanceL@CGlxActiveMediaListRegistry@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 50 NONAME ; class CGlxActiveMediaListRegistry * CGlxActiveMediaListRegistry::InstanceL(class MGlxActiveMediaListChangeObserver *)
+	?DeregisterActiveMediaList@CGlxActiveMediaListRegistry@@QAEXPAVMGlxMediaList@@@Z @ 51 NONAME ; void CGlxActiveMediaListRegistry::DeregisterActiveMediaList(class MGlxMediaList *)
+	?CreateImageLoadingAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@AAVCAlfVisual@@AAVCAlfTexture@@@Z @ 52 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateImageLoadingAnimationL(class CAlfVisual &, class CAlfTexture &)
+	?SetAppOrientationL@CGlxUiUtility@@QAEXW4TGlxOrientation@@@Z @ 53 NONAME ; void CGlxUiUtility::SetAppOrientationL(enum TGlxOrientation)
+	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHABVTDesC16@@@Z @ 54 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(class TDesC16 const &)
+	?SetToolbarItemDimmed@CGlxScreenFurniture@@QAEXHH@Z @ 55 NONAME ; void CGlxScreenFurniture::SetToolbarItemDimmed(int, int)
+	?NewL@CGlxTextEntryPopup@@SAPAV1@ABVTDesC16@@AAVTDes16@@@Z @ 56 NONAME ; class CGlxTextEntryPopup * CGlxTextEntryPopup::NewL(class TDesC16 const &, class TDes16 &)
+	?Display@CGlxUiUtility@@QBEPAVCAlfDisplay@@XZ @ 57 NONAME ; class CAlfDisplay * CGlxUiUtility::Display(void) const
+	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@PAVCAlfControlGroup@@@Z @ 58 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class CAlfControlGroup *)
+	?NewL@CGlxProgressIndicator@@SAPAV1@AAVMDialogDismisedObserver@@@Z @ 59 NONAME ; class CGlxProgressIndicator * CGlxProgressIndicator::NewL(class MDialogDismisedObserver &)
+	?SetViewNavigationDirection@CGlxUiUtility@@QAEXW4TGlxNavigationDirection@@@Z @ 60 NONAME ; void CGlxUiUtility::SetViewNavigationDirection(enum TGlxNavigationDirection)
+	?ShowConfirmationNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 61 NONAME ; void GlxGeneralUiUtilities::ShowConfirmationNoteL(class TDesC16 const &, int)
+	?ScreenFurniture@CGlxUiUtility@@QAEPAVCGlxScreenFurniture@@XZ @ 62 NONAME ; class CGlxScreenFurniture * CGlxUiUtility::ScreenFurniture(void)
+	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHHABVTDesC16@@@Z @ 63 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(int, class TDesC16 const &)
+	?SetFocusL@CGlxScreenFurniture@@QAEXH@Z @ 64 NONAME ; void CGlxScreenFurniture::SetFocusL(int)
+	?GetGridIconSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 65 NONAME ; class TSize CGlxUiUtility::GetGridIconSize(void)
+	?InstanceL@MGlxActiveMediaListResolver@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 66 NONAME ; class MGlxActiveMediaListResolver * MGlxActiveMediaListResolver::InstanceL(class MGlxActiveMediaListChangeObserver *)
+	?DisplayScreenClearerL@CGlxUiUtility@@QAEXXZ @ 67 NONAME ; void CGlxUiUtility::DisplayScreenClearerL(void)
+	?DestroyScreenClearer@CGlxUiUtility@@QAEXXZ @ 68 NONAME ; void CGlxUiUtility::DestroyScreenClearer(void)
 
--- a/photosgallery/viewframework/uiutilities/eabi/glxuiutilitiesu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/eabi/glxuiutilitiesu.def	Tue May 11 16:13:40 2010 +0300
@@ -22,67 +22,70 @@
 	_ZN13CGlxUiUtility24RemoveSkinChangeObserverER22MGlxSkinChangeObserver @ 21 NONAME
 	_ZN13CGlxUiUtility26SetViewNavigationDirectionE23TGlxNavigationDirection @ 22 NONAME
 	_ZN13CGlxUiUtility30VisibleItemsInPageGranularityLEv @ 23 NONAME
-	_ZN13CGlxUiUtility5CloseEv @ 24 NONAME
-	_ZN13CGlxUiUtility8UtilityLEv @ 25 NONAME
-	_ZN14GlxSetAppState8AppStateEv @ 26 NONAME
-	_ZN14GlxSetAppState8SetStateE12TGlxAppState @ 27 NONAME
-	_ZN15CGlxMMCNotifier4NewLER24MStorageNotifierObserver @ 28 NONAME
-	_ZN18CGlxTextEntryPopup15SetLeftSoftKeyLEi @ 29 NONAME
-	_ZN18CGlxTextEntryPopup4NewLERK7TDesC16R6TDes16 @ 30 NONAME
-	_ZN18CGlxTextEntryPopup9ExecuteLDEv @ 31 NONAME
-	_ZN19CGlxScreenFurniture11SetTooltipLEiN10CAknButton16TTooltipPositionERK7TDesC16 @ 32 NONAME
-	_ZN19CGlxScreenFurniture13SetActiveViewEi @ 33 NONAME
-	_ZN19CGlxScreenFurniture15ViewDeactivatedEi @ 34 NONAME
-	_ZN19CGlxScreenFurniture16ModifySoftkeyIdLEN24CEikButtonGroupContainer16TCommandPositionEiiRK7TDesC16 @ 35 NONAME
-	_ZN19CGlxScreenFurniture18SetToolbarPositionEv @ 36 NONAME
-	_ZN19CGlxScreenFurniture20SetToolbarItemDimmedEii @ 37 NONAME
-	_ZN19CGlxScreenFurniture20SetToolbarVisibilityEi @ 38 NONAME
-	_ZN19CGlxScreenFurniture24SetToolbarItemVisibilityEii @ 39 NONAME
-	_ZN19CGlxScreenFurniture4NewLER13CGlxUiUtility @ 40 NONAME
-	_ZN19CGlxScreenFurniture5NewLCER13CGlxUiUtility @ 41 NONAME
-	_ZN19CGlxScreenFurniture9SetFocusLEi @ 42 NONAME
-	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionP16CAlfControlGroup @ 43 NONAME
-	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionR13RPointerArrayI16CAlfControlGroupE @ 44 NONAME
-	_ZN19GlxAnimationFactory28CreateImageLoadingAnimationLER10CAlfVisualR11CAlfTexture @ 45 NONAME
-	_ZN21CGlxProgressIndicator16ShowProgressbarLEv @ 46 NONAME
-	_ZN21CGlxProgressIndicator4NewLER23MDialogDismisedObserver @ 47 NONAME
-	_ZN21GlxAttributeRetriever9RetrieveLERK16MGlxFetchContextR13MGlxMediaListi @ 48 NONAME
-	_ZN21GlxGeneralUiUtilities11IsLandscapeEv @ 49 NONAME
-	_ZN21GlxGeneralUiUtilities12FormatStringER6TDes16RK7TDesC16iii @ 50 NONAME
-	_ZN21GlxGeneralUiUtilities13ConfirmQueryLERK7TDesC16 @ 51 NONAME
-	_ZN21GlxGeneralUiUtilities13ConfirmQueryLEiRK7TDesC16 @ 52 NONAME
-	_ZN21GlxGeneralUiUtilities13ShowInfoNoteLERK7TDesC16i @ 53 NONAME
-	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLERK7TDesC16i @ 54 NONAME
-	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLEi @ 55 NONAME
-	_ZN21GlxGeneralUiUtilities16LayoutIsMirroredEv @ 56 NONAME
-	_ZN21GlxGeneralUiUtilities21ShowConfirmationNoteLERK7TDesC16i @ 57 NONAME
-	_ZN27CGlxActiveMediaListRegistry23RegisterActiveMediaListEP13MGlxMediaList @ 58 NONAME
-	_ZN27CGlxActiveMediaListRegistry25DeregisterActiveMediaListEP13MGlxMediaList @ 59 NONAME
-	_ZN27CGlxActiveMediaListRegistry9InstanceLEP33MGlxActiveMediaListChangeObserver @ 60 NONAME
-	_ZN27MGlxActiveMediaListResolver9InstanceLEP33MGlxActiveMediaListChangeObserver @ 61 NONAME
-	_ZNK13CGlxUiUtility11DisplaySizeEv @ 62 NONAME
-	_ZNK13CGlxUiUtility14AppOrientationEv @ 63 NONAME
-	_ZNK13CGlxUiUtility3EnvEv @ 64 NONAME
-	_ZNK13CGlxUiUtility7DisplayEv @ 65 NONAME
-	_ZTI13CGlxUiUtility @ 66 NONAME
-	_ZTI15CGlxMMCNotifier @ 67 NONAME
-	_ZTI17CGlxAnimationView @ 68 NONAME
-	_ZTI18CGlxAnimationTimed @ 69 NONAME
-	_ZTI18CGlxTextEntryPopup @ 70 NONAME
-	_ZTI21CGlxProgressIndicator @ 71 NONAME
-	_ZTI21CGlxSkinChangeMonitor @ 72 NONAME
-	_ZTI25CGlxAnimationImageLoading @ 73 NONAME
-	_ZTI32CGlxWaitDialogAttributeRetriever @ 74 NONAME
-	_ZTI33CGlxSynchronousAttributeRetriever @ 75 NONAME
-	_ZTV13CGlxUiUtility @ 76 NONAME
-	_ZTV15CGlxMMCNotifier @ 77 NONAME
-	_ZTV17CGlxAnimationView @ 78 NONAME
-	_ZTV18CGlxAnimationTimed @ 79 NONAME
-	_ZTV18CGlxTextEntryPopup @ 80 NONAME
-	_ZTV21CGlxProgressIndicator @ 81 NONAME
-	_ZTV21CGlxSkinChangeMonitor @ 82 NONAME
-	_ZTV25CGlxAnimationImageLoading @ 83 NONAME
-	_ZTV32CGlxWaitDialogAttributeRetriever @ 84 NONAME
-	_ZTV33CGlxSynchronousAttributeRetriever @ 85 NONAME
-	_ZThn4_N13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 86 NONAME
+	_ZN13CGlxUiUtility3EnvEv @ 24 NONAME
+	_ZN13CGlxUiUtility5CloseEv @ 25 NONAME
+	_ZN13CGlxUiUtility8UtilityLEv @ 26 NONAME
+	_ZN14GlxSetAppState8AppStateEv @ 27 NONAME
+	_ZN14GlxSetAppState8SetStateE12TGlxAppState @ 28 NONAME
+	_ZN15CGlxMMCNotifier4NewLER24MStorageNotifierObserver @ 29 NONAME
+	_ZN18CGlxTextEntryPopup15SetLeftSoftKeyLEi @ 30 NONAME
+	_ZN18CGlxTextEntryPopup4NewLERK7TDesC16R6TDes16 @ 31 NONAME
+	_ZN18CGlxTextEntryPopup9ExecuteLDEv @ 32 NONAME
+	_ZN19CGlxScreenFurniture11SetTooltipLEiN10CAknButton16TTooltipPositionERK7TDesC16 @ 33 NONAME
+	_ZN19CGlxScreenFurniture13SetActiveViewEi @ 34 NONAME
+	_ZN19CGlxScreenFurniture15ViewDeactivatedEi @ 35 NONAME
+	_ZN19CGlxScreenFurniture16ModifySoftkeyIdLEN24CEikButtonGroupContainer16TCommandPositionEiiRK7TDesC16 @ 36 NONAME
+	_ZN19CGlxScreenFurniture18SetToolbarPositionEv @ 37 NONAME
+	_ZN19CGlxScreenFurniture20SetToolbarItemDimmedEii @ 38 NONAME
+	_ZN19CGlxScreenFurniture20SetToolbarVisibilityEi @ 39 NONAME
+	_ZN19CGlxScreenFurniture24SetToolbarItemVisibilityEii @ 40 NONAME
+	_ZN19CGlxScreenFurniture4NewLER13CGlxUiUtility @ 41 NONAME
+	_ZN19CGlxScreenFurniture5NewLCER13CGlxUiUtility @ 42 NONAME
+	_ZN19CGlxScreenFurniture9SetFocusLEi @ 43 NONAME
+	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionP16CAlfControlGroup @ 44 NONAME
+	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionR13RPointerArrayI16CAlfControlGroupE @ 45 NONAME
+	_ZN19GlxAnimationFactory28CreateImageLoadingAnimationLER10CAlfVisualR11CAlfTexture @ 46 NONAME
+	_ZN21CGlxProgressIndicator16ShowProgressbarLEv @ 47 NONAME
+	_ZN21CGlxProgressIndicator21DismissProgressDialogEv @ 48 NONAME
+	_ZN21CGlxProgressIndicator4NewLER23MDialogDismisedObserver @ 49 NONAME
+	_ZN21GlxAttributeRetriever9RetrieveLERK16MGlxFetchContextR13MGlxMediaListi @ 50 NONAME
+	_ZN21GlxGeneralUiUtilities11IsLandscapeEv @ 51 NONAME
+	_ZN21GlxGeneralUiUtilities12FormatStringER6TDes16RK7TDesC16iii @ 52 NONAME
+	_ZN21GlxGeneralUiUtilities13ConfirmQueryLERK7TDesC16 @ 53 NONAME
+	_ZN21GlxGeneralUiUtilities13ConfirmQueryLEiRK7TDesC16 @ 54 NONAME
+	_ZN21GlxGeneralUiUtilities13ShowInfoNoteLERK7TDesC16i @ 55 NONAME
+	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLERK7TDesC16i @ 56 NONAME
+	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLEi @ 57 NONAME
+	_ZN21GlxGeneralUiUtilities16LayoutIsMirroredEv @ 58 NONAME
+	_ZN21GlxGeneralUiUtilities21ShowConfirmationNoteLERK7TDesC16i @ 59 NONAME
+	_ZN27CGlxActiveMediaListRegistry23RegisterActiveMediaListEP13MGlxMediaList @ 60 NONAME
+	_ZN27CGlxActiveMediaListRegistry25DeregisterActiveMediaListEP13MGlxMediaList @ 61 NONAME
+	_ZN27CGlxActiveMediaListRegistry9InstanceLEP33MGlxActiveMediaListChangeObserver @ 62 NONAME
+	_ZN27MGlxActiveMediaListResolver9InstanceLEP33MGlxActiveMediaListChangeObserver @ 63 NONAME
+	_ZNK13CGlxUiUtility11DisplaySizeEv @ 64 NONAME
+	_ZNK13CGlxUiUtility14AppOrientationEv @ 65 NONAME
+	_ZNK13CGlxUiUtility7DisplayEv @ 66 NONAME
+	_ZTI13CGlxUiUtility @ 67 NONAME
+	_ZTI15CGlxMMCNotifier @ 68 NONAME
+	_ZTI17CGlxAnimationView @ 69 NONAME
+	_ZTI18CGlxAnimationTimed @ 70 NONAME
+	_ZTI18CGlxTextEntryPopup @ 71 NONAME
+	_ZTI21CGlxProgressIndicator @ 72 NONAME
+	_ZTI21CGlxSkinChangeMonitor @ 73 NONAME
+	_ZTI25CGlxAnimationImageLoading @ 74 NONAME
+	_ZTI32CGlxWaitDialogAttributeRetriever @ 75 NONAME
+	_ZTI33CGlxSynchronousAttributeRetriever @ 76 NONAME
+	_ZTV13CGlxUiUtility @ 77 NONAME
+	_ZTV15CGlxMMCNotifier @ 78 NONAME
+	_ZTV17CGlxAnimationView @ 79 NONAME
+	_ZTV18CGlxAnimationTimed @ 80 NONAME
+	_ZTV18CGlxTextEntryPopup @ 81 NONAME
+	_ZTV21CGlxProgressIndicator @ 82 NONAME
+	_ZTV21CGlxSkinChangeMonitor @ 83 NONAME
+	_ZTV25CGlxAnimationImageLoading @ 84 NONAME
+	_ZTV32CGlxWaitDialogAttributeRetriever @ 85 NONAME
+	_ZTV33CGlxSynchronousAttributeRetriever @ 86 NONAME
+	_ZThn4_N13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 87 NONAME
+	_ZN13CGlxUiUtility20DestroyScreenClearerEv @ 88 NONAME
+	_ZN13CGlxUiUtility21DisplayScreenClearerLEv @ 89 NONAME
 
--- a/photosgallery/viewframework/uiutilities/group/glxuiutilities.mmp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/group/glxuiutilities.mmp	Tue May 11 16:13:40 2010 +0300
@@ -116,6 +116,7 @@
 LIBRARY 		  libstdcpp.lib
 LIBRARY         flogger.lib
 //LIBRARY 		hgcontextutility.lib 					// For Teleport
+LIBRARY		akntransitionutils.lib
 // EXPORTUNFROZEN 
 
 // End of File
--- a/photosgallery/viewframework/uiutilities/inc/glxprogressindicator.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/inc/glxprogressindicator.h	Tue May 11 16:13:40 2010 +0300
@@ -38,7 +38,10 @@
     IMPORT_C static CGlxProgressIndicator* NewL(MDialogDismisedObserver&  aGlxGridViewNotifyObserver);
     ~CGlxProgressIndicator();
     static CGlxProgressIndicator* NewLC(MDialogDismisedObserver&  aGlxGridViewNotifyObserver);
-
+    /**
+     * dismiss progress dialog when it is needed
+     */
+    IMPORT_C void DismissProgressDialog();
 private:
     CGlxProgressIndicator(MDialogDismisedObserver&  aGlxGridViewNotifyObserver);
     void ConstructL();
--- a/photosgallery/viewframework/uiutilities/inc/glxuiutility.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/inc/glxuiutility.h	Tue May 11 16:13:40 2010 +0300
@@ -47,6 +47,8 @@
 class CGlxTv;
 class CGlxResolutionManager;
 class CGlxScreenFurniture;
+class CAknLocalScreenClearer;
+
 //class CHgContextUtility;
 /**
  * Enumeration for different types of navigations that occur from one view to the next
@@ -102,7 +104,7 @@
      * Get a pointer to the Alf environment.
      * @return The ALF environment owned by the AlfUtility.
      */
-    IMPORT_C CAlfEnv* Env() const;
+    IMPORT_C CAlfEnv* Env();
     
     /**
      * Get a pointer to the Alf display.
@@ -232,6 +234,16 @@
      * @param aToolbar Current Toolbar
      */
     IMPORT_C void SetGridToolBar(CAknToolbar* aToolbar);
+   
+    /**
+     * Display Blank screen
+     */
+    IMPORT_C void CGlxUiUtility::DisplayScreenClearerL();
+
+    /**
+     * Destroy Blank screen
+     */
+    IMPORT_C void CGlxUiUtility::DestroyScreenClearer();
     
 public: // from class MGlxTvObserver
 
@@ -262,7 +274,12 @@
 	 */
     IMPORT_C void RemoveSkinChangeObserver(MGlxSkinChangeObserver& aObserver);   
     
-
+public:
+    // Callback for periodic timer, static, 
+    static TInt PeriodicCallback( TAny* aPtr );
+	
+    // Non-static func called from periodic timer
+    void CreateAlfEnvCallbackL();
 private: 
     /**
      * C++ default constructor.
@@ -296,6 +313,12 @@
      * different thumbnail icons in Thumbnail database.
      */
      void GridIconSizeL();
+    
+     /**
+      * Create Alf environment
+      */
+     void CreateAlfEnvL();
+     
     // internal class to contain details of a style
 private:
     class TGlxTextStyle
@@ -357,6 +380,8 @@
 	
 	//current Toolbar being used
     CAknToolbar* iToolbar;
+    CPeriodic* iPeriodic;
+    CAknLocalScreenClearer* iClearer;
     };
 
 
--- a/photosgallery/viewframework/uiutilities/src/glxprogressindicator.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/src/glxprogressindicator.cpp	Tue May 11 16:13:40 2010 +0300
@@ -76,13 +76,10 @@
         {
         iProgressbarTicker->Cancel();
         delete iProgressbarTicker;
-        }
-    if(iProgressDialog)
-        {
-        iProgressDialog->ProcessFinishedL();
+        iProgressbarTicker = NULL;
         }
 
-	// Stop force generation of thumbnails when progress dialog is dismissed
+    // Stop force generation of thumbnails when progress dialog is dismissed
     if (iUiUtility)
         {
         iUiUtility->StopTNMDaemon();
@@ -99,14 +96,13 @@
     TRACER("CGlxProgressIndicator::ConstructL()");
     iUiUtility->StartTNMDaemon();
 
-    if(!iProgressbarTicker)
+    if (!iProgressbarTicker)
         {
         iProgressbarTicker = CPeriodic::NewL(CActive::EPriorityStandard);
         }
 
     iFinalCount = iUiUtility->GetItemsLeftCount();
     GLX_LOG_INFO1("final count in viewactivate = %d",iFinalCount);
-
     }
 
 
@@ -117,7 +113,7 @@
 TInt CGlxProgressIndicator::PeriodicCallbackL(TAny* aPtr )
     {
     TRACER("CGlxProgressIndicator::PeriodicCallbackL");
-    static_cast< CGlxProgressIndicator* >( aPtr )->DisplayProgressBarL();
+    static_cast<CGlxProgressIndicator*> (aPtr)->DisplayProgressBarL();
     return KErrNone;
     }
 
@@ -131,13 +127,13 @@
     TInt itemsLeft = iUiUtility->GetItemsLeftCount();
     GLX_LOG_INFO1("itemsLeft in DisplayProgressBarL = %d",iFinalCount);
     UpdateProgressBar();
-    if(!itemsLeft)
+    if (!itemsLeft)
         {
-        if(iProgressbarTicker->IsActive())
+        if (iProgressbarTicker->IsActive())
             {
             iProgressbarTicker->Cancel();
             }
-        StartProgressNoteL(iFinalCount,EFalse);
+        StartProgressNoteL(iFinalCount, EFalse);
         }
     }
 
@@ -149,39 +145,38 @@
     {
     TRACER("CGlxProgressIndicator::StartProgressNoteL()");
     TInt itemsLeft = iUiUtility->GetItemsLeftCount();
-    if(aShow)
+    if (aShow)
         {
-        if(!iProgressDialog)
+        if (!iProgressDialog)
             {
             iProgressDialog = new (ELeave) CAknProgressDialog(
                     (reinterpret_cast<CEikDialog**> (&iProgressDialog)),
                     ETrue);
             }
         iProgressDialog->PrepareLC(R_PROGRESS_NOTE);
-        
+
         iProgressInfo = iProgressDialog->GetProgressInfoL();
-        
+
         iProgressDialog->SetCallback(this);
-        
-        HBufC* processingInfo = 
-                    StringLoader::LoadLC(R_GLX_MAIN_LIST_VIEW_PROCESSING_DIALOG);
+
+        HBufC* processingInfo = StringLoader::LoadLC(
+                R_GLX_MAIN_LIST_VIEW_PROCESSING_DIALOG);
         iProgressDialog->SetTextL(*processingInfo);
-        CleanupStack::PopAndDestroy(processingInfo );
+        CleanupStack::PopAndDestroy(processingInfo);
         iProgressInfo->SetFinalValue(aFinalValue);
-        iProgressInfo->SetAndDraw(iFinalCount-itemsLeft);
+        iProgressInfo->SetAndDraw(iFinalCount - itemsLeft);
         iProgressDialog->RunLD();
         }
     else
         {
         iProgressDialog->ProcessFinishedL();
         iGlxGridViewNotifyObserver.HandleDialogDismissedL();
-        if(iProgressDialog)
+        if (iProgressDialog)
             {
             iProgressDialog = NULL;
             iProgressInfo = NULL;
             }
         }
-     
     }
     
 // -----------------------------------------------------------------------------
@@ -189,9 +184,9 @@
 // -----------------------------------------------------------------------------
 //
 void CGlxProgressIndicator::UpdateProgressBar()
-    {   
+    {
     TRACER("CGlxProgressIndicator::UpdateProgressBar()");
-    if(iProgressInfo)
+    if (iProgressInfo)
         {
         /*
          * to show a number string in the progress bar use the below code
@@ -208,20 +203,17 @@
 // DialogDismissedL
 // -----------------------------------------------------------------------------
 //  
-void CGlxProgressIndicator::DialogDismissedL(TInt aButtonId)
+void CGlxProgressIndicator::DialogDismissedL(TInt /*aButtonId*/)
     {
     TRACER("CGlxProgressIndicator::DialogDismissedL()");
-    if(iProgressbarTicker)
+    if (iProgressbarTicker)
         {
         iProgressbarTicker->Cancel();
+        delete iProgressbarTicker;
         iProgressbarTicker = NULL;
         }
-
-    if(iProgressDialog)
-        {
-        iProgressDialog = NULL;
-        iProgressInfo = NULL;
-        }
+    iProgressDialog = NULL;
+    iProgressInfo = NULL;
     }
 
 // -----------------------------------------------------------------------------
@@ -283,3 +275,18 @@
         iUiUtility->StopTNMDaemon();
         }
     }
+
+// -----------------------------------------------------------------------------
+// DismissProgressDialog
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxProgressIndicator::DismissProgressDialog()
+    {
+    TRACER("CGlxProgressIndicator::DismissProgressDialog");
+    
+    if(iProgressDialog)
+        {
+        TRAP_IGNORE(iProgressDialog->ProcessFinishedL());
+        }
+    }
+
--- a/photosgallery/viewframework/uiutilities/src/glxuiutility.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/src/glxuiutility.cpp	Tue May 11 16:13:40 2010 +0300
@@ -39,6 +39,9 @@
 #include <alf/alftextstylemanager.h>
 #include <featmgr.h>
 #include <bldvariant.hrh>   // For feature constants
+#include <eikenv.h> 
+#include <eikappui.h>
+#include <aknclearer.h>
 
 // Internal incudes
 #include <glxresolutionmanager.h>       // for CGlxResolutionManager
@@ -55,11 +58,18 @@
 
 #include <e32property.h>
 
+//For animation Effects
+#include <akntranseffect.h>
+#include <akntransitionutils.h>
+
 //Publish-Subscribe from Thumbnail manager
 const TUid KTAGDPSNotification = { 0x2001FD51 }; //PS category 
 const TInt KForceBackgroundGeneration = 0x00000010; //PS Key 
 const TInt KItemsleft = 0x00000008; //PS key value
-
+/**
+ * Start Delay for the periodic timer, in microseconds
+ */
+const TInt KPeriodicStartDelay = 1000000; 
 
 //Hg 
 //#include <hg/hgcontextutility.h>
@@ -107,7 +117,7 @@
 // -----------------------------------------------------------------------------
 //
 CGlxUiUtility::CGlxUiUtility()
-:   iNavigationDirection( EGlxNavigationForwards ),
+:   iEnv(NULL),iNavigationDirection( EGlxNavigationForwards ),
     iOrientation( EGlxOrientationUninitialised )
     {
     TRACER("CGlxUiUtility::CGlxUiUtility()");
@@ -122,8 +132,57 @@
     {
     TRACER("CGlxUiUtility::ConstructL()");
     iSettingsModel = CGlxSettingsModel::InstanceL();
+
+    iOrientation = EGlxOrientationDefault; // Always start in default orientation
+	
+    if (!iPeriodic)
+        {
+        iPeriodic = CPeriodic::NewL(CActive::EPriorityStandard);
+        }
+		
+    if (!iPeriodic->IsActive())
+        {
+        iPeriodic->Start(KPeriodicStartDelay, KMaxTInt,
+                TCallBack(&PeriodicCallback, static_cast<TAny*> (this)));
+        }
+		
+    GridIconSizeL();
+    iScreenFurniture = CGlxScreenFurniture::NewL(*this);
+    }
+
+// -----------------------------------------------------------------------------
+// Callback from periodic timer
+// -----------------------------------------------------------------------------
+//
+TInt CGlxUiUtility::PeriodicCallback(TAny* aPtr )
+    {
+    TRACER("CGlxUiUtility::PeriodicCallback");
+    static_cast< CGlxUiUtility* >( aPtr )->CreateAlfEnvCallbackL();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// Callback from periodic timer-- non static
+// -----------------------------------------------------------------------------
+//
+void CGlxUiUtility::CreateAlfEnvCallbackL()
+    {
+    TRACER("CGlxUiUtility::CreateAlfEnvCallbackL");
+    CreateAlfEnvL();
+    }
+
+// -----------------------------------------------------------------------------
+// Create ALF env
+// -----------------------------------------------------------------------------
+//
+void CGlxUiUtility::CreateAlfEnvL()
+    {
+    TRACER("CGlxUiUtility::CreateAlfEnvL");
+    if (iPeriodic->IsActive())
+        {
+        iPeriodic->Cancel();
+        }
     
-	iOrientation = EGlxOrientationDefault; // Always start in default orientation
     iEnv = CAlfEnv::Static();
     if (!iEnv)
        {
@@ -143,9 +202,9 @@
     // calling CGlxHuiUtility::Utility() in CGlxTextureManager creates a recursive call
     // to CGlxTextureManager::NewL which again calls CGlxHuiUtility::Utility() and so on.
     AddSkinChangeObserverL( *iGlxTextureManager );    
-	GridIconSizeL();
-	TRect rect;
-	AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, rect ); 
+    
+    TRect rect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, rect ); 
     iAlfDisplay = &iEnv->NewDisplayL(rect,
             CAlfEnv::ENewDisplayAsCoeControl | CAlfEnv::ENewDisplayFullScreen );
             
@@ -160,9 +219,7 @@
     // Is the TV Out display on
     // Note that this also sets the initial size for the resolution manager
     HandleTvStatusChangedL( ETvConnectionChanged );
-    
-    iScreenFurniture = CGlxScreenFurniture::NewL(*this);
-	}
+    }
 
 // -----------------------------------------------------------------------------
 // Destructor
@@ -172,10 +229,28 @@
     {
     TRACER("CGlxUiUtility::~CGlxUiUtility()");
     GLX_LOG_INFO("~CGlxUiUtility");
-    delete iScreenFurniture;
-    // Destroy TV Out related objects
-    delete iGlxTvOut;
-    delete iGlxResolutionManager;
+
+    if(iClearer)
+        {
+        delete iClearer;
+        }
+
+    if(iScreenFurniture)
+        {
+        delete iScreenFurniture;
+        }
+    
+    if(iGlxTvOut)
+        {
+        // Destroy TV Out related objects
+        delete iGlxTvOut;
+        }
+    
+    if(iGlxResolutionManager)
+        {
+        delete iGlxResolutionManager;
+        }
+    
     DestroyTvOutDisplay();
     
 	if( iGlxTextureManager )
@@ -188,8 +263,10 @@
         {
         delete iAlfDisplay;
         }
-   
-    iEnv->RemoveActionObserver(this);
+    if(iEnv)
+       {
+       iEnv->RemoveActionObserver(this);
+       }
 
     if ( iGlxSkinChangeMonitor )
         {
@@ -201,25 +278,34 @@
         {
         delete iEnv;
         }
-        
     iTextStyles.Close();
     if ( iSettingsModel )
         {
         iSettingsModel->Close();
         }    
-
+    
+	if (iPeriodic)
+        {
+        iPeriodic->Cancel();
+        delete iPeriodic;
+        }
     }
 
 // -----------------------------------------------------------------------------
 // Env
 // -----------------------------------------------------------------------------
 //
-EXPORT_C CAlfEnv* CGlxUiUtility::Env() const
+EXPORT_C CAlfEnv* CGlxUiUtility::Env()
 	{
-	TRACER("CGlxUiUtility::Env()");
+	TRACER("CGlxUiUtility::EnvL()");
+	if(!iEnv)
+	    {
+        TRAP_IGNORE(CreateAlfEnvL());
+	    }
 	return iEnv;
 	}
 
+
 // -----------------------------------------------------------------------------
 // Display
 // -----------------------------------------------------------------------------
@@ -303,7 +389,7 @@
 EXPORT_C TSize CGlxUiUtility::DisplaySize() const
     {
     TRACER("CGlxUiUtility::DisplaySize()");
-    const TRect& rect = Env()->PrimaryDisplay().VisibleArea();
+    const TRect& rect = CEikonEnv::Static()->EikAppUi()->ApplicationRect();
 	return rect.Size();
     }
 
@@ -750,4 +836,32 @@
         }
     return leftVariable;
     }
+
+// -----------------------------------------------------------------------------
+// DisplayScreenClearer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxUiUtility::DisplayScreenClearerL()
+    {
+    TRACER("CGlxUiUtility::DisplayScreenClearerL");
+    if(!iClearer && CAknTransitionUtils::TransitionsEnabled(
+            AknTransEffect::EFullScreenTransitionsOff))
+        {
+        iClearer = CAknLocalScreenClearer::NewL( ETrue );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// DisplayScreenClearer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxUiUtility::DestroyScreenClearer()
+    {
+    TRACER("CGlxUiUtility::DestroyScreenClearer");
+    if(iClearer)
+        {
+        delete iClearer;
+        iClearer = NULL;
+        }
+    }
 // End of file
--- a/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp	Tue May 11 16:13:40 2010 +0300
@@ -31,6 +31,8 @@
 #include <alf/alfwidgetenvextension.h>
 #include <glxuiutility.h>
 #include <glxresourceutilities.h>  // for CGlxResourceUtilities
+#include <glxcollectionplugintags.hrh>
+#include <glxfiltergeneraldefs.h>
 
 #include <mpxcollectionutility.h>
 #include <mpxcollectionpath.h>
@@ -171,18 +173,29 @@
 		case EAknCmdOpen:
 		case EKeyEnter:
 			{
-			// Processing of this Command depends on Medialist Count ( > 0 tags Available) 
-			if(iMediaList->Count())
-			    {
-			// There can be no selection in cloud view, so assume that path contains focused item
-		        iUiUtility->SetViewNavigationDirection(EGlxNavigationForwards);
-			CMPXCollectionPath* path = iMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection );
-			iCollectionUtility->Collection().OpenL (*path);
-			CleanupStack::PopAndDestroy (path);
-			consumed= ETrue;
-			    }
-			break;
-			}
+            // Processing of this Command depends on Medialist Count ( > 0 tags Available) 
+            if (iMediaList->Count())
+                {
+                // There can be no selection in cloud view, so assume that path contains focused item
+                iUiUtility->SetViewNavigationDirection(EGlxNavigationForwards);
+                CMPXCollectionPath* path = iMediaList->PathLC(
+                        NGlxListDefs::EPathFocusOrSelection);
+                // When a collection is opened for browsing, 
+                // there are two queries executed with similar filter. 
+                // First query to open the collection from list / cloud view.
+                // Second one from grid view construction. To improve the grid opening
+                // performance, the first query will be completed with empty Id list.
+                RArray<TMPXAttribute> attributeArray;
+                CleanupClosePushL(attributeArray);
+                attributeArray.AppendL(KGlxFilterGeneralNavigationalStateOnly);
+                iCollectionUtility->Collection().OpenL(*path,
+                        attributeArray.Array());
+                CleanupStack::PopAndDestroy(&attributeArray);
+                CleanupStack::PopAndDestroy(path);
+                consumed = ETrue;
+                }
+            break;
+            }
 		}
 		
 	return consumed;
--- a/photosgallery/viewframework/views/fullscreenview/group/glxfullscreenview.mmp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/group/glxfullscreenview.mmp	Tue May 11 16:13:40 2010 +0300
@@ -103,5 +103,6 @@
 LIBRARY         fbscli.lib
 LIBRARY         ws32.lib                        // for RWsSession
 LIBRARY         aknicon.lib
+LIBRARY		alfdecoderserverclient.lib
 // EOF 
 
--- a/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenview.hrh	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenview.hrh	Tue May 11 16:13:40 2010 +0300
@@ -26,4 +26,12 @@
     EZoomStartDoubleTap =6
     };
 
+/*
+ Defines the state of the Ui in fullscreen and Zoom 
+ */ 
+enum TUiState
+    {
+     EUiOn,EUiOff
+    };
+
 #endif /* GLXFULLSCREENVIEW_HRH_ */
--- a/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Tue May 11 16:13:40 2010 +0300
@@ -22,7 +22,7 @@
 #include <mglxuicommandhandler.h>
 #include <gesturehelper.h>
 #include <gestureobserver.h>
-
+#include <alf/alfcompositionutility.h>
 #include "glxfullscreenview.h"
 #include "glxfullscreenbindingsetfactory.h"
 #include "glxfullscreenview.hrh"
@@ -48,7 +48,6 @@
 class CGestureHelper;
 class TGlxMedia;
 class CGlxFullScreenBusyIcon;
-//class CHgContextUtility;
 
 namespace Alf
 	{
@@ -58,16 +57,6 @@
    class IMulSliderModel;
 	}
 /*
- Defines the state of the Ui in fullscreen
- */	
-namespace NGlxNFullScreenUIState
-    {
-    enum TUiState
-        {
-         EUiOn,EUiOff
-        };
-    }
-/*
  Defines the swipe direction
  */ 
 enum TSwipe
@@ -78,7 +67,8 @@
 NONSHARABLE_CLASS (CGlxFullScreenViewImp): public CGlxFullScreenView, 
                                             public IAlfWidgetEventHandler,
  											public MGlxUiCommandHandler,
-			                                public MStorageNotifierObserver
+			                                public MStorageNotifierObserver,
+			                                public CAlfEffectObserver::MAlfEffectObserver
     {
 public:    
     /**
@@ -144,8 +134,9 @@
     AlfEventHandlerType eventHandlerType() ;
 
     AlfEventHandlerExecutionPhase eventExecutionPhase() ;
-
-
+	
+	//From MAlfEffectObserver
+    void HandleEffectCallback(TInt aType, TInt aHandle, TInt aStatus);
 private:
     /*
      * Constructor 
@@ -203,21 +194,21 @@
     
     /*
     * Hide the UI off
-    * @param asliderstatus:When we start zooming using the slider widget,for continous zooming from the 
+    * @param aHideSlider:When we start zooming using the slider widget,for continous zooming from the 
     * fullscreen view to zoom control, we need to have the slider visible so in this case we shouldnt 
     * be hiding the slider so pass EFalse,else case asliderstatus = ETrue
     */     
-    void HideUi(TBool aSliderStatus);
+    void HideUi(TBool aHideSlider);
     
     /*
     * Sets the UI state
     */     
-    void SetUiSate (NGlxNFullScreenUIState::TUiState  aState);
+    void SetUiState (TUiState  aState);
     
     /*
     * returns the Ui state
     */     
-    NGlxNFullScreenUIState::TUiState GetUiSate();
+    TUiState GetUiState();
     
     /*
     * Call back function for the CPeriodic
@@ -282,7 +273,7 @@
     /**
      * Disable/enable the fullscreen toolbar
      */
-    void EnableFSToolbarL(TBool aEnable);
+    void EnableFSToolbar(TBool aEnable);
 
 private:
     /** Softkey resource id's */
@@ -313,7 +304,7 @@
     CGlxZoomControl* iZoomControl;
     
     // Holds the state of the Ui in Fullscreen
-    NGlxNFullScreenUIState::TUiState iUiState;
+    TUiState iUiState;
 
     // used to turn the Ui off,if the screen is inactive for 10 sec
     CPeriodic* iTimer;
@@ -341,6 +332,8 @@
 	TSize iGridIconSize; // grid icon size
     TBool iIsDialogLaunched;
     TBool iIsMMCRemoved;
+	CAlfEffectObserver* iAlfEffectObs;
+	TInt iEffectHandle;
     };
 
 #endif
--- a/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Tue May 11 16:13:40 2010 +0300
@@ -104,6 +104,7 @@
 const TInt KGlxDecodingThreshold = 3000000; // pixels
 
 _LIT( KTfxResourceActivateFullScreen, "z:\\resource\\effects\\photos_fullscreen_open.fxml" );
+_LIT( KTfxResourceNoEffect, "");
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -169,7 +170,7 @@
 	SetToolbarObserver(this);
 	iImgViewerMode = EFalse;
     //Disable the toolbar always while entering fullscreen
-	EnableFSToolbarL(EFalse);
+	EnableFSToolbar(EFalse);
     ShowToolbarOnViewActivation(EFalse);
 	
 	//Get the ScreenFurniture instance
@@ -177,6 +178,7 @@
 	
     //Get the env from the uiutilities
 	iEnv = iUiUtility->Env ();
+	
 	iZoomButtonGroup = CEikButtonGroupContainer::NewL(
 	        CEikButtonGroupContainer::ECba,  // type
 	        CEikButtonGroupContainer::EHorizontal,  // orientation
@@ -206,7 +208,10 @@
 CGlxFullScreenViewImp::~CGlxFullScreenViewImp()
     {
     TRACER("CGlxFullScreenViewImp::~CGlxFullScreenViewImp");
-    
+    if(iAlfEffectObs)
+        {
+        delete iAlfEffectObs;
+        }
     delete iMMCNotifier;
     iMMCNotifier = NULL;
     
@@ -295,14 +300,10 @@
 		const TDesC8 & /* aCustomMessage */)
 	{
     TRACER("CGlxFullScreenViewImp::DoMLViewActivateL");
-	//Disable the softkeys
-    Cba()->MakeVisible( EFalse );
-    Cba()->DrawNow();
+	
+    // hide the toolbar
+    EnableFSToolbar(EFalse);
     
-    // hide the toolbar
-    EnableFSToolbarL(EFalse);
-    
-
     CGlxNavigationalState* navigationalState =  CGlxNavigationalState::InstanceL();
     CleanupClosePushL( *navigationalState );
     CMPXCollectionPath* naviState = navigationalState->StateLC();
@@ -343,7 +344,7 @@
     iScreenFurniture->SetActiveView(iViewUid);
     
     //set the ui state to off,when the Fullscreen launches
-    SetUiSate(NGlxNFullScreenUIState::EUiOff);
+    SetUiState(EUiOff);
    
    	GlxSetAppState::SetState(EGlxInFullScreenView);
    	 
@@ -375,8 +376,14 @@
     if (CAknTransitionUtils::TransitionsEnabled(
                                     AknTransEffect::EFullScreenTransitionsOff))
         {
+        if(!iAlfEffectObs)
+            {
+            iAlfEffectObs = CAlfEffectObserver::NewL();
+            }
         const_cast<CAlfLayout&> (iCoverFlowWidget->ContainerLayout()).SetEffectL(
                 KTfxResourceActivateFullScreen);
+        iEffectHandle = iCoverFlowWidget->ContainerLayout().Identifier();
+        iAlfEffectObs->SubscribeCallbackL(this,iEffectHandle);
         }
     
 	//Disable the status pane here as it causes flicker while animating
@@ -513,17 +520,20 @@
     if(!iImgViewerMode)
         {
         //show the toolbar
-        EnableFSToolbarL(ETrue);
+        EnableFSToolbar(ETrue);
         }
      
     // For floating toolbar in non-touch devices
     iScreenFurniture->SetToolbarVisibility(ETrue);
+    
     //show the softkeys
-    Cba()->MakeVisible( ETrue );
-    Cba()->DrawNow();
+    CEikButtonGroupContainer* cba = Cba();
+    cba->SetCommandSetL( R_GLX_FULLSCREEN_SOFTKEYS );
+    cba->MakeVisible( ETrue );
+    cba->DrawNow();
 
     //set the ui state to On
-    SetUiSate(NGlxNFullScreenUIState::EUiOn);
+    SetUiState(EUiOn);
     
     //start the timer,for the screen timeout
     iTimer->Cancel();
@@ -537,7 +547,7 @@
 // HideUi
 // ---------------------------------------------------------------------------
 //	
-void  CGlxFullScreenViewImp::HideUi(TBool aSliderStatus)
+void  CGlxFullScreenViewImp::HideUi(TBool aHideSlider)
     {
     TRACER("CGlxFullScreenViewImp::HideUi");
     //cancel the timer
@@ -545,11 +555,12 @@
 
     // For floating toolbar in non-touch devices
     iScreenFurniture->SetToolbarVisibility(EFalse);
-    // hide the slider
-    if(aSliderStatus && iSliderWidget)
+    
+    // hide/show the slider
+    if(iSliderWidget) 
         {
-   	    iSliderWidget->ShowWidget(EFalse);
-		}
+        iSliderWidget->ShowWidget(!aHideSlider);        
+        }
 
     if (iCoverFlowWidget)
         {
@@ -572,26 +583,26 @@
     Cba()->DrawNow();
  
     // set the ui state to On
-    SetUiSate(NGlxNFullScreenUIState::EUiOff);
+    SetUiState(EUiOff);
     }
 
 // ---------------------------------------------------------------------------
-// SetUiSate
+// SetUiState
 // ---------------------------------------------------------------------------
 //	
-void CGlxFullScreenViewImp::SetUiSate (NGlxNFullScreenUIState::TUiState  aState)
+void CGlxFullScreenViewImp::SetUiState (TUiState  aState)
     {
-    TRACER("CGlxFullScreenViewImp::SetUiSate");
+    TRACER("CGlxFullScreenViewImp::SetUiState");
     iUiState = aState;
     }
 
 // ---------------------------------------------------------------------------
-// GetUiSate
+// GetUiState
 // ---------------------------------------------------------------------------
 //	
-NGlxNFullScreenUIState::TUiState CGlxFullScreenViewImp::GetUiSate()    
+TUiState CGlxFullScreenViewImp::GetUiState()    
     {
-    TRACER("CGlxFullScreenViewImp::GetUiSate");
+    TRACER("CGlxFullScreenViewImp::GetUiState");
     return iUiState;
     }
 
@@ -607,7 +618,7 @@
         CGlxFullScreenViewImp* self = static_cast <CGlxFullScreenViewImp*> (aSelf);
         if (self)
             {
-            if ( NGlxNFullScreenUIState::EUiOn == self->GetUiSate())
+            if ( EUiOn == self->GetUiState())
                 {
                 // After time out, hide UI only when menu is not being displayed.
                 if( self->MenuBar() && !(self->MenuBar()->IsDisplayed()) )
@@ -635,9 +646,14 @@
     if(iSliderWidget)
         {
         iSliderWidget->RemoveEventHandler(*this);
-        }
-    //Dont Hide the slider,when activating the Zoom control,so pass EFalse
-    HideUi(EFalse);
+    
+        //show/hide the slider based on the return value of
+        //IsHidden()
+	    if(iZoomControl->Activated())
+	        {
+	        HideUi(iSliderWidget->IsHidden());
+	        }
+		}
     iViewWidget->show(ETrue);
     }
 
@@ -656,7 +672,6 @@
         }
     if(iSliderWidget)
         {
-        iSliderWidget->ShowWidget( EFalse );
         iSliderWidget->AddEventHandler(*this);
         }
     iViewWidget->show(ETrue);
@@ -748,8 +763,24 @@
         {        
         iZoomControl->Deactivate();
         }
-    //Once into fullscreen view,show the screen furniture
-    HideUi(ETrue);
+    
+    //check if the slider is already visible in zoom view.
+    //if yes then do not disable the slider.
+    TBool sliderInvisible = ETrue;
+    if (EUiOn == iZoomControl->ZoomUiState())
+        {
+        sliderInvisible = EFalse;
+        }
+    
+    HideUi(sliderInvisible);
+    
+    if (!sliderInvisible)
+        {
+        //Set the UI State to On Explicitly since the slider is ON and we have
+        //to disable on timeout. The timer is already cancelled in HideUi().
+        SetUiState(EUiOn);
+        iTimer->Start(KGlxScreenTimeout,KGlxScreenTimeout,TCallBack( TimeOut,this ));
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -765,7 +796,14 @@
     if(!iImgViewerMode)
         {    
         // hide the toolbar
-        TRAP_IGNORE(EnableFSToolbarL(EFalse));
+        EnableFSToolbar(EFalse);
+        
+        //Setting Soft key to EmptySoftKeys would cause crash
+		//When Fullscreen is opened from ImageViewer. 
+        //So Set Soft Keys to empty only when not in Image Viewer mode.
+		CEikButtonGroupContainer* cba = Cba();
+		TRAP_IGNORE( cba->SetCommandSetL( R_GLX_FULLSCREEN_EMPTYSOFTKEYS ) );
+		cba->DrawNow();
         }
     
     HideUi(ETrue); 
@@ -899,10 +937,7 @@
                 {
                 if(EEventKeyDown == aEvent.Code())
                     {
-                    //Dont start the timer while activating the zoom control,
-                    //when the timer activates while launching the zoom 
-                    //it causes the crash.
-                    ShowUiL(EFalse);
+                    HideUi(EFalse);
                     TRAP_IGNORE( ActivateZoomControlL(EZoomStartKey));
                     return EEventConsumed;
                     }
@@ -915,7 +950,7 @@
                 //EKeyApplicationD for which TStdScancode is EStdKeyApplicatoinD 
             case EStdKeyApplicationD: 
                 {
-                if ( NGlxNFullScreenUIState::EUiOff == GetUiSate()&& (
+                if ( EUiOff == GetUiState()&& (
                         aEvent.Code() == EEventKey ) )
                     {
                     //the Ui timer should be started once the UI screen furniture is shown
@@ -926,7 +961,7 @@
             case EStdKeyLeftArrow:
             case EStdKeyRightArrow:
                 {
-                if ( NGlxNFullScreenUIState::EUiOn == GetUiSate() )                    
+                if ( EUiOn == GetUiState() )                    
                     {
                     HideUi(ETrue);
                     }
@@ -973,7 +1008,7 @@
                 TBool pensupport = iUiUtility->IsPenSupported();
                 if ( pensupport )
                     {
-                    if ( NGlxNFullScreenUIState::EUiOn == GetUiSate() )                    
+                    if ( EUiOn == GetUiState() )                    
                         {
                         //Hide the slider 
                         HideUi(ETrue);
@@ -986,7 +1021,7 @@
                     }
                 else
                     {
-                    if ( NGlxNFullScreenUIState::EUiOff == GetUiSate() )                    
+                    if ( EUiOff == GetUiState() )                    
                         {
                         //the Ui timer should be started once the UI screen furniture is shown
                         ShowUiL(ETrue);
@@ -1027,6 +1062,18 @@
             case ETypeItemRemoved:
                 {
                 SetItemToHDMIL();
+                TInt focusIndex = iMediaList->FocusIndex();
+                if (focusIndex != KErrNotFound
+                        && EUiOn == GetUiState()
+                        && iMediaList->Item(focusIndex).Category()
+                                == EMPXVideo)
+                    {
+                    // hide the slider
+                    if (iSliderWidget)
+                        {
+                        iSliderWidget->ShowWidget(EFalse);
+                        }
+                    }
                 return EEventConsumed;
                 }
             case ETypeHighlight:
@@ -1041,7 +1088,7 @@
                     RemoveTexture();
                     }
                 SetItemToHDMIL();
-                if ( NGlxNFullScreenUIState::EUiOn == GetUiSate() )
+                if ( EUiOn == GetUiState() )
                     {
                     HideUi(ETrue);
                     }
@@ -1057,7 +1104,7 @@
                     } 
                 else
                     { 
-                    if ( NGlxNFullScreenUIState::EUiOn == GetUiSate() )                    
+                    if ( EUiOn == GetUiState() )                    
                         {
                         HideUi(ETrue);
                         }
@@ -1637,7 +1684,7 @@
     }
 	
 // ---------------------------------------------------------------------------
-// HandleMMCInsertionL
+// HandleMMCRemovalL
 // 
 // ---------------------------------------------------------------------------
 void CGlxFullScreenViewImp::HandleMMCRemovalL()
@@ -1656,18 +1703,33 @@
     }
 	
 // ---------------------------------------------------------------------------
-// EnableFSToolbarL
-// 
+// EnableFSToolbar
 // ---------------------------------------------------------------------------
 //
-void CGlxFullScreenViewImp::EnableFSToolbarL(TBool aEnable)
+void CGlxFullScreenViewImp::EnableFSToolbar(TBool aEnable)
     {
-	TRACER("CGlxFullScreenViewImp::EnableFSToolbarL()");
+	TRACER("CGlxFullScreenViewImp::EnableFSToolbar()");
     CAknToolbar* toolbar = Toolbar();
     if(toolbar)
         {
-        toolbar->DisableToolbarL(!aEnable);
+        TRAP_IGNORE(toolbar->DisableToolbarL(!aEnable));
         toolbar->SetToolbarVisibility(aEnable); 
         }
     }
 	
+// ---------------------------------------------------------------------------
+// HandleEffectCallback
+// 
+// ---------------------------------------------------------------------------
+//
+void CGlxFullScreenViewImp::HandleEffectCallback(TInt aType, TInt aHandle, 
+                                                 TInt /*aStatus*/)
+    {
+    TRACER("CGlxFullScreenViewImp::HandleEffectCallback()");
+    if (aHandle == iEffectHandle && aType == EAlfEffectComplete)
+        {
+        TRAP_IGNORE(const_cast<CAlfLayout&>
+                (iCoverFlowWidget->ContainerLayout()).SetEffectL(
+                                                     KTfxResourceNoEffect));
+        }
+    }
--- a/photosgallery/viewframework/views/gridview/src/glxgridviewimp.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/gridview/src/glxgridviewimp.cpp	Tue May 11 16:13:40 2010 +0300
@@ -32,7 +32,7 @@
 #include <mglxmedialist.h>                              // CGlxMedialist
 #include <glxsetappstate.h>
 #include <glxtracer.h>                                  // For Tracer
-
+#include <glxlog.h>
 
 // User Includes
 #include "glxgridviewimp.h"                         
@@ -46,6 +46,10 @@
 
 const TInt KGlxToolbarButtonUnLatched = 0;              // Toolbar mark button's unlatched state defined in the rss file
 
+//Video playback view uid
+#define KMPXVIDEOPLAYBACKVIEWUID 0x200159B4
+const TUid KVideoPlayBackUid = TUid::Uid(KMPXVIDEOPLAYBACKVIEWUID);
+
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
@@ -111,13 +115,6 @@
 	ViewBaseConstructL();
 	MLViewBaseConstructL(aMediaListFactory, aTitle);   
 
-	//create the tool bar dynamically
-	//to reduce the startup time of the application.
-	iToolbar = CAknToolbar::NewL(R_GLX_GRID_VIEW_TOOLBAR);
-	SetGridToolBar(iToolbar);
-	SetToolbarObserver(this);
-	iToolbar->SetToolbarVisibility(ETrue);
-    
 	// Get object that stores the active media list registry
 	iActiveMediaListRegistry = CGlxActiveMediaListRegistry::InstanceL();
 	}
@@ -128,20 +125,29 @@
 // ---------------------------------------------------------------------------
 //
 void CGlxGridViewImp::DoMLViewActivateL(
-		const TVwsViewId& /* aPrevViewId */, 
+		const TVwsViewId& aPrevViewId, 
 		TUid /* aCustomMessageId */,
-		const TDesC8& /*aCustomMessage*/)
+		const TDesC8& aCustomMessage)
 	{
 	TRACER("CGlxGridViewImp::DoMLViewActivateL()");
 
     TUint transitionID = (iUiUtility->ViewNavigationDirection()==
           EGlxNavigationForwards)?KActivateTransitionId:KFSDeActivateTransitionId; 
     
-	GfxTransEffect::BeginFullScreen( transitionID, TRect(),
-                                AknTransEffect::EParameterType, 
-                                AknTransEffect::GfxTransParam( KPhotosUid,
-                                AknTransEffect::TParameter::EEnableEffects) );	
-	GfxTransEffect::EndFullScreen();
+    HBufC8* activationParam = HBufC8::NewLC(KMaxUidName);
+    activationParam->Des().AppendNum(KGlxActivationCmdShowAll);    
+
+    //Do not animate the view if launched from camera application.
+    if (aCustomMessage.Compare(activationParam->Des()) != 0) 
+        {    
+        GfxTransEffect::BeginFullScreen( transitionID, TRect(),
+                                    AknTransEffect::EParameterType, 
+                                    AknTransEffect::GfxTransParam( KPhotosUid,
+                                    AknTransEffect::TParameter::EEnableEffects) );	
+        GfxTransEffect::EndFullScreen();
+        }
+	
+	CleanupStack::PopAndDestroy(activationParam);
 	
 	if(StatusPane())
 		{
@@ -173,11 +179,20 @@
         iToolbar = CAknToolbar::NewL(R_GLX_GRID_VIEW_TOOLBAR);
         SetGridToolBar(iToolbar);
         SetToolbarObserver(this);
-        iToolbar->SetToolbarVisibility(ETrue);
+        TBool visibility = iUiUtility->ViewNavigationDirection()
+                == EGlxNavigationBackwards ? ETrue : EFalse;
+        if (aPrevViewId.iViewUid == KVideoPlayBackUid)
+            {
+            GLX_DEBUG1( "CGlxGridViewImp::DoMLViewActivateL() "
+                    "- Coming from video playback!");        
+            visibility = ETrue;
+            }
+        iToolbar->SetToolbarVisibility(visibility);
         }
 	//Create HG Grid, medialist observer, FS thumbnailcontext
 	iGlxGridViewContainer = CGlxGridViewContainer::NewL(iMediaList,iUiUtility,*this,iToolbar);
 	iEikonEnv->AppUi()->AddToStackL(*this,iGlxGridViewContainer);
+	iUiUtility->DestroyScreenClearer();
 	}
 
 // ---------------------------------------------------------------------------
--- a/photosgallery/viewframework/views/gridview/src/glxgridviewmlobserver.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/gridview/src/glxgridviewmlobserver.cpp	Tue May 11 16:13:40 2010 +0300
@@ -494,6 +494,7 @@
                                       const RArray<TMPXAttribute>& aAttributes)
     {
     TRACER("CGlxGridViewMLObserver::RefreshScreen()");
+    GLX_DEBUG2("CGlxGridViewMLObserver::RefreshScreen(%d)", aItemIndex);
     TInt mediaCount = iMediaList.Count();
     TInt firstIndex = iHgGrid->FirstIndexOnScreen();
     firstIndex = (firstIndex<0 ? 0 : firstIndex);
@@ -501,7 +502,8 @@
     lastOnScreen = (lastOnScreen >mediaCount-1? mediaCount-1:lastOnScreen);
     if (mediaCount < iItemsPerPage || aItemIndex == firstIndex)
         {
-        if (aItemIndex == firstIndex && HasRelevantThumbnail(firstIndex))
+        if (aItemIndex == firstIndex && HasRelevantThumbnail(firstIndex)
+                && HasRelevantThumbnail(lastOnScreen))
             {
             GLX_DEBUG2("## GridMLObserver::HandleAttributesAvailableL()"
                      " RefreshScreen - firstIndex(%d)", firstIndex);
@@ -509,7 +511,8 @@
             }
         else if (aItemIndex > firstIndex && aItemIndex <= lastOnScreen)
             {
-            if ( HasRelevantThumbnail(lastOnScreen) )
+            if (HasRelevantThumbnail(lastOnScreen) && HasRelevantThumbnail(
+                    firstIndex))
                 {
                 GLX_DEBUG2("GridMLObserver::HandleAttributesAvailableL()"
                         " RefreshScreen - aItemIndex(%d)", aItemIndex);					
--- a/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Tue May 11 16:13:40 2010 +0300
@@ -44,10 +44,12 @@
 #include <glxerrormanager.h>             // For CGlxErrormanager
 #include <glxthumbnailcontext.h>
 #include <glxthumbnailattributeinfo.h>
+#include <glxcollectionpluginall.hrh>
 #include <glxcollectionpluginalbums.hrh>
 #include <glxcollectionpluginmonths.hrh>
 #include <glxcollectionplugintype.hrh>
 #include <glxnavigationalstate.h>
+#include <glxfiltergeneraldefs.h>
 
 #include <akntranseffect.h>  // For transition effects
 #include <gfxtranseffect/gfxtranseffect.h>  // For transition effects
@@ -343,7 +345,7 @@
         }
 	delete iBgContext;
 	iBgContext = NULL;
-	if(iUiUtility->ViewNavigationDirection() == EGlxNavigationBackwards )
+	if(iBackwardNavigation)
 		{
 		iLastFocusedIndex = 0;
 		}
@@ -452,7 +454,6 @@
         iList->ItemL(i).SetTitleL(item.Title());
         iList->ItemL(i).SetTextL(item.SubTitle());
         UpdatePreviewL(i);
-        iList->RefreshScreen(i);
         }
     
     iList->RefreshScreen(visIndex);
@@ -525,12 +526,43 @@
         iMediaList->SetFocusL(NGlxListDefs::EAbsolute,aIndex);
         iLastFocusedIndex = iMediaList->FocusIndex();
 	    iNextViewActivationEnabled = EFalse;
-        iUiUtility->SetViewNavigationDirection(EGlxNavigationForwards); 
-        //Navigate to the next view
+		
+		//Navigate to the next view
+        iUiUtility->SetViewNavigationDirection(EGlxNavigationForwards);
+        GLX_LOG_INFO("CGlxListViewImp::HandleOpenL()- EGlxNavigationForwards!");
+
         CMPXCollectionPath* path = iMediaList->PathLC(
                 NGlxListDefs::EPathFocusOrSelection);
-        iCollectionUtility->Collection().OpenL(*path);
-        CleanupStack::PopAndDestroy(path);  
+
+        // When a collection is opened for browsing, 
+        // there are two queries executed with similar filter. 
+        // First query to open the collection from list / cloud view.
+        // Second one from grid view construction. To improve the grid opening
+        // performance, the first query will be completed with empty Id list.
+        CMPXCollectionPath* pathParent = iMediaList->PathLC(
+                NGlxListDefs::EPathParent);
+
+        if ((iMediaList->IdSpaceId(0) == KGlxIdSpaceIdRoot && path->Id(0)
+                == KGlxCollectionPluginAllImplementationUid)
+                || (pathParent->Id()
+                        == KGlxCollectionPluginMonthsImplementationUid)
+                || (pathParent->Id()
+                        == KGlxCollectionPluginAlbumsImplementationUid))
+            {
+            RArray<TMPXAttribute> attributeArray;
+            CleanupClosePushL(attributeArray);
+            attributeArray.AppendL(KGlxFilterGeneralNavigationalStateOnly);
+            iCollectionUtility->Collection().OpenL(*path,
+                    attributeArray.Array());
+            CleanupStack::PopAndDestroy(&attributeArray);
+            }
+        else
+            {
+            iCollectionUtility->Collection().OpenL(*path);
+            }
+
+        CleanupStack::PopAndDestroy(pathParent);
+        CleanupStack::PopAndDestroy(path);
 	    }
     }
 
@@ -586,7 +618,7 @@
     TInt lastOnScreen = firstIndex + itemsOnScreen - 1;
     if (lastOnScreen > (mediaCount - 1))
 	    {
-		lastOnScreen = mediaCount;	    	
+		lastOnScreen = mediaCount - 1;	    	
 	    }
     
     GLX_DEBUG2("CGlxListViewImp::PreviewTNReadyL()"
@@ -717,7 +749,7 @@
         // Enable Buffer support
         iList->EnableScrollBufferL(*this, KNoOfPages * items, items);
 	
-        if (iUiUtility->ViewNavigationDirection() == EGlxNavigationBackwards)
+        if (iBackwardNavigation)
             {
             GLX_DEBUG1("CGlxListViewImp::CreateListL() - SetEmptyTextL()");			
             //set the text to be shown if the list is empty.
@@ -853,8 +885,7 @@
 		// If there is some modified in grid/fullscreen view,
 		// HandleAttributesAvailableL will get called. Here we are setting
 		// iIsRefreshNeeded flag to ETrue		
-		if (!iIsRefreshNeeded && iUiUtility->ViewNavigationDirection()
-				== EGlxNavigationBackwards)
+		if (!iIsRefreshNeeded && iBackwardNavigation)
 			{
 			iIsRefreshNeeded = ETrue;
 			if(iMediaList->IdSpaceId(0) != KGlxIdSpaceIdRoot)
@@ -1153,6 +1184,9 @@
 void CGlxListViewImp::HandleMMCRemovalL()
     {
     TRACER("CGlxListViewImp::HandleMMCRemovalL()");
+	//Dismiss the dialog before env destruction starts.
+	//Otherwise dialog's ProcessFinishedL() Panics.
+    iProgressIndicator->DismissProgressDialog();
     ProcessCommandL(EAknSoftkeyExit);
     }
 
--- a/photosgallery/viewframework/views/metadatadialog/bwins/glxmetadatadialogu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/metadatadialog/bwins/glxmetadatadialogu.def	Tue May 11 16:13:40 2010 +0300
@@ -3,8 +3,5 @@
 	?ActivateViewL@GlxMetadataViewUtility@@SAXABVTDesC16@@@Z @ 2 NONAME ; void GlxMetadataViewUtility::ActivateViewL(class TDesC16 const &)
 	?ExecuteLD@CGlxMetadataDialog@@QAEHXZ @ 3 NONAME ; int CGlxMetadataDialog::ExecuteLD(void)
 	?ExecuteLD@CGlxImgVwrMetadataDialog@@QAEHXZ @ 4 NONAME ; int CGlxImgVwrMetadataDialog::ExecuteLD(void)
-	?GetResourceFilenameL@CGlxResourceUtilities@@SAXAAV?$TBuf@$0BAA@@@AAVRFs@@@Z @ 5 NONAME ; void CGlxResourceUtilities::GetResourceFilenameL(class TBuf<256> &, class RFs &)
-	?GetResourceFilenameL@CGlxResourceUtilities@@SAXAAV?$TBuf@$0BAA@@@@Z @ 6 NONAME ; void CGlxResourceUtilities::GetResourceFilenameL(class TBuf<256> &)
-	?NewL@CGlxImgVwrMetadataDialog@@SAPAV1@ABVTDesC16@@@Z @ 7 NONAME ; class CGlxImgVwrMetadataDialog * CGlxImgVwrMetadataDialog::NewL(class TDesC16 const &)
-	?GetUiUtilitiesResourceFilenameL@CGlxResourceUtilities@@SA?AV?$TBuf@$0BAA@@@XZ @ 8 NONAME ; class TBuf<256> CGlxResourceUtilities::GetUiUtilitiesResourceFilenameL(void)
+	?NewL@CGlxImgVwrMetadataDialog@@SAPAV1@ABVTDesC16@@@Z @ 5 NONAME ; class CGlxImgVwrMetadataDialog * CGlxImgVwrMetadataDialog::NewL(class TDesC16 const &)
 
--- a/photosgallery/viewframework/views/metadatadialog/eabi/glxmetadatadialogu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/metadatadialog/eabi/glxmetadatadialogu.def	Tue May 11 16:13:40 2010 +0300
@@ -1,16 +1,13 @@
 EXPORTS
 	_ZN18CGlxMetadataDialog4NewLERK7TDesC16 @ 1 NONAME
 	_ZN18CGlxMetadataDialog9ExecuteLDEv @ 2 NONAME
-	_ZN21CGlxResourceUtilities20GetResourceFilenameLER4TBufILi256EE @ 3 NONAME
-	_ZN21CGlxResourceUtilities20GetResourceFilenameLER4TBufILi256EER3RFs @ 4 NONAME
-	_ZN21CGlxResourceUtilities31GetUiUtilitiesResourceFilenameLEv @ 5 NONAME
-	_ZN22GlxMetadataViewUtility13ActivateViewLERK7TDesC16 @ 6 NONAME
-	_ZN24CGlxImgVwrMetadataDialog4NewLERK7TDesC16 @ 7 NONAME
-	_ZN24CGlxImgVwrMetadataDialog9ExecuteLDEv @ 8 NONAME
-	_ZTI18CGlxMetadataDialog @ 9 NONAME
-	_ZTI24CGlxImgVwrMetadataDialog @ 10 NONAME
-	_ZTI26CGlxMetadataCommandHandler @ 11 NONAME
-	_ZTV18CGlxMetadataDialog @ 12 NONAME
-	_ZTV24CGlxImgVwrMetadataDialog @ 13 NONAME
-	_ZTV26CGlxMetadataCommandHandler @ 14 NONAME
+	_ZN22GlxMetadataViewUtility13ActivateViewLERK7TDesC16 @ 3 NONAME
+	_ZN24CGlxImgVwrMetadataDialog4NewLERK7TDesC16 @ 4 NONAME
+	_ZN24CGlxImgVwrMetadataDialog9ExecuteLDEv @ 5 NONAME
+	_ZTI18CGlxMetadataDialog @ 6 NONAME
+	_ZTI24CGlxImgVwrMetadataDialog @ 7 NONAME
+	_ZTI26CGlxMetadataCommandHandler @ 8 NONAME
+	_ZTV18CGlxMetadataDialog @ 9 NONAME
+	_ZTV24CGlxImgVwrMetadataDialog @ 10 NONAME
+	_ZTV26CGlxMetadataCommandHandler @ 11 NONAME
 
--- a/photosgallery/viewframework/views/metadatadialog/group/glxmetadatadialog.mmp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/metadatadialog/group/glxmetadatadialog.mmp	Tue May 11 16:13:40 2010 +0300
@@ -37,7 +37,6 @@
 SOURCE			glxmetadatadialog.cpp
 SOURCE			glxmetadatacontainer.cpp
 SOURCE			glxmetadataviewutility.cpp
-SOURCE			glxresourceutilities.cpp
 SOURCE			glxmetadatacommandhandler.cpp
 SOURCE                  glximgvwrmetadatadialog.cpp
 SOURCE                  glximgvwrmetadatacontainer.cpp
--- a/photosgallery/viewframework/views/metadatadialog/inc/glxresourceutilities.h	Tue Apr 27 16:37:53 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
-* 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:    Metadata dialog implementation
-*
-*/
-
-
-
-
-
-#ifndef __C_GLXRESOURCELOADER_H__
-#define __C_GLXRESOURCELOADER_H__
-
-#include <e32def.h>
-#include <e32cmn.h> // for TFileName
-#include <e32base.h>
-#include <f32file.h> // Rfs
-
-/**
- * Class with a single static method which 
- * finds the resource file on either the c or z drive
- * class CGlxResourceUtil
- * @author Loughlin Spollen 
- */
-NONSHARABLE_CLASS( CGlxResourceUtilities ) : CBase
-    {
-public:
-
-    /** 
-      * Retrieve the full resource file name and path for a give resource 
-      * file name.
-      * Note! this version connects a RFs session
-      * @param The resource filename to search
-      */
-    IMPORT_C static void GetResourceFilenameL( TFileName& aResFile );
-
-    /** 
-      * Retrieve the full resource file name and path for a give resource 
-      * file name.
-      * @param The resource filename to search
-      * @param The file server session, must be connected before the call
-      */
-    IMPORT_C static void GetResourceFilenameL( TFileName& aResFile, RFs& aFs );
-    
-    /** 
-	 * Gets the full name of the UiUtilities resource file.
-	 * @return TFileName  - The resource filename for UiUtilities
-	 */
-	IMPORT_C static TFileName GetUiUtilitiesResourceFilenameL();
-    
-    };
-    
-
-#endif // __C_GLXRESOURCELOADER_H__
-
--- a/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp	Tue May 11 16:13:40 2010 +0300
@@ -319,7 +319,7 @@
                 else if(index == EImgVwrDateAndTimeItem)
                     {  
                     stringConverter->AsStringL( item, 
-                            KMPXMediaGeneralDate,
+                            KGlxMediaGeneralLastModifiedDate,
                             R_QTN_DATE_USUAL_WITH_ZERO,string );
                     }
                 else if(index == EImgVwrDescriptionItem)
@@ -526,7 +526,7 @@
     iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralSize);
     iMainListAttributecontext->AddAttributeL(KGlxMediaGeneralDimensions); 
     iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralTitle);
-    iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralDate);
+    iMainListAttributecontext->AddAttributeL(KGlxMediaGeneralLastModifiedDate);
     iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralComment); 
 
     //Add Context so that we get the handleattributes call once the medialist is populated with above mentioned attributes.
@@ -560,7 +560,7 @@
     HBufC* string = NULL;    
 
     //if attribute is date and time we need to pass the format it as R_QTN_DATE_USUAL_WITH_ZERO else null
-    if(attribute == KMPXMediaGeneralDate)
+    if(attribute == KGlxMediaGeneralLastModifiedDate)
         {
         stringConverter->AsStringL(item, 
                 attribute,
@@ -584,7 +584,7 @@
             {
             EditItemL(EImgVwrNameItem,EFalse);
             }
-        else if(attribute == KMPXMediaGeneralDate)
+        else if(attribute == KGlxMediaGeneralLastModifiedDate)
             {  
             EditItemL(EImgVwrDateAndTimeItem,EFalse);
             }
--- a/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Tue May 11 16:13:40 2010 +0300
@@ -446,7 +446,7 @@
     iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralSize);
     iMainListAttributecontext->AddAttributeL(KGlxMediaGeneralDimensions); 
     iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralTitle);
-    iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralDate);
+    iMainListAttributecontext->AddAttributeL(KGlxMediaGeneralLastModifiedDate);
     iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralComment); 
     iMainListAttributecontext->AddAttributeL(KGlxMediaGeneralLocation);
     iMainListAttributecontext->AddAttributeL(KMPXMediaGeneralDuration);    
@@ -719,7 +719,7 @@
     HBufC* string = NULL;    
     
     //if attribute is date and time we need to pass the format it as R_QTN_DATE_USUAL_WITH_ZERO else null
-    if(attribute == KMPXMediaGeneralDate)
+    if(attribute == KGlxMediaGeneralLastModifiedDate)
         {
         stringConverter->AsStringL(item, 
                                    attribute,
@@ -747,7 +747,7 @@
 			{
 			EditItemL(ENameItem,EFalse);
 			}
-		else if(attribute == KMPXMediaGeneralDate)
+		else if(attribute == KGlxMediaGeneralLastModifiedDate)
 			{  
 			EditItemL(EDateAndTimeItem,EFalse);
 			}
@@ -1121,7 +1121,7 @@
 				else if(index == EDateAndTimeItem)
 					{  
 					stringConverter->AsStringL( item, 
-							KMPXMediaGeneralDate,
+					        KGlxMediaGeneralLastModifiedDate,
 							R_QTN_DATE_USUAL_WITH_ZERO,string );
 					}
 				else if(index == EDescriptionItem)
--- a/photosgallery/viewframework/views/metadatadialog/src/glxresourceutilities.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:    Implementation of Metadata dialog
-*
-*/
-
-
-
-
-//  CLASS HEADER
-#include "glxresourceutilities.h"
-    
-//  EXTERNAL INCLUDES
-#include <bautils.h>
-#include <AknUtils.h>
-#include <f32file.h>
-#include <glxuistd.h>
-#include <data_caging_path_literals.hrh>
-//  INTERNAL INCLUDES
-#include	<glxtracer.h>
-
-// ---------------------------------------------------------------------------
-// GetResourceFilenameL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CGlxResourceUtilities::GetResourceFilenameL( TFileName& aResFile )
-    {
-	TRACER("CGlxResourceUtilities::GetResourceFilenameL( TFileName& aResFile)");
-    
-	RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL( fs );
-    CGlxResourceUtilities::GetResourceFilenameL( aResFile, fs );
-    CleanupStack::PopAndDestroy( &fs );
-    }
-
-// ---------------------------------------------------------------------------
-// GetResourceFilenameL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CGlxResourceUtilities::GetResourceFilenameL( TFileName& aResFile, RFs& aFs )
-    {
-	TRACER("CGlxResourceUtilities::GetResourceFilenameL( TFileName& aResFile, RFs& aFs )");
-    
-    // don't use AknUtils CompleteWithAppPath  
-    aResFile.Insert( 0, TDriveUnit( EDriveC).Name() );
-	// try to locate the localised resource
-    BaflUtils::NearestLanguageFile( aFs, aResFile );
-    // if the localised resource is found, the file name is changed to 
-    // the localised name (z:\apps\resources\xxx.r001)
-    if( !BaflUtils::FileExists( aFs, aResFile ) )
-        {
-        // not found on c drive, try z
-        aResFile.Replace( 0, KMaxDriveName, TDriveUnit( EDriveZ ).Name() );
-    	// try to locate the localised resource again
-        BaflUtils::NearestLanguageFile( aFs, aResFile );
-        // if file was not found this time, there is no localised 
-        // resource with the name
-        if (!BaflUtils::FileExists( aFs, aResFile ) )
-            {
-            User::Leave( KErrNotFound );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// GetUiUtilitiesResourceFilenameL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TFileName CGlxResourceUtilities::GetUiUtilitiesResourceFilenameL()
-
-    {
-    TParse parse;
-    parse.Set(KGlxUiUtilitiesResource, &KDC_APP_RESOURCE_DIR, NULL);
-    TFileName resourceFile(parse.FullName());
-    GetResourceFilenameL(resourceFile);
-    return resourceFile;
-    }
-
--- a/photosgallery/viewframework/views/viewbase/src/glxmedialistviewbase.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/src/glxmedialistviewbase.cpp	Tue May 11 16:13:40 2010 +0300
@@ -130,6 +130,11 @@
     {
     TRACER ("CGlxMediaListViewBase::DoViewActivateL()");
     iUiUtility->SetAppOrientationL( EGlxOrientationDefault );	
+    // current navigational state
+    CMPXCollectionPath* navigationalState = 
+        iCollectionUtility->Collection().PathL();
+    CleanupStack::PushL( navigationalState );
+    
     if ( iMediaList )
         {
         // may need to refresh the media list if it has got out of sync
@@ -139,9 +144,6 @@
         // could contain out of date items
         CMPXCollectionPath* path = iMediaList->PathLC();
         // current navigational state
-        CMPXCollectionPath* navigationalState = 
-            iCollectionUtility->Collection().PathL();
-        CleanupStack::PushL( navigationalState );
         // current node id in UI Hierarchy
         TMPXItemId navStateNodeId = 
             navigationalState->Id( navigationalState->Levels() - 2 );
@@ -154,7 +156,6 @@
             // for it to be recreated later on
             CloseMediaList();
             }
-        CleanupStack::PopAndDestroy( navigationalState );
         CleanupStack::PopAndDestroy( path );        
         }
     
@@ -166,8 +167,6 @@
     __ASSERT_ALWAYS(iMediaList, Panic(EGlxPanicNullMediaList));
 
     
-    CMPXCollectionPath* navigationalState = iCollectionUtility->Collection().PathL();
-    CleanupStack::PushL( navigationalState );
     if (navigationalState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
         {
         // As image viewer is direct fullscreen view, 
@@ -189,14 +188,11 @@
         iTitleFetcher = CGlxTitleFetcher::NewL(*this, path);
         CleanupStack::PopAndDestroy(path);
         }
-    CleanupStack::PopAndDestroy( navigationalState );
    
     //Allow the MskController to observe medialist everytime a view with a valid
     //medialist becomes active
     if( iCbaControl && Cba()&& iEnableMidddleSoftkey )
         {
-        CMPXCollectionPath* navigationalState = iCollectionUtility->Collection().PathL();
-        CleanupStack::PushL(navigationalState);
         iCbaControl->AddToObserverL(*iMediaList,Cba()); 
         if(!(1 == navigationalState->Levels())) // Checking for the main list view
           {
@@ -206,9 +202,10 @@
             {
             iCbaControl->SetMainStatusL();
             }
-        CleanupStack::PopAndDestroy(navigationalState);
         }
     
+    CleanupStack::PopAndDestroy( navigationalState );
+    
     DoMLViewActivateL(aPrevViewId, aCustomMessageId, aCustomMessage);
     //Allow the toolbarController to observe medialist everytime a view with a valid
     //medialist becomes active
--- a/photosgallery/viewframework/views/viewbase/src/glxtitlefetcher.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/src/glxtitlefetcher.cpp	Tue May 11 16:13:40 2010 +0300
@@ -57,7 +57,10 @@
     iPathId = iPath->Id();
     // Go back another level from which to create a media list containing 
     // this path
-    iPath->Back();
+    if(iPath->Levels() > 0)
+    	{
+		iPath->Back();
+    	}
     
     iBackMediaList = MGlxMediaList::InstanceL(*iPath);
     
--- a/photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp	Tue May 11 16:13:40 2010 +0300
@@ -30,6 +30,7 @@
 #include <mpxcollectionpath.h>
 #include <glxcollectionpluginimageviewer.hrh>
 #include <centralrepository.h>              // for checking the ShareOnline version
+#include <glxuiutility.h>
 
 // CONSTANTS AND DEFINITIONS
 namespace
@@ -292,30 +293,37 @@
 	{
     TRACER("CGlxToolbarController::SetStatusL");
 
-    GLX_LOG_INFO1("CGlxToolbarController::SetStatusL(%d)", aList->Count());
-    if (aList->Count() <= 0)
-        {
-        SetToolbarItemsDimmed(ETrue);
-        }
-    else if (KErrNotFound != aList->FocusIndex())
-        {
-        CGlxNavigationalState* navigationalState =
-                CGlxNavigationalState::InstanceL();
-        CleanupClosePushL(*navigationalState);
-        if (navigationalState->ViewingMode() == NGlxNavigationalState::EView)
-            {
-            SetToolbarItemsDimmed(EFalse);
-            }
-        else if (navigationalState->ViewingMode()
-                == NGlxNavigationalState::EBrowse)
-            {
-            TBool dimmed = aList->SelectionCount() ? EFalse : ETrue;
-            iToolbar->SetItemDimmed(EGlxCmdSend, dimmed, ETrue);
-            iToolbar->SetItemDimmed(EGlxCmdUpload, dimmed, ETrue);
-            }
-        CleanupStack::PopAndDestroy(navigationalState);
-        }
-    }
+	GLX_LOG_INFO1("CGlxToolbarController::SetStatusL(%d)", aList->Count());
+    // When going back from fullscreen to grid, when the attributes are already 
+    // available in the cache, there is no HandleAttributeAvailable callback. Hence,
+    // checking for medialist count and backward navigation
+	CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
+	CleanupClosePushL(*uiUtility);
+	if (aList->Count() <= 0 && (uiUtility->ViewNavigationDirection()
+			== EGlxNavigationBackwards))
+		{
+		SetToolbarItemsDimmed(ETrue);
+		}
+	else if (KErrNotFound != aList->FocusIndex())
+		{
+		CGlxNavigationalState* navigationalState =
+				CGlxNavigationalState::InstanceL();
+		CleanupClosePushL(*navigationalState);
+		if (navigationalState->ViewingMode() == NGlxNavigationalState::EView)
+			{
+			SetToolbarItemsDimmed(EFalse);
+			}
+		else if (navigationalState->ViewingMode()
+				== NGlxNavigationalState::EBrowse)
+			{
+			TBool dimmed = aList->SelectionCount() ? EFalse : ETrue;
+			iToolbar->SetItemDimmed(EGlxCmdSend, dimmed, ETrue);
+			iToolbar->SetItemDimmed(EGlxCmdUpload, dimmed, ETrue);
+			}
+		CleanupStack::PopAndDestroy(navigationalState);
+		}
+	CleanupStack::PopAndDestroy(uiUtility);
+	}
 
 //----------------------------------------------------------------------------
 // EnableLatch
@@ -350,6 +358,12 @@
         {
         SetToolbarItemsDimmed(ETrue);
         }
+    if (!iToolbar->IsVisible())
+        {
+        GLX_DEBUG1("CGlxToolbarController::HandlePopulatedL()"
+                " - SetToolbarVisibility(ETrue)");       
+        iToolbar->SetToolbarVisibility(ETrue);
+        } 
     }
 
 // ----------------------------------------------------------------------------
--- a/photosgallery/viewframework/views/zoomview/bwins/glxzoomviewu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/zoomview/bwins/glxzoomviewu.def	Tue May 11 16:13:40 2010 +0300
@@ -1,7 +1,8 @@
 EXPORTS
 	?HandleZoomForegroundEvent@CGlxZoomControl@@QAEXH@Z @ 1 NONAME ; void CGlxZoomControl::HandleZoomForegroundEvent(int)
 	?Activated@CGlxZoomControl@@QAEHXZ @ 2 NONAME ; int CGlxZoomControl::Activated(void)
-	?NewL@CGlxZoomControl@@SAPAV1@AAVMGlxUiCommandHandler@@AAVMGlxMediaList@@AAVCEikButtonGroupContainer@@AAVIMulSliderWidget@Alf@@PAVCGestureHelper@GestureHelper@@@Z @ 3 NONAME ; class CGlxZoomControl * CGlxZoomControl::NewL(class MGlxUiCommandHandler &, class MGlxMediaList &, class CEikButtonGroupContainer &, class Alf::IMulSliderWidget &, class GestureHelper::CGestureHelper *)
-	?Deactivate@CGlxZoomControl@@QAEXXZ @ 4 NONAME ; void CGlxZoomControl::Deactivate(void)
-	?ActivateL@CGlxZoomControl@@QAEXHW4TZoomStartMode@@HAAVTGlxMedia@@PAVTPoint@@H@Z @ 5 NONAME ; void CGlxZoomControl::ActivateL(int, enum TZoomStartMode, int, class TGlxMedia &, class TPoint *, int)
+	?ZoomUiState@CGlxZoomControl@@QAE?AW4TUiState@@XZ @ 3 NONAME ; enum TUiState CGlxZoomControl::ZoomUiState(void)
+	?NewL@CGlxZoomControl@@SAPAV1@AAVMGlxUiCommandHandler@@AAVMGlxMediaList@@AAVCEikButtonGroupContainer@@AAVIMulSliderWidget@Alf@@PAVCGestureHelper@GestureHelper@@@Z @ 4 NONAME ; class CGlxZoomControl * CGlxZoomControl::NewL(class MGlxUiCommandHandler &, class MGlxMediaList &, class CEikButtonGroupContainer &, class Alf::IMulSliderWidget &, class GestureHelper::CGestureHelper *)
+	?Deactivate@CGlxZoomControl@@QAEXXZ @ 5 NONAME ; void CGlxZoomControl::Deactivate(void)
+	?ActivateL@CGlxZoomControl@@QAEXHW4TZoomStartMode@@HAAVTGlxMedia@@PAVTPoint@@H@Z @ 6 NONAME ; void CGlxZoomControl::ActivateL(int, enum TZoomStartMode, int, class TGlxMedia &, class TPoint *, int)
 
--- a/photosgallery/viewframework/views/zoomview/eabi/glxzoomviewu.def	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/zoomview/eabi/glxzoomviewu.def	Tue May 11 16:13:40 2010 +0300
@@ -1,11 +1,12 @@
 EXPORTS
 	_ZN15CGlxZoomControl10DeactivateEv @ 1 NONAME
-	_ZN15CGlxZoomControl25HandleZoomForegroundEventEi @ 2 NONAME
-	_ZN15CGlxZoomControl4NewLER20MGlxUiCommandHandlerR13MGlxMediaListR24CEikButtonGroupContainerRN3Alf16IMulSliderWidgetEPN13GestureHelper14CGestureHelperE @ 3 NONAME
-	_ZN15CGlxZoomControl9ActivateLEi14TZoomStartModeiR9TGlxMediaP6TPointi @ 4 NONAME
-	_ZN15CGlxZoomControl9ActivatedEv @ 5 NONAME
-	_ZTI15CGlxZoomControl @ 6 NONAME
-	_ZTI23CGlxZoomPanEventHandler @ 7 NONAME
-	_ZTV15CGlxZoomControl @ 8 NONAME
-	_ZTV23CGlxZoomPanEventHandler @ 9 NONAME
+	_ZN15CGlxZoomControl11ZoomUiStateEv @ 2 NONAME
+	_ZN15CGlxZoomControl25HandleZoomForegroundEventEi @ 3 NONAME
+	_ZN15CGlxZoomControl4NewLER20MGlxUiCommandHandlerR13MGlxMediaListR24CEikButtonGroupContainerRN3Alf16IMulSliderWidgetEPN13GestureHelper14CGestureHelperE @ 4 NONAME
+	_ZN15CGlxZoomControl9ActivateLEi14TZoomStartModeiR9TGlxMediaP6TPointi @ 5 NONAME
+	_ZN15CGlxZoomControl9ActivatedEv @ 6 NONAME
+	_ZTI15CGlxZoomControl @ 7 NONAME
+	_ZTI23CGlxZoomPanEventHandler @ 8 NONAME
+	_ZTV15CGlxZoomControl @ 9 NONAME
+	_ZTV23CGlxZoomPanEventHandler @ 10 NONAME
 
--- a/photosgallery/viewframework/views/zoomview/inc/glxzoomcontrol.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/zoomview/inc/glxzoomcontrol.h	Tue May 11 16:13:40 2010 +0300
@@ -129,6 +129,12 @@
             TInt aTransitionTime ,
             TSize  *apViewPortDimension = NULL,
             TInt aPrimarySliderLevel = -1);
+
+    /**
+    * Retrieve the UI State of the Zoom view 
+    */
+    IMPORT_C TUiState ZoomUiState();
+
 private:// From MGlxTvObserver
     virtual void HandleTvStatusChangedL ( TTvChangeType aChangeType );
 
--- a/photosgallery/viewframework/views/zoomview/inc/glxzoomeventhandler.h	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/zoomview/inc/glxzoomeventhandler.h	Tue May 11 16:13:40 2010 +0300
@@ -208,11 +208,11 @@
     TBool HandlePanKey(const TAlfEvent &aEvent);
     
     /**
-    * Handle zoom stripe key pressed.
+    * Handle zoom key pressed.
     * @param aZoomIn    :ETrue for Zoom In key, EFalse for Zoom Out key
     * @param aEventCode :Type of key event.
     */
-    void HandleZoomStripeAction(TZoomMode aZoomMode ,TEventCode aEventCode);
+    void HandleZoomKey(TZoomMode aZoomMode ,TEventCode aEventCode);
     
     /**
     * Handle the drag events for panning
@@ -292,11 +292,7 @@
     
     GestureHelper::TGestureCode        iPreviousGestureCode ;
     
-    
-    
     TGlxZoomAndPanMathsEngine iMathsEngine;             
-    
-    
     };
 
 
--- a/photosgallery/viewframework/views/zoomview/inc/glxzoomview.hrh	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/zoomview/inc/glxzoomview.hrh	Tue May 11 16:13:40 2010 +0300
@@ -38,10 +38,4 @@
     EGlxPanIncrementInertic
     };
 
-enum TUiState
-    {
-    EUiOn,
-    EUiOff
-    };
-
 #endif /* GLXZOOMVIEW_HRH_ */
--- a/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp	Tue May 11 16:13:40 2010 +0300
@@ -298,6 +298,15 @@
             iZoomSliderWidget.AddEventHandler(*this);
             iZoomSliderWidget.SetHandleKeyEvent(EFalse);
             iZoomSliderModel = (IMulSliderModel*) iZoomSliderWidget.model();
+            
+            if(iZoomSliderWidget.IsHidden())
+                {
+                iEventHandler->SetZoomUiState(EUiOff);
+                }
+            else
+                {
+                iEventHandler->SetZoomUiState(EUiOn);
+                }
             // 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;
@@ -442,7 +451,6 @@
            {
            iTimer->Cancel();           
            }  
-        iZoomSliderWidget.ShowWidget( EFalse, 0 );
         iZoomSliderWidget.RemoveEventHandler(*this);
         iZoomBackKey->MakeVisible( EFalse );
         iTextureMgr->RemoveZoomList();
@@ -619,7 +627,7 @@
     
     TRect rect;
     rect = AlfUtil::ScreenSize();
-    if ( (rect.Width() != iScreenSize.iWidth) && ( rect.Height() != iScreenSize.iHeight) && (Activated()) )
+    if ( (rect.Width() != iScreenSize.iWidth) && ( rect.Height() != iScreenSize.iHeight))
         {
         //notify slider about Orientation Change
         iZoomSliderWidget.ContainerLayout().Owner().VisualLayoutUpdated(aVisual);
@@ -631,8 +639,10 @@
         //[TODO]: Use the Maths engine ro arrive at this figure (virtual and viewport sizes). else there might be problems in fringe conditions
         iViewPort->SetVirtualSize(TAlfRealSize(iScreenSize.iWidth,iScreenSize.iHeight), 0);
         iViewPort->SetViewportSize(TAlfRealSize(iScreenSize.iWidth,iScreenSize.iHeight), 0);
-
-        iEventHandler->OrientationChanged(rect);
+		if(Activated())
+        	{
+	        iEventHandler->OrientationChanged(rect);
+      		}
         }
     }
 
@@ -962,5 +972,13 @@
         }
     }
 
-
+// ---------------------------------------------------------------------------
+// ZoomUiState
+// ---------------------------------------------------------------------------
+//  
+EXPORT_C TUiState CGlxZoomControl::ZoomUiState()    
+    {
+    TRACER("CGlxFullScreenViewImp::GetUiState");
+    return iEventHandler->ZoomUiState();
+    }
 //  End of File
--- a/photosgallery/viewframework/views/zoomview/src/glxzoomeventhandler.cpp	Tue Apr 27 16:37:53 2010 +0300
+++ b/photosgallery/viewframework/views/zoomview/src/glxzoomeventhandler.cpp	Tue May 11 16:13:40 2010 +0300
@@ -142,6 +142,7 @@
     iTargetAnimatedZoomRatio = (iMaxZoomRatio + iMinZoomRatio)/2 ;
     
     CancelAnimationTimer();
+    CancelUITimer();
     
     //ToDo: Verify this with images slightly smaller or slightly larger than fullscreen size. 
     if (EZoomIn == aZoomMode)
@@ -233,6 +234,12 @@
         CancelAnimationTimer();
         TSize screensize = iMathsEngine.ScreenSize();
         iZoomFocus = TPoint(screensize.iWidth>>1,screensize.iHeight>>1) ;
+        
+        //start the timer here after the animation is complete
+        if(EUiOn == iZoomUiState && iZoomActivated)
+            {
+            ShowScreenFurniture(KGlxScreenTimeout);
+            }
         }
     }
 
@@ -377,14 +384,14 @@
             //Listen EStdKeyApplicationC as EKeyZoomIn key is mapped to TKeyCode:: EKeyApplicationC for which TStdScancode is EStdKeyApplicatoinC
             case EStdKeyApplicationC :
                 {
-                HandleZoomStripeAction(EZoomIn ,aEvent.Code()) ;
+                HandleZoomKey(EZoomIn ,aEvent.Code()) ;
                 consumed = ETrue;
                 break ;
                 }
             //Listen EStdKeyApplicationD as EKeyZoomOut key is mapped to TKeyCode:: EKeyApplicationD for which TStdScancode is EStdKeyApplicatoinD
             case EStdKeyApplicationD :
                 {
-                HandleZoomStripeAction(EZoomOut,aEvent.Code());
+                HandleZoomKey(EZoomOut,aEvent.Code());
                 consumed = ETrue;
                 break ;
                 }                
@@ -397,13 +404,13 @@
     }
 
 // -----------------------------------------------------------------------------
-// HandleZoomStripeAction:Zooms the image on zoom stripe action.
+// HandleZoomKey:Zooms the image on zoom stripe action.
 // -----------------------------------------------------------------------------
 //
-void CGlxZoomPanEventHandler::HandleZoomStripeAction(TZoomMode aZoomMode ,
+void CGlxZoomPanEventHandler::HandleZoomKey(TZoomMode aZoomMode ,
         TEventCode aEventCode)
     {
-    TRACER("CGlxZoomControl::HandleZoomStripeAction ");
+    TRACER("CGlxZoomControl::HandleZoomKey ");
     if ( iZoomActivated )
         {
         switch(aEventCode)
@@ -736,8 +743,14 @@
         {
         return;
         }
-    
-    ShowScreenFurniture(KGlxScreenTimeout);
+
+    if (EUiOff == iZoomUiState)
+        {
+        ShowScreenFurniture(KGlxScreenTimeout);
+        }
+    else{
+        HideScreenFurniture();
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -841,8 +854,13 @@
 void CGlxZoomPanEventHandler::ShowScreenFurniture(TTimeIntervalMicroSeconds32 aTimeout)
     {
     TRACER("CGlxZoomPanEventHandler::ShowScreenFurniture()");
-
-    iZoomEventHandler.HandleShowUi(ETrue);
+    
+    if (EUiOff == iZoomUiState )
+        {
+        // make visible if not already visible. 
+        // the timer will ofcourse get restarted. 
+        iZoomEventHandler.HandleShowUi(ETrue);
+        }
     
     if (aTimeout.Int())
         {
@@ -858,9 +876,11 @@
 void CGlxZoomPanEventHandler::HideScreenFurniture()
     {
     TRACER("CGlxZoomPanEventHandler::HideScreenFurniture()");
-
-    iZoomEventHandler.HandleShowUi(EFalse);
-    CancelUITimer();
+    if (EUiOn == iZoomUiState )
+        {
+        iZoomEventHandler.HandleShowUi(EFalse);
+        CancelUITimer();
+        }
     }
 
 
@@ -1145,6 +1165,7 @@
 TUiState CGlxZoomPanEventHandler::ZoomUiState()
     {
     TRACER("CGlxZoomPanEventHandler::ZoomUiState");
+    GLX_LOG_INFO1("CGlxZoomPanEventHandler::ZoomUiState :=%d",iZoomUiState);
     return iZoomUiState ;
     }