Revision: 201007 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:42:44 +0200
branchRCL_3
changeset 13 71da52165949
parent 9 6b87b143d312
child 14 ce1c7ad1f18b
Revision: 201007 Kit: 201008
photos_plat/controllers_collection_api/tsrc/ui_metaDataDialog/group/ui_metaDataDialog_DoxyFile.txt
photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group/ut_collectioninfo_DoxyFile.txt
photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group/ut_collectionmanager_DoxyFile.txt
photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp
photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdscommand.cpp
photosgallery/commonui/bwins/glxcommonuiu.def
photosgallery/commonui/eabi/glxcommonuiu.def
photosgallery/commonui/group/glxcommonui.mmp
photosgallery/controllers/fetcher/data/glxfetcherdialog.rss
photosgallery/controllers/fetcher/inc/glxfetcherdialog.h
photosgallery/controllers/fetcher/inc/mglxeventobserver.h
photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp
photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp
photosgallery/gallery/group/glx.mmp
photosgallery/gallery/inc/glxappui.h
photosgallery/gallery/sis/glxgallery.pkg
photosgallery/gallery/sis/glxgallery_stub.pkg
photosgallery/gallery/src/glxappui.cpp
photosgallery/group/bld.inf
photosgallery/imgvwr/group/glxivwr.mmp
photosgallery/imgvwr/inc/glxivwrappui.h
photosgallery/imgvwr/src/glxivwrappui.cpp
photosgallery/slideshow/engine/tsrc/t_cshwslideshowengine/t_cshwslideshowengine.cpp
photosgallery/slideshow/view/inc/shwslideshowview.h
photosgallery/slideshow/view/src/shwslideshowbacklighttimer.cpp
photosgallery/slideshow/view/src/shwslideshowview.cpp
photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_cglxthumbnailsaver/src/t_cglxthumbnailsaver.cpp
photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxcommandhandlercopytohomenetwork/src/t_glxcmdhndlrcopytohomentwk.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerback.h
photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/ut_propertycommandhandlers/src/ut_propertycommandhandlers.cpp
photosgallery/viewframework/commandhandlers/inc/glxcommandhandlers.hrh
photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/src/t_glxcommandhandlermarking.cpp
photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxcommandhandlerdrm.cpp
photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/src/t_glxcommandhandlermoreinfo.cpp
photosgallery/viewframework/dataprovider/inc/glxdetailsboundcommand.hrh
photosgallery/viewframework/dataprovider/src/glxthumbnailvarianttype.cpp
photosgallery/viewframework/medialists/src/glxcachemanager.cpp
photosgallery/viewframework/medialists/src/glxgarbagecollector.cpp
photosgallery/viewframework/medialists/src/glximagereader.cpp
photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp
photosgallery/viewframework/tvout/inc/glxhdmicontroller.h
photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h
photosgallery/viewframework/tvout/src/glxactivedecoder.cpp
photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp
photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp
photosgallery/viewframework/uiutilities/data/glxuiutilities.rss
photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp
photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp
photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h
photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp
photosgallery/viewframework/views/listview/eabi/glxlistviewu.def
photosgallery/viewframework/views/listview/group/glxlistview.mmp
photosgallery/viewframework/views/listview/inc/glxlistviewimp.h
photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h
photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp
photosgallery/viewframework/views/listview/src/glxpreviewthumbnailbinding.cpp
photosgallery/viewframework/views/metadatadialog/inc/glxmetadatacontainer.h
photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp
photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp
photosgallery/viewframework/views/metadatadialog/src/glxmetadatadialog.cpp
photosgallery/viewframework/views/viewbase/inc/glxviewbase.h
photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp
--- a/photos_plat/controllers_collection_api/tsrc/ui_metaDataDialog/group/ui_metaDataDialog_DoxyFile.txt	Fri Feb 19 22:51:01 2010 +0200
+++ b/photos_plat/controllers_collection_api/tsrc/ui_metaDataDialog/group/ui_metaDataDialog_DoxyFile.txt	Fri Mar 12 15:42:44 2010 +0200
@@ -2,9 +2,9 @@
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of the License "Symbian Foundation License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
-# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
 # Initial Contributors:
 # Nokia Corporation - initial contribution.
--- a/photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group/ut_collectioninfo_DoxyFile.txt	Fri Feb 19 22:51:01 2010 +0200
+++ b/photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group/ut_collectioninfo_DoxyFile.txt	Fri Mar 12 15:42:44 2010 +0200
@@ -2,9 +2,9 @@
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of the License "Symbian Foundation License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
-# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
 # Initial Contributors:
 # Nokia Corporation - initial contribution.
--- a/photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group/ut_collectionmanager_DoxyFile.txt	Fri Feb 19 22:51:01 2010 +0200
+++ b/photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group/ut_collectionmanager_DoxyFile.txt	Fri Mar 12 15:42:44 2010 +0200
@@ -2,9 +2,9 @@
 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of the License "Symbian Foundation License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
-# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
 # Initial Contributors:
 # Nokia Corporation - initial contribution.
--- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -291,8 +291,7 @@
 
 #ifdef USE_S60_TNM
     iTnEngine = CThumbnailManager::NewL( *this);
-    iTnEngine->SetDisplayModeL( EColor16MU );
-
+    iTnEngine->SetDisplayModeL( EColor16M );
     iTnRequestInProgress = EFalse;
 #else
 	iThumbnailCreator = CGlxtnThumbnailCreator::InstanceL();
--- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdscommand.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdscommand.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -92,8 +92,8 @@
 _LIT(KFileNameFormatString, "(%+02u)");
 
 // Items to be deleted from File server at a time before calling scheduler wait
-const TInt KDeletedItemCount = 50;
-const TInt KDeleteOperationInterval = 200000;
+const TInt KDeletedItemCount = 10;
+const TInt KDeleteOperationInterval = 1000;
 
 // ----------------------------------------------------------------------------
 // Destructor
--- a/photosgallery/commonui/bwins/glxcommonuiu.def	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/commonui/bwins/glxcommonuiu.def	Fri Mar 12 15:42:44 2010 +0200
@@ -2,34 +2,30 @@
 	?PostError@CGlxErrorPoster@@QAEXH@Z @ 1 NONAME ; void CGlxErrorPoster::PostError(int)
 	?InstanceL@CGlxErrorPoster@@SAPAV1@XZ @ 2 NONAME ; class CGlxErrorPoster * CGlxErrorPoster::InstanceL(void)
 	?ActivatePreviousViewL@CGlxNavigationalState@@QAEXXZ @ 3 NONAME ; void CGlxNavigationalState::ActivatePreviousViewL(void)
-	?PossToPixels@CGlxResolutionUtility@@QBEMABM@Z @ 4 NONAME ; float CGlxResolutionUtility::PossToPixels(float const &) const
-	?Close@CGlxResolutionUtility@@QAEXXZ @ 5 NONAME ; void CGlxResolutionUtility::Close(void)
-	?SetStartingLevel@CGlxNavigationalState@@QAEXH@Z @ 6 NONAME ; void CGlxNavigationalState::SetStartingLevel(int)
-	??1CGlxResolutionManager@@UAE@XZ @ 7 NONAME ; CGlxResolutionManager::~CGlxResolutionManager(void)
-	?RemoveObserver@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 8 NONAME ; void CGlxResolutionUtility::RemoveObserver(class MGlxResolutionChangeObserver &)
-	?PixelsToPoss@CGlxResolutionUtility@@QBEMABM@Z @ 9 NONAME ; float CGlxResolutionUtility::PixelsToPoss(float const &) const
-	?PublishStateL@NGlxZoomStatePublisher@@YAXH@Z @ 10 NONAME ; void NGlxZoomStatePublisher::PublishStateL(int)
-	?BackExitStatus@CGlxNavigationalState@@QAEHXZ @ 11 NONAME ; int CGlxNavigationalState::BackExitStatus(void)
-	?SetToViewMode@CGlxNavigationalState@@QAEXXZ @ 12 NONAME ; void CGlxNavigationalState::SetToViewMode(void)
-	?ForwardActivationEventL@CGlxBackServiceWrapper@@QAEHABVTDesC8@@H@Z @ 13 NONAME ; int CGlxBackServiceWrapper::ForwardActivationEventL(class TDesC8 const &, int)
-	?SetScreenSizeL@CGlxResolutionManager@@QAEXVTSize@@@Z @ 14 NONAME ; void CGlxResolutionManager::SetScreenSizeL(class TSize)
-	?RemoveObserver@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 15 NONAME ; void CGlxNavigationalState::RemoveObserver(class MGlxNavigationalStateObserver &)
-	?Close@CGlxNavigationalState@@QAEXXZ @ 16 NONAME ; void CGlxNavigationalState::Close(void)
-	?AddObserverL@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 17 NONAME ; void CGlxNavigationalState::AddObserverL(class MGlxNavigationalStateObserver &)
-	?StartingLevel@CGlxNavigationalState@@QAEHXZ @ 18 NONAME ; int CGlxNavigationalState::StartingLevel(void)
-	?NavigateToL@CGlxNavigationalState@@QAEXABVCMPXCollectionPath@@@Z @ 19 NONAME ; void CGlxNavigationalState::NavigateToL(class CMPXCollectionPath const &)
-	?NavigateToParentL@CGlxNavigationalState@@QAEXXZ @ 20 NONAME ; void CGlxNavigationalState::NavigateToParentL(void)
-	?NavigateToChildL@CGlxNavigationalState@@QAEXABVTGlxMediaId@@@Z @ 21 NONAME ; void CGlxNavigationalState::NavigateToChildL(class TGlxMediaId const &)
-	?NewL@CGlxResolutionManager@@SAPAV1@XZ @ 22 NONAME ; class CGlxResolutionManager * CGlxResolutionManager::NewL(void)
-	?NewLC@CGlxBackServiceWrapper@@SAPAV1@VTUid@@@Z @ 23 NONAME ; class CGlxBackServiceWrapper * CGlxBackServiceWrapper::NewLC(class TUid)
-	?ViewingMode@CGlxNavigationalState@@QAE?AW4TViewingMode@NGlxNavigationalState@@XZ @ 24 NONAME ; enum NGlxNavigationalState::TViewingMode CGlxNavigationalState::ViewingMode(void)
-	?Close@CGlxErrorPoster@@QAEXXZ @ 25 NONAME ; void CGlxErrorPoster::Close(void)
-	?AddObserverL@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 26 NONAME ; void CGlxResolutionUtility::AddObserverL(class MGlxResolutionChangeObserver &)
-	?SetBackExitStatus@CGlxNavigationalState@@QAEXH@Z @ 27 NONAME ; void CGlxNavigationalState::SetBackExitStatus(int)
-	?HandleBackCommandL@CGlxBackServiceWrapper@@QAEHABVTDesC8@@H@Z @ 28 NONAME ; int CGlxBackServiceWrapper::HandleBackCommandL(class TDesC8 const &, int)
-	?StateLC@CGlxNavigationalState@@QBEPAVCMPXCollectionPath@@XZ @ 29 NONAME ; class CMPXCollectionPath * CGlxNavigationalState::StateLC(void) const
-	?InstanceL@CGlxNavigationalState@@SAPAV1@XZ @ 30 NONAME ; class CGlxNavigationalState * CGlxNavigationalState::InstanceL(void)
-	?NewL@CGlxBackServiceWrapper@@SAPAV1@VTUid@@@Z @ 31 NONAME ; class CGlxBackServiceWrapper * CGlxBackServiceWrapper::NewL(class TUid)
-	?InstanceL@CGlxResolutionUtility@@SAPAV1@XZ @ 32 NONAME ; class CGlxResolutionUtility * CGlxResolutionUtility::InstanceL(void)
-	?ScreenSize@CGlxResolutionUtility@@QBE?AVTSize@@XZ @ 33 NONAME ; class TSize CGlxResolutionUtility::ScreenSize(void) const
+	?RemoveObserver@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 4 NONAME ; void CGlxNavigationalState::RemoveObserver(class MGlxNavigationalStateObserver &)
+	?PossToPixels@CGlxResolutionUtility@@QBEMABM@Z @ 5 NONAME ; float CGlxResolutionUtility::PossToPixels(float const &) const
+	?Close@CGlxNavigationalState@@QAEXXZ @ 6 NONAME ; void CGlxNavigationalState::Close(void)
+	?AddObserverL@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 7 NONAME ; void CGlxNavigationalState::AddObserverL(class MGlxNavigationalStateObserver &)
+	?Close@CGlxResolutionUtility@@QAEXXZ @ 8 NONAME ; void CGlxResolutionUtility::Close(void)
+	?StartingLevel@CGlxNavigationalState@@QAEHXZ @ 9 NONAME ; int CGlxNavigationalState::StartingLevel(void)
+	?NavigateToL@CGlxNavigationalState@@QAEXABVCMPXCollectionPath@@@Z @ 10 NONAME ; void CGlxNavigationalState::NavigateToL(class CMPXCollectionPath const &)
+	?NavigateToParentL@CGlxNavigationalState@@QAEXXZ @ 11 NONAME ; void CGlxNavigationalState::NavigateToParentL(void)
+	?NavigateToChildL@CGlxNavigationalState@@QAEXABVTGlxMediaId@@@Z @ 12 NONAME ; void CGlxNavigationalState::NavigateToChildL(class TGlxMediaId const &)
+	?NewL@CGlxResolutionManager@@SAPAV1@XZ @ 13 NONAME ; class CGlxResolutionManager * CGlxResolutionManager::NewL(void)
+	?SetStartingLevel@CGlxNavigationalState@@QAEXH@Z @ 14 NONAME ; void CGlxNavigationalState::SetStartingLevel(int)
+	??1CGlxResolutionManager@@UAE@XZ @ 15 NONAME ; CGlxResolutionManager::~CGlxResolutionManager(void)
+	?ViewingMode@CGlxNavigationalState@@QAE?AW4TViewingMode@NGlxNavigationalState@@XZ @ 16 NONAME ; enum NGlxNavigationalState::TViewingMode CGlxNavigationalState::ViewingMode(void)
+	?SetBackExitStatus@CGlxNavigationalState@@QAEXH@Z @ 17 NONAME ; void CGlxNavigationalState::SetBackExitStatus(int)
+	?AddObserverL@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 18 NONAME ; void CGlxResolutionUtility::AddObserverL(class MGlxResolutionChangeObserver &)
+	?Close@CGlxErrorPoster@@QAEXXZ @ 19 NONAME ; void CGlxErrorPoster::Close(void)
+	?RemoveObserver@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 20 NONAME ; void CGlxResolutionUtility::RemoveObserver(class MGlxResolutionChangeObserver &)
+	?PixelsToPoss@CGlxResolutionUtility@@QBEMABM@Z @ 21 NONAME ; float CGlxResolutionUtility::PixelsToPoss(float const &) const
+	?BackExitStatus@CGlxNavigationalState@@QAEHXZ @ 22 NONAME ; int CGlxNavigationalState::BackExitStatus(void)
+	?PublishStateL@NGlxZoomStatePublisher@@YAXH@Z @ 23 NONAME ; void NGlxZoomStatePublisher::PublishStateL(int)
+	?StateLC@CGlxNavigationalState@@QBEPAVCMPXCollectionPath@@XZ @ 24 NONAME ; class CMPXCollectionPath * CGlxNavigationalState::StateLC(void) const
+	?SetToViewMode@CGlxNavigationalState@@QAEXXZ @ 25 NONAME ; void CGlxNavigationalState::SetToViewMode(void)
+	?InstanceL@CGlxNavigationalState@@SAPAV1@XZ @ 26 NONAME ; class CGlxNavigationalState * CGlxNavigationalState::InstanceL(void)
+	?ScreenSize@CGlxResolutionUtility@@QBE?AVTSize@@XZ @ 27 NONAME ; class TSize CGlxResolutionUtility::ScreenSize(void) const
+	?InstanceL@CGlxResolutionUtility@@SAPAV1@XZ @ 28 NONAME ; class CGlxResolutionUtility * CGlxResolutionUtility::InstanceL(void)
+	?SetScreenSizeL@CGlxResolutionManager@@QAEXVTSize@@@Z @ 29 NONAME ; void CGlxResolutionManager::SetScreenSizeL(class TSize)
 
--- a/photosgallery/commonui/eabi/glxcommonuiu.def	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/commonui/eabi/glxcommonuiu.def	Fri Mar 12 15:42:44 2010 +0200
@@ -25,17 +25,11 @@
 	_ZN21CGlxResolutionUtility14RemoveObserverER28MGlxResolutionChangeObserver @ 24 NONAME
 	_ZN21CGlxResolutionUtility5CloseEv @ 25 NONAME
 	_ZN21CGlxResolutionUtility9InstanceLEv @ 26 NONAME
-	_ZN22CGlxBackServiceWrapper18HandleBackCommandLERK6TDesC8i @ 27 NONAME
-	_ZN22CGlxBackServiceWrapper23ForwardActivationEventLERK6TDesC8i @ 28 NONAME
-	_ZN22CGlxBackServiceWrapper4NewLE4TUid @ 29 NONAME
-	_ZN22CGlxBackServiceWrapper5NewLCE4TUid @ 30 NONAME
-	_ZN22NGlxZoomStatePublisher13PublishStateLEi @ 31 NONAME
-	_ZNK21CGlxNavigationalState7StateLCEv @ 32 NONAME
-	_ZNK21CGlxResolutionUtility10ScreenSizeEv @ 33 NONAME
-	_ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 34 NONAME
-	_ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 35 NONAME
-	_ZTI21CGlxNavigationalState @ 36 NONAME
-	_ZTI22CGlxBackServiceWrapper @ 37 NONAME
-	_ZTV21CGlxNavigationalState @ 38 NONAME
-	_ZTV22CGlxBackServiceWrapper @ 39 NONAME
+	_ZN22NGlxZoomStatePublisher13PublishStateLEi @ 27 NONAME
+	_ZNK21CGlxNavigationalState7StateLCEv @ 28 NONAME
+	_ZNK21CGlxResolutionUtility10ScreenSizeEv @ 29 NONAME
+	_ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 30 NONAME
+	_ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 31 NONAME
+	_ZTI21CGlxNavigationalState @ 32 NONAME
+	_ZTV21CGlxNavigationalState @ 33 NONAME
 
--- a/photosgallery/commonui/group/glxcommonui.mmp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/commonui/group/glxcommonui.mmp	Fri Mar 12 15:42:44 2010 +0200
@@ -49,8 +49,6 @@
 SOURCE          glxzoomstatepublisher.cpp
 SOURCE          glxnavigationalstate.cpp
 
-SOURCE          glxbackservicewrapper.cpp
-
 
 LIBRARY         bafl.lib
 LIBRARY         efsrv.lib
@@ -63,9 +61,6 @@
 LIBRARY         mpxcollectionutility.lib        //for MMPXCollectionUtility
 LIBRARY         mpxcommon.lib                   // CMPXCollectionPath
 LIBRARY         mpxviewutility.lib              //for MMPXViewUtility
-
-LIBRARY 		        liwservicehandler.lib //CLiwVariant
-
 LIBRARY         flogger.lib
 // if photos need to publish zooming state, include the context framework
 #ifdef GLX_PUBLISH_ZOOMING_STATE
@@ -73,6 +68,4 @@
 LIBRARY			cfservices.lib // for CCFContextObject
 #endif
 
-//EXPORTUNFROZEN
-
 // End of file
--- a/photosgallery/controllers/fetcher/data/glxfetcherdialog.rss	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/controllers/fetcher/data/glxfetcherdialog.rss	Fri Mar 12 15:42:44 2010 +0200
@@ -199,8 +199,7 @@
   flags=EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
       EEikDialogFlagCbaButtons | EEikDialogFlagWait |
           EEikDialogFlagNoBackgroundFade |EEikDialogFlagNoBorder;
-  // softkeys: left select, middle select, right cancel
-  buttons = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT;
+  buttons = R_AVKON_SOFTKEYS_CANCEL;
   // Do not add any items
   }
 
@@ -210,8 +209,7 @@
   flags=EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
       EEikDialogFlagCbaButtons | EEikDialogFlagWait |
           EEikDialogFlagNoBackgroundFade |EEikDialogFlagNoBorder;
-  // softkeys: left options, middle select, right cancel
-  buttons = R_AVKON_SOFTKEYS_OK_CANCEL__MARK;
+  buttons = R_AVKON_SOFTKEYS_CANCEL;
   // Do not add any items
   }
 
--- a/photosgallery/controllers/fetcher/inc/glxfetcherdialog.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/controllers/fetcher/inc/glxfetcherdialog.h	Fri Mar 12 15:42:44 2010 +0200
@@ -130,6 +130,7 @@
     private:// From MGlxEventObserver
     
         virtual void HandleDoubleTapEventL(TInt aCommandId);          
+        virtual void HandleMarkEventL();
 	
 	public:// to exit the fetcher dialog 
 		void CallCancelFetcherL(TInt aCommandId);
--- a/photosgallery/controllers/fetcher/inc/mglxeventobserver.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/controllers/fetcher/inc/mglxeventobserver.h	Fri Mar 12 15:42:44 2010 +0200
@@ -34,6 +34,11 @@
     virtual void HandleDoubleTapEventL(TInt aCommandId) = 0;  
 
     /**
+     * Called from container to pass Mark/Unmark events to Dialog.
+     */
+    virtual void HandleMarkEventL() = 0;  
+    
+    /**
      * Destructor. Dont allow deleting objects through this interface.
      */
     virtual ~MGlxEventObserver() {};
--- a/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -298,7 +298,7 @@
         THgScrollDirection /*aDirection*/)
     {
     TRACER("CGlxFetcherContainer::Request()");
-    RequestL(aRequestStart, aRequestEnd);
+    TRAP_IGNORE(RequestL( aRequestStart, aRequestEnd ));
     }
 // ---------------------------------------------------------------------------
 // RequestL
@@ -477,6 +477,7 @@
     {
     TRACER("CGlxGridViewImp::HandleMarkingL()");
     HandleMultipleMarkingL(aIndex);
+    iEventObserver.HandleMarkEventL();    
     }
 
 // ---------------------------------------------------------------------------
--- a/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -342,6 +342,21 @@
     {
     TRACER("CGlxFetcherDialog::PostLayoutDynInitL");
     
+    if (!iUiUtility->IsPenSupported())
+        {
+        CEikButtonGroupContainer& cbaContainer = ButtonGroupContainer();
+        if (iMultiSelectionEnabled)
+            {
+            cbaContainer.SetCommandSetL(R_AVKON_SOFTKEYS_OK_CANCEL__MARK);
+            }
+        else
+            {
+            cbaContainer.SetCommandSetL(
+                    R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT);
+            }
+        cbaContainer.DrawNow();
+        }
+
     // Create and Display Grid widget 
     iFetcherContainer->CreateAndDisplayGridL();
     }
@@ -401,6 +416,29 @@
     }
     
 //-----------------------------------------------------------------------------
+// CGlxFetcherDialog::HandleMarkEventL
+// Callback from the container to process the mark/unmark events.
+//-----------------------------------------------------------------------------
+void CGlxFetcherDialog::HandleMarkEventL()
+    {
+    TRACER("CGlxFetcherDialog::HandleMarkEventL");
+    if ( iUiUtility->IsPenSupported() )
+        {
+        MGlxMediaList& mediaList = iFetcherContainer->MediaList();
+        CEikButtonGroupContainer& cbaContainer = ButtonGroupContainer();
+        if (mediaList.SelectionCount())
+            {
+            cbaContainer.SetCommandSetL(R_AVKON_SOFTKEYS_OK_CANCEL__MARK);
+            }
+        else
+            {
+            cbaContainer.SetCommandSetL(R_AVKON_SOFTKEYS_CANCEL);
+            }
+        cbaContainer.DrawNow();
+        }
+    }
+    
+//-----------------------------------------------------------------------------
 // CGlxFetcherDialog::CallCancelFetcherL
 // This function will be called from CGlxFetcher::CancelFetcherL
 // This will ensure exit of fetcher dialog & fetcher app
--- a/photosgallery/gallery/group/glx.mmp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/gallery/group/glx.mmp	Fri Mar 12 15:42:44 2010 +0200
@@ -86,9 +86,6 @@
 LIBRARY			glxmedialists.lib // to get the cache manager handle
 LIBRARY    		apgrfx.lib 
 LIBRARY                 glximageviewermanager.lib
-
-
-LIBRARY 		        liwservicehandler.lib //CLiwVariant
 LIBRARY                 glxcommon.lib
 LIBRARY                 efsrv.lib // for RFile
 
@@ -99,7 +96,6 @@
 START MARM
 END
 
-// DEFFILE                 ?filename
 
 START RESOURCE          glx_loc.rss
 HEADER
@@ -119,4 +115,3 @@
 LIBRARY aknnotify.lib
 LIBRARY hal.lib              // HAL, HALData
 LIBRARY commonengine.lib		// for StringLoader
-// MACRO                   ?macro_name
--- a/photosgallery/gallery/inc/glxappui.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/gallery/inc/glxappui.h	Fri Mar 12 15:42:44 2010 +0200
@@ -34,8 +34,6 @@
 class CGlxNavigationalState;
 class CAknGlobalNote;
 
-class CGlxBackServiceWrapper;
-
 /**
  *  CGlxAppUi
  *
@@ -165,12 +163,6 @@
     *Invoked by the OOM framwork when photos app needs to free memory for other applications.
     */
     void StopCleanupL();
-    /**
-     * To move back to the app which started photossuite when done options->exit from
-     * within the app. 
-     * @param aMessage exit action from photossuite 
-     */
-    void LaunchMmViewL(const TDesC8& aMessage);
 	
 	/**
      * Check for updates via IAD.
@@ -206,7 +198,6 @@
     /// Central repository entry for app (owned)
     CRepository* iRepository;
     
-    CGlxBackServiceWrapper* iBSWrapper;
     /**
      * IAD updater class
      */
--- a/photosgallery/gallery/sis/glxgallery.pkg	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/gallery/sis/glxgallery.pkg	Fri Mar 12 15:42:44 2010 +0200
@@ -143,18 +143,6 @@
 ; Glx logging client
 "\epoc32\release\armv5\urel\glxlogging.dll"-"!:\sys\bin\glxlogging.dll"
 
-; For contentharvester plugin component
-"\epoc32\release\armv5\urel\glxcontentharvesterplugin.dll"          -"!:\sys\bin\glxcontentharvesterplugin.dll"
-"\epoc32\data\Z\resource\plugins\glxcontentharvesterplugin.rsc" 		-"!:\resource\plugins\glxcontentharvesterplugin.rsc"
-
-; For photossuite component
-
-
-"\epoc32\data\z\resource\apps\photossuite.rsc"            -"!:\resource\apps\photossuite.rsc"
-"\epoc32\include\photossuite.rsg"            		  -"!:\resource\apps\photossuite.rsg"
-"\epoc32\data\Z\private\101F4CD2\import\suites\photossuite\suite.xml"			-"!:\private\101F4CD2\import\suites\photossuite\suite.xml"
-"\epoc32\data\Z\private\101F4CD2\import\suites\photossuite\photos_items.xml"			-"!:\private\101F4CD2\import\suites\photossuite\photos_items.xml"
-
 
 "\epoc32\data\Z\resource\xhtml\01\0x200009EE\contents.zip"       -"!:\resource\xhtml\01\0x200009EE\contents.zip"
 "\epoc32\data\Z\resource\xhtml\01\0x200009EE\index.xml"         -"!:\resource\xhtml\01\0x200009EE\index.xml"
--- a/photosgallery/gallery/sis/glxgallery_stub.pkg	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/gallery/sis/glxgallery_stub.pkg	Fri Mar 12 15:42:44 2010 +0200
@@ -158,16 +158,7 @@
 ""-"z:\sys\bin\glxuitilities.dll"
 ""-"z:\sys\bin\glxaddtoalbumhandler.dll"
 
-; For contentharvester plugin component
-""-"z:\sys\bin\glxcontentharvesterplugin.dll"
-
-
 ""-"z:\resource\xhtml\01\0x200009EE\contents.zip"
 ""-"z:\resource\xhtml\01\0x200009EE\index.xml"
 ""-"z:\resource\xhtml\01\0x200009EE\keywords.xml"
 ""-"z:\resource\xhtml\01\0x200009EE\meta.xml"
-
-; For photossuite component
-""-"z:\resource\apps\photossuite.rsc"
-""-"z:\private\101F4CD2\import\suites\photossuite\suite.xml"
-""-"z:\private\101F4CD2\import\suites\photossuite\photos_items.xml"
--- a/photosgallery/gallery/src/glxappui.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/gallery/src/glxappui.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -19,6 +19,8 @@
  
 
 #include "glxappui.h"
+#include "glxcachemanager.h"
+#include "glxiadupdate.h"
 
 #include <avkon.hrh>
 #include <StringLoader.h>    
@@ -59,21 +61,12 @@
 #include <hal_data.h>
 #include <oommonitorsession.h>
 #include <glxtracer.h>
-#include "glxcachemanager.h"//OOM
-//OOM
-
-#include <oommonitorplugin.h>
-#include <oommonitorsession.h>
 
 //OOM
-
-
-#include <glxbackservicewrapper.h>
-
-
+#include <oommonitorplugin.h>
+#include <oommonitorsession.h>
 #include <glxuistd.h>
 #include <apgcli.h>
-#include "glxiadupdate.h"
 
 //constants
 const TInt KGlxGridThumbnailPages          = 9 ;       // 4 page Down + 4 page Up + 1 Visible page = 9 page 
@@ -87,17 +80,12 @@
 const TInt KGlxMemoryForOOMFwk          = 1048576 ; // 1 MB
 const TInt KGlxThumbNailRepresentation    = 2;         // Thumbnail Representation; Could be 3 also 
 
-_LIT8( KPhotosSuiteNavigation, "SuiteNavigation" );
 _LIT8( KPhotosCaptured, "Captured" );
 _LIT8( KPhotosMonths, "Months" );
 _LIT8( KPhotosTags, "Tags" );
 _LIT8( KPhotosAlbums, "Albums" );
 _LIT8( KPhotosAllValue,"Allcs");
 
-_LIT8( KPhotosSuiteExitMessage, "mm://photossuite?action=exit" );
-
-// Matrix uid, needed for activating the suite view.
-const TInt KMatrixUid = 0x101F4CD2;
 const TInt KCapturedAlbumId = 2 ;
         
 /**
@@ -127,8 +115,6 @@
     
     iNavigationalState->AddObserverL( *this );
 
-    // Create Back Stepping Service wrapper
-	iBSWrapper = CGlxBackServiceWrapper::NewL( TUid::Uid( KGlxGalleryApplicationUid ) );
 	iNavigationalState->SetBackExitStatus(EFalse);
     
     iFocusLostLowMemory = EFalse;
@@ -171,10 +157,6 @@
         iUiUtility->Close();
         }
 
-    if( iBSWrapper )
-        {	
-        delete iBSWrapper;    
-        }
     if (iPeriodic)
         {
         iPeriodic->Cancel();
@@ -199,16 +181,6 @@
         {
         case EEikCmdExit:
             {
-            // Send message to Menu and exit.
-            /**
-            * In case of exit is pressed from options menu of photos grid, this flag will be 
-            * false. so it will launch matrix menu. If we don't call LaunchMmViewL, in the above 
-            * scenario, photos will exit,but photosuite will come. This is misleading to user.
-            */
-            if(!iEndKeyPressed)
-	            {
-	            LaunchMmViewL( KPhotosSuiteExitMessage );	
-	            }
             iUiUtility->SetExitingState(ETrue);
             Exit();
             }
@@ -609,10 +581,6 @@
                 User::Leave(KErrNotSupported);
                 }
             iNavigationalState->SetBackExitStatus(ETrue);
-            TBuf8<15> buf;
-            buf.Append( KPhotosSuiteNavigation );
-            TRAP_IGNORE(iBSWrapper->ForwardActivationEventL( buf, ETrue ))
-
             break;
         }
     CleanupStack::PopAndDestroy(&stream);
@@ -855,42 +823,6 @@
 #endif    
     }
 
-// ---------------------------------------------------------------------------
-// LaunchMmViewL
-//
-// ---------------------------------------------------------------------------
-//
-void CGlxAppUi::LaunchMmViewL( const TDesC8& aMessage )
-    {
- 	TRACER("CGlxNsAppUi::LaunchMmViewL()");
-	TApaTaskList taskList( iCoeEnv->WsSession() );
-	TApaTask task = taskList.FindApp( TUid::Uid( KMatrixUid ) );
-
-	if ( task.Exists() )
-		{
-		task.SendMessage( TUid::Uid( KUidApaMessageSwitchOpenFileValue ),aMessage );
-		}
-	else
-		{ // app not yet running
-		RApaLsSession appArcSession;
-		CleanupClosePushL( appArcSession );
-		User::LeaveIfError( appArcSession.Connect() );      
-		TApaAppInfo appInfo;
-		TInt err = appArcSession.GetAppInfo( appInfo, 
-		TUid::Uid( KMatrixUid ) );
-		if( err == KErrNone )
-			{
-			CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
-			cmdLine->SetExecutableNameL( appInfo.iFullName );
-			cmdLine->SetCommandL( EApaCommandRun );
-			cmdLine->SetTailEndL( aMessage );
-			appArcSession.StartApp( *cmdLine );
-			CleanupStack::PopAndDestroy( cmdLine );
-			}
-		CleanupStack::PopAndDestroy( &appArcSession ); 
-		}
-    }
-
 // -----------------------------------------------------------------------------
 // ClosePhotosL
 // -----------------------------------------------------------------------------
--- a/photosgallery/group/bld.inf	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/group/bld.inf	Fri Mar 12 15:42:44 2010 +0200
@@ -70,10 +70,6 @@
 // include the slideshow build
 #include "../slideshow/group/bld.inf"
 
-
-#include "../contentharvesterplugin/group/bld.inf"
-#include "../photossuite/group/bld.inf"
-
 //include photos memory plug-in
 #include "../memoryplugin/group/bld.inf"
 
--- a/photosgallery/imgvwr/group/glxivwr.mmp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/imgvwr/group/glxivwr.mmp	Fri Mar 12 15:42:44 2010 +0200
@@ -102,6 +102,7 @@
 END // RESOURCE
 
 
+LIBRARY oommonitor.lib
 LIBRARY aknnotify.lib
 LIBRARY hal.lib              // HAL, HALData
 LIBRARY commonengine.lib		// for StringLoader
--- a/photosgallery/imgvwr/inc/glxivwrappui.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/imgvwr/inc/glxivwrappui.h	Fri Mar 12 15:42:44 2010 +0200
@@ -33,8 +33,6 @@
 class CGlxNavigationalState;
 class CAknGlobalNote;
 
-class CGlxBackServiceWrapper;
-
 /**
  *  CGlxIVwrAppUi
  *
@@ -76,6 +74,11 @@
     void HandleForegroundEventL( TBool aForeground );
 
 private:
+    enum TEntryType
+        {
+        EEntryTypeStartUp = 0,
+        EEntryTypeFocusGained
+        };
     /**
      * Get view scoring ids based on current navigational state
      * (using Get in the name since the function does not return anything)
@@ -98,6 +101,32 @@
     TUid ViewScoringIdForNaviStateDepth( const CMPXCollectionPath& aNaviState ) const;
 
     /**
+     * Requesting OOM to Free Some Memory, so that photos image viewer can start
+     * @return Error if Memory Cannot be freed else Error None
+     */
+    TInt OOMRequestFreeMemoryL( TInt aBytesRequested) ;
+
+    /**
+     * Finds Current Memory Availability And Decides to Send a Request for freeing the memory 
+     * @param aCriticalMemoryRequired Bare Minimum to start photos image viewer
+     * @return Error Code from OOM
+     */
+    TInt ReserveMemoryL(TInt aCriticalMemoryRequired);
+    
+    /**
+     * Finds Current Minimum Required memory to start photos image viewer
+     * @param Type of application invokation 
+     * @return Required Critical Memory
+     */
+    TInt RamRequiredInBytesL(TEntryType aType);
+    
+    /**
+     * Reserve critical memory qequired to start photos image viewer
+     * @param Type of application invokation 
+     */
+    void ReserveMemoryL(TEntryType aType);
+
+    /**
      * close photos app.
      */
     void CloseImgVwr();
@@ -113,8 +142,6 @@
 
     ///Ui utility
     CGlxUiUtility* iUiUtility;
-
-    CGlxBackServiceWrapper* iBSWrapper;
     };
 
 
--- a/photosgallery/imgvwr/src/glxivwrappui.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/imgvwr/src/glxivwrappui.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -49,14 +49,24 @@
 #include <glxfullscreenviewplugin.hrh>
 #include <glxivwr.rsg>
 #include <AknGlobalNote.h>
+#include <hal.h>
+#include <hal_data.h>
+#include <oommonitorsession.h>
 #include <glxtracer.h>
-
-
-#include <glxbackservicewrapper.h>
-
 #include <glxuistd.h>
 #include <apgcli.h>
 
+//constants
+const TInt KGlxFullThumbnailCount         = 1 ;       // 1 visible thumnail
+#ifdef __MARM
+const TInt KGlxMaxMegaPixelsSupportedByCamera = 5242880 ; // 5 MB
+#else
+const TInt KGlxMaxMegaPixelsSupportedByCamera = 2097152 ; // 2 MB
+#endif
+const TInt KGlxMaxMemoryToDecodeCapturedPicture = 2 * KGlxMaxMegaPixelsSupportedByCamera ;
+const TInt KGlxMemoryForOOMFwk          = 1048576 ; // 1 MB
+const TInt KGlxThumbNailRepresentation    = 4;         // Thumbnail Representation; Could be 3 also 
+
 // -----------------------------------------------------------------------------
 // Constructor
 // -----------------------------------------------------------------------------
@@ -80,8 +90,6 @@
 
     iNavigationalState->AddObserverL( *this );
 
-    // Create Back Stepping Service wrapper
-    iBSWrapper = CGlxBackServiceWrapper::NewL( TUid::Uid( KGlxGalleryApplicationUid ) );
     iNavigationalState->SetBackExitStatus(EFalse);
 
     // Get an instance of view utility
@@ -90,6 +98,7 @@
     iUiUtility = CGlxUiUtility::UtilityL();
     // Always start in default orientation
     iUiUtility->SetAppOrientationL(EGlxOrientationDefault);
+    ReserveMemoryL(EEntryTypeStartUp);
     // publish zoom context, no zoom keys for now
     NGlxZoomStatePublisher::PublishStateL( EFalse );
     }
@@ -116,11 +125,6 @@
         {
         iUiUtility->Close();
         }
-
-    if( iBSWrapper )
-        {	
-        delete iBSWrapper;    
-        }
     }
 
 // -----------------------------------------------------------------------------
@@ -359,6 +363,103 @@
     }
 
 // ---------------------------------------------------------------------------
+// OOMRequestFreeMemoryL
+// ---------------------------------------------------------------------------
+//
+TInt CGlxIVwrAppUi::OOMRequestFreeMemoryL( TInt aBytesRequested)
+    {
+    TRACER("TInt CGlxIVwrAppUi::OOMRequestFreeMemoryL( TInt aBytesRequested)");
+    GLX_LOG_INFO1("CGlxIVwrAppUi::OOMRequestFreeMemoryL() aBytesRequested=%d",
+                                                        aBytesRequested);
+
+    ROomMonitorSession oomMonitor;
+    User::LeaveIfError( oomMonitor.Connect() );
+    // No leaving code after this point, so no need to use cleanup stack
+    // for oomMonitor
+    TInt errorCode = oomMonitor.RequestFreeMemory( aBytesRequested );
+    GLX_LOG_INFO1("CGlxIVwrAppUi::OOMRequestFreeMemoryL(1) errorCode=%d",errorCode);
+    if ( errorCode != KErrNone )
+        {
+        // try one more time 
+        errorCode = oomMonitor.RequestFreeMemory( aBytesRequested );
+        GLX_LOG_INFO1("CGlxIVwrAppUi::OOMRequestFreeMemoryL(2) errorCode=%d",errorCode);
+        }
+    oomMonitor.Close();
+    return errorCode;
+    }
+
+// ---------------------------------------------------------------------------
+// ReserveMemoryL
+// ---------------------------------------------------------------------------
+//
+TInt CGlxIVwrAppUi::ReserveMemoryL(TInt aCriticalMemoryRequired)
+    {
+    TRACER("void CGlxIVwrAppUi::ReserveMemoryL(TInt aCriticalMemoryRequired)");
+
+    TInt memoryLeft = 0;
+    TInt error = KErrNone ; 
+    HAL::Get( HALData::EMemoryRAMFree, memoryLeft );
+    GLX_LOG_INFO2("CGlxIVwrAppUi::ReserveMemoryL() - aCriticalMemoryRequired=%d, memoryLeft=%d",
+                                       aCriticalMemoryRequired, memoryLeft);
+    if ( aCriticalMemoryRequired > memoryLeft )
+        {
+        // Request for critical memory required 
+        error = OOMRequestFreeMemoryL( aCriticalMemoryRequired);
+        GLX_LOG_INFO1("CGlxIVwrAppUi::ReserveMemoryL() - OOMRequestFreeMemoryL() error=%d", error);
+        }
+    return error;
+    }
+
+// ---------------------------------------------------------------------------
+// RamRequiredInBytesL
+// ---------------------------------------------------------------------------
+//
+TInt CGlxIVwrAppUi::RamRequiredInBytesL(TEntryType aType)
+    {
+    TRACER("TInt CGlxIVwrAppUi::RamRequiredInBytesL(TEntryType aType)");
+    TInt criticalRamMemory = 0 ;
+    TSize displaySize = iUiUtility->DisplaySize();
+    if(EEntryTypeStartUp == aType)
+        {
+        // This is Bare Minimum Required Memory for Photos to start 
+        // For Framework to work and to do the on-the-fly decoding 
+        // for the just captured picture = KGlxMemoryForOOMFwk + KGlxMaxMemoryToDecodeCapturedPicture
+        // For FullScreen to Work Number of Thumbnail(s) * Width * Height * Representation
+        criticalRamMemory =  KGlxMemoryForOOMFwk + KGlxMaxMemoryToDecodeCapturedPicture + 
+                                             (KGlxFullThumbnailCount *
+                                              displaySize.iWidth * displaySize.iHeight * 
+                                              KGlxThumbNailRepresentation );
+        
+        GLX_LOG_INFO1("CGlxIVwrAppUi::RamRequiredInBytesL(EEntryTypeStartUp): criticalRamMemory=%d",
+                                                                            criticalRamMemory);
+        }
+    else
+        {
+        GLX_LOG_INFO("CGlxIVwrAppUi::RamRequiredInBytesL(): Photos Already Running");
+        }
+ 
+    return criticalRamMemory;
+    }
+
+// ---------------------------------------------------------------------------
+// ReserveMemoryL
+// ---------------------------------------------------------------------------
+//
+void CGlxIVwrAppUi::ReserveMemoryL(TEntryType aType)
+    {
+    TRACER("TInt CGlxIVwrAppUi::ReserveMemoryL(TEntryType aType)");
+    
+    TInt error = ReserveMemoryL(RamRequiredInBytesL(aType));
+    GLX_LOG_INFO1("CGlxIVwrAppUi::ReserveMemoryL() error=%d", error);
+    
+    if (KErrNoMemory == error)
+        {
+        GLX_LOG_INFO("CGlxIVwrAppUi::ReserveMemoryL(): LEAVE with KErrNoMemory ");
+        User::Leave(KErrNoMemory);
+        }
+    }
+
+// ---------------------------------------------------------------------------
 // HandleApplicationSpecificEventL
 // 
 // ---------------------------------------------------------------------------
--- a/photosgallery/slideshow/engine/tsrc/t_cshwslideshowengine/t_cshwslideshowengine.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/slideshow/engine/tsrc/t_cshwslideshowengine/t_cshwslideshowengine.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -296,7 +296,10 @@
 	{
 	// remove our scheduler
 	// replace old with our new
-	iScheduler->Replace( iOldScheduler );
+    if ( iScheduler )
+        {
+        iScheduler->Replace(iOldScheduler);
+        }
 	delete iScheduler;
 	
 	delete iTimer;
--- a/photosgallery/slideshow/view/inc/shwslideshowview.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/slideshow/view/inc/shwslideshowview.h	Fri Mar 12 15:42:44 2010 +0200
@@ -301,7 +301,7 @@
          * returns the index of item for which texture can be removed for cleanup
          * The index will be out the iterator offsets w.r.t focssed index.
          */
-		void SetImage();
+		void SetImageL();
         TInt GetIndexToBeRemoved();
         /**
          * Remove the fullscreen texture.
--- a/photosgallery/slideshow/view/src/shwslideshowbacklighttimer.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/slideshow/view/src/shwslideshowbacklighttimer.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -83,18 +83,20 @@
 	TRACER("CShwSlideshowBackLightTimer::ConstructL");
 	GLX_LOG_ENTRY_EXIT("CShwSlideshowBackLightTimer::ConstructL");
 	
-    CRepository* repository = CRepository::NewLC( KCRUidPeripheralSettings );
+    CRepository* lightsRepo = CRepository::NewLC( KCRUidPeripheralSettings );
     // What's the timeout value (in seconds ) for the display light?
-    repository->Get( KSettingsDisplayLightsTimeout, iSettingsDelay );
+    lightsRepo->Get( KSettingsDisplayLightsTimeout, iSettingsDelay );
     GLX_LOG_INFO1("CShwSlideshowBackLightTimer, lights timeout = %d",
         iSettingsDelay );
+    CleanupStack::PopAndDestroy( lightsRepo );
     
+    CRepository* scrSaverRepo = CRepository::NewLC( KCRUidPersonalizationSettings );
     // What's the screen saver's timeout value (in seconds)?
     TInt screenSaverTimeout = 0;
-    repository->Get( KSettingsScreenSaverPeriod, screenSaverTimeout );
+    scrSaverRepo->Get( KSettingsScreenSaverPeriod, screenSaverTimeout );
     GLX_LOG_INFO1("CShwSlideshowBackLightTimer, scr saver timeout = %d",
         screenSaverTimeout );
-    CleanupStack::PopAndDestroy( repository );
+    CleanupStack::PopAndDestroy( scrSaverRepo );
     
     // Take the smaller of the two timeout values
     iSettingsDelay = Min( iSettingsDelay, screenSaverTimeout );
--- a/photosgallery/slideshow/view/src/shwslideshowview.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/slideshow/view/src/shwslideshowview.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -67,6 +67,8 @@
 #include "shwviewtimer.h"
 #include "shwmediakeyshandler.h"
 #include <glxtexturemanager.h>
+#include <glxerrormanager.h>             
+#include <glxthumbnailattributeinfo.h>   
 namespace
     {
     _LIT(KShwSlideshowViewResource,"shwslideshowview.rsc");
@@ -647,7 +649,7 @@
                 {
                 RemoveTexture();
                 }
-            SetImage();
+            SetImageL();
             }    
 	    }
     }
@@ -725,7 +727,7 @@
         iWaitDialog->ProcessFinishedL();
         }
     iShwState = EShwPlay;
-    SetImage();
+    SetImageL();
 	iHdmiActive = ETrue;
     ReplaceCommandSetL(R_SHW_SOFTKEYS_END_PAUSE,R_SHW_SOFTKEYS_END_PAUSE);
     ShowShwFurnitureL();
@@ -1252,20 +1254,32 @@
 		}
 	CGlxViewBase::ProcessCommandL(aCommandId);
 	}
-// -----------------------------------------------------------------------------
-// SetImage.
-// To set Image to external display if HDmi connected
+// ----------------------------------------------------------------------------- 
+// Set the image to external display - HDMI
 // -----------------------------------------------------------------------------
 //
-void CShwSlideshowView::SetImage()
+void CShwSlideshowView::SetImageL()
     {
-    TRACER("CShwSlideshowView::SetImage");
-    TGlxMedia item = iFilteredList->Item( iFilteredList->FocusIndex() );
+    TRACER("CShwSlideshowView::SetImageL() - CGlxHDMI");
+    TGlxMedia item = iFilteredList->Item(iFilteredList->FocusIndex());
     TInt frameCount(0);
     TSize orignalSize;
-    TBool aFramesPresent  = item.GetFrameCount(frameCount);
-    TBool adimension  = item.GetDimensions(orignalSize);
-    iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount);
+    TBool aFramesPresent = item.GetFrameCount(frameCount);
+    TBool adimension = item.GetDimensions(orignalSize);
+    TInt error = GlxErrorManager::HasAttributeErrorL(item.Properties(),
+            KGlxMediaIdThumbnail);
+    if (error == KErrNone)
+        {
+        GLX_LOG_INFO("CShwSlideshowView::SetImageL() - CGlxHDMI call SetImageL");
+        iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount);
+        }
+    else
+        {
+        GLX_LOG_INFO1("CShwSlideshowView::SetImageL() - CGlxHDMI IsVideo , err=%d",error);
+        //Set the external display to cloning mode.
+        //If the current item is a video, corruted thumbnail
+        iHdmiController->IsVideo();
+        }
     }
 // ---------------------------------------------------------------------------
 // 
--- a/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_cglxthumbnailsaver/src/t_cglxthumbnailsaver.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_cglxthumbnailsaver/src/t_cglxthumbnailsaver.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -98,12 +98,14 @@
     if(iThumbnail)
         {
         EUNIT_PRINT(_L("t_cglxthumbnailsaver::iThumbnail"));
-        delete iThumbnail;    
+        delete iThumbnail;
+        iThumbnail = NULL;
         }
    if(iThumbnailSaver)
        {
        EUNIT_PRINT(_L("t_cglxthumbnailsaver::iThumbnailSaver"));
        delete iThumbnailSaver;
+       iThumbnailSaver = NULL;
        }
    EUNIT_PRINT(_L("Exiting t_cglxthumbnailsaver::Teardown"));
     }
--- a/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxcommandhandlercopytohomenetwork/src/t_glxcmdhndlrcopytohomentwk.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxcommandhandlercopytohomenetwork/src/t_glxcmdhndlrcopytohomentwk.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -291,11 +291,13 @@
     {
     EUNIT_PRINT(_L("before teardown"));
     
-    delete iCommandHandlerCopyToHomeNetwork;                  
+    delete iCommandHandlerCopyToHomeNetwork;
+    iCommandHandlerCopyToHomeNetwork = NULL;
 
     if(iList)   
         {
-        delete iList;        
+        delete iList;
+        iList = NULL;
         }   
     EUNIT_PRINT(_L("After teardown"));        
     }
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerback.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerback.h	Fri Mar 12 15:42:44 2010 +0200
@@ -31,11 +31,8 @@
 class MMPXCollectionUtility;
 class MMPXViewUtility;
 class CGlxNavigationalState;
+class CAknAppUi;
 
-  
-class CGlxBackServiceWrapper;
-
-class CAknAppUi;
 /**
  * @class CGlxCommandHandlerBack
  *
@@ -181,10 +178,6 @@
     // Navigational state is stored here
     CGlxNavigationalState* iNavigationalState;
    
-    CGlxBackServiceWrapper* iBSWrapper;
-    
-    //MMPXCollectionUtility* iCollectionUtility;
-
     /**
      * Check for the view activation and avoid previous view activation
      * till the view activation is called on back
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h	Fri Mar 12 15:42:44 2010 +0200
@@ -29,7 +29,6 @@
 //  INTERNAL INCLUDES
 #include "glxmedialistcommandhandler.h"
 
-
 //  FORWARD DECLARATIONS
 class MGlxMediaListProvider;
 class CGlxUiUtility;
@@ -202,27 +201,26 @@
 	
 private: // data
 
-    // Not owned - Provider of media list
+    /// Not owned - Provider of media list
     MGlxMediaListProvider* iMediaListProvider;
     
-    // ID of owning view 
+    /// ID of owning view 
     TInt iViewId;
     
-    // Not owned - HUI utility 
+    /// Not owned - HUI utility 
     CGlxUiUtility* iUiUtility;
     
-    // Not owned - Attribute context
+    /// Not owned - Attribute context
     CGlxDefaultAttributeContext* iAttributeContext;
     
-    // Owned - the Send pop-up list, message creation and sending services
+    /// Owned - the Send pop-up list, message creation and sending services
     CSendUi* iSendUi;
     
-    // Array of Send Plugins uids that should not be used
+    /// Array of Send Plugins uids that should not be used
     TBool iFilterOutPlugin;
     
-    // The resource file offset
+    /// The resource file offset
 	TInt iResourceOffset;
-    
 	};
 
 #endif //__GLXCOMMANDHANDLERUPLSEND_H__
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -42,7 +42,6 @@
 #include <glxcollectionpluginmonths.hrh>
 #include <glxcollectionplugintags.hrh>
 #include <glxcollectionpluginimageviewer.hrh>
-#include <glxbackservicewrapper.h>
 #include <glxgallery.hrh>
 
 #include "glxmediaselectionpopup.h"
@@ -125,9 +124,7 @@
     iNavigationalState =  CGlxNavigationalState::InstanceL();
     iIsViewActivated = EFalse;
   
-    iBSWrapper = CGlxBackServiceWrapper::NewL( TUid::Uid( KGlxGalleryApplicationUid ) );
     iAppUi = static_cast< CAknAppUi* >( CCoeEnv::Static()->AppUi() );
-
 	}	
 	
 // ---------------------------------------------------------------------------
@@ -139,12 +136,6 @@
 	TRACER( "CGlxCommandHandlerBack::~CGlxCommandHandlerBack" );
 	
 	iNavigationalState->Close();
-   
-    if( iBSWrapper )
-        {	
-        delete iBSWrapper;    
-        }
-
 	}
 
 // -----------------------------------------------------------------------------
@@ -154,7 +145,6 @@
 TBool CGlxCommandHandlerBack::ExecuteL( TInt aCommandId )
 	{
     TRACER("CGlxCommandHandlerBack::ExecuteL");
-	_LIT8( KPhotosSuiteNavigation, "SuiteNavigation" );
 	TBool consume(EFalse);
 
 	GLX_LOG_INFO1( "CGlxCommandHandlerBack::ExecuteL::Command Id (%d)",
@@ -179,7 +169,6 @@
                 		iNavigationalState->StartingLevel() == navigationalState->Levels()-1)
                 		&&  iNavigationalState->BackExitStatus())
                     {
-                    iBSWrapper->HandleBackCommandL( KPhotosSuiteNavigation );
                     if(iAppUi)
                         {
                         iAppUi->ProcessCommandL(EAknSoftkeyExit);    
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -21,7 +21,6 @@
 //  CLASS HEADER
 #include "glxcommandhandlersend.h"
 
-
 //  EXTERNAL INCLUDES
 #include <utf.h>							// for CnvUtfConverter
 #include <sendui.h>							// for CSendui
@@ -47,6 +46,7 @@
 #include <glxfetchcontextremover.h>         // for TGlxFetchContextRemover 
 #include <glxresourceutilities.h>           // for CGlxResourceUtilities
 #include <glxicons.mbg>
+#include <glximageviewermanager.h>          // for CGlxImageViewerManager
 
 // LOCAL FUNCTIONS AND CONSTANTS
 namespace
@@ -243,17 +243,17 @@
 	// retrieve the file name and path
 	CGlxDefaultAttributeContext* attributeContext = 
 										CGlxDefaultAttributeContext::NewL();
-    CleanupStack::PushL(attributeContext);
-    attributeContext->AddAttributeL(TMPXAttribute(KMPXMediaGeneralUri));
-    mediaList.AddContextL(attributeContext, KGlxFetchContextPriorityBlocking);
+    CleanupStack::PushL( attributeContext );
+    attributeContext->AddAttributeL( TMPXAttribute( KMPXMediaGeneralUri ) );
+    mediaList.AddContextL( attributeContext, KGlxFetchContextPriorityBlocking );
     
     // TGlxContextRemover will remove the context when it goes out of scope
     // Used here to avoid a trap and still have safe cleanup   
-    TGlxFetchContextRemover contextRemover (attributeContext, mediaList);
+    TGlxFetchContextRemover contextRemover( attributeContext, mediaList );
     CleanupClosePushL( contextRemover );
     
-	User::LeaveIfError(GlxAttributeRetriever::RetrieveL(*attributeContext, 
-															mediaList, ETrue));															
+	User::LeaveIfError(GlxAttributeRetriever::RetrieveL(*attributeContext,
+            mediaList, ETrue));
 	// context off the list
     CleanupStack::PopAndDestroy( &contextRemover );														
 
@@ -263,31 +263,42 @@
 	// extract the filename from selected items in the media list and add it 
 	// to the messageData to be returned
     TGlxSelectionIterator iterator;
-    iterator.SetToFirst(&mediaList);
+    iterator.SetToFirst( &mediaList );
 	TInt index = KErrNotFound;
 
-	while ((index = iterator++) != KErrNotFound)
+	while ( (index = iterator++) != KErrNotFound )
 		{
-		// does not return ownership.
-	   	const CGlxMedia* media = mediaList.Item(index).Properties();
-	   	if(media)
-	   		{
-	   		if(media->IsSupported(KMPXMediaGeneralUri) && IsValidTypeL(*media))
-	    		{
-	    		messageData->AppendAttachmentL(
-	    								media->ValueText(KMPXMediaGeneralUri));
-	   			}
-	   		}
-	   	else
-	   		{
-		    User::Leave(KErrNotReady);
-		    }	
-		}
+        // does not return ownership.
+        const CGlxMedia* media = mediaList.Item( index ).Properties();
+        if (media)
+            {
+            if ( media->IsSupported( KMPXMediaGeneralUri ) && 
+                    IsValidTypeL( *media ) )
+                {
+                CGlxImageViewerManager* viewerInst =
+                        CGlxImageViewerManager::InstanceL();
+                if ( viewerInst && viewerInst->IsPrivate() )
+                    {
+                    messageData->AppendAttachmentHandleL( 
+                            viewerInst->ImageFileHandle() );
+                    }
+                else
+                    {
+                    messageData->AppendAttachmentL( 
+                            media->ValueText( KMPXMediaGeneralUri ) );
+                    }
+                viewerInst->DeleteInstance();
+                }
+            }
+        else
+            {
+            User::Leave( KErrNotReady );
+            }
+        }
 
-	CleanupStack::PopAndDestroy(attributeContext);
+	CleanupStack::PopAndDestroy( attributeContext );
 	return messageData;
-	}// contextRemover goes out of scope and removes the context from media list
-
+	}
 
 // ----------------------------------------------------------------------------
 // IsValidTypeL
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -35,6 +35,7 @@
 #include <glxmedia.h>                            // for TGlxMedia
 #include <StringLoader.h>                        // for stringloader
 #include <glxlog.h>
+#include <glxtracer.h>
 
 #include "shwslideshowviewplugin.hrh"		 // for the slideshow view's UID
 #include "shwslideshowsettingsplugin_UID.hrh"// for slideshow setting dlg UID
@@ -57,7 +58,7 @@
 EXPORT_C CGlxCommandHandlerSlideshow* CGlxCommandHandlerSlideshow::NewL(
     MGlxMediaListProvider* aMediaListProvider, TBool aStepBack, TBool aHasToolbarItem )
     {
-    GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::NewL" );
+    TRACER( "CGlxCommandHandlerSlideshow::NewL" );
     CGlxCommandHandlerSlideshow* self = new ( ELeave )
     	CGlxCommandHandlerSlideshow(aMediaListProvider, aStepBack, aHasToolbarItem);
     CleanupStack::PushL( self );
@@ -84,7 +85,7 @@
 //
 void CGlxCommandHandlerSlideshow::ConstructL()
     {
-    GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::ConstructL" );
+    TRACER( "CGlxCommandHandlerSlideshow::ConstructL" );
     
     // Get a handle 
     iUiUtility = CGlxUiUtility::UtilityL();
@@ -152,7 +153,7 @@
 //
 EXPORT_C CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow()
     {
-    GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow" );
+    TRACER( "CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow" );
     if ( iResourceOffset )
         {
         CCoeEnv::Static()->DeleteResourceFile(iResourceOffset);
@@ -173,7 +174,7 @@
 //
 void CGlxCommandHandlerSlideshow::DoActivateL(TInt aViewId)
     {
-    GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::DoActivateL" );    
+    TRACER( "CGlxCommandHandlerSlideshow::DoActivateL" );    
     iViewId = aViewId;
 
     // for media list item "focus changed" notification
@@ -187,7 +188,7 @@
 // ----------------------------------------------------------------------------
 void CGlxCommandHandlerSlideshow::Deactivate()
     {
-    GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::Deactivate" );       
+    TRACER( "CGlxCommandHandlerSlideshow::Deactivate" );       
 
     MGlxMediaList& mediaList( MediaList() );
     mediaList.RemoveMediaListObserver( this );
@@ -200,6 +201,7 @@
 TBool CGlxCommandHandlerSlideshow::IsSlideshowNotPlayableOnFocusedContainer
             (TInt aCommandId, MGlxMediaList& aList)
     {
+    TRACER("CGlxCommandHandlerSlideshow::IsSlideshowNotPlayableOnFocusedContainer");
     TBool slideshowDisabled = EFalse;
 
     // get the media item
@@ -229,7 +231,7 @@
 TBool CGlxCommandHandlerSlideshow::DoExecuteL(TInt aCommandId,
 	MGlxMediaList& aList )
 	{
-    GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::DoExecuteL" );
+    TRACER( "CGlxCommandHandlerSlideshow::DoExecuteL" );
 	TBool handledCommand = ETrue;
 	
 	switch (aCommandId)
@@ -239,7 +241,7 @@
 	        // This check has to be done again here since Slideshow can be 
 	        // activated from toolbar even when there are non-slideshow playable 
 	        // items in a container and when that container is focused.	
-	        if( IsSlideshowNotPlayableOnFocusedContainer( aCommandId, aList ) )
+	        if( aList.Count() <= 0 || IsSlideshowNotPlayableOnFocusedContainer( aCommandId, aList ) )
 	            {
 	            HBufC* popupText = NULL;
 	            	            
@@ -321,6 +323,7 @@
 TBool CGlxCommandHandlerSlideshow::DoIsDisabled(
     TInt /*aCommandId*/, MGlxMediaList& /*aList*/) const
     {
+    TRACER("CGlxCommandHandlerSlideshow::DoIsDisabled");
     // Disable if UPnP is active
     return ( GlxUpnpRenderer::Status() == NGlxUpnpRenderer::EActive );
     }
@@ -331,6 +334,7 @@
 //
 TBool CGlxCommandHandlerSlideshow::BypassFiltersForExecute() const
     {
+    TRACER("CGlxCommandHandlerSlideshow::BypassFiltersForExecute");
     // Always bypass filters to minimise the time spent by the base class
     // when it initialises the slideshow menu item.
     return ETrue;
@@ -343,7 +347,7 @@
                 NGlxListDefs::TFocusChangeType /*aType*/,
                 TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/ )
     {
-    GLX_FUNC("CGlxCommandHandlerSlideshow::HandleFocusChangedL");
+    TRACER("CGlxCommandHandlerSlideshow::HandleFocusChangedL");
 
     }
 
@@ -391,6 +395,7 @@
             TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes,
             MGlxMediaList* /*aList*/ )
     {
+    TRACER("CGlxCommandHandlerSlideshow::HandleAttributesAvailableL");
     if ( iShowInToolbar && MediaList().FocusIndex() == aItemIndex )
         {
         TIdentityRelation<TMPXAttribute> match( TMPXAttribute::MatchContentId );
@@ -429,7 +434,7 @@
 void CGlxCommandHandlerSlideshow::ActivateViewL( NShwSlideshow::TPlayDirection
 	aPlaybackDirection )
 	{
-    GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::ActivateViewL" );
+    TRACER( "CGlxCommandHandlerSlideshow::ActivateViewL" );
     
     // Determine the path from the media list
     CMPXCollectionPath* path = MediaList().PathLC();
@@ -482,6 +487,7 @@
 //
 void CGlxCommandHandlerSlideshow::UpdateToolbar()
     {
+    TRACER("CGlxCommandHandlerSlideshow::UpdateToolbar");
     TBool visible = EFalse;
 
     if ( GlxUpnpRenderer::Status() != NGlxUpnpRenderer::EActive )
@@ -516,7 +522,7 @@
 //
 void CGlxCommandHandlerSlideshow::PopulateToolbarL()
 	{
-	
+    TRACER("CGlxCommandHandlerSlideshow::PopulateToolbarL");
 	iUiUtility->ScreenFurniture()->SetTooltipL( EGlxCmdSlideshowPlay, CAknButton::EPositionLeft );
 	}
 
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/ut_propertycommandhandlers/src/ut_propertycommandhandlers.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/ut_propertycommandhandlers/src/ut_propertycommandhandlers.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -324,9 +324,11 @@
     {
     	
 	delete iTagManagerCommand;
+    iTagManagerCommand = NULL;
 	delete iMetadataCommand;
-	
+    iMetadataCommand = NULL;	
 	delete iMediaList;
+    iMediaList = NULL;
     }
 
 void UT_propertycommandhandlers::PropertyCommandHandlerNewL(  )
--- a/photosgallery/viewframework/commandhandlers/inc/glxcommandhandlers.hrh	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/inc/glxcommandhandlers.hrh	Fri Mar 12 15:42:44 2010 +0200
@@ -97,6 +97,7 @@
     EGlxCmdSingleClickSend,
     EGlxCmdAiwSingleClickEdit,
     EGlxCmdSingleClickRemoveFrom,
+    EGlxCmdRenameCompleted, 
     EGlxCmdAiwBase = 0x6000
     };
     
--- a/photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/src/t_glxcommandhandlermarking.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/src/t_glxcommandhandlermarking.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -248,8 +248,11 @@
 	
 CGlxMarkingCommandHandlerTester::~CGlxMarkingCommandHandlerTester()
 	{
-	iMarker->Deactivate();
-	
+    if (iMarker)
+        {
+        iMarker->Deactivate();
+        }
+
 	iCommandHandlerList.ResetAndDestroy();
 	iCommandHandlerList.Close();
 	
--- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxcommandhandlerdrm.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxcommandhandlerdrm.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -24,18 +24,12 @@
 //  EXTERNAL INCLUDES
 #include <EUnitMacros.h>
 #include <EUnitDecorators.h>
-
 #include "glxcommandhandlerdrm.h"
 #include "ut_glxdummymedialist.h"
-
 #include <glxcommandhandlers.hrh>
-
 #include <mpxmediadrmdefs.h>
 #include <mpxmediageneraldefs.h>
 #include <glxmediageneraldefs.h>
-
-#include "glxdummyvlm.h"
-
 #include <Ecom/ECom.h>
 
 //  INTERNAL INCLUDES
@@ -51,7 +45,10 @@
     
 CGlxCommandHandlerDRMTester::~CGlxCommandHandlerDRMTester()
     {
-    iDRMHandler->Deactivate();
+    if ( iDRMHandler )
+        {
+        iDRMHandler->Deactivate();
+        }
     
     iCommandHandlerList.ResetAndDestroy();
 	iCommandHandlerList.Close();
@@ -172,6 +169,7 @@
 void T_GlxCommandHandlerDRM::Teardown(  )
     {
     delete iDRMHandlerTester;
+    iDRMHandlerTester = NULL;
     
     REComSession::FinalClose();
     }
--- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/src/t_glxcommandhandlermoreinfo.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/src/t_glxcommandhandlermoreinfo.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -43,7 +43,10 @@
     
 CGlxCommandHandlerMoreInfoTester::~CGlxCommandHandlerMoreInfoTester()
     {
-    iMoreInfoHandler->Deactivate();
+    if ( iMoreInfoHandler )
+        {
+        iMoreInfoHandler->Deactivate();
+        }
     
     iCommandHandlerList.ResetAndDestroy();
 	iCommandHandlerList.Close();
--- a/photosgallery/viewframework/dataprovider/inc/glxdetailsboundcommand.hrh	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/dataprovider/inc/glxdetailsboundcommand.hrh	Fri Mar 12 15:42:44 2010 +0200
@@ -35,24 +35,29 @@
 #define EMetaControlIdSettingList   KAknCtLastControlId + 1
 #define EMetaDataDialogListBox      KAknCtLastControlId + 2 
 
-#define ENameItem               0
-#define EDescriptionItem        1
-#define EAlbumsItem             2
-#define ETagsItem               3
-#define EDateAndTimeItem        4
-#define ELocationItem           5
-#define ESizeItem               6
-#define EResolutionItem         7
-#define EDurationItem           8
-#define ElicenseItem            9
+enum TDetailsFields
+	{
+	ENameItem,
+	EDescriptionItem,
+	EAlbumsItem,
+	ETagsItem,
+	EDateAndTimeItem,
+	ELocationItem,
+	ESizeItem,
+	EResolutionItem,
+	EDurationItem,
+	ElicenseItem
+	};
 
-
-#define EImgVwrNameItem               0
-#define EImgVwrDescriptionItem        1
-#define EImgVwrDateAndTimeItem        2
-#define EImgVwrSizeItem               3
-#define EImgVwrResolutionItem         4
-#define EImgVwrlicenseItem            5
+enum TImageVwrDetailsFields
+	{
+	EImgVwrNameItem,
+	EImgVwrDescriptionItem,
+	EImgVwrDateAndTimeItem,
+	EImgVwrSizeItem,
+	EImgVwrResolutionItem,
+	EImgVwrlicenseItem	
+	};
 
 #define EShwCmdSettingsChange   0x6000
 #define EShwCmdHelp             0x6001  
--- a/photosgallery/viewframework/dataprovider/src/glxthumbnailvarianttype.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/dataprovider/src/glxthumbnailvarianttype.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -161,7 +161,8 @@
     	    icon.bitmapId, resFile, defaultSize ).Id() );
         }
 	else if ( (KErrNone == thumbnailError) || (KErrArgument == thumbnailError) 
-		|| (KErrDiskFull == thumbnailError) || ( drm && isValid == EGlxDrmRightsInvalid ) )
+        || (KErrDiskFull == thumbnailError) || (KErrNoMemory == thumbnailError) 
+		|| ( drm && isValid == EGlxDrmRightsInvalid ) )
 	    {
 		//Try and see if we can scale and show the grid tnm else show the default
 	    TBool isGridTnmShown = EFalse;		
--- a/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -121,7 +121,7 @@
 	    
 #ifdef USE_S60_TNM
     iTnEngine = CThumbnailManager::NewL( *this);
-    iTnEngine->SetDisplayModeL( EColor16MU );
+    iTnEngine->SetDisplayModeL( EColor16M  );
 #endif
     }
         
@@ -764,7 +764,7 @@
                             iRequestOwner = list;
                             CleanupStack::PopAndDestroy(attrSpecs); 
                             TGlxIdSpaceId spaceId = list->IdSpaceId(iRequestedItemIndexes[0]);
-                            HandleCollectionMediaL(spaceId, *iMPXMedia, KErrArgument);
+                            HandleCollectionMediaL(spaceId, *iMPXMedia, errInImage);
                             DeleteImageViewerInstance();
                             return;
                             }
--- a/photosgallery/viewframework/medialists/src/glxgarbagecollector.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/medialists/src/glxgarbagecollector.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -163,6 +163,7 @@
 //
 void CGlxGarbageCollector::FlushPagesL(TInt aCount)
     {
+    TRACER("CGlxGarbageCollector::FlushPagesL");
     TBool reachedEnd = CleanupCaches(aCount);
     
     if ( reachedEnd )
--- a/photosgallery/viewframework/medialists/src/glximagereader.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/medialists/src/glximagereader.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -128,8 +128,9 @@
     if ( iImageDecoder )
         {
         iFrame = new (ELeave) CFbsBitmap();
-        iFrame->Create(iImageDecoder->FrameInfo(0).iOverallSizeInPixels,
-                iImageDecoder->FrameInfo(0).iFrameDisplayMode);
+        User::LeaveIfError(iFrame->Create(
+                iImageDecoder->FrameInfo(0).iOverallSizeInPixels,
+                iImageDecoder->FrameInfo(0).iFrameDisplayMode));
         iImageDecoder->Convert(&iStatus, *iFrame, 0);
         SetActive();
         }
--- a/photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -372,7 +372,7 @@
 	CFbsBitmap* picture = new (ELeave) CFbsBitmap;
 	CleanupStack::PushL(picture);
 	User::LeaveIfError(picture->Create(TSize(KGlxFlatTextureSize,
-	                                        KGlxFlatTextureSize), EColor16MU ) );
+	                                        KGlxFlatTextureSize), EColor16M ) );
 
 	CFbsBitmapDevice* drawBufDevice = CFbsBitmapDevice::NewL(picture);
 	CleanupStack::PushL(drawBufDevice);
--- a/photosgallery/viewframework/tvout/inc/glxhdmicontroller.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/tvout/inc/glxhdmicontroller.h	Fri Mar 12 15:42:44 2010 +0200
@@ -129,6 +129,7 @@
     CGlxHdmiContainer*      iHdmiContainer;
     CGlxHdmiSurfaceUpdater* iSurfaceUpdater;
     CGlxTv*  iGlxTvOut;
+    TBool iImageSupported;
     };
 
 #endif /* GLXHDMICONTROLLER_H_ */
--- a/photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h	Fri Mar 12 15:42:44 2010 +0200
@@ -52,13 +52,13 @@
     /*
      * This is to cancel the active object from decoding 
      */
-    void HandleRunL();
+    void HandleRunL(TRequestStatus& aStatus);
 
     /*
      * This updates the new image.
      */
     void UpdateNewImageL(const TDesC& aImageFile, 
-            TInt aFrameCount);
+            TInt aFrameCount,TSize aImageDimensions);
     
     /*
      * Activate Zoom 
@@ -97,11 +97,9 @@
     
     /*
      * Create a New surface with given size
-     * @param1 size 
      */
-    void CreateSurfaceL(TSize aSize);
+    void CreateSurfaceL();
     /*
-    * Create surface manager with given size
     * @param1 size 
     */
    void MapSurfaceL();
@@ -141,6 +139,11 @@
     void CreateHdmiL(TBool aCreateSurface = ETrue);
 
     static TInt TimeOut(TAny* aSelf);
+	
+	/*
+	* ModifySurface positions of the surface to be displayed on screen
+	*/
+	void ModifySurfacePostion();
 private:
     RWindow* iWindow;
     const TDesC& iImagePath;
@@ -168,7 +171,6 @@
     TInt                iAnimCount;                 // animation count
     RFs                 iFsSession;                 // RFs
     
-    TBool iFirstTime;
     TPoint iLeftCornerForZoom;
     CPeriodic* iTimer;
     TBool iZoom;
--- a/photosgallery/viewframework/tvout/src/glxactivedecoder.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/tvout/src/glxactivedecoder.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -59,7 +59,14 @@
 void CGlxHdmiDecoderAO::RunL()
     {
     TRACER("CGlxHdmiDecoderAO::RunL()");
-    iHdmiSurfaceUpdater->HandleRunL();
+    if(iStatus == KErrUnderflow)
+        {
+        iDecoder->ContinueConvert(&iStatus);
+        }
+    else
+        {
+        iHdmiSurfaceUpdater->HandleRunL(iStatus);
+        }
     }
 
 // -----------------------------------------------------------------------------
--- a/photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -26,10 +26,6 @@
 
 #include "glxhdmicontroller.h"
 
-// 720p image size
-const TInt KHdTvWidth = 1280;
-const TInt KHdTvHeight = 720;
-
 // -----------------------------------------------------------------------------
 // NewLC
 // -----------------------------------------------------------------------------
@@ -67,23 +63,12 @@
     {
     TRACER("CGlxHdmiController::SetImageL()");
     if (aStore)
+        {
+        iImageSupported = ETrue;
         StoreImageInfoL(aImageFile, aImageDimensions, aFrameCount);
-		
+        }
     if (iGlxTvOut->IsHDMIConnected())
         {
-        if(aImageDimensions.iHeight<=KHdTvHeight && 
-                aImageDimensions.iWidth<= KHdTvWidth && aFrameCount > 0)
-            {
-            GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 1");
-            DestroySurfaceUpdater();
-            if (!iHdmiContainer)
-                {
-                CreateHdmiContainerL(); 
-                }
-            CreateSurfaceUpdaterL(aImageFile, aImageDimensions, aFrameCount);
-            }
-        else
-            {
             GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
             // do not close the surface , use the same surface instead.
             // Call a function to pass imagefile, imagedimension, framecount
@@ -99,11 +84,10 @@
                 }
             else
                 {
-                GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
-                iSurfaceUpdater->UpdateNewImageL(aImageFile, aFrameCount);
-                }
-            iHdmiContainer->DrawNow();
+            GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
+            iSurfaceUpdater->UpdateNewImageL(aImageFile, aFrameCount,aImageDimensions);
             }
+        iHdmiContainer->DrawNow();
         }
     }
 
@@ -113,6 +97,7 @@
 EXPORT_C void CGlxHdmiController::IsVideo()
     {
     TRACER("CGlxHdmiController::IsVideo()");
+    iImageSupported = EFalse;
     if (iGlxTvOut->IsHDMIConnected())
         {
         DestroySurfaceUpdater();
@@ -263,7 +248,7 @@
     TRACER("CGlxHdmiController::HandleTvStatusChangedL()");
     if ( aChangeType == ETvConnectionChanged )          
         {
-        if ( iGlxTvOut->IsHDMIConnected() )
+        if ( iGlxTvOut->IsHDMIConnected() && iImageSupported)
             {
             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected");
             // Calling SetImageL() with appropriate parameters
--- a/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -100,18 +100,20 @@
 void CGlxHdmiSurfaceUpdater::ReleaseContent()
     {
     TRACER("void CGlxHdmiSurfaceUpdater::ReleaseContent()"); 
-    
-    iGlxDecoderAO->Cancel();    
-    if(iDecodedBitmap)
+    if ( iGlxDecoderAO )
+        {
+        iGlxDecoderAO->Cancel();
+        }
+    if ( iDecodedBitmap )
         {
         delete iDecodedBitmap;
         iDecodedBitmap= NULL;
         }    
-    if (iSurfBufferAO->IsActive())
+    if ( iSurfBufferAO->IsActive() )
         {
         iSurfBufferAO->Cancel();        
         }
-    if(iImageDecoder)
+    if ( iImageDecoder )
         {
         delete iImageDecoder;
         iImageDecoder = NULL;    
@@ -152,8 +154,6 @@
 #ifdef _DEBUG
     iStartTime.HomeTime();
 #endif
-    //to refresh the HD screen for the first time.
-    iFirstTime = ETrue;
     //start decoding the image    
     iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,0,iImageDecoder);
          
@@ -172,9 +172,10 @@
 // UpdateNewImageL 
 // -----------------------------------------------------------------------------
 void CGlxHdmiSurfaceUpdater::UpdateNewImageL(const TDesC& aImageFile, 
-        TInt /*aFrameCount*/)
+        TInt /*aFrameCount*/,TSize aImageDimensions)
     {
     TRACER("CGlxHdmiSurfaceUpdater::UpdateNewImageL()");
+    iOrigImageDimensions = aImageDimensions;
 	iBitmapReady = EFalse;
     ReleaseContent();   
     CreateImageDecoderL(aImageFile);    
@@ -196,9 +197,8 @@
     
     if (aCreateSurface)
         {
-        TSize rectSz = iDecodedBitmap->SizeInPixels(); // For animation
-        GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateHdmiL() Size height = %d and width = %d", rectSz.iHeight, rectSz.iWidth);
-        CreateSurfaceL(rectSz);        
+        GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::CreateHdmiL() Create Surface");
+        CreateSurfaceL();        
         }
     
     // Active objects for double buffered draw signalling
@@ -208,16 +208,15 @@
                     CActive::EPriorityStandard-1);
         CActiveScheduler::Add(iSurfBufferAO);    
         }
-
     }
 
 // -----------------------------------------------------------------------------
 // CreateSurfaceL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::CreateSurfaceL(TSize aSize)
+void CGlxHdmiSurfaceUpdater::CreateSurfaceL()
     {
     TRACER("CGlxHdmiSurfaceUpdater::CreateSurfaceL()");
-       
+    TSize surfaceSize = iWindow->Size();   // create surface of the screen size, i.e 1280x720
     iSurfManager = new(ELeave) RSurfaceManager();
     TInt error = iSurfManager->Open();
     if (error != KErrNone)
@@ -227,10 +226,10 @@
         }
     RSurfaceManager::TSurfaceCreationAttributesBuf attributes;
     attributes().iPixelFormat           = EUidPixelFormatARGB_8888;// EUidPixelFormatYUV_420Planar;
-    attributes().iSize                  = aSize;
+    attributes().iSize                  = surfaceSize;
     
     attributes().iBuffers               = 1;
-    attributes().iStride                = aSize.iWidth * KMulFactorToCreateBitmap;  
+    attributes().iStride                = surfaceSize.iWidth * KMulFactorToCreateBitmap;  
     attributes().iAlignment             = KMulFactorToCreateBitmap;
     attributes().iContiguous            = EFalse;
     attributes().iMappable              = ETrue;
@@ -243,9 +242,8 @@
         }    
     //Map the surface and stride the surface info
     MapSurfaceL();
-    //Set the background Surface
-    iWindow->SetBackgroundSurface(iSurfId);
-
+    // Set the Configuration to the surface ID when creating a surface
+    iConfig.SetSurfaceId(iSurfId);
     }
 
 // -----------------------------------------------------------------------------
@@ -274,6 +272,7 @@
     iSurfManager->GetBufferOffset( iSurfId, 0,offset);
     iSurfBuffer = iSurfChunk->Base()+offset;
     }
+
 // -----------------------------------------------------------------------------
 // SurfBuffer0Ready 
 // -----------------------------------------------------------------------------
@@ -289,14 +288,12 @@
 void CGlxHdmiSurfaceUpdater::Refresh()
     {
     TRACER("CGlxHdmiSurfaceUpdater::Refresh()");
+    // copy the decoded bitmap on to the surface
     SwapBuffers();   
+    // Modify the surface position with respect to the buffer size 
+	ModifySurfacePostion();
+	// refresh the window
     iCallBack->DoGenCallback();       
-    if(iFirstTime)  
-        {
-        iFirstTime = EFalse;
-        iWindow->RemoveBackgroundSurface(ETrue);
-        iWindow->SetBackgroundSurface(iSurfId);
-        }
     }
 
 // -----------------------------------------------------------------------------
@@ -344,25 +341,37 @@
 void CGlxHdmiSurfaceUpdater::CreateBitmapL()
     {
     TRACER("CGlxHdmiSurfaceUpdater::StartImageDecodeL()");
-    TSize decodeSize;
-    decodeSize.iHeight = (iOrigImageDimensions.iHeight>KHdTvHeight? KHdTvHeight: 
-                                    iOrigImageDimensions.iHeight);
-    decodeSize.iWidth = (iOrigImageDimensions.iWidth>KHdTvWidth? KHdTvWidth:
-                                    iOrigImageDimensions.iWidth);
-    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - decodeSize width = %d and height %d",
-            decodeSize.iWidth, decodeSize.iHeight );
-    
+    TSize scrnSize = iWindow->Size();
+    TSize targetBitmapSize;
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - bitmapsize=%d, %d",iOrigImageDimensions.iWidth,iOrigImageDimensions.iHeight);
+    TReal32 scaleFactor = 0.0f;
+    if (scrnSize.iWidth * iOrigImageDimensions.iHeight > scrnSize.iHeight
+            * iOrigImageDimensions.iWidth)
+        {
+        scaleFactor = (TReal32) scrnSize.iHeight
+                / (TReal32) iOrigImageDimensions.iHeight;
+        }
+    else
+        {
+        scaleFactor = (TReal32) scrnSize.iWidth
+                / (TReal32) iOrigImageDimensions.iWidth;
+        }
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - scaleFactor=%f",scaleFactor);
+    targetBitmapSize.iHeight = iOrigImageDimensions.iHeight * scaleFactor;
+    targetBitmapSize.iWidth = iOrigImageDimensions.iWidth * scaleFactor;
+
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - targetBitmapSize=%d, %d",targetBitmapSize.iWidth,targetBitmapSize.iHeight);
     //create the bitmap for the required size
-    iDecodedBitmap = new(ELeave) CFbsBitmap();
-    
-    TInt err = iDecodedBitmap->Create(decodeSize,EColor16MU );
+    iDecodedBitmap = new (ELeave) CFbsBitmap();
+
+    TInt err = iDecodedBitmap->Create(targetBitmapSize, EColor16MU);
     User::LeaveIfNull(iDecodedBitmap);
     }
 
 // -----------------------------------------------------------------------------
 // HandleRunL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::HandleRunL()
+void CGlxHdmiSurfaceUpdater::HandleRunL(TRequestStatus& aStatus)
     {
     TRACER("CGlxHdmiSurfaceUpdater::HandleRunL()");
 
@@ -371,15 +380,24 @@
     GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() ConvertImageL took"
             " <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
 #endif
-	iBitmapReady = ETrue;
-    iZoomRectSz = iDecodedBitmap->SizeInPixels(); 
-    if (iSurfBufferAO->iStatus != KRequestPending && !iSurfBufferAO->IsActive())
+    if(aStatus.Int() !=KErrNone)
+        {
+        GLX_LOG_INFO("HandleRunL - Convert failed");
+        ShiftToCloningMode();
+        }
+    else
         {
-        Refresh();              
-        iSurfBufferAO->iStatus = KRequestPending;
-        iSurfBufferAO->SetActive();    
-        iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus);
-        TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL);       
+        iBitmapReady = ETrue;
+        iZoomRectSz = iDecodedBitmap->SizeInPixels();
+        if (iSurfBufferAO->iStatus != KRequestPending
+                && !iSurfBufferAO->IsActive())
+            {
+            Refresh();
+            iSurfBufferAO->iStatus = KRequestPending;
+            iSurfBufferAO->SetActive();
+            iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus);
+            TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL);
+            }
         }
 	//release imagedecoder after the conversion is over		
     if(iImageDecoder)
@@ -403,19 +421,20 @@
         User::Leave(error);
         }
     }
+
 // -----------------------------------------------------------------------------
 // ActivateZoom 
 // -----------------------------------------------------------------------------
 void CGlxHdmiSurfaceUpdater::ActivateZoom()
     {
     TRACER("CGlxHdmiSurfaceUpdater::ActivateZoom()");
-    iConfig.SetSurfaceId(iSurfId);
     iZoom = ETrue;
     if(!iTimer->IsActive() && iBitmapReady)
        {
        iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this ));
        }
     }
+
 // -----------------------------------------------------------------------------
 // DeactivateZoom 
 // -----------------------------------------------------------------------------
@@ -429,8 +448,8 @@
         iConfig.SetExtent(TRect(0,0,bitmapsize.iWidth,bitmapsize.iHeight));
         iWindow->SetBackgroundSurface(iConfig, ETrue);
         }
-    
     }
+
 // ---------------------------------------------------------------------------
 // TimeOut
 // ---------------------------------------------------------------------------
@@ -448,6 +467,7 @@
         }
     return KErrNone;
     }
+
 // -----------------------------------------------------------------------------
 // Zoom 
 // -----------------------------------------------------------------------------
@@ -465,7 +485,8 @@
         iLeftCornerForZoom.iX =iLeftCornerForZoom.iX+KSingleStepForZoom/2;
         iLeftCornerForZoom.iY =iLeftCornerForZoom.iY+KSingleStepForZoom/2;           
         GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::Zoom()--- 2,iZoomRectSz.iWidth = %d, iZoomRectSz.iHeight = %d", iZoomRectSz.iWidth,iZoomRectSz.iHeight);
-        iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY,iZoomRectSz.iWidth,iZoomRectSz.iHeight));
+        iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY,
+                iZoomRectSz.iWidth,iZoomRectSz.iHeight));
         }
     else
         {
@@ -479,9 +500,45 @@
             iZoom = ETrue;
             }
         GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::Zoom()--- 4,iZoomRectSz.iWidth = %d, iZoomRectSz.iHeight = %d", iZoomRectSz.iWidth,iZoomRectSz.iHeight);
-        iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY,iZoomRectSz.iWidth,iZoomRectSz.iHeight));
+        iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY,
+                iZoomRectSz.iWidth,iZoomRectSz.iHeight));
         }
-    iConfig.SetExtent(TRect(0,0,KHdTvWidth,KHdTvHeight));    
+    iWindow->SetBackgroundSurface(iConfig, ETrue);   
+    }
+
+// -----------------------------------------------------------------------------
+// ModifySurfacePostion 
+// -----------------------------------------------------------------------------
+void CGlxHdmiSurfaceUpdater::ModifySurfacePostion()
+	{
+	TRACER("CGlxHdmiSurfaceUpdater::ModifySurfacePostion()");
+	TSize bitmapSize = iDecodedBitmap->SizeInPixels();
+	TPoint startPoint(0,0);
+	if (bitmapSize.iWidth <KHdTvWidth)
+	    {
+	    startPoint.iX = (KHdTvWidth - bitmapSize.iWidth)/2; 
+	    }
+	if (bitmapSize.iHeight <KHdTvHeight)
+	    {
+	    startPoint.iY = (KHdTvHeight - bitmapSize.iHeight)/2;
+	    }
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ModifySurfacePostion() - target bitmapsize=%d, %d",bitmapSize.iWidth,bitmapSize.iHeight);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ModifySurfacePostion() - startPoint =%d, %d",startPoint.iX,startPoint.iY);
+
+    // target
+    iConfig.SetExtent(TRect(startPoint.iX,startPoint.iY,(KHdTvWidth-startPoint.iX),
+            (KHdTvHeight-startPoint.iY)));
+    // source
+    iConfig.SetViewport(TRect(TPoint(0,0),TSize(bitmapSize.iWidth,bitmapSize.iHeight)));
+#ifdef _DEBUG
+    TRect ex, vp;
+    iConfig.GetExtent(ex);
+    iConfig.GetViewport(vp);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ModifySurfacePostion() - vp - TL=%d, %d",vp.iTl.iX,vp.iTl.iY);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ModifySurfacePostion() - vp - BR=%d, %d",vp.iBr.iX,vp.iBr.iY);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ModifySurfacePostion() - ex - TL=%d, %d",ex.iTl.iX,ex.iTl.iY);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ModifySurfacePostion() - ex - BR=%d, %d",ex.iBr.iX,ex.iBr.iY);
+#endif
     iWindow->SetBackgroundSurface(iConfig, ETrue);   
     }
 
@@ -500,5 +557,14 @@
 void CGlxHdmiSurfaceUpdater::ShiftToPostingMode()
 	{
 	TRACER("CGlxHdmiSurfaceUpdater::ShiftToPostingMode()");
-	iWindow->SetBackgroundSurface(iSurfId);
+#ifdef _DEBUG
+	TRect ex, vp;
+	iConfig.GetExtent(ex);
+    iConfig.GetViewport(vp);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - vp - TL=%d, %d",vp.iTl.iX,vp.iTl.iY);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - vp - BR=%d, %d",vp.iBr.iX,vp.iBr.iY);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - ex - TL=%d, %d",ex.iTl.iX,ex.iTl.iY);
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - ex - BR=%d, %d",ex.iBr.iX,ex.iBr.iY);
+#endif
+    iWindow->SetBackgroundSurface(iConfig, ETrue);
 	}
--- a/photosgallery/viewframework/uiutilities/data/glxuiutilities.rss	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/uiutilities/data/glxuiutilities.rss	Fri Mar 12 15:42:44 2010 +0200
@@ -464,7 +464,7 @@
             {
             id = EGlxCmdAiwAssign;
             serviceCmd = KAiwCmdAssign;
-            contentType = "ArcsoftEditor/*";
+            contentType = "MediaEditor/*";
             serviceClass = KAiwClassMenu;
             }
         };
--- a/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -192,19 +192,7 @@
 void CGlxCloudViewImp::DoMLViewActivateL(const TVwsViewId & /* aPrevViewId */,
 		TUid /* aCustomMessageId */, const TDesC8 & /* aCustomMessage */)
     {
-    TRACER("GLX_CLOUD::CGlxCloudViewImp::DoMLViewActivateL");
-    if(StatusPane())
-        {
-        StatusPane()->MakeVisible(ETrue);
-        CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
-        CAknTitlePane* titlePane = ( CAknTitlePane* )statusPane->ControlL(
-                TUid::Uid( EEikStatusPaneUidTitle ));     
-            if( iTitletext )
-                {
-                // Set the required Title
-                titlePane->SetTextL( *iTitletext );
-                }
-        }
+    TRACER("GLX_CLOUD::CGlxCloudViewImp::DoMLViewActivateL");   
     ConstructCloudControlL();
     GLX_LOG_INFO("CGlxCloudViewImp::DoMLViewActivateL Cloud View Control Created" );  
     // set app state to tag-browser view
--- a/photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -34,7 +34,7 @@
 #include <alf/alfdisplay.h>
 
 #include <aknnotewrappers.h>
-#include <FBS.H>
+#include <fbs.h>
 #include <StringLoader.h>
 #include "utf.h"                    // UtfConverter
 
--- a/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Fri Mar 12 15:42:44 2010 +0200
@@ -262,7 +262,10 @@
      * Consume DRM rights
      */  
     void ConsumeDRMRightsL( const TDesC& uri );
-    
+    /**
+     * Set the image to external display - HDMI
+     */
+    void SetImageL();
 private:
     /** Softkey resource id's */
     TFullScreenViewResourceIds iResourceIds; 
--- a/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -85,6 +85,11 @@
  * Start Delay for the periodic timer, in microseconds
  */
 const TInt KPeriodicStartDelay = 250000; 
+/**
+ * Interval delay for the periodic timer, in microseconds
+ */
+const TInt KPeriodicIntervalDelay = 100000; 
+
 //This constant is used to calculate the index of the item for which texture has to removed.
 //6 = 5(iterator value in forward or backward direction for fullscreen) + 1(focus index);
 const TInt KFullScreenIterator = 3; 
@@ -307,6 +312,16 @@
         //Fix For EPKA-7U5DT7-slideshow launched from FullScreen and connect USB in mass storage mode results in Photos crash
         navigationalState->ActivatePreviousViewL();
         }  
+	else
+		{
+		//fix for ESLM-7YYDXC: When in FullScreen View, view mode must be 'EView'
+		//While coming back from SlideShow to FullScreen view, need to set view mode.
+		if(navigationalState->ViewingMode() != NGlxNavigationalState::EView)
+		   	{
+		   	navigationalState->SetToViewMode();
+		   	}
+		}
+		
 	
     if(naviState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
         {
@@ -321,22 +336,9 @@
     if(!iImgViewerMode && iMediaList->Count())    
         {
         iHdmiController = CGlxHdmiController::NewL();    
-        iOldFocusIndex = iMediaList->FocusIndex(); 
-        TGlxMedia item = iMediaList->Item( iMediaList->FocusIndex() );
-        GLX_LOG_INFO("CGlxHdmi - CGlxFullScreenViewImp Create HdmiController");
-        
-        //check if the content  is not video && has proper DRM rights
-        //then only call setimage in HDMI
-        if (item.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(item.Uri(),ETrue))
-            {
-            TInt frameCount(0);
-            TSize orignalSize;
-            TBool aFramesPresent  = item.GetFrameCount(frameCount);
-            TBool adimension  = item.GetDimensions(orignalSize);
-            iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount);
-            }    
+        iOldFocusIndex = iMediaList->FocusIndex();
+        SetImageL();
         }
-
     iScreenFurniture->SetActiveView(iViewUid);
 
     // create the screen furniture for touch devices
@@ -375,8 +377,8 @@
 //    iContextUtility->PublishPhotoContextL(item.Uri());
     	if ( !iPeriodic->IsActive() )
 		{
-		iPeriodic->Start( KPeriodicStartDelay, KMaxTInt, TCallBack( 
-		        &PeriodicCallback, static_cast<TAny*>( this ) ) );
+        iPeriodic->Start(KPeriodicStartDelay, KPeriodicIntervalDelay,
+                TCallBack(&PeriodicCallback, static_cast<TAny*> (this)));
 		}
 	}
 	
@@ -992,7 +994,16 @@
                 MulDoubleTapData* DoubleTapData = (MulDoubleTapData*)(aEvent.CustomEventData()); 
                 TPoint doubleTapPoint = DoubleTapData->mDoubleTapPoint;
                 SetSliderLevel();
-                TRAP_IGNORE( ActivateZoomControlL(EZoomStartDoubleTap, &doubleTapPoint)  );
+                TRAP_IGNORE( ActivateZoomControlL(EZoomStartDoubleTap, &doubleTapPoint) );
+                return EEventConsumed;
+                }
+            case ETypeItemRemoved:
+                {
+                if(iHdmiController)
+                    {
+                     SetImageL();
+                    }
+                iOldFocusIndex = iMediaList->FocusIndex();
                 return EEventConsumed;
                 }
             case ETypeHighlight:
@@ -1006,25 +1017,9 @@
                     {
                     RemoveTexture();
                     }
-				TGlxMedia item1 = iMediaList->Item( iMediaList->FocusIndex() );
-                TInt frameCount(0);
-                TSize orignalSize;
-                TBool aFramesPresent  = item1.GetFrameCount(frameCount);
-                TBool adimension  = item1.GetDimensions(orignalSize);
-
-                //check if the content  is not video && has proper DRM rights
-                //then only call next image in HDMI
                 if(iHdmiController)
                     {
-                    if (item1.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(item1.Uri(),ETrue))
-                        {
-                        GLX_LOG_INFO("CGlxHdmi - FullscreenView - SetImageL");                    
-                        iHdmiController->SetImageL(item1.Uri(), orignalSize, frameCount);
-                        }
-                    else
-                        {
-                        iHdmiController->IsVideo();                    
-                        }
+                     SetImageL();
                     }
                 iOldFocusIndex = iMediaList->FocusIndex();
                 if ( NGlxNFullScreenUIState::EUiOn == GetUiSate() )
@@ -1103,6 +1098,15 @@
 		    DeactivateZoomControlL();
 		    consumed = ETrue;
 		    break;
+		case EGlxCmdRenameCompleted:
+		    {
+            if (iHdmiController)
+                {
+                SetImageL();
+                }
+			consumed = ETrue;
+            break;
+            }
 //		case EGlxCmdRotateLeft:
 //			iCoverFlowWidget->RotateImage(IMulWidget::ERotateLeft,size,KGlxRotationDelay);
 //		    consumed = ETrue;
@@ -1139,15 +1143,6 @@
      {
      TRACER("CGlxFullScreenViewImp::HandleResourceChangeL");
          HandleResourceChangeL ( aType);
-         switch (aType)
-             {
-        case KEikDynamicLayoutVariantSwitch:
-            {
-            //if resolution changed
-//                 iSliderWidget->control()->Display()->SetVisibleArea( ClientRect() );
-            break;
-            }
-        }       
     }   
 
 //----------------------------------------------------------------------------------
@@ -1277,13 +1272,6 @@
 inline void CGlxFullScreenViewImp::CallPeriodicCallback()
     {
     TRACER("CGlxFullScreenViewImp::CallPeriodicCallback");
-    if(iPeriodic->IsActive())
-		{
-		iPeriodic->Cancel();
-		}
-    /*
-     * function can leave
-     */
     TRAP_IGNORE(ShowDrmExpiaryNoteL());
     }
 	
@@ -1298,11 +1286,55 @@
 	if(iMediaList->Count()>0)
 		{
         const TGlxMedia& media = iMediaList->Item(iMediaList->FocusIndex());
-        if (media.IsDrmProtected())
+        TInt tnError = GlxErrorManager::HasAttributeErrorL(
+                media.Properties(), KGlxMediaIdThumbnail);
+        GLX_LOG_INFO1("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()"
+                " tnError=%d ", tnError);
+
+        TSize tnSize = iUiUtility->DisplaySize();
+        TMPXAttribute qtyTnAttrib = TMPXAttribute(KGlxMediaIdThumbnail,
+                GlxFullThumbnailAttributeId(ETrue, tnSize.iWidth,
+                        tnSize.iHeight));
+        const CGlxThumbnailAttribute* qtyTn = media.ThumbnailAttribute(
+                qtyTnAttrib);
+
+        if (qtyTn)
             {
+            if (iPeriodic->IsActive())
+                {
+                iPeriodic->Cancel();
+                }
+            }
+
+        if (tnError == KErrNone && qtyTn && media.IsDrmProtected())
+            {
+            GLX_LOG_INFO("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()"
+                    "- ConsumeDRMRightsL()");
             const TDesC& uri = media.Uri();
             ConsumeDRMRightsL(uri);
             }
+
+        if (tnError != KErrNone)
+            {
+            if (iPeriodic->IsActive())
+                {
+                iPeriodic->Cancel();
+                }
+
+            CGlxNavigationalState* navigationalState =
+                    CGlxNavigationalState::InstanceL();
+            CleanupClosePushL(*navigationalState);
+            CMPXCollectionPath* naviState = navigationalState->StateLC();
+            if (naviState->Id() == TMPXItemId(
+                    KGlxCollectionPluginImageViewerImplementationUid))
+                {
+                GLX_LOG_INFO("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()"
+                        "- ShowErrorNoteL()");
+                GlxGeneralUiUtilities::ShowErrorNoteL(tnError);
+                }
+            CleanupStack::PopAndDestroy(naviState);
+            CleanupStack::PopAndDestroy(navigationalState);
+            }
          }
 	}
 
@@ -1398,3 +1430,32 @@
     const TGlxMedia& item = iMediaList->Item(GetIndexToBeRemoved());
     iUiUtility->GlxTextureManager().RemoveTexture(item.Id(),EFalse);
     }
+// ---------------------------------------------------------------------------
+// 
+// Set the image to external display - HDMI
+// ---------------------------------------------------------------------------
+//
+void CGlxFullScreenViewImp::SetImageL()
+    {
+    TRACER("CGlxFullScreenViewImp::SetImageL - CGlxHdmi");
+    TGlxMedia item = iMediaList->Item(iMediaList->FocusIndex());
+    TInt error = GlxErrorManager::HasAttributeErrorL(item.Properties(),
+            KGlxMediaIdThumbnail);
+    if (item.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(
+            item.Uri(), ETrue) && (error == KErrNone))
+        {
+        TInt frameCount(0);
+        TSize orignalSize;
+        TBool aFramesPresent = item.GetFrameCount(frameCount);
+        TBool adimension = item.GetDimensions(orignalSize);
+        iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount);
+        GLX_LOG_INFO("CGlxFullScreenViewImp::SetImageL - CGlxHdmi - calling SetImage");
+        }
+    else
+        {
+        GLX_LOG_INFO("CGlxFullScreenViewImp::SetImageL - CGlxHdmi - calling IsVideo");
+        //Set the external display to cloning mode.
+        //If the current item is a video, corruted thumbnail
+        iHdmiController->IsVideo();
+        }
+    }
--- a/photosgallery/viewframework/views/listview/eabi/glxlistviewu.def	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/listview/eabi/glxlistviewu.def	Fri Mar 12 15:42:44 2010 +0200
@@ -2,7 +2,5 @@
 	_ZN12CGlxListView4NewLEP20MGlxMediaListFactoryiR20TListViewResourceIdsRK7TDesC16 @ 1 NONAME
 	_ZN12CGlxListView5NewLCEP20MGlxMediaListFactoryiR20TListViewResourceIdsRK7TDesC16 @ 2 NONAME
 	_ZTI12CGlxListView @ 3 NONAME
-	_ZTI17CGlxWaitScheduler @ 4 NONAME
-	_ZTV12CGlxListView @ 5 NONAME
-	_ZTV17CGlxWaitScheduler @ 6 NONAME
+	_ZTV12CGlxListView @ 4 NONAME
 
--- a/photosgallery/viewframework/views/listview/group/glxlistview.mmp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/listview/group/glxlistview.mmp	Fri Mar 12 15:42:44 2010 +0200
@@ -76,4 +76,4 @@
 LIBRARY         aknicon.lib
 LIBRARY         egul.lib
 LIBRARY         aknskins.lib 
-LIBRARY		bitmaptransforms.lib 
+LIBRARY         bitgdi.lib 
--- a/photosgallery/viewframework/views/listview/inc/glxlistviewimp.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/listview/inc/glxlistviewimp.h	Fri Mar 12 15:42:44 2010 +0200
@@ -144,7 +144,7 @@
 	 void DestroyListViewWidget();
 
 protected:
-    void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TInt aIndex);
+    void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aPopulateList);
     	 
 protected:
     void Request(TInt aRequestStart, TInt aRequestEnd, THgScrollDirection aDirection);
@@ -204,6 +204,9 @@
     
     TBool iPopulateListTNs;
 	
+    // Flag to check if all the items in list view need to be refreshed
+    TBool iIsRefreshNeeded;
+
     TBool iBackwardNavigation;
 
     TInt iStartIndex;
--- a/photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h	Fri Mar 12 15:42:44 2010 +0200
@@ -24,7 +24,6 @@
 #include "glxmedialistiterator.h"    // Interface for going through items in the list in a  non-sequential order
 #include "mglxmedialistobserver.h"   // Observes for changes in media list
 #include <memory>                    
-#include <bitmaptransforms.h>
 
 class GlxThumbnailVariantType;
 class CGlxThumbnailContext;          // Fetch context to retrieve thumbnails
@@ -35,7 +34,7 @@
 class MPreviewTNObserver 
     {
 public:
-    virtual void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TInt aIndex) = 0;
+    virtual void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aPopulateList) = 0;
     };
     
 // CLASS DECLARATION
@@ -87,8 +86,8 @@
       void ScaleBitmapToListSizeL(CFbsBitmap* aSrcBitmap, CFbsBitmap* aDestBitmap);
 
 public:	
-      void HandleItemChangedL(const CMPXCollectionPath& aPath,
-              TBool aPopulateListTNs, TBool aBackwardNavigation);
+      void HandleItemChangedL(const CMPXCollectionPath& aPath,TBool aPopulateListTNs, 
+									  TBool aIsRefreshNeeded, TBool aBackwardNavigation);
       void StartTimer(TBool aPopulateListTNs);
       void StopTimer();
       
@@ -143,6 +142,8 @@
 	//flag will be true, when initially the first thumbnails for all the 
 	//items in the list are populated.
 	TBool iPopulateListTNs;
+	
+	TBool iIsRefreshNeeded;
 
     //it holds the initial number of thumbnail to be displayed
     RArray<TInt> iPreviewItemCount;
@@ -155,31 +156,7 @@
     
     TInt iTrial;
         
-    TBool iBackwardNavigation;
-    
     CMPXFilter* iPreviewFilter;
-    
-    CBitmapScaler* iBitmapScaler;
 };
 
- // ----------------------------------------------------------------------------
- // CWaitScheduler - Active object to scale the bitmap to the desired size.
- // ----------------------------------------------------------------------------
- class CGlxWaitScheduler : public CActive
-     {
- public:
-     static CGlxWaitScheduler* NewL();  
-     void WaitForRequest();
-
- private:
-     CGlxWaitScheduler();
-     void ConstructL();
-     virtual ~CGlxWaitScheduler();  
-     void RunL();
-     void DoCancel();
-
- private:
-     CActiveSchedulerWait iScheduler;  
-     };
-
 #endif //_GLXPREVIEWTHUMBNAILBINDING_H_
--- a/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -37,7 +37,6 @@
 #include <glxtracer.h>
 #include <glxlog.h>							//Glx Logs
 #include <glxlistviewplugin.rsg>
-#include <glxmedialistmulmodelprovider.h>	//CGlxMediaListMulModelProvider
 #include <aknViewAppUi.h>
 #include <StringLoader.h>					//StringLoader		
 #include <glxsetappstate.h>
@@ -116,8 +115,8 @@
     
     //Register the view to recieve toolbar events. ViewBase handles the events    
     SetToolbarObserver(this);
-    
     iBackwardNavigation = EFalse;
+    iIsRefreshNeeded = EFalse;
     }
 
 // ---------------------------------------------------------------------------
@@ -217,7 +216,7 @@
         CMPXCollectionPath* path = iMediaList->PathLC( 
                 NGlxListDefs::EPathFocusOrSelection );
         iPreviewTNBinding->HandleItemChangedL(*path, 
-                iPopulateListTNs, iBackwardNavigation);
+                iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation);
         CleanupStack::PopAndDestroy( path );        
         }
 
@@ -420,6 +419,11 @@
 	if( iNextViewActivationEnabled && ( aIndex >= 0 && aIndex < 
 	        iMediaList->Count()))
 	    {
+	    	//Delete the PreviewTNMBinding as in forward navigation
+		//we do not get the medialist callback.
+        delete iPreviewTNBinding;
+        iPreviewTNBinding = NULL;
+        
         iMediaList->SetFocusL(NGlxListDefs::EAbsolute,aIndex);
         iLastFocusedIndex = iMediaList->FocusIndex();
 	    iNextViewActivationEnabled = EFalse;
@@ -429,11 +433,12 @@
              iMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection );
         iCollectionUtility->Collection().OpenL(*path);
         CleanupStack::PopAndDestroy(path);  
+        
 	    }
     }
 
 void CGlxListViewImp::PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* 
-        /*aMask*/, TInt /*aIndex*/)
+        /*aMask*/, TBool aPopulateList)
     {
     TRACER("CGlxListViewImp::PreviewTNReadyL");
 
@@ -441,6 +446,7 @@
 
 	TInt focusIndex = iMediaList->FocusIndex();
     TInt mediaCount = iMediaList->Count();
+    iPopulateListTNs = aPopulateList;
     
     if (aBitmap)
 	    {	
@@ -493,6 +499,7 @@
             else
                 {
                 iPopulateListTNs = EFalse;	
+                iIsRefreshNeeded = EFalse;
                 
                 // iStartIndex holds the focus index of the item.
                 // If the focus is not on 0th index and if USB is Connected/Disconnected
@@ -518,7 +525,7 @@
                     CMPXCollectionPath* path = iMediaList->PathLC( 
                             NGlxListDefs::EPathFocusOrSelection );
                     iPreviewTNBinding->HandleItemChangedL(*path, 
-                            iPopulateListTNs, iBackwardNavigation);
+                            iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation);
                     CleanupStack::PopAndDestroy( path );
                     }
                 }
@@ -592,7 +599,12 @@
 			iList->ItemL(i).SetTitleL(item.Title());
 			iList->ItemL(i).SetTextL(item.SubTitle());
 			}
-
+		GLX_DEBUG3("CGlxListViewImp::CreateListL() Medialist Count = %d, "
+		        "iLastFocusIndex %d",mediaCount,iLastFocusedIndex);
+        if(iLastFocusedIndex >= mediaCount)
+            {
+            iLastFocusedIndex = (mediaCount - 1);
+            }
 		iMediaList->SetFocusL(NGlxListDefs::EAbsolute, iLastFocusedIndex);
 		iList->SetSelectedIndex(iLastFocusedIndex);
 		iList->RefreshScreen(iLastFocusedIndex);
@@ -662,37 +674,47 @@
 	const RArray<TMPXAttribute>& aAttributes, MGlxMediaList* /*aList*/ )
 	{
 	TRACER("CGlxListViewImp::HandleAttributesAvailableL");
-	
+
 	TMPXAttribute titleAttrib(KMPXMediaGeneralTitle);
 	TMPXAttribute subTitleAttrib(KGlxMediaCollectionPluginSpecificSubTitle);
-    TIdentityRelation< TMPXAttribute > match ( &TMPXAttribute::Match );
-	    
-   	const TGlxMedia& item = iMediaList->Item(aItemIndex);
+	TIdentityRelation<TMPXAttribute> match(&TMPXAttribute::Match);
 
-    if (KErrNotFound != aAttributes.Find(titleAttrib, match))
-    	{
+	const TGlxMedia& item = iMediaList->Item(aItemIndex);
+
+	if (KErrNotFound != aAttributes.Find(titleAttrib, match))
+		{
 		iList->ItemL(aItemIndex).SetTitleL(item.Title());
 		iList->RefreshScreen(aItemIndex);
-    	}
+		}
+
+	if (KErrNotFound != aAttributes.Find(subTitleAttrib, match))
+		{
+		iList->ItemL(aItemIndex).SetTextL(item.SubTitle());
+		iList->RefreshScreen(aItemIndex);
 
-    if (KErrNotFound != aAttributes.Find(subTitleAttrib, match))
-    	{
-		iList->ItemL(aItemIndex).SetTextL(item.SubTitle());
-		iList->RefreshScreen(aItemIndex);	
-		
+		// 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)
+			{
+			iIsRefreshNeeded = ETrue;
+			iPopulateListTNs = EFalse;
+			}
+
 		// Set iPopulateListTNs to ETrue and refresh all the items in
 		// list view if subtitle is updated
 		if (iPreviewTNBinding && !iPopulateListTNs)
 			{
 			iPopulateListTNs = ETrue;
 			iStartIndex = KErrNotFound;
-			CMPXCollectionPath* path = iMediaList->PathLC( 
-					NGlxListDefs::EPathFocusOrSelection );
-	        iPreviewTNBinding->HandleItemChangedL(*path, 
-	                iPopulateListTNs, iBackwardNavigation);
-			CleanupStack::PopAndDestroy( path ); 		
+			CMPXCollectionPath* path = iMediaList->PathLC(
+					NGlxListDefs::EPathFocusOrSelection);
+			iPreviewTNBinding->HandleItemChangedL(*path, iPopulateListTNs,
+					iIsRefreshNeeded, iBackwardNavigation);
+			CleanupStack::PopAndDestroy(path);
 			}
-    	}
+		}
 	}
 	
 // ----------------------------------------------------------------------------
@@ -710,7 +732,7 @@
 		CMPXCollectionPath* path = iMediaList->PathLC( 
 		        NGlxListDefs::EPathFocusOrSelection );
         iPreviewTNBinding->HandleItemChangedL(*path, 
-                iPopulateListTNs, iBackwardNavigation);
+                iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation);
 		CleanupStack::PopAndDestroy( path );		
 		}
 	}
--- a/photosgallery/viewframework/views/listview/src/glxpreviewthumbnailbinding.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/listview/src/glxpreviewthumbnailbinding.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -28,66 +28,16 @@
 #include <glxlog.h>
 
 #include <glxuistd.h>                    // Fetch context priority def'ns
-
+#include <mglxcache.h> 
 #include <ganes/HgDoubleGraphicList.h>
 
 
 const TInt KInitialThumbnailsTimeDelay(100000);
-const TInt KWaitCount(5);
+const TInt KWaitCount(10);
 const TInt KThumbnailStartTimeDelay(250000);
-const TInt KThumbnailIntervalTimeDelay(50000);
 const TInt KPreviewThumbnailFetchCount(1);
 
-// ----------------------------------------------------------------------------
-// CWaitScheduler::NewL()
-// ---------------------------------------------------------------------------- 
-CGlxWaitScheduler* CGlxWaitScheduler::NewL()
-    {
-    TRACER("CGlxWaitScheduler::NewL()");    
-    CGlxWaitScheduler* self = new( ELeave ) CGlxWaitScheduler();
-    CleanupStack::PushL( self );
-    self->ConstructL( );
-    CleanupStack::Pop( self );
-    return self;
-    }
 
-CGlxWaitScheduler::CGlxWaitScheduler()
-: CActive( EPriorityStandard )
-    {
-    TRACER("CGlxWaitScheduler::CGlxWaitScheduler()");    
-    CActiveScheduler::Add( this );
-    }
-
-void CGlxWaitScheduler::ConstructL()
-    {
-    TRACER("CGlxWaitScheduler::ConstructL()");
-    // Do nothing
-    }
-
-CGlxWaitScheduler::~CGlxWaitScheduler()
-    {
-    TRACER("CGlxWaitScheduler::~CGlxWaitScheduler()");     
-    Cancel();
-    }
-
-void CGlxWaitScheduler::WaitForRequest()
-    {
-    TRACER("CGlxWaitScheduler::WaitForRequest()");     
-    SetActive();
-    iScheduler.Start();
-    }
-
-void CGlxWaitScheduler::RunL()
-    {
-    TRACER("CGlxWaitScheduler::RunL()");     
-    iScheduler.AsyncStop();
-    }
-
-void CGlxWaitScheduler::DoCancel()
-    {
-    TRACER("CGlxWaitScheduler::DoCancel()");   
-    //Do nothing
-    }
 
 // ----------------------------------------------------------------------------
 // NewL
@@ -148,7 +98,6 @@
     iThumbnailContext->SetDefaultSpec(iGridIconSize.iWidth,
                                                 iGridIconSize.iHeight);
     iThumbnailContext->AddAttributeL(tnAttr);
-    iBitmapScaler = CBitmapScaler::NewL();
     }
 
 // ----------------------------------------------------------------------------
@@ -175,13 +124,7 @@
 	    }
 	delete iTimer;
 	iTimer = NULL;
-	iPreviewItemCount.Close();
-	
-	if(iBitmapScaler)
-	    {
-        delete iBitmapScaler;
-	    iBitmapScaler = NULL;
-	    }
+	iPreviewItemCount.Close();	
 	}
 
 // ----------------------------------------------------------------------------
@@ -208,9 +151,9 @@
             if (value)
                 {
                 CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
-				bitmap->Duplicate( value->iBitmap->Handle());
-                //ScaleBitmapToListSizeL(value->iBitmap, bitmap);
-                iObserver.PreviewTNReadyL(bitmap, NULL,iProgressIndex);
+                ScaleBitmapToListSizeL(value->iBitmap, bitmap);
+                GLX_LOG_INFO1("iObserver.PreviewTNReadyL() iTrial=%d", iTrial);
+                iObserver.PreviewTNReadyL(bitmap, NULL,iPopulateListTNs);
                 }
     	    }
        	}
@@ -218,7 +161,7 @@
 	    {
 	    if (iTrial == KWaitCount)
 		    {		   
-		    iObserver.PreviewTNReadyL(NULL, NULL, KErrNotFound);
+		    iObserver.PreviewTNReadyL(NULL, NULL, iPopulateListTNs);
 		    iTrial=0;
 		    return;
 		    }
@@ -240,15 +183,15 @@
 		if (value)
 			{
 			CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
-			bitmap->Duplicate( value->iBitmap->Handle());
-		    //ScaleBitmapToListSizeL(value->iBitmap, bitmap);
-			iObserver.PreviewTNReadyL(bitmap, NULL,iProgressIndex);
+		    ScaleBitmapToListSizeL(value->iBitmap, bitmap);
+			GLX_LOG_INFO1("iObserver.PreviewTNReadyL() iTrialCount=%d", iTrialCount);
+			iObserver.PreviewTNReadyL(bitmap, NULL,iPopulateListTNs);
 			}
 		else
 			{
 			if (iTrialCount == KWaitCount)
 				{				
-				iObserver.PreviewTNReadyL(NULL, NULL, KErrNotFound);
+				iObserver.PreviewTNReadyL(NULL, NULL, iPopulateListTNs);
 				iTrialCount=0;
 				return;
 				}
@@ -283,13 +226,13 @@
 // ----------------------------------------------------------------------------
 //    
 void CGlxPreviewThumbnailBinding::HandleItemChangedL(const CMPXCollectionPath& aPath,
-        TBool aPopulateListTNs, TBool aBackwardNavigation)
+        TBool aPopulateListTNs, TBool  aIsRefreshNeeded, TBool aBackwardNavigation)
     {
     TRACER("CGlxPreviewThumbnailBinding::HandleItemChangedL");
     iTimerTicked = EFalse;
     iPopulateListTNs = aPopulateListTNs;
-    iBackwardNavigation = aBackwardNavigation;
     iProgressIndex = KErrNone;
+    iIsRefreshNeeded = aIsRefreshNeeded;
 
     // remove and close old medialist   
     if( iMediaList )
@@ -307,6 +250,13 @@
     iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal);
 	// adding the medialist to observ any changes or updates done
 	iMediaList->AddMediaListObserverL(this);
+
+	if(aBackwardNavigation)
+	    {
+	    //On backward navigation start the timer manually, since we do not  
+        //get the attribute callback.
+        StartTimer(iPopulateListTNs);        
+        }
     }
 
 // ----------------------------------------------------------------------------
@@ -328,16 +278,8 @@
         
     if (iPopulateListTNs)
         {
-        if (iBackwardNavigation)
-            {
-            iTimer->Start(KThumbnailIntervalTimeDelay, KThumbnailIntervalTimeDelay/KWaitCount,
-                    TCallBack(IsTimeL,this));
-            }
-        else
-            {
-            iTimer->Start(KThumbnailStartTimeDelay, 
+         iTimer->Start(KThumbnailStartTimeDelay, 
                     KInitialThumbnailsTimeDelay, TCallBack(IsTimeL,this));
-            }
         }
      }
 
@@ -401,6 +343,13 @@
         if (value)
 	        {
             iPreviewItemCount.AppendL( aItemIndex );
+            // sometimes we get HandleAttributesAvailableL callback after some delay
+            // when we do cache cleanup. 
+            if(!iPopulateListTNs)
+            	{
+            	iPopulateListTNs = ETrue;
+            	StartTimer(iPopulateListTNs);
+            	} 
             }
         }
     }
@@ -483,29 +432,54 @@
 //
 void CGlxPreviewThumbnailBinding::HandlePopulatedL( MGlxMediaList* /*aList*/ )
     {
-    TRACER("CGlxPreviewThumbnailBinding::HandlePopulatedL()");
-    //Start the timer
-    StartTimer(iPopulateListTNs);
-    }
+	TRACER("CGlxPreviewThumbnailBinding::HandlePopulatedL()");
+
+	// Do cache cleanup. If iIsRefreshNeeded is set,
+	// then clean up the item at 0th index 
+	if (iPopulateListTNs && iIsRefreshNeeded)
+		{
+		if (iMediaList && iMediaList->Count() > 0)
+			{
+			GLX_LOG_INFO("**** Cache Cleanup ****");
+			MGlxCache* cacheManager = MGlxCache::InstanceL();
+			cacheManager->ForceCleanupMedia(iMediaList->IdSpaceId(0),
+					iMediaList->Item(0).Id());
+			cacheManager->Close();
+			}
+		}
+	//Start the timer
+	StartTimer(iPopulateListTNs);
+	}
 
 // ----------------------------------------------------------------------------
 // ScaleBitmapToListSizeL
 // ----------------------------------------------------------------------------
 //
 void CGlxPreviewThumbnailBinding::ScaleBitmapToListSizeL(
-                             CFbsBitmap* aSrcBitmap, CFbsBitmap* aDestBitmap)
-    {      
-    TRACER("CGlxPreviewThumbnailBinding::ScaleBitmapToListSizeL()");      
-
-    // Create the bitmap with the list preferred size
-    aDestBitmap->Create(CHgDoubleGraphicList::PreferredImageSize(), EColor16MU);
-
-    CGlxWaitScheduler* waitScheduler = CGlxWaitScheduler::NewL();
-    CleanupStack::PushL( waitScheduler );
-
-    iBitmapScaler->Scale(&waitScheduler->iStatus, *aSrcBitmap, 
-            *aDestBitmap, ETrue);
-    waitScheduler->WaitForRequest();
-
-    CleanupStack::PopAndDestroy( waitScheduler );
+        CFbsBitmap* aSrcBitmap, CFbsBitmap* aDestBitmap)
+    {
+    TRACER("CGlxPreviewThumbnailBinding::ScaleBitmapToListSizeL()");
+    TSize destSize = CHgDoubleGraphicList::PreferredImageSize();
+    TSize srcSize = aSrcBitmap->SizeInPixels();
+    if (destSize.iHeight * srcSize.iWidth < destSize.iWidth * srcSize.iHeight)
+        {
+        // Source has taller aspect than target so reduce target width
+        destSize.iWidth = ((destSize.iHeight * srcSize.iWidth)
+                / (srcSize.iHeight));
+        }
+    else
+        {
+        // Source has wider aspect than target so reduce target height
+        destSize.iHeight = (destSize.iWidth * srcSize.iHeight)
+                / srcSize.iWidth;
+        }
+    aDestBitmap->Create(destSize, aSrcBitmap->DisplayMode());
+    CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDestBitmap);
+    CleanupStack::PushL(bitmapDevice);
+    CFbsBitGc* bitmapGc = CFbsBitGc::NewL();
+    CleanupStack::PushL(bitmapGc);
+    bitmapGc->Activate(bitmapDevice);
+    bitmapGc->DrawBitmap(TRect(destSize), aSrcBitmap);
+    CleanupStack::PopAndDestroy(bitmapGc);
+    CleanupStack::PopAndDestroy(bitmapDevice);
     }
--- a/photosgallery/viewframework/views/metadatadialog/inc/glxmetadatacontainer.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/metadatadialog/inc/glxmetadatacontainer.h	Fri Mar 12 15:42:44 2010 +0200
@@ -213,6 +213,7 @@
 		//since iUri is const type.     
     	HBufC* iModifiedUri;
 		CGlxMetadataAsyncUpdate* iAsyncRequest;
+		TBool iRenameCompleted;
     };
     
 /**
--- a/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -224,7 +224,7 @@
     GLX_LOG_INFO("CGlxImgVwrMetadataContainer::HandleListBoxEventL");         
     if ((aEventType == EEventEnterKeyPressed) || 
             (aEventType == EEventEditingStarted) ||
-            (aEventType == EEventItemDoubleClicked))
+            (aEventType == EEventItemSingleClicked))
         {
         //handle edit functionality if items when useer selects via touch
         HandleListboxChangesL();
@@ -323,7 +323,7 @@
             TGlxMedia item = iItemMediaList->Item(0);
             CGlxUStringConverter* stringConverter = CGlxUStringConverter::NewL();
             CleanupStack::PushL(stringConverter );
-            for(TInt index = 0; index <= 4; index++)
+            for(TInt index = 0; index <= EImgVwrlicenseItem; index++)
                 {
                 HBufC* string = NULL;               
 
@@ -353,6 +353,12 @@
                     stringConverter->AsStringL(item,
                             KGlxMediaGeneralDimensions,0, string );
                     }    
+                else if(index == EImgVwrlicenseItem)
+					{
+					// If an item is DRM protected, License field in details
+					// should display "View Details"
+					string = StringLoader::LoadL(R_GLX_METADATA_VIEW_OPTIONS_VIEW);
+					}                
                 else 
                     {
                     //no implementation
@@ -362,9 +368,9 @@
                     iTextSetter.Copy(KGlxTextSetter);
                     iTextSetter.Append(*string);
                     }
-                EditItemL(index,EFalse);                 
-                delete string;
-                string = NULL;
+                CleanupStack::PushL( string );
+                EditItemL(index,EFalse);   
+                CleanupStack::PopAndDestroy(string );           
                 }
             CleanupStack::PopAndDestroy(stringConverter );
             }   
--- a/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -136,6 +136,9 @@
 	
 	//Initializing to NULL
 	iModifiedUri = NULL;	
+	
+	//Flag to check if rename is completed successfully.
+	iRenameCompleted = EFalse;
 	}
 
 // ---------------------------------------------------------
@@ -309,18 +312,19 @@
 TBool CGlxMetadataContainer::IsLocationItem()
     {
     //if its location item - enable the delete option
-    if(ListBox()->CurrentItemIndex()== ELocationItem)
+    if (iItemMediaList->Count() && ListBox()->CurrentItemIndex()
+            == ELocationItem)
         {
         const TGlxMedia& item = iItemMediaList->Item(0);
         TCoordinate coordinate;
-        if(item.GetCoordinate(coordinate))
-			{
-			return EFalse;
-			}
-        return ETrue;        
+        if (item.GetCoordinate(coordinate))
+            {
+            return EFalse;
+            }
+        return ETrue;
         }
     //return ETrue to dim the item
-    return ETrue;    
+    return ETrue;
     }
     
 //-----------------------------------------------------------------------------
@@ -943,12 +947,17 @@
     //generic medialist for the item for all the attributes required other than tags and albums.
     if(aList == iItemMediaList)
         {
-		// Loop untill it checks for all the avialable attributes
-		for (TInt i = aAttributes.Count() - 1; i >= 0 ; i--)
-			{
-			//set attributes to the items in the container
-			SetAttributesL(aAttributes[i]);                   
-			}
+        // Loop untill it checks for all the avialable attributes
+        for (TInt i = aAttributes.Count() - 1; i >= 0; i--)
+            {
+            //set attributes to the items in the container
+            SetAttributesL(aAttributes[i]);
+            }
+        if (iRenameCompleted)
+            {
+            iRenameCompleted = EFalse;
+            iAvkonAppUi->ProcessCommandL(EGlxCmdRenameCompleted);
+            }
         }
     //updation of tags and albums list based on the medialist callback.
     if(aList == iTagMediaList ||  aList == iAlbumMediaList)
@@ -1013,7 +1022,7 @@
 			TGlxMedia item = iItemMediaList->Item(0);
 			CGlxUStringConverter* stringConverter = CGlxUStringConverter::NewL();
 			CleanupStack::PushL(stringConverter );
-			for(TInt index = 0; index <= 9; index++)
+			for(TInt index = 0; index <= ElicenseItem ; index++)
 				{
 				HBufC* string = NULL;               
   
@@ -1053,6 +1062,12 @@
 					stringConverter->AsStringL(item,
 							KGlxMediaGeneralDimensions,0, string );
 					}    
+				else if(index == ElicenseItem)
+					{
+					// If an item is DRM protected, License field in details
+					// should display "View Details"
+					string = StringLoader::LoadL(R_GLX_METADATA_VIEW_OPTIONS_VIEW);					
+					} 				
 				else
 					{
 					//no implementation
@@ -1061,10 +1076,10 @@
 					{
 					iTextSetter.Copy(KGlxTextSetter);
 					iTextSetter.Append(*string);
-					}
-				EditItemL(index,EFalse);                 
-				delete string;
-				string = NULL;
+					}	
+				CleanupStack::PushL( string );
+				EditItemL(index,EFalse);
+				CleanupStack::PopAndDestroy(string );
 				}
 			CleanupStack::PopAndDestroy(stringConverter );
 			}   
@@ -1082,18 +1097,6 @@
     ListBox()->ItemDrawer()->ColumnData()->SetMarqueeParams (KMarqueeLoopCount,
             KMarqueeScrollAmount, KMarqueeScrollDelay, KMarqueeScrollInterval);
     ListBox()->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
-
-	//Fetch the current item index
-    TInt index = ListBox()->CurrentItemIndex();
-
-	//Reset the disable marquee flag, so that marquee effect can continue (this is normally reset by 
-	//base class of glxmetaDatadialog::HandlePointerEventL()
-    ListBox()->ItemDrawer()->ClearFlags(CListItemDrawer::EDisableMarquee);
-	
-	//This is the function which actually starts marquee effect. It is anyway being called from base
-	//implementation of OfferKeyEventL(), but for pointer event, we have to call
-	//this function
-    ListBox()->DrawItem(index);
     }    
 // ----------------------------------------------------------------------------
 // HandleCommandCompleteL
@@ -1297,21 +1300,22 @@
 // ---------------------------------------------------------------------------
 void CGlxMetadataContainer::RefreshMediaListL()
 	{
-	TRACER("CGlxMetadataContainer::RefreshMediaList()");
-	if(iItemMediaList)
-	    {
-	    iItemMediaList->RemoveContext(iMainListAttributecontext);
-	    iItemMediaList->RemoveMediaListObserver(this);
-	    iItemMediaList->Close();
-	    iItemMediaList = NULL;
-	    if( iMainListAttributecontext )
-			{
-			delete iMainListAttributecontext;
-			iMainListAttributecontext = NULL;
-			}
-	    CreateMediaListForSelectedItemL(ETrue);
-	    }
-	}
+    TRACER("CGlxMetadataContainer::RefreshMediaList()");
+    if (iItemMediaList)
+        {
+        iItemMediaList->RemoveContext(iMainListAttributecontext);
+        iItemMediaList->RemoveMediaListObserver(this);
+        iItemMediaList->Close();
+        iItemMediaList = NULL;
+        if (iMainListAttributecontext)
+            {
+            delete iMainListAttributecontext;
+            iMainListAttributecontext = NULL;
+            }
+        CreateMediaListForSelectedItemL(ETrue);
+        }
+    iRenameCompleted = ETrue;
+    }
 
 // ---------------------------------------------------------------------------
 // Completes the active object causing a call from the active scheduler to RunL()
--- a/photosgallery/viewframework/views/metadatadialog/src/glxmetadatadialog.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/metadatadialog/src/glxmetadatadialog.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -470,20 +470,7 @@
     const TPointerEvent& aPointerEvent)
 	{
 	TRACER("CGlxMetadataDialog::HandlePointerEventL");
-
-	//This has to be called first, as base class implementation sets the flag of settings dialog with EDisableMarquee 
 	CCoeControl::HandlePointerEventL( aPointerEvent );
-    
-	//After the above call we can call our implementation to reset the marque flag and start marqueeing if needed
-	if(aPointerEvent.iType == TPointerEvent::EButton1Down
-	        || aPointerEvent.iType == TPointerEvent::EButton2Down
-	        || aPointerEvent.iType == TPointerEvent::EButton3Down
-	        || aPointerEvent.iType == TPointerEvent::EDrag)
-	    {
-		//This has to done at every above mentioned event, since the disable marquee flag is set by base implementation, 
-		//forcing us the need to reset it everytime.
-        iContainer->EnableMarqueingL();
-	    }
 	}
 
 // ---------------------------------------------------------------------------
--- a/photosgallery/viewframework/views/viewbase/inc/glxviewbase.h	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/viewbase/inc/glxviewbase.h	Fri Mar 12 15:42:44 2010 +0200
@@ -57,7 +57,7 @@
     /**
      * Constructor
      */
-    IMPORT_C CGlxViewBase(TBool aSyncActivation = EFalse);
+    IMPORT_C CGlxViewBase(TBool aSyncActivation = ETrue);
 
     /**
      * Destructor.
--- a/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -832,26 +832,26 @@
 	GLX_LOG_INFO1("_PHOTOS_LOG_: void CGlxZoomControl::HandleGestureL  Code : %d", code);
     
     // Todo: This switch should go into the event handler.  
-    switch (code)
-        {
-        case EGestureDrag:
-            iEventHandler->HandleDragEvent(aEvent);
-            break;
-        case EGestureTap:
-            iEventHandler->HandleSingleTap(aEvent);
-            break;
-        case EGesturePinch:
-            iEventHandler->HandlePinchEventL(aEvent);
-            break;
-        case EGestureDoubleTap:
-            iEventHandler->HandleDoubleTap(aEvent);
-            break;
-        case EGestureReleased:
-            iEventHandler->HandleGestureReleased(aEvent);
-            break;
-        default :
-            break;
-        }
+        switch (code)
+            {
+            case EGestureDrag:
+                iEventHandler->HandleDragEvent(aEvent);
+                break;
+            case EGestureTap:
+                iEventHandler->HandleSingleTap(aEvent);
+                break;
+            case EGesturePinch:
+                iEventHandler->HandlePinchEventL(aEvent);
+                break;
+            case EGestureDoubleTap:
+                iEventHandler->HandleDoubleTap(aEvent);
+                break;
+            case EGestureReleased:
+                iEventHandler->HandleGestureReleased(aEvent);
+                break;
+            default :
+                break;
+            }
     iEventHandler->SetPreviousEventCode(code);
     }