Revision: 201013 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 14 Apr 2010 15:57:24 +0300
branchRCL_3
changeset 22 2dac0fdba72b
parent 18 bcb43dc84c44
child 25 191387a8b767
Revision: 201013 Kit: 201015
photosgallery/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp
photosgallery/common/group/bld.inf
photosgallery/controllers/fetcher/inc/glxfetcherdialog.h
photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp
photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp
photosgallery/gallery/inc/glxappui.h
photosgallery/gallery/src/glxappui.cpp
photosgallery/slideshow/engine/effectsrc/shwdefaulteffectmanager.cpp
photosgallery/slideshow/engine/group/bld.inf
photosgallery/slideshow/engine/tsrc/t_cshweventrouter/t_cshweventrouter.cpp
photosgallery/viewframework/commandhandlers/commandhandlermarking/src/glxcommandhandlermarking.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerslideshow.h
photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerupload.h
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp
photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerupload.cpp
photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxdummydrmutility.cpp
photosgallery/viewframework/medialists/src/glxcachemanager.cpp
photosgallery/viewframework/medialists/tsrc/ut_cglxattributecontext/ut_cglxattributecontext.cpp
photosgallery/viewframework/medialists/tsrc/ut_cglxattributecontext/ut_cglxattributecontext.h
photosgallery/viewframework/tvout/group/glxtvout.mmp
photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h
photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp
photosgallery/viewframework/uiutilities/bwins/glxuiutilitiesu.def
photosgallery/viewframework/uiutilities/eabi/glxuiutilitiesu.def
photosgallery/viewframework/uiutilities/inc/glxprogressindicator.h
photosgallery/viewframework/uiutilities/inc/glxuiutility.h
photosgallery/viewframework/uiutilities/src/glxprogressindicator.cpp
photosgallery/viewframework/uiutilities/src/glxuiutility.cpp
photosgallery/viewframework/views/cloudview/inc/glxtagscontextmenucontrol.h
photosgallery/viewframework/views/cloudview/src/glxcloudviewcontrol.cpp
photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp
photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp
photosgallery/viewframework/views/fullscreenview/group/glxfullscreenview.mmp
photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenbusyicon.h
photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h
photosgallery/viewframework/views/fullscreenview/src/glxfullscreenbusyicon.cpp
photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp
photosgallery/viewframework/views/gridview/src/glxgridviewcontainer.cpp
photosgallery/viewframework/views/gridview/src/glxgridviewimp.cpp
photosgallery/viewframework/views/gridview/src/glxgridviewmlobserver.cpp
photosgallery/viewframework/views/listview/inc/glxlistviewimp.h
photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h
photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp
photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp
photosgallery/viewframework/views/viewbase/inc/glxtoolbarcontroller.h
photosgallery/viewframework/views/viewbase/inc/glxviewbase.h
photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp
photosgallery/viewframework/views/viewbase/src/glxviewbase.cpp
--- a/photosgallery/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -340,10 +340,8 @@
         case KGlxCollectionRootLevel:
         case KGlxCollectionTagLevel: 
             {
-            filterProperties.iMinCount = 1;
             filterProperties.iSortOrder = EGlxFilterSortOrderAlphabetical;
             filterProperties.iItemType = EGlxFilterTag;
-
             break;
             }
         case KGlxCollectionTagContentsLevel:
--- a/photosgallery/common/group/bld.inf	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/common/group/bld.inf	Wed Apr 14 15:57:24 2010 +0300
@@ -10,6 +10,7 @@
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
+* NTT DOCOMO, INC - BUG 2361
 *
 * Description:    Project definition file for project glxdatasourcemanager.
 *
@@ -31,10 +32,7 @@
 
 // flags for setting the orientation
 
-	// for device
-	../cenrep/200009EE.txt   /epoc32/data/z/private/10202be9/200009ee.txt
-	// for emulator
-	../cenrep/200009EE.txt   /epoc32/release/winscw/udeb/z/private/10202be9/200009ee.txt
+../cenrep/200009EE.txt   z:/private/10202be9/200009ee.txt
 
 // Generic configuration interface for component cenrep settings  
 ../../conf/gallery.confml                        CONFML_EXPORT_PATH(gallery.confml,customsw)
--- a/photosgallery/controllers/fetcher/inc/glxfetcherdialog.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/controllers/fetcher/inc/glxfetcherdialog.h	Wed Apr 14 15:57:24 2010 +0300
@@ -28,6 +28,7 @@
 #include <alf/alfscreenbuffer.h>
 
 #include "mglxeventobserver.h"
+#include "glxmmcnotifier.h"
 
 // Forward Declerations
 class CGlxFetcherContainer;
@@ -39,7 +40,8 @@
 //  INTERNAL INCLUDES
 
 NONSHARABLE_CLASS (CGlxFetcherDialog) : public CAknDialog ,
-                                        public MGlxEventObserver
+                                        public MGlxEventObserver,
+                                        public MStorageNotifierObserver 
 	{
 	 public:  // Constructors and destructor
 		/**
@@ -134,6 +136,15 @@
 	
 	public:// to exit the fetcher dialog 
 		void CallCancelFetcherL(TInt aCommandId);
+	    /**
+	     * handle MMC insertion
+	     */
+	    void HandleMMCInsertionL(){};
+	    /**
+	     * handle MMC removal
+	     */
+	    void HandleMMCRemovalL();
+
     
     private:
         CGlxFetcherContainer* iFetcherContainer ;              //Container Object
@@ -157,6 +168,9 @@
         TBool iMarkStarted;
         
         TBool iFetchUri;                                        // This is to check if uri is being fetcher or not
+       
+        //mmc notifier
+        CGlxMMCNotifier* iMMCNotifier;
 	};
 
 #endif /*GLXFETCHERDIALOG_H_*/
--- a/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -256,16 +256,26 @@
                 iUiUtility->GetGridIconSize().iHeight -(2*KPadding));
         TFileName resFile(KDC_APP_BITMAP_DIR);
         resFile.Append(KGlxIconsFilename);
-        CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-                EMbmGlxiconsQgn_prop_image_notcreated);
-        AknIconUtils::SetSize(bitmap, iconSize);
+        CFbsBitmap* bitmap = NULL;
+        CFbsBitmap* mask = NULL;
+        AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                bitmap, mask, resFile, EMbmGlxiconsQgn_prop_image_notcreated,
+                EMbmGlxiconsQgn_prop_image_notcreated_mask);
+        __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+        __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+
+        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+        AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
 
         // Create Hg grid object
-        iHgGrid = CHgGrid::NewL ( 
-                rect, 
-                iMediaList->Count(), 
-                CGulIcon::NewL(bitmap) );
+        iHgGrid = CHgGrid::NewL(rect, iMediaList->Count(), CGulIcon::NewL(
+                bitmap, mask));
+        CleanupStack::Pop(mask);
+        CleanupStack::Pop(bitmap);
         }
+
     iHgGrid->SetSelectedIndex(iMediaList->FocusIndex());
     // Setting to MopParent to update background skin
     iHgGrid->SetMopParent(this);
@@ -310,21 +320,20 @@
     TInt mediaCount = iMediaList->Count();
 
     aRequestStart = (aRequestStart<0 ? 0 : aRequestStart) ;
-    aRequestEnd = (aRequestEnd>=mediaCount? mediaCount : aRequestEnd);
+    aRequestEnd = (aRequestEnd>=mediaCount? (mediaCount -1): aRequestEnd);
 
     if (aRequestEnd - aRequestStart)
         {
         TInt visIndex = iHgGrid->FirstIndexOnScreen();
-        if (visIndex < 0)
+        if(visIndex >= mediaCount )
+            {
+            visIndex = mediaCount-1;
+            }
+        if(visIndex<0 || mediaCount<=0)
             {
             visIndex = 0;
             }
-
-        else if (visIndex >= mediaCount)
-            {
-            visIndex = mediaCount-1;
-            }
-
+		
         GLX_LOG_INFO1("CGlxGridViewImp::Request - SetVisibleWindowIndex "
                 "visIndex(%d)", visIndex);
         iMediaList->SetVisibleWindowIndexL(visIndex);
@@ -370,19 +379,46 @@
     else if (item.GetIconInfo(icon))
         {
         GLX_LOG_INFO1("CGlxGridViewImp::Request - icon(%d)", aIndex);
-        CFbsBitmap* bitmap = AknIconUtils::CreateIconL(icon.bmpfile, icon.bitmapId);
-        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize());
-        iHgGrid->ItemL(aIndex).SetIcon(CGulIcon::NewL(bitmap));
-        GLX_LOG_INFO1("### CGlxGridViewImp::Request GetIconInfo-Index is %d",aIndex);
+        CFbsBitmap* bitmap = NULL;
+        CFbsBitmap* mask = NULL;
+        AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                bitmap, mask, icon.bmpfile, icon.bitmapId, icon.maskId);
+        __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+        __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+
+        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+        AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+        iHgGrid->ItemL(aIndex).SetIcon(CGulIcon::NewL(bitmap, mask));
+        CleanupStack::Pop(mask);
+        CleanupStack::Pop(bitmap);
+        GLX_LOG_INFO1("### CGlxGridViewImp::Request GetIconInfo-Index is %d",
+                aIndex);
         }
-    else if ( KErrNone != tnError && KErrNotSupported != tnError )
+    else if (KErrNone != tnError && KErrNotSupported != tnError)
         {
-        GLX_LOG_INFO2("CGlxGridViewImp::Request - image_corrupted tnError(%d), "
-                "i(%d)", tnError, aIndex);
-        CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-                EMbmGlxiconsQgn_prop_image_corrupted);
-        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize());
-        iHgGrid->ItemL(aIndex).SetIcon(CGulIcon::NewL(bitmap));
+        GLX_LOG_INFO2(
+                "CGlxGridViewImp::Request - image_corrupted tnError(%d), "
+                    "i(%d)", tnError, aIndex);
+
+        CFbsBitmap* bitmap = NULL;
+        CFbsBitmap* mask = NULL;
+        AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                bitmap, mask, resFile, EMbmGlxiconsQgn_prop_image_corrupted,
+                EMbmGlxiconsQgn_prop_image_corrupted_mask);
+        __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+        __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+
+        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+        AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+        iHgGrid->ItemL(aIndex).SetIcon(CGulIcon::NewL(bitmap, mask));
+        CleanupStack::Pop(mask);
+        CleanupStack::Pop(bitmap);
         }
 
     if (item.IsDrmProtected())
--- a/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -88,6 +88,11 @@
 CGlxFetcherDialog::~CGlxFetcherDialog()
 	{
 	TRACER("CGlxFetcherDialog::~CGlxFetcherDialog");
+	if(iMMCNotifier)
+	    {
+        delete iMMCNotifier;
+        iMMCNotifier = NULL;
+	    }
 	if(iFetcherContainer)
 	    {
 	    // Restore the Toolbar as it was in the Calling application
@@ -123,6 +128,7 @@
     iUiUtility = CGlxUiUtility::UtilityL();
     iEnv = iUiUtility->Env();
     iFetchUri = EFalse;
+    iMMCNotifier = CGlxMMCNotifier::NewL(*this);
     }
     
 //-----------------------------------------------------------------------------
@@ -449,4 +455,20 @@
 	TRACER("CGlxFetcherDialog::CallCancelFetcherL");
 	TryExitL(aCommandId);
 	}
+
+//-----------------------------------------------------------------------------
+// CGlxFetcherDialog::HandleMMCRemovalL
+// This function will be called when MMC is removed
+// This will ensure exit of fetcher dialog.
+//-----------------------------------------------------------------------------
+void CGlxFetcherDialog::HandleMMCRemovalL()
+    {
+    TRACER("CGlxFetcherDialog::HandleMMCRemovalL");
+    /*
+     * need to delay the destruction of dialog.
+     */
+    Extension()->iPublicFlags.Set(CEikDialogExtension::EDelayedExit);
+    ProcessCommandL(EAknSoftkeyCancel);
+    Extension()->iPublicFlags.Clear(CEikDialogExtension::EDelayedExit);
+    }
 //  End of File
--- a/photosgallery/gallery/inc/glxappui.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/gallery/inc/glxappui.h	Wed Apr 14 15:57:24 2010 +0300
@@ -212,6 +212,11 @@
      *Timer to check for IAD updates 30 seconds after application startup.
      */
      CPeriodic* iPeriodic ;
+     
+     /**
+      * Flag to filter any spurious EPathChanged event from MPX Collection f/w.
+      */     
+     TBool iStateChangeRequested;
 } ;
 
 
--- a/photosgallery/gallery/src/glxappui.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/gallery/src/glxappui.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -121,6 +121,7 @@
     // publish zoom context, no zoom keys for now
     NGlxZoomStatePublisher::PublishStateL( EFalse );
     iEndKeyPressed = EFalse;
+    iStateChangeRequested = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -241,6 +242,7 @@
         CMPXCollectionPath* newState = CMPXCollectionPath::NewL();
         CleanupStack::PushL( newState );
         iNavigationalState->NavigateToL( *newState );
+        iStateChangeRequested = ETrue;
         CleanupStack::PopAndDestroy( newState );
         }
 
@@ -272,11 +274,12 @@
     TApaTaskList taskList( iCoeEnv->WsSession() );
 	TApaTask task = taskList.FindApp( TUid::Uid( KGlxGalleryApplicationUid ) );
 	TApaTask taskForeGround = taskList.FindByPos(0); // get fopreground app
-	if ( task.Exists() && task.ThreadId() != taskForeGround.ThreadId() )
-		{
-		GLX_LOG_INFO("CGlxAppUi::HandleNavigationalStateChanged: Return ");
-		return;
-		}
+	if (!iStateChangeRequested && task.Exists() && task.ThreadId()
+            != taskForeGround.ThreadId())
+        {
+        GLX_LOG_INFO("* CGlxAppUi::HandleNavigationalStateChanged:Return *");
+        return;
+        }
     HBufC* activationParam = iActivationParam;
     iActivationParam = NULL; // release ownership
     CleanupStack::PushL( activationParam );
@@ -305,6 +308,7 @@
         }
 
     CleanupStack::PopAndDestroy( activationParam );
+    iStateChangeRequested = EFalse;
     }
 
 // ---------------------------------------------------------------------------
@@ -319,42 +323,32 @@
 
     // get current navigational state
     CMPXCollectionPath* naviState = iNavigationalState->StateLC();
-   
-      // no if check in needed here ,it makes the aapui aware of the list view depth
-      // to be removed.added by gopa   
-    if ( naviState->Levels() >= 1)
+    if (naviState->Levels() >= 1)
         {
-        if (iNavigationalState->ViewingMode() == NGlxNavigationalState::EBrowse) 
+        if (iNavigationalState->ViewingMode()
+                == NGlxNavigationalState::EBrowse)
             {
-            // For image viewer collection, goto view mode
-            if (naviState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
-                {
-                aIds.AppendL( TUid::Uid(  KGlxViewingModeView ) );
-                }
-            else
-                {
-                aIds.AppendL( TUid::Uid(  KGlxViewingModeBrowse ) );
-                }
-            } 
-        else 
+            aIds.AppendL(TUid::Uid(KGlxViewingModeBrowse));
+            }
+        else
             {
-            aIds.AppendL( TUid::Uid(  KGlxViewingModeView ) );
-            }                 
+            aIds.AppendL(TUid::Uid(KGlxViewingModeView));
+            }
         }
 
-    if( TUid::Null() != GetViewScoringIdForCollectionPlugin( *naviState ) )
+    if (TUid::Null() != GetViewScoringIdForCollectionPlugin(*naviState))
         {
         // add scoring id for collection plugin
-        aIds.AppendL( GetViewScoringIdForCollectionPlugin( *naviState ) );
+        aIds.AppendL(GetViewScoringIdForCollectionPlugin(*naviState));
         }
-    
-    if( TUid::Null() != ViewScoringIdForNaviStateDepth( *naviState ) )
+
+    if (TUid::Null() != ViewScoringIdForNaviStateDepth(*naviState))
         {
-         // add scoring id for depth in the ui hierarchy
-        aIds.AppendL( ViewScoringIdForNaviStateDepth( *naviState ) );
+        // add scoring id for depth in the ui hierarchy
+        aIds.AppendL(ViewScoringIdForNaviStateDepth(*naviState));
         }
-       
-     CleanupStack::PopAndDestroy( naviState );
+
+    CleanupStack::PopAndDestroy(naviState);
     }
 // ---------------------------------------------------------------------------
 // Handles the foreground events
@@ -428,38 +422,32 @@
 // HandleActivationMessageL
 // ---------------------------------------------------------------------------
 //
-void CGlxAppUi::HandleActivationMessageL(const TApaCommand& aCommand, 
-        const TFileName& aDocumentName, const TDesC8& aData)
+void CGlxAppUi::HandleActivationMessageL(const TApaCommand& /*aCommand*/, 
+        const TFileName& /*aDocumentName*/, const TDesC8& aData)
     {
-    TRACER("void CGlxAppUi::HandleActivationMessageL(const TApaCommand& aCommand, const TFileName& aDocumentName, const TDesC8& aData)");
-    GLX_LOG_INFO1("Glx-HandleActivationMessageL() aCommand=%d", aCommand);
-    GLX_LOG_INFO1("Glx-HandleActivationMessageL() aDocumentName length=%d",
-                                                    aDocumentName.Length());
+    TRACER("void CGlxAppUi::HandleActivationMessageL("
+            "const TApaCommand& aCommand, const TFileName& aDocumentName, "
+            "const TDesC8& aData)");
+    GLX_LOG_INFO1("Glx-HandleActivationMessageL() aData length=%d",
+            aData.Length());
 
     delete iActivationParam;
     iActivationParam = NULL;
 
-    if (aDocumentName.Length() > 0 && 0 == aData.CompareC(KNullDesC8) )
+    if (aData.Length() == 0 )
         {
-        GLX_LOG_INFO("CGlxAppUi::HandleActivationMessageL() Image Viewer!");        
-        CMPXCollectionPath* path = CMPXCollectionPath::NewL();
-        CleanupStack::PushL(path);
-        iNavigationalState->SetBackExitStatus( EFalse );
-        path->AppendL( KGlxCollectionPluginImageViewerImplementationUid );
-        iNavigationalState->NavigateToL( *path );
-        CleanupStack::PopAndDestroy( path );
+        // Open navigational state at root level
+        CMPXCollectionPath* newState = CMPXCollectionPath::NewL();
+        CleanupStack::PushL(newState);
+        iNavigationalState->NavigateToL(*newState);
+        iStateChangeRequested = ETrue;
+        CleanupStack::PopAndDestroy(newState);
         }
     else
         {
         GLX_LOG_INFO("CGlxAppUi::HandleActivationMessageL(aData)");        
         HandleActivationMessageL( aData );
         }
-
-    // Introduced to fix bug EMJN-78GH6N. 
-    if (0 != iEikonEnv->RootWin().OrdinalPosition())
-        {
-        iEikonEnv->RootWin().SetOrdinalPosition(0);
-        }
     }
 
 // ---------------------------------------------------------------------------
@@ -514,6 +502,7 @@
     CleanupStack::PopAndDestroy(&stream);
     iNavigationalState->SetStartingLevel(path->Levels());
     iNavigationalState->NavigateToL( *path );
+    iStateChangeRequested = ETrue;
     CleanupStack::PopAndDestroy(path);
     
     // Introduced to fix bug EMJN-78GH6N. 
--- a/photosgallery/slideshow/engine/effectsrc/shwdefaulteffectmanager.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/slideshow/engine/effectsrc/shwdefaulteffectmanager.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -196,7 +196,13 @@
 	/// are cloned as needed
 	MShwEffect* clone = effect->CloneLC();
 	iAvailableEffects.AppendL( clone );
-	CleanupStack::Pop( clone );
+	
+    // This will cause a code scanner warning, but it is not possible to do 
+    // CleanupStack::Pop(clone) because the pointer pushed 
+    // onto the cleanup stack was either of class CShwZoomAndPanEffect
+    // or a CShwCrossFadeEffect and the object 'clone' is of
+    // class MShwEffect
+    CleanupStack::Pop(); //clone
 
     iEffects.Append( effect );
     iEffects.Append( clone );
--- a/photosgallery/slideshow/engine/group/bld.inf	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/slideshow/engine/group/bld.inf	Wed Apr 14 15:57:24 2010 +0300
@@ -10,6 +10,7 @@
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
+* NTT DOCOMO, INC - BUG 2361
 *
 * Description:    Slideshow INF component
  *
@@ -41,8 +42,7 @@
  *			-rd S:/mgallery/slideshow/engine/cenrep\
  *
  */
-../cenrep/200071D3.txt   			/epoc32/data/z/private/10202be9/200071d3.txt
-../cenrep/200071D3.txt   			/epoc32/release/winscw/udeb/z/private/10202be9/200071d3.txt
+../cenrep/200071D3.txt   			z:/private/10202be9/200071d3.txt
 
 // Generic configuration interface for component cenrep settings  
 ../../../conf/slideshow.confml                        CONFML_EXPORT_PATH(slideshow.confml,customsw)
--- a/photosgallery/slideshow/engine/tsrc/t_cshweventrouter/t_cshweventrouter.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/slideshow/engine/tsrc/t_cshweventrouter/t_cshweventrouter.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -204,13 +204,13 @@
 	observers.AppendL( this );
 	// add the array of observers
 	iRouter->AddObserversL( observers.Array() );
-	CleanupStack::PopAndDestroy( observers );
+	CleanupStack::PopAndDestroy( &observers );
 	// add us as publisher
 	RPointerArray<MShwEventPublisher> publisher;
 	CleanupClosePushL( publisher );
 	publisher.AppendL( this );
 	iRouter->AddProducers( publisher.Array() );
-	CleanupStack::PopAndDestroy( publisher );
+	CleanupStack::PopAndDestroy( &publisher );
 
 	T_TestEvent testEvent;
 	// set the event object pointer so that the notify can verify the event object
--- a/photosgallery/viewframework/commandhandlers/commandhandlermarking/src/glxcommandhandlermarking.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commandhandlermarking/src/glxcommandhandlermarking.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -488,9 +488,13 @@
 // HandleItemAddedL
 // ---------------------------------------------------------------------------
 void CGlxCommandHandlerMarking::HandleItemAddedL(TInt /*aStartIndex*/, 
-                                    TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
+                                    TInt /*aEndIndex*/, MGlxMediaList* aList)
     {
-    // No Implementation
+    if (aList->Count() > 0 && iUiUtility->GetGridToolBar())
+        {
+        iUiUtility->GetGridToolBar()->SetItemDimmed(
+                EGlxCmdStartMultipleMarking, EFalse, ETrue);
+        }
     }
     
     
@@ -507,9 +511,13 @@
 // HandleItemRemoved
 // ---------------------------------------------------------------------------
 void CGlxCommandHandlerMarking::HandleItemRemovedL(TInt /*aStartIndex*/, 
-                                    TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
+                                    TInt /*aEndIndex*/, MGlxMediaList* aList)
     {
-    //Do nothing
+    if (aList->Count() == 0 && iUiUtility->GetGridToolBar())
+        {
+        iUiUtility->GetGridToolBar()->SetItemDimmed(
+                EGlxCmdStartMultipleMarking, ETrue, ETrue);
+        }
     }
 
 // ---------------------------------------------------------------------------
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerslideshow.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerslideshow.h	Wed Apr 14 15:57:24 2010 +0300
@@ -84,6 +84,7 @@
                 TInt aOldIndex, MGlxMediaList* aList);
     void HandleItemSelectedL(TInt aIndex, TBool aSelected, MGlxMediaList* aList);
     void HandleMessageL(const CMPXMessage& aMessage, MGlxMediaList* aList);
+    void HandlePopulatedL( MGlxMediaList* aList );
     
 private:
     /** Second phase constructor */
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerupload.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerupload.h	Wed Apr 14 15:57:24 2010 +0300
@@ -252,6 +252,9 @@
     CAknToolbar* iToolbar;
     
     TThumbnailRequestId iTnmRequestID;
+
+    //To check if we are in fullscreen
+    TBool iIsFullScreenView;
 	};
 
 #endif //__GLXCOMMANDHANDLERUPLOAD_H__
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -234,8 +234,6 @@
             enableMultipleSelection = ETrue;
             enablePopup = ETrue;
             targetCollection->AppendL(KGlxTagCollectionPluginImplementationUid);
-            filter = TGlxFilterFactory::CreateIncludeEmptyContainersFilterL();
-            CleanupStack::PushL(filter);
             break;
             }
         }
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -339,10 +339,14 @@
 // ----------------------------------------------------------------------------
 void CGlxCommandHandlerSlideshow::HandleFocusChangedL(
                 NGlxListDefs::TFocusChangeType /*aType*/,
-                TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/ )
+                TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* aList)
     {
     TRACER("CGlxCommandHandlerSlideshow::HandleFocusChangedL");
-
+    if (aList->Count() <= 0 && iUiUtility->GetGridToolBar())
+        {
+        iUiUtility->GetGridToolBar()->SetItemDimmed(
+                EGlxCmdStartMultipleMarking, ETrue, ETrue);
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -350,8 +354,13 @@
 // ---------------------------------------------------------------------------
 //
 void CGlxCommandHandlerSlideshow::HandleItemAddedL(TInt /*aStartIndex*/,
-            TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
+            TInt /*aEndIndex*/, MGlxMediaList* aList)
     {
+    if (aList->Count() > 0 && iUiUtility->GetGridToolBar())
+        {
+        iUiUtility->GetGridToolBar()->SetItemDimmed(EGlxCmdSlideshowPlay,
+                EFalse, ETrue);
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -368,8 +377,13 @@
 // ---------------------------------------------------------------------------
 //
 void CGlxCommandHandlerSlideshow::HandleItemRemovedL(TInt /*aStartIndex*/,
-            TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
+            TInt /*aEndIndex*/, MGlxMediaList* aList)
     {
+    if (aList->Count() <= 0 && iUiUtility->GetGridToolBar())
+        {
+        iUiUtility->GetGridToolBar()->SetItemDimmed(EGlxCmdSlideshowPlay,
+                ETrue, ETrue);
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -509,6 +523,19 @@
             EGlxCmdSlideshowPlay, visible );
     }    
     
+// ----------------------------------------------------------------------------
+// HandlePopulatedL
+// ----------------------------------------------------------------------------
+//
+void CGlxCommandHandlerSlideshow::HandlePopulatedL( MGlxMediaList* aList )
+    {
+    TRACER("CGlxCommandHandlerSlideshow::HandlePopulatedL()");
+    if (aList->Count() == 0 && iUiUtility->GetGridToolBar())
+        {
+        iUiUtility->GetGridToolBar()->SetItemDimmed(
+                EGlxCmdSlideshowPlay, ETrue, ETrue);
+        }
+    }
 
 // ---------------------------------------------------------------------------
 // PopulateToolbar
@@ -517,7 +544,8 @@
 void CGlxCommandHandlerSlideshow::PopulateToolbarL()
 	{
     TRACER("CGlxCommandHandlerSlideshow::PopulateToolbarL");
-	iUiUtility->ScreenFurniture()->SetTooltipL( EGlxCmdSlideshowPlay, CAknButton::EPositionLeft );
+    iUiUtility->ScreenFurniture()->SetTooltipL(EGlxCmdSlideshowPlay,
+            CAknButton::EPositionLeft);
 	}
 
 // End of File
--- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerupload.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerupload.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -118,8 +118,10 @@
 	iCurrentCenRepMonitor = EMonitorNone;
 	iTnmRequestID = KErrNotFound;
 	
+	iIsFullScreenView = IsFullScreenViewL();
+	
     //Check for fullscreen here since we dont get the activate call in FS.
-    if(IsFullScreenViewL())
+    if(iIsFullScreenView)
         {
         //Giving the viewid as zero, since its not used anywhere.
         iToolbar = iAvkonAppUi->CurrentFixedToolbar();        
@@ -271,7 +273,7 @@
     
     //Get the grid toolbar here as it wont be created yet in
     //constructor
-    if(!IsFullScreenViewL())
+    if(!iIsFullScreenView)
         {    
         iToolbar = iUiUtility->GetGridToolBar();        
         }
@@ -368,7 +370,7 @@
     
 	//When the Upload is not supported or if we are in grid view
 	//and none of the item is selected Dim the Upload icon
-	if(!iUploadSupported || (!IsFullScreenViewL() && 
+	if(!iUploadSupported || (!iIsFullScreenView && 
                                    (MediaList().SelectionCount()== 0)))
         {        
         DisableUploadToolbarItem(ETrue);
@@ -529,7 +531,7 @@
     {
 	TRACER("CGlxCommandHandlerUpload::HandleFocusChangedL");
     //In Fullscreen change the icons based on current focused icon
-    if(iUploadSupported && IsFullScreenViewL())
+    if(iUploadSupported && iIsFullScreenView)
         {
         UpdateFSUploadIconL();
         }
@@ -545,7 +547,7 @@
 	TRACER("CGlxCommandHandlerUpload::HandleItemSelectedL");
 	//In grid if an item is selected update the toolbar icon based on
 	//the mime types of items
-    if(iUploadSupported && !IsFullScreenViewL())
+    if(iUploadSupported && !iIsFullScreenView)
         {        
         if(aList->SelectionCount() >= 1 )
             {        
@@ -556,7 +558,11 @@
                 {
                 DecodeIconL(uploadIconFileName);
                 }
-            DisableUploadToolbarItem(EFalse);
+			//Enable the toolbar only once to avoid performance prb
+	        if(aList->SelectionCount() == 1 )
+				{
+            	DisableUploadToolbarItem(EFalse);
+				}
             }
         else
             {
@@ -589,7 +595,7 @@
     {
     if(aList && aList->Count() > 0)
         {
-        if(!iUploadSupported || !IsFullScreenViewL())
+        if(!iUploadSupported || !iIsFullScreenView)
             {
             DisableUploadToolbarItem(ETrue);
             }
--- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxdummydrmutility.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxdummydrmutility.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -48,7 +48,7 @@
     return ETrue;
     }    
     
-TBool CGlxDRMUtility::CanShowInfoOnlineL(TDesC& aUri)
+TBool CGlxDRMUtility::CanShowInfoOnlineL(const TDesC& aUri)
     {
     TBool hasInfo = EFalse;
     
@@ -60,7 +60,7 @@
     return hasInfo;
     }
     
-void CGlxDRMUtility::ShowInfoOnlineL(TDesC& /*aUri*/)
+void CGlxDRMUtility::ShowInfoOnlineL(const TDesC& /*aUri*/)
     {
     
     }
--- a/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/medialists/src/glxcachemanager.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -330,22 +330,19 @@
         RPointerArray< MGlxMediaUser > users;
         CleanupClosePushL( users );
         
-        // Record the error on all requested attributes
         TInt idCount = iRequestedItemIds.Count();
-        
-        for( TInt idIndex = 0; idIndex < idCount; idIndex++ )
-            {
-            CGlxMedia* item = MediaForceCreateL(aIdSpaceId, iRequestedItemIds[idIndex]);
-            GlxErrorManager::SetAttributeErrorL(item, iRequestedAttrs, aError);
-            
-            // Keep track of media lists to notify later
-            TInt userCount = item->UserCount();
-            for ( TInt userIndex = 0; userIndex < userCount; userIndex++ )
-                {
-                users.InsertInAddressOrder( &item->User( userIndex ) );
-                }
-            }
-
+        if(idCount)
+        	{       	
+			CGlxMedia* item = MediaForceCreateL(aIdSpaceId, iRequestedItemIds[0]);
+			GlxErrorManager::SetAttributeErrorL(item, iRequestedAttrs, aError);
+			
+			// Keep track of media lists to notify later
+			TInt userCount = item->UserCount();
+			for ( TInt userIndex = 0; userIndex < userCount; userIndex++ )
+				{
+				users.InsertInAddressOrder( &item->User( userIndex ) );
+				}
+        	}		
         // Notify all affected users of error
         TInt userCount = users.Count();
         for ( TInt i = 0; i < userCount; i++ )
--- a/photosgallery/viewframework/medialists/tsrc/ut_cglxattributecontext/ut_cglxattributecontext.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/medialists/tsrc/ut_cglxattributecontext/ut_cglxattributecontext.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -199,13 +199,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop( attributes );
+    CleanupStack::Pop( &attributes );
     attributes.Close();
 
-    CleanupStack::Pop( itemIndices );
+    CleanupStack::Pop( &itemIndices );
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy( mediaList );
+    CleanupStack::PopAndDestroy( &mediaList );
     }
 
 void UT_CGlxAttributeContext::FetchOneItem_IndexZeroL()
@@ -240,13 +240,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchOneItem_IndexOneL()
@@ -281,13 +281,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchOneItem_IndexTwoL()
@@ -322,13 +322,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchOneItem_IndexThreeL()
@@ -363,13 +363,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchOneItem_IndexFourL()
@@ -404,13 +404,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchItems_GranularityLessThanRange_IndexZeroL()
@@ -445,13 +445,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchItems_GranularityLessThanRange_IndexOneL()
@@ -486,13 +486,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemindices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchItems_GranularityLessThanRange_IndexTwoL()
@@ -527,13 +527,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchItems_GranularityLessThanRange_IndexThreeL()
@@ -568,13 +568,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchItems_GranularityLessThanRange_IndexFourL()
@@ -609,13 +609,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchItems_GranularityLessThanRange_IndexFiveL()
@@ -650,13 +650,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 void UT_CGlxAttributeContext::FetchItems_GranularityGreaterThanRangeL()
@@ -691,13 +691,13 @@
     delete attributeSpecs;
     attributeSpecs = NULL;
 
-    CleanupStack::Pop(attributes);
+    CleanupStack::Pop(&attributes);
     attributes.Close();
 
-    CleanupStack::Pop(itemIndices);
+    CleanupStack::Pop(&itemIndices);
     itemIndices.Close();
 
-    CleanupStack::PopAndDestroy(mediaList);
+    CleanupStack::PopAndDestroy(&mediaList);
     }
 
 TBool UT_CGlxAttributeContext::FindAttribute(RArray<TMPXAttribute>& aAttributes, const TMPXAttribute& aAttribute)
--- a/photosgallery/viewframework/medialists/tsrc/ut_cglxattributecontext/ut_cglxattributecontext.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/medialists/tsrc/ut_cglxattributecontext/ut_cglxattributecontext.h	Wed Apr 14 15:57:24 2010 +0300
@@ -149,7 +149,7 @@
     virtual void SetFocusInitialPosition(NGlxListDefs::TFocusInitialPosition /*aFocusInitialPosition*/) { };
     virtual void ResetFocus(){ };
     virtual void SetVisibleWindowIndexL( TInt /*aIndex*/) { };
-    virtual TInt VisibleWindowIndex() const { };
+    virtual TInt VisibleWindowIndex() const { return iFocusIndex;};
     virtual void CancelPreviousRequests() {};
 	private:
 		CGlxMediaListTest();
--- a/photosgallery/viewframework/tvout/group/glxtvout.mmp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/tvout/group/glxtvout.mmp	Wed Apr 14 15:57:24 2010 +0300
@@ -73,6 +73,7 @@
 LIBRARY         surfacemanager.lib				// surface manager
 LIBRARY         imageconversion.lib				// ICL 
 LIBRARY 	efsrv.lib
+LIBRARY		glxuiutilities.lib				// for GlxGeneralUiUtilities
 // Other Dependency Libraries
 #ifdef __MARM
 LIBRARY 		GSServerEngine.lib  // FOr AspectRatio
--- a/photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h	Wed Apr 14 15:57:24 2010 +0300
@@ -174,6 +174,7 @@
 	TBool iBitmapReady;
 	TBool iAutoZoomOut;
 	TBool iSurfSessionConnected;
+	TBool iShiftToCloning;
 #ifdef _DEBUG
     TTime iStartTime;
     TTime iStopTime;
--- a/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -24,6 +24,7 @@
 #include <fbs.h>
 #include <glxtracer.h>
 #include <glxlog.h>
+#include <glxgeneraluiutilities.h>
 
 #include "glxactivecallback.h"
 #include "glxhdmisurfaceupdater.h"
@@ -64,7 +65,7 @@
         {
         iWindow->RemoveBackgroundSurface(ETrue);
         }
-    if(iTimer->IsActive())
+	if(iTimer && iTimer->IsActive())	 	 	 // Check for a CPeriodic Instance
         {
         iTimer->Cancel();
         }
@@ -154,22 +155,25 @@
     User::LeaveIfError(error);
     
     iBitmapReady = EFalse;
+    iShiftToCloning = EFalse;
     // Create the active object
     iGlxDecoderAO = CGlxHdmiDecoderAO::NewL(this);
     CreateImageDecoderL(iImagePath);
     CreateBitmapL();
-    CreateHdmiL();
-    error = iSurfUpdateSession.Connect();
-    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() Surface update Session Connect error = %d", error);
-    User::LeaveIfError(error);
-    iSurfSessionConnected = ETrue;
-    
+    TRAP_IGNORE(CreateHdmiL());
+    if(iSurfManager)
+    	{
+		error = iSurfUpdateSession.Connect();
+		GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() Surface update Session Connect error = %d", error);
+		User::LeaveIfError(error);
+		iSurfSessionConnected = ETrue;
+		
 #ifdef _DEBUG
-    iStartTime.HomeTime();
+		iStartTime.HomeTime();
 #endif
-    //start decoding the image    
-    iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder);    
-    
+		//start decoding the image    
+		iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder);    
+    	}
     iLeftCornerForZoom.iX = 0; 
     iLeftCornerForZoom.iY = 0;
     iTimer = CPeriodic::NewL( CActive::EPriorityStandard );
@@ -195,12 +199,22 @@
     ReleaseContent();   
     CreateImageDecoderL(aImageFile);    
     CreateBitmapL();
-    CreateHdmiL(EFalse);
+    if(iSurfManager)
+    	{
+    	CreateHdmiL(EFalse);
+    	}
+    else
+    	{
+    	TRAP_IGNORE(CreateHdmiL(ETrue));
+    	}
 #ifdef _DEBUG
     iStartTime.HomeTime();
 #endif
-    //start decoding the image
-    iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder);
+    if(iSurfManager)
+    	{
+		//start decoding the image
+		iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder);
+    	}
     }
 
 // -----------------------------------------------------------------------------
@@ -249,6 +263,19 @@
         
     error = iSurfManager->CreateSurface(attributes, iSurfId);
     GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL, Creating surface error : %d",error);
+    if(error == KErrNoMemory)
+    	{
+    	GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::CreateSurfaceL(). iSurfManager->Close()"); 
+		iSurfManager->Close();
+		delete iSurfManager;
+		iSurfManager = NULL;
+    	if(iShiftToCloning == EFalse)
+    		{
+    		GlxGeneralUiUtilities::ShowErrorNoteL(error); // Show Low Memory Popup Once before shifting to Cloning Mode
+    		iShiftToCloning = ETrue;
+    		}
+    	ShiftToCloningMode();	 	 	 	 	 	 	  // Shift from Posting Mode to Cloning Mode
+    	}
     User::LeaveIfError(error);
         
     //Map the surface and stride the surface info
@@ -397,7 +424,7 @@
         GLX_LOG_INFO("HandleRunL - Convert failed");
         ShiftToCloningMode();
         }
-    else
+    else if(iSurfManager)
         {        
         iZoomRectSz = iDecodedBitmap->SizeInPixels();
         if (iSurfBufferAO->iStatus != KRequestPending
@@ -593,14 +620,18 @@
 void CGlxHdmiSurfaceUpdater::ShiftToPostingMode()
 	{
 	TRACER("CGlxHdmiSurfaceUpdater::ShiftToPostingMode()");
+	if(iSurfManager)
+		{
 #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);
+		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);
+		iWindow->SetBackgroundSurface(iConfig, ETrue);
+		iShiftToCloning = EFalse;
+		}
 	}
--- a/photosgallery/viewframework/uiutilities/bwins/glxuiutilitiesu.def	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/bwins/glxuiutilitiesu.def	Wed Apr 14 15:57:24 2010 +0300
@@ -2,65 +2,66 @@
 	?VisibleItemsInPageGranularityL@CGlxUiUtility@@QAEHXZ @ 1 NONAME ; int CGlxUiUtility::VisibleItemsInPageGranularityL(void)
 	?ViewNavigationDirection@CGlxUiUtility@@QAE?AW4TGlxNavigationDirection@@XZ @ 2 NONAME ; enum TGlxNavigationDirection CGlxUiUtility::ViewNavigationDirection(void)
 	?SetRotatedImageSize@CGlxUiUtility@@QAEXVTSize@@@Z @ 3 NONAME ; void CGlxUiUtility::SetRotatedImageSize(class TSize)
-	?NewL@CGlxScreenFurniture@@SAPAV1@AAVCGlxUiUtility@@@Z @ 4 NONAME ; class CGlxScreenFurniture * CGlxScreenFurniture::NewL(class CGlxUiUtility &)
-	?SetExitingState@CGlxUiUtility@@QAEXH@Z @ 5 NONAME ; void CGlxUiUtility::SetExitingState(int)
-	?GlxTextureManager@CGlxUiUtility@@QAEAAVCGlxTextureManager@@XZ @ 6 NONAME ; class CGlxTextureManager & CGlxUiUtility::GlxTextureManager(void)
-	?ExecuteLD@CGlxTextEntryPopup@@QAEHXZ @ 7 NONAME ; int CGlxTextEntryPopup::ExecuteLD(void)
-	?ShowErrorNoteL@GlxGeneralUiUtilities@@SAXH@Z @ 8 NONAME ; void GlxGeneralUiUtilities::ShowErrorNoteL(int)
-	?RegisterActiveMediaList@CGlxActiveMediaListRegistry@@QAEXPAVMGlxMediaList@@@Z @ 9 NONAME ; void CGlxActiveMediaListRegistry::RegisterActiveMediaList(class MGlxMediaList *)
-	?FormatString@GlxGeneralUiUtilities@@SAXAAVTDes16@@ABVTDesC16@@HHH@Z @ 10 NONAME ; void GlxGeneralUiUtilities::FormatString(class TDes16 &, class TDesC16 const &, int, int, int)
-	?AppOrientation@CGlxUiUtility@@QBE?AW4TGlxOrientation@@XZ @ 11 NONAME ; enum TGlxOrientation CGlxUiUtility::AppOrientation(void) const
-	?NewLC@CGlxScreenFurniture@@SAPAV1@AAVCGlxUiUtility@@@Z @ 12 NONAME ; class CGlxScreenFurniture * CGlxScreenFurniture::NewLC(class CGlxUiUtility &)
-	?ShowAlfDisplayL@CGlxUiUtility@@SAXXZ @ 13 NONAME ; void CGlxUiUtility::ShowAlfDisplayL(void)
-	?LayoutIsMirrored@GlxGeneralUiUtilities@@SAHXZ @ 14 NONAME ; int GlxGeneralUiUtilities::LayoutIsMirrored(void)
-	?IsLandscape@GlxGeneralUiUtilities@@SAHXZ @ 15 NONAME ; int GlxGeneralUiUtilities::IsLandscape(void)
-	?SetToolbarPosition@CGlxScreenFurniture@@QAEXXZ @ 16 NONAME ; void CGlxScreenFurniture::SetToolbarPosition(void)
-	?HandleTvStatusChangedL@CGlxUiUtility@@UAEXW4TTvChangeType@@@Z @ 17 NONAME ; void CGlxUiUtility::HandleTvStatusChangedL(enum TTvChangeType)
-	?ModifySoftkeyIdL@CGlxScreenFurniture@@QAEXW4TCommandPosition@CEikButtonGroupContainer@@HHABVTDesC16@@@Z @ 18 NONAME ; void CGlxScreenFurniture::ModifySoftkeyIdL(enum CEikButtonGroupContainer::TCommandPosition, int, int, class TDesC16 const &)
-	?Close@CGlxUiUtility@@QAEXXZ @ 19 NONAME ; void CGlxUiUtility::Close(void)
-	?ViewDeactivated@CGlxScreenFurniture@@QAEXH@Z @ 20 NONAME ; void CGlxScreenFurniture::ViewDeactivated(int)
-	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@AAV?$RPointerArray@VCAlfControlGroup@@@@@Z @ 21 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class RPointerArray<class CAlfControlGroup> &)
-	?AppState@GlxSetAppState@@SA?AW4TGlxAppState@@XZ @ 22 NONAME ; enum TGlxAppState GlxSetAppState::AppState(void)
-	?ShowInfoNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 23 NONAME ; void GlxGeneralUiUtilities::ShowInfoNoteL(class TDesC16 const &, int)
-	?RemoveSkinChangeObserver@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 24 NONAME ; void CGlxUiUtility::RemoveSkinChangeObserver(class MGlxSkinChangeObserver &)
-	?UtilityL@CGlxUiUtility@@SAPAV1@XZ @ 25 NONAME ; class CGlxUiUtility * CGlxUiUtility::UtilityL(void)
-	?HideAlfDisplayL@CGlxUiUtility@@SAXXZ @ 26 NONAME ; void CGlxUiUtility::HideAlfDisplayL(void)
-	?DisplaySize@CGlxUiUtility@@QBE?AVTSize@@XZ @ 27 NONAME ; class TSize CGlxUiUtility::DisplaySize(void) const
-	?ShowErrorNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 28 NONAME ; void GlxGeneralUiUtilities::ShowErrorNoteL(class TDesC16 const &, int)
-	?SetActiveView@CGlxScreenFurniture@@QAEXH@Z @ 29 NONAME ; void CGlxScreenFurniture::SetActiveView(int)
-	?SetState@GlxSetAppState@@SAXW4TGlxAppState@@@Z @ 30 NONAME ; void GlxSetAppState::SetState(enum TGlxAppState)
-	?SetLeftSoftKeyL@CGlxTextEntryPopup@@QAEXH@Z @ 31 NONAME ; void CGlxTextEntryPopup::SetLeftSoftKeyL(int)
-	?SetToolbarItemVisibility@CGlxScreenFurniture@@QAEXHH@Z @ 32 NONAME ; void CGlxScreenFurniture::SetToolbarItemVisibility(int, int)
-	?AddSkinChangeObserverL@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 33 NONAME ; void CGlxUiUtility::AddSkinChangeObserverL(class MGlxSkinChangeObserver &)
-	?SetTooltipL@CGlxScreenFurniture@@QAEXHW4TTooltipPosition@CAknButton@@ABVTDesC16@@@Z @ 34 NONAME ; void CGlxScreenFurniture::SetTooltipL(int, enum CAknButton::TTooltipPosition, class TDesC16 const &)
-	?GetRotatedImageSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 35 NONAME ; class TSize CGlxUiUtility::GetRotatedImageSize(void)
-	?SetToolbarVisibility@CGlxScreenFurniture@@QAEXH@Z @ 36 NONAME ; void CGlxScreenFurniture::SetToolbarVisibility(int)
-	?IsPenSupported@CGlxUiUtility@@QAEHXZ @ 37 NONAME ; int CGlxUiUtility::IsPenSupported(void)
-	?IsExitingState@CGlxUiUtility@@QAEHXZ @ 38 NONAME ; int CGlxUiUtility::IsExitingState(void)
-	?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 39 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int)
-	?TextStyleIdL@CGlxUiUtility@@QAEHHH@Z @ 40 NONAME ; int CGlxUiUtility::TextStyleIdL(int, int)
-	?InstanceL@CGlxActiveMediaListRegistry@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 41 NONAME ; class CGlxActiveMediaListRegistry * CGlxActiveMediaListRegistry::InstanceL(class MGlxActiveMediaListChangeObserver *)
-	?DeregisterActiveMediaList@CGlxActiveMediaListRegistry@@QAEXPAVMGlxMediaList@@@Z @ 42 NONAME ; void CGlxActiveMediaListRegistry::DeregisterActiveMediaList(class MGlxMediaList *)
-	?CreateImageLoadingAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@AAVCAlfVisual@@AAVCAlfTexture@@@Z @ 43 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateImageLoadingAnimationL(class CAlfVisual &, class CAlfTexture &)
-	?SetAppOrientationL@CGlxUiUtility@@QAEXW4TGlxOrientation@@@Z @ 44 NONAME ; void CGlxUiUtility::SetAppOrientationL(enum TGlxOrientation)
-	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHABVTDesC16@@@Z @ 45 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(class TDesC16 const &)
-	?SetToolbarItemDimmed@CGlxScreenFurniture@@QAEXHH@Z @ 46 NONAME ; void CGlxScreenFurniture::SetToolbarItemDimmed(int, int)
-	?NewL@CGlxTextEntryPopup@@SAPAV1@ABVTDesC16@@AAVTDes16@@@Z @ 47 NONAME ; class CGlxTextEntryPopup * CGlxTextEntryPopup::NewL(class TDesC16 const &, class TDes16 &)
-	?Display@CGlxUiUtility@@QBEPAVCAlfDisplay@@XZ @ 48 NONAME ; class CAlfDisplay * CGlxUiUtility::Display(void) const
-	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@PAVCAlfControlGroup@@@Z @ 49 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class CAlfControlGroup *)
-	?Env@CGlxUiUtility@@QBEPAVCAlfEnv@@XZ @ 50 NONAME ; class CAlfEnv * CGlxUiUtility::Env(void) const
-	?SetViewNavigationDirection@CGlxUiUtility@@QAEXW4TGlxNavigationDirection@@@Z @ 51 NONAME ; void CGlxUiUtility::SetViewNavigationDirection(enum TGlxNavigationDirection)
-	?ShowConfirmationNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 52 NONAME ; void GlxGeneralUiUtilities::ShowConfirmationNoteL(class TDesC16 const &, int)
-	?ScreenFurniture@CGlxUiUtility@@QAEPAVCGlxScreenFurniture@@XZ @ 53 NONAME ; class CGlxScreenFurniture * CGlxUiUtility::ScreenFurniture(void)
-	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHHABVTDesC16@@@Z @ 54 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(int, class TDesC16 const &)
-	?SetFocusL@CGlxScreenFurniture@@QAEXH@Z @ 55 NONAME ; void CGlxScreenFurniture::SetFocusL(int)
-	?GetGridIconSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 56 NONAME ; class TSize CGlxUiUtility::GetGridIconSize(void)
-	?InstanceL@MGlxActiveMediaListResolver@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 57 NONAME ; class MGlxActiveMediaListResolver * MGlxActiveMediaListResolver::InstanceL(class MGlxActiveMediaListChangeObserver *)
-	?GetItemsLeftCountL@CGlxUiUtility@@QAEHXZ @ 58 NONAME ; int CGlxUiUtility::GetItemsLeftCountL(void)
-	?StartTNMDaemonL@CGlxUiUtility@@QAEXXZ @ 59 NONAME ; void CGlxUiUtility::StartTNMDaemonL(void)
-	?NewL@CGlxProgressIndicator@@SAPAV1@AAVMDialogDismisedObserver@@@Z @ 60 NONAME ; class CGlxProgressIndicator * CGlxProgressIndicator::NewL(class MDialogDismisedObserver &)
-	?StopTNMDaemonL@CGlxUiUtility@@QAEXXZ @ 61 NONAME ; void CGlxUiUtility::StopTNMDaemonL(void)
-	?NewL@CGlxMMCNotifier@@SAPAV1@AAVMStorageNotifierObserver@@@Z @ 62 NONAME ; class CGlxMMCNotifier * CGlxMMCNotifier::NewL(class MStorageNotifierObserver &)
-	?SetGridToolBar@CGlxUiUtility@@QAEXPAVCAknToolbar@@@Z @ 63 NONAME ; void CGlxUiUtility::SetGridToolBar(class CAknToolbar *)
-	?GetGridToolBar@CGlxUiUtility@@QAEPAVCAknToolbar@@XZ @ 64 NONAME ; class CAknToolbar * CGlxUiUtility::GetGridToolBar(void)
+	?NewL@CGlxMMCNotifier@@SAPAV1@AAVMStorageNotifierObserver@@@Z @ 4 NONAME ; class CGlxMMCNotifier * CGlxMMCNotifier::NewL(class MStorageNotifierObserver &)
+	?NewL@CGlxScreenFurniture@@SAPAV1@AAVCGlxUiUtility@@@Z @ 5 NONAME ; class CGlxScreenFurniture * CGlxScreenFurniture::NewL(class CGlxUiUtility &)
+	?SetExitingState@CGlxUiUtility@@QAEXH@Z @ 6 NONAME ; void CGlxUiUtility::SetExitingState(int)
+	?GlxTextureManager@CGlxUiUtility@@QAEAAVCGlxTextureManager@@XZ @ 7 NONAME ; class CGlxTextureManager & CGlxUiUtility::GlxTextureManager(void)
+	?ExecuteLD@CGlxTextEntryPopup@@QAEHXZ @ 8 NONAME ; int CGlxTextEntryPopup::ExecuteLD(void)
+	?ShowErrorNoteL@GlxGeneralUiUtilities@@SAXH@Z @ 9 NONAME ; void GlxGeneralUiUtilities::ShowErrorNoteL(int)
+	?RegisterActiveMediaList@CGlxActiveMediaListRegistry@@QAEXPAVMGlxMediaList@@@Z @ 10 NONAME ; void CGlxActiveMediaListRegistry::RegisterActiveMediaList(class MGlxMediaList *)
+	?FormatString@GlxGeneralUiUtilities@@SAXAAVTDes16@@ABVTDesC16@@HHH@Z @ 11 NONAME ; void GlxGeneralUiUtilities::FormatString(class TDes16 &, class TDesC16 const &, int, int, int)
+	?AppOrientation@CGlxUiUtility@@QBE?AW4TGlxOrientation@@XZ @ 12 NONAME ; enum TGlxOrientation CGlxUiUtility::AppOrientation(void) const
+	?StopTNMDaemon@CGlxUiUtility@@QAEHXZ @ 13 NONAME ; int CGlxUiUtility::StopTNMDaemon(void)
+	?NewLC@CGlxScreenFurniture@@SAPAV1@AAVCGlxUiUtility@@@Z @ 14 NONAME ; class CGlxScreenFurniture * CGlxScreenFurniture::NewLC(class CGlxUiUtility &)
+	?ShowAlfDisplayL@CGlxUiUtility@@SAXXZ @ 15 NONAME ; void CGlxUiUtility::ShowAlfDisplayL(void)
+	?LayoutIsMirrored@GlxGeneralUiUtilities@@SAHXZ @ 16 NONAME ; int GlxGeneralUiUtilities::LayoutIsMirrored(void)
+	?IsLandscape@GlxGeneralUiUtilities@@SAHXZ @ 17 NONAME ; int GlxGeneralUiUtilities::IsLandscape(void)
+	?SetToolbarPosition@CGlxScreenFurniture@@QAEXXZ @ 18 NONAME ; void CGlxScreenFurniture::SetToolbarPosition(void)
+	?HandleTvStatusChangedL@CGlxUiUtility@@UAEXW4TTvChangeType@@@Z @ 19 NONAME ; void CGlxUiUtility::HandleTvStatusChangedL(enum TTvChangeType)
+	?ModifySoftkeyIdL@CGlxScreenFurniture@@QAEXW4TCommandPosition@CEikButtonGroupContainer@@HHABVTDesC16@@@Z @ 20 NONAME ; void CGlxScreenFurniture::ModifySoftkeyIdL(enum CEikButtonGroupContainer::TCommandPosition, int, int, class TDesC16 const &)
+	?Close@CGlxUiUtility@@QAEXXZ @ 21 NONAME ; void CGlxUiUtility::Close(void)
+	?ViewDeactivated@CGlxScreenFurniture@@QAEXH@Z @ 22 NONAME ; void CGlxScreenFurniture::ViewDeactivated(int)
+	?GetItemsLeftCount@CGlxUiUtility@@QAEHXZ @ 23 NONAME ; int CGlxUiUtility::GetItemsLeftCount(void)
+	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@AAV?$RPointerArray@VCAlfControlGroup@@@@@Z @ 24 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class RPointerArray<class CAlfControlGroup> &)
+	?ShowProgressbarL@CGlxProgressIndicator@@QAEXXZ @ 25 NONAME ; void CGlxProgressIndicator::ShowProgressbarL(void)
+	?SetGridToolBar@CGlxUiUtility@@QAEXPAVCAknToolbar@@@Z @ 26 NONAME ; void CGlxUiUtility::SetGridToolBar(class CAknToolbar *)
+	?AppState@GlxSetAppState@@SA?AW4TGlxAppState@@XZ @ 27 NONAME ; enum TGlxAppState GlxSetAppState::AppState(void)
+	?ShowInfoNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 28 NONAME ; void GlxGeneralUiUtilities::ShowInfoNoteL(class TDesC16 const &, int)
+	?RemoveSkinChangeObserver@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 29 NONAME ; void CGlxUiUtility::RemoveSkinChangeObserver(class MGlxSkinChangeObserver &)
+	?UtilityL@CGlxUiUtility@@SAPAV1@XZ @ 30 NONAME ; class CGlxUiUtility * CGlxUiUtility::UtilityL(void)
+	?StartTNMDaemon@CGlxUiUtility@@QAEHXZ @ 31 NONAME ; int CGlxUiUtility::StartTNMDaemon(void)
+	?HideAlfDisplayL@CGlxUiUtility@@SAXXZ @ 32 NONAME ; void CGlxUiUtility::HideAlfDisplayL(void)
+	?DisplaySize@CGlxUiUtility@@QBE?AVTSize@@XZ @ 33 NONAME ; class TSize CGlxUiUtility::DisplaySize(void) const
+	?ShowErrorNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 34 NONAME ; void GlxGeneralUiUtilities::ShowErrorNoteL(class TDesC16 const &, int)
+	?SetActiveView@CGlxScreenFurniture@@QAEXH@Z @ 35 NONAME ; void CGlxScreenFurniture::SetActiveView(int)
+	?SetState@GlxSetAppState@@SAXW4TGlxAppState@@@Z @ 36 NONAME ; void GlxSetAppState::SetState(enum TGlxAppState)
+	?SetLeftSoftKeyL@CGlxTextEntryPopup@@QAEXH@Z @ 37 NONAME ; void CGlxTextEntryPopup::SetLeftSoftKeyL(int)
+	?GetGridToolBar@CGlxUiUtility@@QAEPAVCAknToolbar@@XZ @ 38 NONAME ; class CAknToolbar * CGlxUiUtility::GetGridToolBar(void)
+	?SetToolbarItemVisibility@CGlxScreenFurniture@@QAEXHH@Z @ 39 NONAME ; void CGlxScreenFurniture::SetToolbarItemVisibility(int, int)
+	?AddSkinChangeObserverL@CGlxUiUtility@@QAEXAAVMGlxSkinChangeObserver@@@Z @ 40 NONAME ; void CGlxUiUtility::AddSkinChangeObserverL(class MGlxSkinChangeObserver &)
+	?SetTooltipL@CGlxScreenFurniture@@QAEXHW4TTooltipPosition@CAknButton@@ABVTDesC16@@@Z @ 41 NONAME ; void CGlxScreenFurniture::SetTooltipL(int, enum CAknButton::TTooltipPosition, class TDesC16 const &)
+	?GetRotatedImageSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 42 NONAME ; class TSize CGlxUiUtility::GetRotatedImageSize(void)
+	?SetToolbarVisibility@CGlxScreenFurniture@@QAEXH@Z @ 43 NONAME ; void CGlxScreenFurniture::SetToolbarVisibility(int)
+	?IsPenSupported@CGlxUiUtility@@QAEHXZ @ 44 NONAME ; int CGlxUiUtility::IsPenSupported(void)
+	?IsExitingState@CGlxUiUtility@@QAEHXZ @ 45 NONAME ; int CGlxUiUtility::IsExitingState(void)
+	?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 46 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int)
+	?TextStyleIdL@CGlxUiUtility@@QAEHHH@Z @ 47 NONAME ; int CGlxUiUtility::TextStyleIdL(int, int)
+	?InstanceL@CGlxActiveMediaListRegistry@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 48 NONAME ; class CGlxActiveMediaListRegistry * CGlxActiveMediaListRegistry::InstanceL(class MGlxActiveMediaListChangeObserver *)
+	?DeregisterActiveMediaList@CGlxActiveMediaListRegistry@@QAEXPAVMGlxMediaList@@@Z @ 49 NONAME ; void CGlxActiveMediaListRegistry::DeregisterActiveMediaList(class MGlxMediaList *)
+	?CreateImageLoadingAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@AAVCAlfVisual@@AAVCAlfTexture@@@Z @ 50 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateImageLoadingAnimationL(class CAlfVisual &, class CAlfTexture &)
+	?SetAppOrientationL@CGlxUiUtility@@QAEXW4TGlxOrientation@@@Z @ 51 NONAME ; void CGlxUiUtility::SetAppOrientationL(enum TGlxOrientation)
+	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHABVTDesC16@@@Z @ 52 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(class TDesC16 const &)
+	?SetToolbarItemDimmed@CGlxScreenFurniture@@QAEXHH@Z @ 53 NONAME ; void CGlxScreenFurniture::SetToolbarItemDimmed(int, int)
+	?NewL@CGlxTextEntryPopup@@SAPAV1@ABVTDesC16@@AAVTDes16@@@Z @ 54 NONAME ; class CGlxTextEntryPopup * CGlxTextEntryPopup::NewL(class TDesC16 const &, class TDes16 &)
+	?Display@CGlxUiUtility@@QBEPAVCAlfDisplay@@XZ @ 55 NONAME ; class CAlfDisplay * CGlxUiUtility::Display(void) const
+	?CreateViewAnimationL@GlxAnimationFactory@@SAPAVMGlxAnimation@@W4TGlxViewswitchAnimation@@W4TGlxNavigationDirection@@PAVCAlfControlGroup@@@Z @ 56 NONAME ; class MGlxAnimation * GlxAnimationFactory::CreateViewAnimationL(enum TGlxViewswitchAnimation, enum TGlxNavigationDirection, class CAlfControlGroup *)
+	?Env@CGlxUiUtility@@QBEPAVCAlfEnv@@XZ @ 57 NONAME ; class CAlfEnv * CGlxUiUtility::Env(void) const
+	?NewL@CGlxProgressIndicator@@SAPAV1@AAVMDialogDismisedObserver@@@Z @ 58 NONAME ; class CGlxProgressIndicator * CGlxProgressIndicator::NewL(class MDialogDismisedObserver &)
+	?SetViewNavigationDirection@CGlxUiUtility@@QAEXW4TGlxNavigationDirection@@@Z @ 59 NONAME ; void CGlxUiUtility::SetViewNavigationDirection(enum TGlxNavigationDirection)
+	?ShowConfirmationNoteL@GlxGeneralUiUtilities@@SAXABVTDesC16@@H@Z @ 60 NONAME ; void GlxGeneralUiUtilities::ShowConfirmationNoteL(class TDesC16 const &, int)
+	?ScreenFurniture@CGlxUiUtility@@QAEPAVCGlxScreenFurniture@@XZ @ 61 NONAME ; class CGlxScreenFurniture * CGlxUiUtility::ScreenFurniture(void)
+	?ConfirmQueryL@GlxGeneralUiUtilities@@SAHHABVTDesC16@@@Z @ 62 NONAME ; int GlxGeneralUiUtilities::ConfirmQueryL(int, class TDesC16 const &)
+	?SetFocusL@CGlxScreenFurniture@@QAEXH@Z @ 63 NONAME ; void CGlxScreenFurniture::SetFocusL(int)
+	?GetGridIconSize@CGlxUiUtility@@QAE?AVTSize@@XZ @ 64 NONAME ; class TSize CGlxUiUtility::GetGridIconSize(void)
+	?InstanceL@MGlxActiveMediaListResolver@@SAPAV1@PAVMGlxActiveMediaListChangeObserver@@@Z @ 65 NONAME ; class MGlxActiveMediaListResolver * MGlxActiveMediaListResolver::InstanceL(class MGlxActiveMediaListChangeObserver *)
 
--- a/photosgallery/viewframework/uiutilities/eabi/glxuiutilitiesu.def	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/eabi/glxuiutilitiesu.def	Wed Apr 14 15:57:24 2010 +0300
@@ -1,87 +1,88 @@
 EXPORTS
 	_ZN13CGlxUiUtility12TextStyleIdLEii @ 1 NONAME
-	_ZN13CGlxUiUtility14IsExitingStateEv @ 2 NONAME
-	_ZN13CGlxUiUtility14IsPenSupportedEv @ 3 NONAME
-	_ZN13CGlxUiUtility15GetGridIconSizeEv @ 4 NONAME
-	_ZN13CGlxUiUtility15HideAlfDisplayLEv @ 5 NONAME
-	_ZN13CGlxUiUtility15ScreenFurnitureEv @ 6 NONAME
-	_ZN13CGlxUiUtility15SetExitingStateEi @ 7 NONAME
-	_ZN13CGlxUiUtility15ShowAlfDisplayLEv @ 8 NONAME
-	_ZN13CGlxUiUtility17GlxTextureManagerEv @ 9 NONAME
-	_ZN13CGlxUiUtility18SetAppOrientationLE15TGlxOrientation @ 10 NONAME
-	_ZN13CGlxUiUtility19GetRotatedImageSizeEv @ 11 NONAME
-	_ZN13CGlxUiUtility19SetRotatedImageSizeE5TSize @ 12 NONAME
-	_ZN13CGlxUiUtility22AddSkinChangeObserverLER22MGlxSkinChangeObserver @ 13 NONAME
-	_ZN13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 14 NONAME
-	_ZN13CGlxUiUtility23ViewNavigationDirectionEv @ 15 NONAME
-	_ZN13CGlxUiUtility24RemoveSkinChangeObserverER22MGlxSkinChangeObserver @ 16 NONAME
-	_ZN13CGlxUiUtility26SetViewNavigationDirectionE23TGlxNavigationDirection @ 17 NONAME
-	_ZN13CGlxUiUtility30VisibleItemsInPageGranularityLEv @ 18 NONAME
-	_ZN13CGlxUiUtility5CloseEv @ 19 NONAME
-	_ZN13CGlxUiUtility8UtilityLEv @ 20 NONAME
-	_ZN14GlxSetAppState8AppStateEv @ 21 NONAME
-	_ZN14GlxSetAppState8SetStateE12TGlxAppState @ 22 NONAME
-	_ZN18CGlxTextEntryPopup15SetLeftSoftKeyLEi @ 23 NONAME
-	_ZN18CGlxTextEntryPopup4NewLERK7TDesC16R6TDes16 @ 24 NONAME
-	_ZN18CGlxTextEntryPopup9ExecuteLDEv @ 25 NONAME
-	_ZN19CGlxScreenFurniture11SetTooltipLEiN10CAknButton16TTooltipPositionERK7TDesC16 @ 26 NONAME
-	_ZN19CGlxScreenFurniture13SetActiveViewEi @ 27 NONAME
-	_ZN19CGlxScreenFurniture15ViewDeactivatedEi @ 28 NONAME
-	_ZN19CGlxScreenFurniture16ModifySoftkeyIdLEN24CEikButtonGroupContainer16TCommandPositionEiiRK7TDesC16 @ 29 NONAME
-	_ZN19CGlxScreenFurniture18SetToolbarPositionEv @ 30 NONAME
-	_ZN19CGlxScreenFurniture20SetToolbarItemDimmedEii @ 31 NONAME
-	_ZN19CGlxScreenFurniture20SetToolbarVisibilityEi @ 32 NONAME
-	_ZN19CGlxScreenFurniture24SetToolbarItemVisibilityEii @ 33 NONAME
-	_ZN19CGlxScreenFurniture4NewLER13CGlxUiUtility @ 34 NONAME
-	_ZN19CGlxScreenFurniture5NewLCER13CGlxUiUtility @ 35 NONAME
-	_ZN19CGlxScreenFurniture9SetFocusLEi @ 36 NONAME
-	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionP16CAlfControlGroup @ 37 NONAME
-	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionR13RPointerArrayI16CAlfControlGroupE @ 38 NONAME
-	_ZN19GlxAnimationFactory28CreateImageLoadingAnimationLER10CAlfVisualR11CAlfTexture @ 39 NONAME
-	_ZN21GlxAttributeRetriever9RetrieveLERK16MGlxFetchContextR13MGlxMediaListi @ 40 NONAME
-	_ZN21GlxGeneralUiUtilities11IsLandscapeEv @ 41 NONAME
-	_ZN21GlxGeneralUiUtilities12FormatStringER6TDes16RK7TDesC16iii @ 42 NONAME
-	_ZN21GlxGeneralUiUtilities13ConfirmQueryLERK7TDesC16 @ 43 NONAME
-	_ZN21GlxGeneralUiUtilities13ConfirmQueryLEiRK7TDesC16 @ 44 NONAME
-	_ZN21GlxGeneralUiUtilities13ShowInfoNoteLERK7TDesC16i @ 45 NONAME
-	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLERK7TDesC16i @ 46 NONAME
-	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLEi @ 47 NONAME
-	_ZN21GlxGeneralUiUtilities16LayoutIsMirroredEv @ 48 NONAME
-	_ZN21GlxGeneralUiUtilities21ShowConfirmationNoteLERK7TDesC16i @ 49 NONAME
-	_ZN27CGlxActiveMediaListRegistry23RegisterActiveMediaListEP13MGlxMediaList @ 50 NONAME
-	_ZN27CGlxActiveMediaListRegistry25DeregisterActiveMediaListEP13MGlxMediaList @ 51 NONAME
-	_ZN27CGlxActiveMediaListRegistry9InstanceLEP33MGlxActiveMediaListChangeObserver @ 52 NONAME
-	_ZN27MGlxActiveMediaListResolver9InstanceLEP33MGlxActiveMediaListChangeObserver @ 53 NONAME
-	_ZNK13CGlxUiUtility11DisplaySizeEv @ 54 NONAME
-	_ZNK13CGlxUiUtility14AppOrientationEv @ 55 NONAME
-	_ZNK13CGlxUiUtility3EnvEv @ 56 NONAME
-	_ZNK13CGlxUiUtility7DisplayEv @ 57 NONAME
-	_ZTI13CGlxUiUtility @ 58 NONAME
-	_ZTI17CGlxAnimationView @ 59 NONAME
-	_ZTI18CGlxAnimationTimed @ 60 NONAME
-	_ZTI18CGlxTextEntryPopup @ 61 NONAME
-	_ZTI21CGlxSkinChangeMonitor @ 62 NONAME
-	_ZTI25CGlxAnimationImageLoading @ 63 NONAME
-	_ZTI32CGlxWaitDialogAttributeRetriever @ 64 NONAME
-	_ZTI33CGlxSynchronousAttributeRetriever @ 65 NONAME
-	_ZTV13CGlxUiUtility @ 66 NONAME
-	_ZTV17CGlxAnimationView @ 67 NONAME
-	_ZTV18CGlxAnimationTimed @ 68 NONAME
-	_ZTV18CGlxTextEntryPopup @ 69 NONAME
-	_ZTV21CGlxSkinChangeMonitor @ 70 NONAME
-	_ZTV25CGlxAnimationImageLoading @ 71 NONAME
-	_ZTV32CGlxWaitDialogAttributeRetriever @ 72 NONAME
-	_ZTV33CGlxSynchronousAttributeRetriever @ 73 NONAME
-	_ZThn4_N13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 74 NONAME
-	_ZN13CGlxUiUtility15StartTNMDaemonLEv @ 75 NONAME
-	_ZN13CGlxUiUtility18GetItemsLeftCountLEv @ 76 NONAME
-	_ZN21CGlxProgressIndicator4NewLER23MDialogDismisedObserver @ 77 NONAME
-	_ZTI21CGlxProgressIndicator @ 78 NONAME
-	_ZTV21CGlxProgressIndicator @ 79 NONAME
-	_ZN13CGlxUiUtility14StopTNMDaemonLEv @ 80 NONAME
-	_ZN15CGlxMMCNotifier4NewLER24MStorageNotifierObserver @ 81 NONAME
-	_ZTI15CGlxMMCNotifier @ 82 NONAME
-	_ZTV15CGlxMMCNotifier @ 83 NONAME
-	_ZN13CGlxUiUtility14GetGridToolBarEv @ 84 NONAME
-	_ZN13CGlxUiUtility14SetGridToolBarEP11CAknToolbar @ 85 NONAME
+	_ZN13CGlxUiUtility13StopTNMDaemonEv @ 2 NONAME
+	_ZN13CGlxUiUtility14GetGridToolBarEv @ 3 NONAME
+	_ZN13CGlxUiUtility14IsExitingStateEv @ 4 NONAME
+	_ZN13CGlxUiUtility14IsPenSupportedEv @ 5 NONAME
+	_ZN13CGlxUiUtility14SetGridToolBarEP11CAknToolbar @ 6 NONAME
+	_ZN13CGlxUiUtility14StartTNMDaemonEv @ 7 NONAME
+	_ZN13CGlxUiUtility15GetGridIconSizeEv @ 8 NONAME
+	_ZN13CGlxUiUtility15HideAlfDisplayLEv @ 9 NONAME
+	_ZN13CGlxUiUtility15ScreenFurnitureEv @ 10 NONAME
+	_ZN13CGlxUiUtility15SetExitingStateEi @ 11 NONAME
+	_ZN13CGlxUiUtility15ShowAlfDisplayLEv @ 12 NONAME
+	_ZN13CGlxUiUtility17GetItemsLeftCountEv @ 13 NONAME
+	_ZN13CGlxUiUtility17GlxTextureManagerEv @ 14 NONAME
+	_ZN13CGlxUiUtility18SetAppOrientationLE15TGlxOrientation @ 15 NONAME
+	_ZN13CGlxUiUtility19GetRotatedImageSizeEv @ 16 NONAME
+	_ZN13CGlxUiUtility19SetRotatedImageSizeE5TSize @ 17 NONAME
+	_ZN13CGlxUiUtility22AddSkinChangeObserverLER22MGlxSkinChangeObserver @ 18 NONAME
+	_ZN13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 19 NONAME
+	_ZN13CGlxUiUtility23ViewNavigationDirectionEv @ 20 NONAME
+	_ZN13CGlxUiUtility24RemoveSkinChangeObserverER22MGlxSkinChangeObserver @ 21 NONAME
+	_ZN13CGlxUiUtility26SetViewNavigationDirectionE23TGlxNavigationDirection @ 22 NONAME
+	_ZN13CGlxUiUtility30VisibleItemsInPageGranularityLEv @ 23 NONAME
+	_ZN13CGlxUiUtility5CloseEv @ 24 NONAME
+	_ZN13CGlxUiUtility8UtilityLEv @ 25 NONAME
+	_ZN14GlxSetAppState8AppStateEv @ 26 NONAME
+	_ZN14GlxSetAppState8SetStateE12TGlxAppState @ 27 NONAME
+	_ZN15CGlxMMCNotifier4NewLER24MStorageNotifierObserver @ 28 NONAME
+	_ZN18CGlxTextEntryPopup15SetLeftSoftKeyLEi @ 29 NONAME
+	_ZN18CGlxTextEntryPopup4NewLERK7TDesC16R6TDes16 @ 30 NONAME
+	_ZN18CGlxTextEntryPopup9ExecuteLDEv @ 31 NONAME
+	_ZN19CGlxScreenFurniture11SetTooltipLEiN10CAknButton16TTooltipPositionERK7TDesC16 @ 32 NONAME
+	_ZN19CGlxScreenFurniture13SetActiveViewEi @ 33 NONAME
+	_ZN19CGlxScreenFurniture15ViewDeactivatedEi @ 34 NONAME
+	_ZN19CGlxScreenFurniture16ModifySoftkeyIdLEN24CEikButtonGroupContainer16TCommandPositionEiiRK7TDesC16 @ 35 NONAME
+	_ZN19CGlxScreenFurniture18SetToolbarPositionEv @ 36 NONAME
+	_ZN19CGlxScreenFurniture20SetToolbarItemDimmedEii @ 37 NONAME
+	_ZN19CGlxScreenFurniture20SetToolbarVisibilityEi @ 38 NONAME
+	_ZN19CGlxScreenFurniture24SetToolbarItemVisibilityEii @ 39 NONAME
+	_ZN19CGlxScreenFurniture4NewLER13CGlxUiUtility @ 40 NONAME
+	_ZN19CGlxScreenFurniture5NewLCER13CGlxUiUtility @ 41 NONAME
+	_ZN19CGlxScreenFurniture9SetFocusLEi @ 42 NONAME
+	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionP16CAlfControlGroup @ 43 NONAME
+	_ZN19GlxAnimationFactory20CreateViewAnimationLE23TGlxViewswitchAnimation23TGlxNavigationDirectionR13RPointerArrayI16CAlfControlGroupE @ 44 NONAME
+	_ZN19GlxAnimationFactory28CreateImageLoadingAnimationLER10CAlfVisualR11CAlfTexture @ 45 NONAME
+	_ZN21CGlxProgressIndicator16ShowProgressbarLEv @ 46 NONAME
+	_ZN21CGlxProgressIndicator4NewLER23MDialogDismisedObserver @ 47 NONAME
+	_ZN21GlxAttributeRetriever9RetrieveLERK16MGlxFetchContextR13MGlxMediaListi @ 48 NONAME
+	_ZN21GlxGeneralUiUtilities11IsLandscapeEv @ 49 NONAME
+	_ZN21GlxGeneralUiUtilities12FormatStringER6TDes16RK7TDesC16iii @ 50 NONAME
+	_ZN21GlxGeneralUiUtilities13ConfirmQueryLERK7TDesC16 @ 51 NONAME
+	_ZN21GlxGeneralUiUtilities13ConfirmQueryLEiRK7TDesC16 @ 52 NONAME
+	_ZN21GlxGeneralUiUtilities13ShowInfoNoteLERK7TDesC16i @ 53 NONAME
+	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLERK7TDesC16i @ 54 NONAME
+	_ZN21GlxGeneralUiUtilities14ShowErrorNoteLEi @ 55 NONAME
+	_ZN21GlxGeneralUiUtilities16LayoutIsMirroredEv @ 56 NONAME
+	_ZN21GlxGeneralUiUtilities21ShowConfirmationNoteLERK7TDesC16i @ 57 NONAME
+	_ZN27CGlxActiveMediaListRegistry23RegisterActiveMediaListEP13MGlxMediaList @ 58 NONAME
+	_ZN27CGlxActiveMediaListRegistry25DeregisterActiveMediaListEP13MGlxMediaList @ 59 NONAME
+	_ZN27CGlxActiveMediaListRegistry9InstanceLEP33MGlxActiveMediaListChangeObserver @ 60 NONAME
+	_ZN27MGlxActiveMediaListResolver9InstanceLEP33MGlxActiveMediaListChangeObserver @ 61 NONAME
+	_ZNK13CGlxUiUtility11DisplaySizeEv @ 62 NONAME
+	_ZNK13CGlxUiUtility14AppOrientationEv @ 63 NONAME
+	_ZNK13CGlxUiUtility3EnvEv @ 64 NONAME
+	_ZNK13CGlxUiUtility7DisplayEv @ 65 NONAME
+	_ZTI13CGlxUiUtility @ 66 NONAME
+	_ZTI15CGlxMMCNotifier @ 67 NONAME
+	_ZTI17CGlxAnimationView @ 68 NONAME
+	_ZTI18CGlxAnimationTimed @ 69 NONAME
+	_ZTI18CGlxTextEntryPopup @ 70 NONAME
+	_ZTI21CGlxProgressIndicator @ 71 NONAME
+	_ZTI21CGlxSkinChangeMonitor @ 72 NONAME
+	_ZTI25CGlxAnimationImageLoading @ 73 NONAME
+	_ZTI32CGlxWaitDialogAttributeRetriever @ 74 NONAME
+	_ZTI33CGlxSynchronousAttributeRetriever @ 75 NONAME
+	_ZTV13CGlxUiUtility @ 76 NONAME
+	_ZTV15CGlxMMCNotifier @ 77 NONAME
+	_ZTV17CGlxAnimationView @ 78 NONAME
+	_ZTV18CGlxAnimationTimed @ 79 NONAME
+	_ZTV18CGlxTextEntryPopup @ 80 NONAME
+	_ZTV21CGlxProgressIndicator @ 81 NONAME
+	_ZTV21CGlxSkinChangeMonitor @ 82 NONAME
+	_ZTV25CGlxAnimationImageLoading @ 83 NONAME
+	_ZTV32CGlxWaitDialogAttributeRetriever @ 84 NONAME
+	_ZTV33CGlxSynchronousAttributeRetriever @ 85 NONAME
+	_ZThn4_N13CGlxUiUtility22HandleTvStatusChangedLE13TTvChangeType @ 86 NONAME
 
--- a/photosgallery/viewframework/uiutilities/inc/glxprogressindicator.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/inc/glxprogressindicator.h	Wed Apr 14 15:57:24 2010 +0300
@@ -19,10 +19,11 @@
 #define GLXPROGRESSINDICATOR_H_
 
 #include <e32base.h>
-#include <aknwaitdialog.h>
+#include <AknWaitDialog.h>
 
 class CAknProgressDialog;
 class CEikProgressInfo;
+class CGlxUiUtility;
 
 class MDialogDismisedObserver
     {
@@ -57,13 +58,17 @@
      * calculates how much increment to be done in progress bar
      * @return increment value
      */
-    TInt CalculateDisplayBarIncrementL();
+    TInt CalculateDisplayBarIncrement();
 public:
     // Callback for periodic timer, static, 
     static TInt PeriodicCallbackL( TAny* aPtr );
     
     //nonstatic func called from periodic timer
     void DisplayProgressBarL();
+    
+    //show progress bar
+    IMPORT_C void ShowProgressbarL();
+    
 protected://MProgressDialogCallback
     void DialogDismissedL (TInt aButtonId);
     
@@ -80,6 +85,7 @@
     //final count to set in progress bar
     TInt iFinalCount;
     MDialogDismisedObserver&  iGlxGridViewNotifyObserver;
+    CGlxUiUtility* iUiUtility;
 
     };
 #endif /* GLXPROGRESSINDICATOR_H_ */
--- a/photosgallery/viewframework/uiutilities/inc/glxuiutility.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/inc/glxuiutility.h	Wed Apr 14 15:57:24 2010 +0300
@@ -199,22 +199,22 @@
 	/**
 	* Forcibly start the Thumbnail Manager daemon process
 	* @param none
-	* @return none
+	* @return TInt
 	*/
-    IMPORT_C void StartTNMDaemonL();
+    IMPORT_C TInt StartTNMDaemon();
 
 	/**
 	* To stop the Thumbnail Manager daemon process so as to stop force generation of thumbnails
 	* @param none
-	* @return none
+	* @return TInt
 	*/
-	IMPORT_C void StopTNMDaemonL();
+	IMPORT_C TInt StopTNMDaemon();
 
     /**
      * Get the number of items left for Thumbnail generation
      * @return TInt number of items left for TN generation
      */
-    IMPORT_C TInt GetItemsLeftCountL();
+    IMPORT_C TInt GetItemsLeftCount();
     /**
      * Returns Visible items granularity based on feature 
      * layout (i.e., qHD, VGA)  
--- a/photosgallery/viewframework/uiutilities/src/glxprogressindicator.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/src/glxprogressindicator.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -72,7 +72,7 @@
 CGlxProgressIndicator::~CGlxProgressIndicator()
     {
     TRACER("CGlxProgressIndicator::~CGlxProgressIndicator()");
-    if (iProgressbarTicker && iProgressbarTicker->IsActive())
+    if (iProgressbarTicker)
         {
         iProgressbarTicker->Cancel();
         delete iProgressbarTicker;
@@ -83,13 +83,11 @@
         }
 
 	// Stop force generation of thumbnails when progress dialog is dismissed
-	CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
-    CleanupClosePushL(*uiUtility);
-	if ( uiUtility )
-		{
-		uiUtility->StopTNMDaemonL();
-		}
-    CleanupStack::PopAndDestroy(uiUtility);
+    if (iUiUtility)
+        {
+        iUiUtility->StopTNMDaemon();
+        iUiUtility->Close();
+        }
     }
 
 // ---------------------------------------------------------
@@ -99,39 +97,16 @@
 void CGlxProgressIndicator::ConstructL()
     {
     TRACER("CGlxProgressIndicator::ConstructL()");
-    CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
-    CleanupClosePushL(*uiUtility);
-    TRAPD(err,uiUtility->StartTNMDaemonL());
+    iUiUtility->StartTNMDaemon();
 
-    if(err != KErrNone)
-        {
-        GLX_LOG_INFO1("CGlxProgressIndicator RProperty::Set errorcode %d",err);
-        //need to check what to do in fail cases
-        }
     if(!iProgressbarTicker)
         {
         iProgressbarTicker = CPeriodic::NewL(CActive::EPriorityStandard);
         }
 
-    iFinalCount = uiUtility->GetItemsLeftCountL();
+    iFinalCount = iUiUtility->GetItemsLeftCount();
     GLX_LOG_INFO1("final count in viewactivate = %d",iFinalCount);
-    
 
-    if(iFinalCount)
-        {
-        StartProgressNoteL(iFinalCount,ETrue);
-        if ( !iProgressbarTicker->IsActive())
-            {
-            iProgressbarTicker->Start( KPeriodicStartDelay, KPeriodicStartDelay, TCallBack( 
-                    &PeriodicCallbackL, static_cast<TAny*>( this ) ) );
-            }            
-         }
-    else
-        {
-        GLX_LOG_INFO("Reset the RProperty flag to EFalse");
-        uiUtility->StopTNMDaemonL();
-        }
-    CleanupStack::PopAndDestroy(uiUtility);
     }
 
 
@@ -153,16 +128,10 @@
 inline void CGlxProgressIndicator::DisplayProgressBarL()
     {
     TRACER("CGlxProgressIndicator::DisplayProgressBarL");
-    CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
-    CleanupClosePushL(*uiUtility);
-    TInt itemsLeft = uiUtility->GetItemsLeftCountL();
-    CleanupStack::PopAndDestroy(uiUtility);
+    TInt itemsLeft = iUiUtility->GetItemsLeftCount();
     GLX_LOG_INFO1("itemsLeft in DisplayProgressBarL = %d",iFinalCount);
-    if(itemsLeft)
-        {
-        UpdateProgressBar();
-        }
-    else
+    UpdateProgressBar();
+    if(!itemsLeft)
         {
         if(iProgressbarTicker->IsActive())
             {
@@ -179,12 +148,14 @@
 void CGlxProgressIndicator::StartProgressNoteL(TInt aFinalValue,TBool aShow)
     {
     TRACER("CGlxProgressIndicator::StartProgressNoteL()");
-    
+    TInt itemsLeft = iUiUtility->GetItemsLeftCount();
     if(aShow)
         {
         if(!iProgressDialog)
             {
-            iProgressDialog = new (ELeave)CAknProgressDialog((reinterpret_cast<CEikDialog**> (&iProgressDialog)),ETrue);
+            iProgressDialog = new (ELeave) CAknProgressDialog(
+                    (reinterpret_cast<CEikDialog**> (&iProgressDialog)),
+                    ETrue);
             }
         iProgressDialog->PrepareLC(R_PROGRESS_NOTE);
         
@@ -197,7 +168,7 @@
         iProgressDialog->SetTextL(*processingInfo);
         CleanupStack::PopAndDestroy(processingInfo );
         iProgressInfo->SetFinalValue(aFinalValue);
-        
+        iProgressInfo->SetAndDraw(iFinalCount-itemsLeft);
         iProgressDialog->RunLD();
         }
     else
@@ -229,7 +200,7 @@
          * GlxGeneralUiUtilities::FormatString(text,*processingInfo,-1,count,ETrue);
          * CleanupStack::PopAndDestroy(processingInfo); 
          */
-        iProgressInfo->SetAndDraw(CalculateDisplayBarIncrementL());
+        iProgressInfo->SetAndDraw(CalculateDisplayBarIncrement());
         }
     }
     
@@ -240,10 +211,6 @@
 void CGlxProgressIndicator::DialogDismissedL(TInt aButtonId)
     {
     TRACER("CGlxProgressIndicator::DialogDismissedL()");
-    CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
-    CleanupClosePushL(*uiUtility);
-    uiUtility->StopTNMDaemonL();
-    CleanupStack::PopAndDestroy(uiUtility);
     if(iProgressbarTicker)
         {
         iProgressbarTicker->Cancel();
@@ -254,27 +221,65 @@
         {
         iProgressDialog = NULL;
         iProgressInfo = NULL;
-        }    
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CalculateDisplayBarIncrement
+// -----------------------------------------------------------------------------
+//  
+TInt CGlxProgressIndicator::CalculateDisplayBarIncrement()
+    {
+    TRACER("CGlxProgressIndicator::CalculateDisplayBarIncrement()");
+
+    TInt itemsLeft = iUiUtility->GetItemsLeftCount();
+
+    if (iFinalCount < itemsLeft)
+        {
+        iProgressInfo->SetFinalValue(itemsLeft);
+        iFinalCount = itemsLeft;
+        }
+    
+    GLX_LOG_INFO1("CalculateDisplayBarIncrement = %d ",(iFinalCount - itemsLeft));
+    return (iFinalCount - itemsLeft);
     }
 
 // -----------------------------------------------------------------------------
-// CalculateDisplayBarIncrementL
+// ShowProgressbar
 // -----------------------------------------------------------------------------
-//  
-TInt CGlxProgressIndicator::CalculateDisplayBarIncrementL()
+//
+void EXPORT_C CGlxProgressIndicator::ShowProgressbarL()
     {
-    TRACER("CGlxProgressIndicator::CalculateDisplayBarIncrement()");
-    CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
-    CleanupClosePushL(*uiUtility);
-    TInt itemsLeft = uiUtility->GetItemsLeftCountL();
-    CleanupStack::PopAndDestroy(uiUtility);
-    GLX_LOG_INFO1("CalculateDisplayBarIncrement = %d ",(iFinalCount - itemsLeft));
-    
-    if(iFinalCount < itemsLeft)
+    TRACER("CGlxProgressIndicator::ShowProgressbarL");
+    iUiUtility->StartTNMDaemon();
+    TInt itemsLeft = iUiUtility->GetItemsLeftCount();
+
+    GLX_LOG_INFO1("ShowProgressbar itemsLeft = %d ",itemsLeft);
+    GLX_LOG_INFO1("ShowProgressbar iFinalCount = %d ",iFinalCount);
+    if (iFinalCount < itemsLeft)
         {
-        iProgressInfo->SetFinalValue( itemsLeft );
+        /*
+         *if user is in List view and inserts the MMC,update the total count 
+         */
         iFinalCount = itemsLeft;
         }
-    
-    return (iFinalCount - itemsLeft);
+    if (iFinalCount)
+        {
+        StartProgressNoteL(iFinalCount, ETrue);
+        if (!iProgressbarTicker)
+            {
+            iProgressbarTicker = CPeriodic::NewL(CActive::EPriorityStandard);
+            }
+        if (!iProgressbarTicker->IsActive())
+            {
+            iProgressbarTicker->Start(KPeriodicStartDelay,
+                    KPeriodicStartDelay, TCallBack(&PeriodicCallbackL,
+                            static_cast<TAny*> (this)));
+            }
+        }
+    else
+        {
+        GLX_LOG_INFO("Reset the RProperty flag to EFalse");
+        iUiUtility->StopTNMDaemon();
+        }
     }
--- a/photosgallery/viewframework/uiutilities/src/glxuiutility.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/uiutilities/src/glxuiutility.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -239,8 +239,9 @@
 	// make it visible as well
 	CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
 
-	CCoeControl* contl = (CCoeControl*)uiUtility->Display()->ObjectProvider();
-	contl->MakeVisible (ETrue);
+    CCoeControl* contl =
+            (CCoeControl*) uiUtility->Display()->ObjectProvider();
+    contl->MakeVisible(ETrue);
 
 	uiUtility->Close();
 	// no need to do anything else, the coecontrol handles the visibility
@@ -255,13 +256,14 @@
 	// make it invisible as well (this might be all that is needed)
 	CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
 	
-	CCoeControl* contl = (CCoeControl*)uiUtility->Display()->ObjectProvider();
+    CCoeControl* contl =
+            (CCoeControl*) uiUtility->Display()->ObjectProvider();
 	contl->MakeVisible (EFalse);
 	
 	uiUtility->Close();
 	// no need to do anything else, the coecontrol handles the visibility
 	}
-	
+
 // -----------------------------------------------------------------------------
 // GlxTextureManager
 // -----------------------------------------------------------------------------
@@ -282,13 +284,13 @@
     TRACER("CGlxUiUtility::ViewNavigationDirection()");
     return iNavigationDirection;
     }
-    
 
 // -----------------------------------------------------------------------------
 // SetViewNavigationDirection
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CGlxUiUtility::SetViewNavigationDirection(TGlxNavigationDirection aDirection)
+EXPORT_C void CGlxUiUtility::SetViewNavigationDirection(
+        TGlxNavigationDirection aDirection)
     {
     TRACER("CGlxUiUtility::SetViewNavigationDirection()");
     iNavigationDirection = aDirection;
@@ -458,20 +460,20 @@
     {
     TRACER("CGlxUiUtility::HandleTvStatusChangedL()");
 
-    if ( aChangeType == ETvDisplayNotVisible )         // Visibility event
+    if (aChangeType == ETvDisplayNotVisible) // Visibility event
         {
         iEnv->Release();
         return; // don't redraw the display
         }
-    else if ( aChangeType == ETvDisplayIsVisible )     // Visibility event
+    else if (aChangeType == ETvDisplayIsVisible) // Visibility event
         {
         iEnv->RestoreL();
         }
-     else                                              // TV Connection event
+    else // TV Connection event
         {
-        GLX_ASSERT_DEBUG( (aChangeType == ETvConnectionChanged), 
-                            Panic( EGlxPanicLogicError ), 
-                            "Expected TV Connection Changed" );
+        GLX_ASSERT_DEBUG( (aChangeType == ETvConnectionChanged),
+                Panic( EGlxPanicLogicError ),
+                "Expected TV Connection Changed" );
 
         if ( iGlxTvOut->IsConnected() )
             {
@@ -523,7 +525,7 @@
             {
         	// The primary (phone) display has changed orientation
         	DestroyTvOutDisplay();
-                CreateTvOutDisplayL(); //@ will generate false positive in codescanner
+            CreateTvOutDisplayL(); //@ will generate false positive in codescanner
             }
         else
             {
@@ -548,7 +550,8 @@
         iEnv->PauseRefresh();
 
         // Disable Primary Window Visibility events
-        CCoeControl* contl = (CCoeControl*)iEnv->PrimaryDisplay().ObjectProvider();
+        CCoeControl* contl =
+                (CCoeControl*) iEnv->PrimaryDisplay().ObjectProvider();
         contl->DrawableWindow()->DisableVisibilityChangeEvents();
         }
     }
@@ -584,18 +587,20 @@
 // AddSkinChangeObserverL
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CGlxUiUtility::AddSkinChangeObserverL(MGlxSkinChangeObserver& aObserver)
+EXPORT_C void CGlxUiUtility::AddSkinChangeObserverL(
+        MGlxSkinChangeObserver& aObserver)
     {
     TRACER("CGlxUiUtility::AddSkinChangeObserverL()");
     iGlxSkinChangeMonitor->AddSkinChangeObserverL( aObserver );
     }
-    
+
 // -----------------------------------------------------------------------------
 // RemoveSkinChangeObserver
 // -----------------------------------------------------------------------------
 //    
-EXPORT_C void CGlxUiUtility::RemoveSkinChangeObserver(MGlxSkinChangeObserver& aObserver)
-    {      
+EXPORT_C void CGlxUiUtility::RemoveSkinChangeObserver(
+        MGlxSkinChangeObserver& aObserver)
+    {
     TRACER("CGlxUiUtility::RemoveSkinChangeObserver()");
     iGlxSkinChangeMonitor->RemoveSkinChangeObserver( aObserver );
     }
@@ -634,27 +639,30 @@
 // -----------------------------------------------------------------------------
 //	
 void CGlxUiUtility::GridIconSizeL()
-	{
-	TRACER("CGlxUiUtility::GridIconSize()");
-	// Sets up TLS, must be done before FeatureManager is used.
-	    FeatureManager::InitializeLibL();
-	    
-	  if(FeatureManager::FeatureSupported( KFeatureIdLayout640_360_Touch ) || FeatureManager::FeatureSupported( KFeatureIdLayout360_640_Touch ))
-	      {
-	      iGridIconSize = TSize(111,83);
-	      }
-	  else if(FeatureManager::FeatureSupported(KFeatureIdLayout640_480_Touch) || FeatureManager::FeatureSupported(KFeatureIdLayout480_640_Touch) || 
-	          FeatureManager::FeatureSupported(KFeatureIdLayout640_480) || FeatureManager::FeatureSupported(KFeatureIdLayout480_640))
-	      {
-	      iGridIconSize = TSize(146,110);
-	      }
-	  else
-	      {
-	      iGridIconSize = TSize(146,110);
-	      }
-	// Frees the TLS. Must be done after FeatureManager is used.
-	    FeatureManager::UnInitializeLib(); 
-	}
+    {
+    TRACER("CGlxUiUtility::GridIconSize()");
+    // Sets up TLS, must be done before FeatureManager is used.
+    FeatureManager::InitializeLibL();
+
+    if (FeatureManager::FeatureSupported(KFeatureIdLayout640_360_Touch)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout360_640_Touch))
+        {
+        iGridIconSize = TSize(111, 83);
+        }
+    else if (FeatureManager::FeatureSupported(KFeatureIdLayout640_480_Touch)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout480_640_Touch)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout640_480)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout480_640))
+        {
+        iGridIconSize = TSize(146, 110);
+        }
+    else
+        {
+        iGridIconSize = TSize(146, 110);
+        }
+    // Frees the TLS. Must be done after FeatureManager is used.
+    FeatureManager::UnInitializeLib();
+    }
 
 
  
@@ -678,7 +686,7 @@
 EXPORT_C TInt CGlxUiUtility::VisibleItemsInPageGranularityL()
     {
     TRACER("CGlxUiUtility::VisibleItemsInPageGranularityL");
-    
+
     //TBD: In MCL 9.1/Corolla env currently the feature flags 
     //KFeatureIdLayout640_480 and KFeatureIdLayout480_640 are not defined.
     //so making the default granularity as 21 instead of 15.
@@ -686,71 +694,60 @@
     //getting the feature flag.
     TInt ret = KGlxVGAVisibleItemsGranularity;
     FeatureManager::InitializeLibL();
-    
-    if (FeatureManager::FeatureSupported( KFeatureIdLayout640_360_Touch ) || 
-        FeatureManager::FeatureSupported( KFeatureIdLayout360_640_Touch ))
-      {
-      ret = KGlxQHDVisibleItemsGranularity;
-      }
-    else if(FeatureManager::FeatureSupported(KFeatureIdLayout640_480_Touch) || 
-          FeatureManager::FeatureSupported(KFeatureIdLayout480_640_Touch) || 
-          FeatureManager::FeatureSupported(KFeatureIdLayout640_480) || 
-          FeatureManager::FeatureSupported(KFeatureIdLayout480_640))
-      {
-      ret = KGlxVGAVisibleItemsGranularity;
-      }
-    FeatureManager::UnInitializeLib(); 
+
+    if (FeatureManager::FeatureSupported(KFeatureIdLayout640_360_Touch)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout360_640_Touch))
+        {
+        ret = KGlxQHDVisibleItemsGranularity;
+        }
+    else if (FeatureManager::FeatureSupported(KFeatureIdLayout640_480_Touch)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout480_640_Touch)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout640_480)
+            || FeatureManager::FeatureSupported(KFeatureIdLayout480_640))
+        {
+        ret = KGlxVGAVisibleItemsGranularity;
+        }
+    FeatureManager::UnInitializeLib();
     return ret;
     }
 
 // -----------------------------------------------------------------------------
-// StartTNMDaemonL
+// StartTNMDaemon
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CGlxUiUtility::StartTNMDaemonL()
+EXPORT_C TInt CGlxUiUtility::StartTNMDaemon()
     {
-    TRACER("CGlxUiUtility::StartTNMDaemonL");
-    TInt err = RProperty::Set(KTAGDPSNotification, KForceBackgroundGeneration, ETrue);
-    if(err != KErrNone)
-        {
-        GLX_LOG_INFO1("GetItemsLeftCountL: RProperty::Set errorcode %d",err);
-        //need to check what to do in fail cases
-        User::Leave(err);
-        }
-    }
-	
-// -----------------------------------------------------------------------------
-// StopTNMDaemonL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CGlxUiUtility::StopTNMDaemonL()
-    {
-    TRACER("CGlxUiUtility:: StopTNMDaemonL ");
-    TInt err = RProperty::Set(KTAGDPSNotification, KForceBackgroundGeneration, EFalse);
-    GLX_LOG_INFO1("CGlxUiUtility::StopTNMDaemonL err = %d",err);
-    if(err != KErrNone)
-        {
-        GLX_LOG_INFO1("StopTNMDaemonL: RProperty::Set errorcode %d",err);
-        //need to check what to do in fail cases
-        User::Leave(err);
-        }
+    TRACER("CGlxUiUtility::StartTNMDaemon");
+    return RProperty::Set(KTAGDPSNotification, KForceBackgroundGeneration,
+            ETrue);
     }
 
 // -----------------------------------------------------------------------------
-// GetItemsLeftCountL
+// StopTNMDaemon
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TInt CGlxUiUtility::GetItemsLeftCountL()
+EXPORT_C TInt CGlxUiUtility::StopTNMDaemon()
     {
-    TRACER("CGlxUiUtility::GetItemsLeftCountL");
+    TRACER("CGlxUiUtility:: StopTNMDaemon");
+    return RProperty::Set(KTAGDPSNotification, KForceBackgroundGeneration,
+            EFalse);
+    }
+
+// -----------------------------------------------------------------------------
+// GetItemsLeftCount
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CGlxUiUtility::GetItemsLeftCount()
+    {
+    TRACER("CGlxUiUtility::GetItemsLeftCount");
     TInt leftVariable = 0;
     TInt err = RProperty::Get(KTAGDPSNotification, KItemsleft, leftVariable);
-    GLX_LOG_INFO1("GetItemsLeftCountL: GetItemsLeftCountL %d",leftVariable);
-    if(err != KErrNone)
+    GLX_LOG_INFO1("GetItemsLeftCount: GetItemsLeftCount %d", leftVariable);
+    if (err != KErrNone)
         {
-        GLX_LOG_INFO1("GetItemsLeftCountL: RProperty::Get errorcode %d",err);
-        User::Leave(err);
+        GLX_LOG_INFO1("GetItemsLeftCount: RProperty::Get errorcode %d", err);
+        leftVariable = 0;
         }
-    return leftVariable;	
+    return leftVariable;
     }
 // End of file
--- a/photosgallery/viewframework/views/cloudview/inc/glxtagscontextmenucontrol.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/cloudview/inc/glxtagscontextmenucontrol.h	Wed Apr 14 15:57:24 2010 +0300
@@ -25,7 +25,7 @@
 
 //Forward Declaration
 class CAlfGridLayout;
-class CGlxUiUtility;
+class CAlfEnv;
 
 /**
  *MGlxItemMenuObserver is a class to handle the menu items in grid layout
@@ -114,6 +114,10 @@
      */
     void CreateMenuListL(TInt aFontId);
     
+    /** 
+    *  Calculates the maximum text width of menu items 
+    */
+    void CalculateMaxWidth();
     /**     
      *  Perform the two phase construction
      *  @param  aEvent - key Event to handle
@@ -123,15 +127,14 @@
     TBool OfferEventL(const TAlfEvent& aEvent);
 
 private:
-
-    //Ui Utility, not owning, only close
-    CGlxUiUtility* iUiUtility;
     
     //Observer to handle the menu items in grid layout
     MGlxItemMenuObserver& iItemMenuObserver;          
     
     //Grid layout, not owning
     CAlfGridLayout* iGrid;
+    /** The Alf environment*/
+    CAlfEnv* iAlfEnv;
     
     //Slideshow text, not owning
     CAlfTextVisual* iSlideshowTextVisual;     
@@ -153,6 +156,8 @@
     
     //flag for stylus menu visibility
     TBool iItemMenuVisibility;                                         
+    //Maximum text width of a menu item
+    TInt iMaxTextWidth;
     };
 
 #endif /* GLXTAGSCONTEXTMENUCONTROL_H_ */
--- a/photosgallery/viewframework/views/cloudview/src/glxcloudviewcontrol.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/cloudview/src/glxcloudviewcontrol.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -63,7 +63,7 @@
 const TInt KLeftMargin = 10;
 const TInt KNumMinRowSpace = 2;
 const TInt KColSpace = 20;
-const TInt KRightmargin = 20;
+const TInt KRightmargin = 10;//Aligning Right margin
 const TInt KMinTagSize = 77;
 const TInt KTagScreenHeight = 460;
 const TReal KBoundaryMargin = 0.1; //10% = 10/100 = 0.1 
@@ -156,7 +156,7 @@
     AknLayoutUtils::LayoutMetricsRect (AknLayoutUtils::EMainPane, rect);
     iScreenHeight = rect.Height ();
     iParentLayout = CAlfLayout::AddNewL(*this, aAnchorLayout);                    
-    iTagScreenWidth = rect.Width() - iScrollPaneHandle.iW - KRightmargin;
+    iTagScreenWidth = rect.Width() - KRightmargin;
 
     if(IsLandscape())
         {	
@@ -230,7 +230,7 @@
        }
     TRect rect;
     AknLayoutUtils::LayoutMetricsRect (AknLayoutUtils::EMainPane, rect);
-    if ((rect.Width() != (iTagScreenWidth + iScrollPaneHandle.iW + KRightmargin)) || (rect.Height() != iScreenHeight))
+    if ((rect.Width() != (iTagScreenWidth + KRightmargin)) || (rect.Height() != iScreenHeight))
         {
         //set the new screen dimensions
         TRAP_IGNORE(UpdateLayoutL());
@@ -1849,10 +1849,14 @@
         if( iScrollEventData.mSpan )
             {       
             scrollbarbaselement->setThumbOpacity(1.0);  
+            //make scroll bar visible
+            scrollbarbaselement->setOpacity(1.0);
             }
         else
             {
             scrollbarbaselement->setThumbOpacity(0.0);  
+            //make scroll bar invisible
+            scrollbarbaselement->setOpacity(0.0);
             }
         }
     }
@@ -1865,11 +1869,11 @@
     {
     TRect rect;
     AknLayoutUtils::LayoutMetricsRect (AknLayoutUtils::EMainPane, rect);
-    if ((rect.Width() != (iTagScreenWidth + iScrollPaneHandle.iW + KRightmargin)) || (rect.Height() != iScreenHeight))
+    if ((rect.Width() != (iTagScreenWidth + KRightmargin)) || (rect.Height() != iScreenHeight))
         {
         //set the new screen dimensions
         iScreenHeight=rect.Height();
-       iTagScreenWidth = rect.Width()- iScrollPaneHandle.iW - KRightmargin;
+       iTagScreenWidth = rect.Width()- KRightmargin;
         if(IsLandscape())
             {   
             iTagScreenHeight = rect.Height();   
@@ -1996,6 +2000,10 @@
 void CGlxCloudViewControl::ShowContextItemMenu(TBool aShow)
     {
     iTagsContextMenuControl->ShowItemMenu(aShow);
+    if(!aShow)
+        {
+        iViewPortLayout->UpdateChildrenLayout(0);
+        }
     }
 
 //End of file
--- a/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -46,8 +46,8 @@
 #include "glxcloudviewcontrol.h"//cloud view control
 
 // For transition effects
-#include <AknTransEffect.h>                             
-#include <GfxTransEffect/GfxTransEffect.h>
+#include <akntranseffect.h>                             
+#include <gfxtranseffect/gfxtranseffect.h>
 #include "glxgfxtranseffect.h"  // For transition effects
     
 const TInt KViewId = 0x200071B7;
--- a/photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -51,8 +51,6 @@
 const TInt KMinimalGap = 5;         
 //Height of each menu item
 const TInt KReqHeightPerMenuItem = 47;
-//Minimum width for control
-const TInt KReqWidth = 113;
 //Number of menu items present in stylus menu
 const TInt KNumofMenuItems = 3;
 //Number of columns present in grid control showing menu  
@@ -72,7 +70,8 @@
 const TInt KShrinkXCoord = 5;
 //Y shrink factor for stylus menu border to be drawn/visible
 const TInt KShrinkYCoord = 5;
-
+//Padding value for Minimum width for control
+const TInt KWidthPadding = 20;
 //For Tagging the visuals
 _LIT8(KTagSlideshow, "SS");
 _LIT8(KTagRename, "Ren");
@@ -86,7 +85,8 @@
         MGlxItemMenuObserver& aItemMenuObserver)
     {
     TRACER("GLX_CLOUD::CGlxTagsContextMenuControl::NewL");
-    CGlxTagsContextMenuControl* self = CGlxTagsContextMenuControl::NewLC( aItemMenuObserver);
+    CGlxTagsContextMenuControl* self = CGlxTagsContextMenuControl::NewLC(
+            aItemMenuObserver);
     CleanupStack::Pop(self);
     return self;
     }
@@ -98,7 +98,8 @@
         MGlxItemMenuObserver& aItemMenuObserver )
     {
     TRACER("GLX_CLOUD::CGlxTagsContextMenuControl::NewLC");
-    CGlxTagsContextMenuControl* self = new (ELeave) CGlxTagsContextMenuControl( aItemMenuObserver);
+    CGlxTagsContextMenuControl* self =
+            new (ELeave) CGlxTagsContextMenuControl(aItemMenuObserver);
     CleanupStack::PushL( self );
     self->ConstructL();
     return self;
@@ -107,8 +108,9 @@
 // CGlxTagsContextMenuControl()
 // --------------------------------------------------------------------------- 
 //
-CGlxTagsContextMenuControl::CGlxTagsContextMenuControl(MGlxItemMenuObserver& aItemMenuObserver)
-    : iItemMenuObserver(aItemMenuObserver)
+CGlxTagsContextMenuControl::CGlxTagsContextMenuControl(
+        MGlxItemMenuObserver& aItemMenuObserver) :
+    iItemMenuObserver(aItemMenuObserver)
     {
     TRACER("GLX_CLOUD::CGlxTagsContextMenuControl::CGlxTagsContextMenuControl");
     //Nothing more to do for now
@@ -120,35 +122,40 @@
 void CGlxTagsContextMenuControl::ConstructL()
     {
     TRACER("GLX_CLOUD::CGlxTagsContextMenuControl::ConstructL");
-    iUiUtility = CGlxUiUtility::UtilityL ();
-    CAlfControl::ConstructL(*(iUiUtility->Env()) );
+    CGlxUiUtility* utility = CGlxUiUtility::UtilityL();
+    CleanupClosePushL( *utility );
+    iAlfEnv = utility->Env();
+    CleanupStack::PopAndDestroy( utility );
+    CAlfControl::ConstructL(*iAlfEnv);
     
     iTimer = CGlxBubbleTimer::NewL(this);
     
     iMainVisual = CAlfAnchorLayout::AddNewL(*this);
     iMainVisual->SetFlag(EAlfVisualFlagManualLayout);
-    iMainVisual->SetSize(TSize(KReqWidth, KGridHeight));
     iMainVisual->SetPos(TAlfRealPoint(KDummyPoint));
-    
-    iMainVisual->EnableBrushesL(ETrue);
-    
-    TRect outerRect(TRect(TPoint(KDummyPoint),TSize(KReqWidth, KGridHeight)));
-    TRect innerRect(outerRect);
-    innerRect.Shrink(KShrinkXCoord,KShrinkYCoord);
-
-    CAlfFrameBrush* frameBrush = CAlfFrameBrush::NewLC(*(iUiUtility->Env()),
-                                        KAknsIIDQsnFrPopupSub );
-    frameBrush->SetFrameRectsL(innerRect, outerRect);
-   
-    iMainVisual->Brushes()->AppendL(frameBrush,EAlfHasOwnership);
-    CleanupStack::Pop(frameBrush);
-    
     // Create a new 3x1 grid layout visual.
-    iGrid = CAlfGridLayout::AddNewL(*this, KNoOfColumns, KNumofMenuItems , 
-			iMainVisual);//columns, rows
+    iGrid = CAlfGridLayout::AddNewL(*this, KNoOfColumns, KNumofMenuItems,
+            iMainVisual);//columns, rows
 
     //Finally create the menu list that will appear in screen
     CreateMenuListL(CreateFontL());
+    CalculateMaxWidth();
+    iMainVisual->SetSize(TSize(KWidthPadding + iMaxTextWidth, KGridHeight));
+    
+    iMainVisual->EnableBrushesL(ETrue);
+
+    TRect outerRect(TRect(TPoint(KDummyPoint),
+                    TSize(KWidthPadding + iMaxTextWidth, KGridHeight)));
+    TRect innerRect(outerRect);
+    innerRect.Shrink(KShrinkXCoord, KShrinkYCoord);
+
+    CAlfFrameBrush* frameBrush = CAlfFrameBrush::NewLC(*iAlfEnv,
+                                        KAknsIIDQsnFrPopupSub);
+    frameBrush->SetFrameRectsL(innerRect, outerRect);
+
+    iMainVisual->Brushes()->AppendL(frameBrush, EAlfHasOwnership);
+    CleanupStack::Pop(frameBrush);
+
 	ShowItemMenu(EFalse);
     }
 // --------------------------------------------------------------------------- 
@@ -169,12 +176,6 @@
         delete iTimer;
         iTimer = NULL;
         }
-    
-    if (iUiUtility)
-        {
-        iUiUtility->Close();
-        iUiUtility = NULL;
-        }
     }
 // --------------------------------------------------------------------------- 
 // CreateFont()
@@ -185,7 +186,7 @@
     TRACER("GLX_CLOUD::CGlxTagsContextMenuControl::CreateFont");
     
     // Create a new style based on the required font
-    CAlfTextStyleManager& styleMan = iUiUtility->Env()->TextStyleManager();
+    CAlfTextStyleManager& styleMan = iAlfEnv->TextStyleManager();
     
     // remember its id for return later
     TInt id = styleMan.CreatePlatformTextStyleL(EAlfTextStyleNormal);
@@ -210,8 +211,8 @@
     
     TRgb color;
     //Gets the color of the text specific to skin 
-    AknsUtils::GetCachedColor(AknsUtils::SkinInstance(),
-            color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG20 );
+    AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), color,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG20);
     
     //Loading the strings from rss
     HBufC* renameTitle = StringLoader::LoadLC( R_GLX_TAGS_RENAME_TITLE );
@@ -267,9 +268,9 @@
     TInt rightDisplayableWidth = iViewableRect.iBr.iY - XPos;
 
     //always draw above
-    if(rightDisplayableWidth < KReqWidth)
+    if(rightDisplayableWidth < iMaxTextWidth)
         {
-        XPos = aPoint.iX - KReqWidth;
+        XPos = aPoint.iX - iMaxTextWidth;
         }
     if(upperDisplayableHeight < KGridHeight)
         {
@@ -369,3 +370,23 @@
     iViewableRect.SetRect(aRect.iTl.iX, aRect.iTl.iY, 
                                 aRect.iBr.iX, aRect.iBr.iY);
     }
+// --------------------------------------------------------------------------- 
+// CalculateMaxWidth()
+// --------------------------------------------------------------------------- 
+//
+void CGlxTagsContextMenuControl::CalculateMaxWidth()
+    {
+    TRACER("GLX_CLOUD::CGlxTagsContextMenuControl::CalculateMaxWidth");
+
+    iMaxTextWidth
+            = (iSlideshowTextVisual->TextExtents().iWidth
+                    > iRenameTextVisual->TextExtents().iWidth
+                              ? iSlideshowTextVisual->TextExtents().iWidth
+                                 : iRenameTextVisual->TextExtents().iWidth);
+
+    iMaxTextWidth
+            = (iMaxTextWidth > iDeleteTextVisual->TextExtents().iWidth
+                              ? iMaxTextWidth
+                                 : iDeleteTextVisual->TextExtents().iWidth);
+
+    }
--- a/photosgallery/viewframework/views/fullscreenview/group/glxfullscreenview.mmp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/group/glxfullscreenview.mmp	Wed Apr 14 15:57:24 2010 +0300
@@ -100,5 +100,6 @@
 LIBRARY 	glxtvout.lib
 LIBRARY 	gfxtrans.lib
 LIBRARY		akntransitionutils.lib
+LIBRARY         ws32.lib                        // for RWsSession
 // EOF 
 
--- a/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenbusyicon.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenbusyicon.h	Wed Apr 14 15:57:24 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef GLXFULLSCREENBUSYICON_H_
 #define GLXFULLSCREENBUSYICON_H_
 
-#include <alf/alfControl.h>
+#include <alf/alfcontrol.h>
 #include <mglxmedialistobserver.h>
 // Forward decleartion
 class CAlfEnv;
--- a/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h	Wed Apr 14 15:57:24 2010 +0300
@@ -220,11 +220,6 @@
     NGlxNFullScreenUIState::TUiState GetUiSate();
     
     /*
-    * returns the Ui state
-    */     
-    void CreateScreenFurnitureL();
-    
-    /*
     * Call back function for the CPeriodic
     */
     static TInt TimeOut(TAny* aSelf);
@@ -283,6 +278,12 @@
      * navigate to main list
      */
     void NavigateToMainListL();
+	
+    /**
+     * Disable/enable the fullscreen toolbar
+     */
+    void EnableFSToolbarL(TBool aEnable);
+
 private:
     /** Softkey resource id's */
     TFullScreenViewResourceIds iResourceIds; 
--- a/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenbusyicon.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenbusyicon.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -15,7 +15,7 @@
  *
  */
 
-#include <stringloader.h>
+#include <StringLoader.h>
 #include <data_caging_path_literals.hrh>            // KDC_APP_RESOURCE_DIR
 #include <glxtracer.h>
 #include <glxlog.h>                                 // Glx logs
--- a/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -164,27 +164,9 @@
 	//Register the view to recieve toolbar events. ViewBase handles the events
 	SetToolbarObserver(this);
 	iImgViewerMode = EFalse;
-	// Presently image viewer dont have toolbar
-	// So need to remove if image viewer using full screen
-	CGlxNavigationalState* navigationalState =  CGlxNavigationalState::InstanceL();
-	CleanupClosePushL( *navigationalState );
-	CMPXCollectionPath* naviState = navigationalState->StateLC();
-	if (naviState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
-	    {
-	    CAknToolbar* toolbar = Toolbar();
-	    if(toolbar)
-	        {
-	        toolbar->DisableToolbarL(ETrue);
-	        }
-	    ShowToolbarOnViewActivation(EFalse);
-	    }
-	else
-	    {
-	    ShowToolbarOnViewActivation(ETrue);
-	    }
-	CleanupStack::PopAndDestroy(naviState);
-	CleanupStack::PopAndDestroy(navigationalState);
-	
+    //Disable the toolbar always while entering fullscreen
+	EnableFSToolbarL(EFalse);
+    ShowToolbarOnViewActivation(EFalse);
 	
 	//Get the ScreenFurniture instance
 	iScreenFurniture = iUiUtility->ScreenFurniture();
@@ -306,12 +288,13 @@
 		const TDesC8 & /* aCustomMessage */)
 	{
     TRACER("CGlxFullScreenViewImp::DoMLViewActivateL");
+	//Disable the softkeys
+    Cba()->MakeVisible( EFalse );
+    Cba()->DrawNow();
+    
     // hide the toolbar
-    CAknToolbar* toolbar = Toolbar();
-    if(toolbar)
-        {
-        toolbar->SetToolbarVisibility(EFalse); 
-        }
+    EnableFSToolbarL(EFalse);
+    
 
     CGlxNavigationalState* navigationalState =  CGlxNavigationalState::InstanceL();
     CleanupClosePushL( *navigationalState );
@@ -357,9 +340,6 @@
     // create the coverflow
     CreateCoverflowWidgetL();
     
-    // create the screen furniture for touch devices
-    CreateScreenFurnitureL();
-    
     CreateSliderWidgetL();
     
     iBusyIcon = CGlxFullScreenBusyIcon::NewL(*iMediaList,*iUiUtility);
@@ -519,11 +499,11 @@
         iCoverFlowWidget->SetUIMode(ETrue);
         }
 
-    //show the toolbar
-    CAknToolbar* toolbar = Toolbar();
-    if(toolbar)
+    //Since the toolbar should not be present for ImageViewer.
+    if(!iImgViewerMode)
         {
-        toolbar->SetToolbarVisibility(ETrue);    
+        //show the toolbar
+        EnableFSToolbarL(ETrue);
         }
      
     // For floating toolbar in non-touch devices
@@ -565,12 +545,17 @@
         {
         iCoverFlowWidget->SetUIMode(EFalse);
         }
-    // hide the toolbar
-    CAknToolbar* toolbar = Toolbar();
-    if(toolbar)
+    
+    //Since the toolbar should not be present for ImageViewer.
+    if(!iImgViewerMode)
         {
-        toolbar->SetToolbarVisibility(EFalse); 
-        }    
+        // hide the toolbar
+        CAknToolbar* toolbar = Toolbar();
+        if(toolbar)
+            {
+            toolbar->SetToolbarVisibility(EFalse); 
+            }
+        }
     
     // hide the softkeys
     Cba()->MakeVisible( EFalse );
@@ -581,20 +566,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// CreateScreenFurnitureL
-// ---------------------------------------------------------------------------
-//	
-void  CGlxFullScreenViewImp::CreateScreenFurnitureL() 
-    {
-    TRACER("CGlxFullScreenViewImp::CreateScreenFurnitureL");
-    // create the softkeys
-    CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-    CleanupStack::PushL( cba );
-    cba->SetCommandSetL(R_GLX_FULLSCREEN_SOFTKEYS);
-    CleanupStack::Pop(cba);
-    }
-
-// ---------------------------------------------------------------------------
 // SetUiSate
 // ---------------------------------------------------------------------------
 //	
@@ -771,6 +742,19 @@
 void CGlxFullScreenViewImp::DoMLViewDeactivate()
     {
     TRACER("CGlxFullScreenViewImp::DoMLViewDeactivate");
+	//Disabling the toolbar here since it would give a crash when
+	//we try to enable the toolbar in activate without exiting photos.
+    if(!iImgViewerMode)
+        {    
+        // hide the toolbar
+        TRAP_IGNORE(EnableFSToolbarL(EFalse));
+        }
+    
+    HideUi(ETrue); 
+	// In Order to hide the softkeys immediately. The above statement does not do that as soon as we need. 
+	// So we do the below trick. The SK overlap is still there but much much less noticable. 
+    CCoeEnv::Static()->WsSession().Flush(); 
+
     //Clear the last uri for which DRM Rights were consumed before going back to grid view
     //since the GridView::Activate() and FullScreen::DeActivate() can be called in any order,
     //this call is being made to be on safer side
@@ -828,12 +812,10 @@
 
     if (!aForeground)
         {
-        
         if(iHdmiController)
 			{   
             iHdmiController->ShiftToCloningMode();
 			}
-        
         iUiUtility->GlxTextureManager().FlushTextures();
         }
     else
@@ -918,7 +900,7 @@
                 if ( NGlxNFullScreenUIState::EUiOff == GetUiSate()&& (
                         aEvent.Code() == EEventKey ) )
                     {
-                    //the Ui timer sjould be started once the UI screen furniture is shown
+                    //the Ui timer should be started once the UI screen furniture is shown
                     ShowUiL(ETrue);
                     } 
                 return EEventHandled;              
@@ -949,10 +931,10 @@
             }
         }
     if(!aEvent.IsCustomEvent())
-            {   
-            GLX_LOG_INFO("Event Not Handled");          
-            return EEventNotHandled;
-            }
+        {   
+        GLX_LOG_INFO("Event Not Handled");          
+        return EEventNotHandled;
+        }
 
     if(aEvent.IsCustomEvent())
         {
@@ -1565,3 +1547,20 @@
         }
     ProcessCommandL(EAknSoftkeyExit);
     }
+	
+// ---------------------------------------------------------------------------
+// EnableFSToolbarL
+// 
+// ---------------------------------------------------------------------------
+//
+void CGlxFullScreenViewImp::EnableFSToolbarL(TBool aEnable)
+    {
+	TRACER("CGlxFullScreenViewImp::EnableFSToolbarL()");
+    CAknToolbar* toolbar = Toolbar();
+    if(toolbar)
+        {
+        toolbar->DisableToolbarL(!aEnable);
+        toolbar->SetToolbarVisibility(aEnable); 
+        }
+    }
+	
--- a/photosgallery/viewframework/views/gridview/src/glxgridviewcontainer.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/gridview/src/glxgridviewcontainer.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -388,11 +388,25 @@
                 tnSize.iWidth, tnSize.iHeight);
 		TFileName resFile(KDC_APP_BITMAP_DIR);
 		resFile.Append(KGlxIconsFilename);
-		CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-				EMbmGlxiconsQgn_prop_image_notcreated);
-        AknIconUtils::SetSize(bitmap, tnSize);
-		// Create Hg grid object
-		iHgGrid = CHgGrid::NewL (GetHgGridRect(),mediaCount,CGulIcon::NewL(bitmap));
+
+        CFbsBitmap* bitmap = NULL;
+        CFbsBitmap* mask = NULL;
+        AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                bitmap, mask, resFile, EMbmGlxiconsQgn_prop_image_notcreated,
+                EMbmGlxiconsQgn_prop_image_notcreated_mask);
+        __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+        __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+
+        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+        AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+        // Create Hg grid object
+        iHgGrid = CHgGrid::NewL(GetHgGridRect(), mediaCount, CGulIcon::NewL(
+                bitmap, mask));
+        CleanupStack::Pop(mask); 
+        CleanupStack::Pop(bitmap); 
 		}
 
 	// Setting to MopParent to update background skin
@@ -580,22 +594,45 @@
 		 */
 		GLX_LOG_INFO2("CGlxGridViewContainer::SetIconsL - image_defaultthumbnail tnError(%d), i(%d)",
 				tnError, index);
-		CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-				EMbmGlxiconsQgn_prop_image_notcreated);
-		AknIconUtils::SetSize(bitmap, setSize);
-		iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap));
+        CFbsBitmap* bitmap = NULL;
+        CFbsBitmap* mask = NULL;
+        AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                bitmap, mask, resFile, EMbmGlxiconsQgn_prop_image_notcreated,
+                EMbmGlxiconsQgn_prop_image_notcreated_mask);
+        __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+        __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+
+        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+        AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+        iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap, mask));
+        CleanupStack::Pop(mask); 
+        CleanupStack::Pop(bitmap); 
 		}
    else if(KErrNone != tnError)
         {
         GLX_LOG_INFO2("CGlxGridViewContainer::SetIconsL - image_corrupted tnError(%d), i(%d)",
                 tnError, index);
-        CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-                EMbmGlxiconsQgn_prop_image_corrupted);
-        AknIconUtils::SetSize(bitmap, setSize);
-        iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap));
+        CFbsBitmap* bitmap = NULL;
+        CFbsBitmap* mask = NULL;
+        AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                bitmap, mask, resFile, EMbmGlxiconsQgn_prop_image_corrupted,
+                EMbmGlxiconsQgn_prop_image_corrupted_mask);
+        __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+        __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+
+        AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+        AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+        iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap, mask));
+        CleanupStack::Pop(mask);
+        CleanupStack::Pop(bitmap);
         }
 
-
 	if (item.IsDrmProtected())
 		{
 		const TDesC& uri = item.Uri();
--- a/photosgallery/viewframework/views/gridview/src/glxgridviewimp.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/gridview/src/glxgridviewimp.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -40,8 +40,8 @@
 #include "glxgridviewcontainer.h"
 
 // For transition effects
-#include <AknTransEffect.h>                             
-#include <GfxTransEffect/GfxTransEffect.h>
+#include <akntranseffect.h>                             
+#include <gfxtranseffect/gfxtranseffect.h>
 #include "glxgfxtranseffect.h"  // For transition effects
 
 const TInt KGlxToolbarButtonUnLatched = 0;              // Toolbar mark button's unlatched state defined in the rss file
--- a/photosgallery/viewframework/views/gridview/src/glxgridviewmlobserver.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/gridview/src/glxgridviewmlobserver.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -245,10 +245,23 @@
         else if ( KErrNone != tnError && KErrNotSupported != tnError &&
                             KErrArgument != tnError )
             {
-            CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-                                 EMbmGlxiconsQgn_prop_image_corrupted);
-            AknIconUtils::SetSize(bitmap, setSize);
-            iHgGrid->ItemL(aItemIndex).SetIcon(CGulIcon::NewL(bitmap));
+            CFbsBitmap* bitmap = NULL;
+            CFbsBitmap* mask = NULL;
+            AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                    bitmap, mask, resFile,
+                    EMbmGlxiconsQgn_prop_image_corrupted,
+                    EMbmGlxiconsQgn_prop_image_corrupted_mask);
+            __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+            __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+            
+            AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                    EAspectRatioPreservedAndUnusedSpaceRemoved);
+            AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                    EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+            iHgGrid->ItemL(aItemIndex).SetIcon(CGulIcon::NewL(bitmap, mask));
+            CleanupStack::Pop(mask);
+            CleanupStack::Pop(bitmap);
             }
         }
     
@@ -316,7 +329,8 @@
     {
     TRACER("CGlxGridViewMLObserver::HandleErrorL()");
 
-    TInt bitmapId  = EMbmGlxiconsQgn_prop_image_notcreated;
+    TInt bitmapId  = EMbmGlxiconsQgn_prop_image_corrupted;
+    TInt maskId = EMbmGlxiconsQgn_prop_image_corrupted_mask;	
     TInt flags     = CHgItem::EHgItemFlagsNone ;
     
     for ( TInt i = 0; i < iMediaList.Count(); i++ )
@@ -331,10 +345,12 @@
                 {
                 case KErrCANoRights:;   // Err id = -17452
                     bitmapId  = EMbmGlxiconsQgn_prop_image_notcreated;
+					maskId = EMbmGlxiconsQgn_prop_image_notcreated_mask;
                     flags     = CHgItem::EHgItemFlagsDrmRightsExpired;
                     break;
                 case KErrDiskFull:
                     bitmapId  = EMbmGlxiconsQgn_prop_image_notcreated;
+					maskId = EMbmGlxiconsQgn_prop_image_notcreated_mask;
                     flags     = CHgItem::EHgItemFlagsNone ;
                     if (!iDiskErrorIntimated)
                         {
@@ -343,6 +359,7 @@
                     break;
                 default:
                     bitmapId  = EMbmGlxiconsQgn_prop_image_corrupted;
+					maskId = EMbmGlxiconsQgn_prop_image_corrupted_mask;
                     flags     = CHgItem::EHgItemFlagsNone ;
                     break;  
                 }
@@ -350,14 +367,26 @@
             TFileName resFile(KDC_APP_BITMAP_DIR);
             resFile.Append(KGlxIconsFilename);
 
-            CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile, bitmapId);
-            AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize() );
+            CFbsBitmap* bitmap = NULL;
+            CFbsBitmap* mask = NULL;
+            AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                    bitmap, mask, resFile, bitmapId, maskId);
+            __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+            __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
 
-            iHgGrid->ItemL(i).SetIcon(CGulIcon::NewL(bitmap), flags);
+            AknIconUtils::SetSize(bitmap, CHgGrid::PreferredImageSize(),
+                    EAspectRatioPreservedAndUnusedSpaceRemoved);
+            AknIconUtils::SetSize(mask, CHgGrid::PreferredImageSize(),
+                    EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+            iHgGrid->ItemL(i).SetIcon(CGulIcon::NewL(bitmap, mask), flags);
+            CleanupStack::Pop(mask); 
+            CleanupStack::Pop(bitmap); 
             }
         }
     iHgGrid->RefreshScreen(iHgGrid->FirstIndexOnScreen());    
     }
+    
 // ----------------------------------------------------------------------------
 // HandleCommandCompleteL
 // ----------------------------------------------------------------------------
--- a/photosgallery/viewframework/views/listview/inc/glxlistviewimp.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/listview/inc/glxlistviewimp.h	Wed Apr 14 15:57:24 2010 +0300
@@ -180,6 +180,20 @@
     void HandleMMCInsertionL();
     void HandleMMCRemovalL();
     void HandleNavigationalStateChangedL(){};
+    /**
+     * Cleans Up the cache for list view
+     */    
+    void CleanUpL();
+    /**
+     * Updates the preview thumbnail 
+     * @param aIndex index to be updated
+     */        
+    void UpdatePreviewL(TInt aIndex);
+    /**
+    * Helper function used by HandleError
+    * @param aError the error code to handle.
+    */
+   void DoHandleErrorL( TInt /*aError*/ );    
  
 public: // from MGlxMediaListObserver
     void HandleItemAddedL( TInt aStartIndex, TInt aEndIndex, MGlxMediaList* aList );
@@ -208,14 +222,16 @@
 	
 	CGlxPreviewThumbnailBinding* iPreviewTNBinding; //Own
 	
-	    // Fetch context for retrieving title attribute
-    CGlxDefaultAttributeContext* iTitleAttributeContext;
+	// Fetch context for retrieving title attribute
+	CGlxAttributeContext* iTitleAttributeContext;
 
     // Fetch context for retrieving subtitle
-    CGlxDefaultAttributeContext* iSubtitleAttributeContext;
+    CGlxAttributeContext* iSubtitleAttributeContext;
 	
-	// for thumbnail context
-	TGlxSequentialIterator iThumbnailIterator;
+    TGlxFromFocusOutwardIterator iThumbnailIterator;
+    
+	// Thumbnail Attrib context
+    CGlxAttributeContext* iThumbnailContext;	
 
     /** Unique ID of this Avkon view */
     TInt iViewUid;
@@ -243,9 +259,6 @@
 
     CGlxProgressIndicator* iProgressIndicator;
 
-	//Check for TN generation
-    TBool isTnGenerationComplete;
-	
     CActiveSchedulerWait* iSchedulerWait;
     
     CGlxMMCNotifier* iMMCNotifier;
@@ -253,6 +266,8 @@
     CGlxNavigationalState* iNavigationalState;
 	
     TBool iMMCState;
+
+    TSize iGridIconSize;
     };
 
 #endif  // C_GLXLISTVIEWIMP_H
--- a/photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h	Wed Apr 14 15:57:24 2010 +0300
@@ -78,14 +78,16 @@
 	 */
 	void ConstructL();
 	
+
+public:
+	
 	/**
      * Scale the source bitmap to list size
      * aSrcBitmap - Source bitmap
      * aDestBitmap - Scaled destination bitmap
      */
       void ScaleBitmapToListSizeL(CFbsBitmap* aSrcBitmap, CFbsBitmap* aDestBitmap);
-
-public:	
+	
       void HandleItemChangedL(const CMPXCollectionPath& aPath,TBool aPopulateListTNs, 
 									  TBool aIsRefreshNeeded, TBool aBackwardNavigation);
       void StartTimer();
--- a/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -40,19 +40,21 @@
 #include <aknViewAppUi.h>
 #include <StringLoader.h>					//StringLoader		
 #include <glxsetappstate.h>
+#include <mglxcache.h>
+#include <glxerrormanager.h>             // For CGlxErrormanager
+#include <glxthumbnailcontext.h>
 #include <glxthumbnailattributeinfo.h>
 #include <glxcollectionpluginalbums.hrh>
 #include <glxcollectionpluginmonths.hrh>
 #include <glxcollectionplugintype.hrh>
 #include <glxnavigationalstate.h>
 
-#include <AknTransEffect.h>  // For transition effects
-#include <GfxTransEffect/GfxTransEffect.h>  // For transition effects
+#include <akntranseffect.h>  // For transition effects
+#include <gfxtranseffect/gfxtranseffect.h>  // For transition effects
 #include "glxgfxtranseffect.h"  // For transition effects
 
-const TInt KListDataWindowSize(25);
-const TInt KNoOfPages(2);
-const TInt KBufferTresholdSize(6);
+const TInt KListDataWindowSize(16);
+const TInt KNoOfPages(4);
 const TInt KGlxCollectionRootLevel = 1;
 
 
@@ -65,7 +67,7 @@
 CGlxListViewImp::CGlxListViewImp(TInt aViewUid,
         const TListViewResourceIds& aResourceIds) :
     iViewUid(aViewUid), iResourceIds(aResourceIds), iIsRefreshNeeded(EFalse),
-    iBackwardNavigation(EFalse), isTnGenerationComplete(ETrue)
+    iBackwardNavigation(EFalse)
     {
     }
 
@@ -125,7 +127,10 @@
         {
         toolbar->DisableToolbarL(ETrue);  
         }
-    
+    CGlxUiUtility* uiUtility = CGlxUiUtility::UtilityL();
+    CleanupClosePushL(*uiUtility);
+    iGridIconSize = uiUtility->GetGridIconSize();
+    CleanupStack::PopAndDestroy(uiUtility);     
     //Register the view to recieve toolbar events. ViewBase handles the events    
     SetToolbarObserver(this);
 	iMMCNotifier = CGlxMMCNotifier::NewL(*this);
@@ -215,21 +220,34 @@
 	GlxSetAppState::SetState(EGlxInListView);
 
     // Separate contexts so that some attributes are loaded before others
-    iTitleAttributeContext = CGlxDefaultAttributeContext::NewL();
-    iTitleAttributeContext->SetRangeOffsets( KListDataWindowSize, 
-            KListDataWindowSize );
-    iTitleAttributeContext->AddAttributeL( KMPXMediaGeneralTitle );
+    iThumbnailIterator.SetRangeOffsets(KListDataWindowSize,
+            KListDataWindowSize);
+    iTitleAttributeContext = new (ELeave) CGlxAttributeContext(
+            &iThumbnailIterator);
+    iTitleAttributeContext->AddAttributeL(KMPXMediaGeneralTitle);
+
+    iSubtitleAttributeContext = new (ELeave) CGlxAttributeContext(
+            &iThumbnailIterator);
+    iSubtitleAttributeContext->AddAttributeL(
+            KGlxMediaCollectionPluginSpecificSubTitle);
 
-    iSubtitleAttributeContext = CGlxDefaultAttributeContext::NewL();
-    iSubtitleAttributeContext->SetRangeOffsets( KListDataWindowSize, 
-            KListDataWindowSize );
-    iSubtitleAttributeContext->AddAttributeL( 
-            KGlxMediaCollectionPluginSpecificSubTitle );
+    iMediaList->AddContextL(iTitleAttributeContext, KMaxTInt);
+    iMediaList->AddContextL(iSubtitleAttributeContext, KMaxTInt);
+    if (iMediaList->IdSpaceId(0) != KGlxIdSpaceIdRoot)
+        {
+        iThumbnailContext = new (ELeave) CGlxAttributeContext(
+                &iThumbnailIterator);
+        TMPXAttribute tnAttr(KGlxMediaIdThumbnail,
+                GlxFullThumbnailAttributeId(ETrue, iGridIconSize.iWidth,
+                        iGridIconSize.iHeight));
+        iThumbnailContext->SetDefaultSpec(iGridIconSize.iWidth,
+                iGridIconSize.iHeight);
+        iThumbnailContext->AddAttributeL(tnAttr);
+        iMediaList->AddContextL(iThumbnailContext,
+                KGlxFetchContextPriorityNormal);
+        }
 
-    iMediaList->AddContextL( iTitleAttributeContext, KMaxTInt );
-    iMediaList->AddContextL( iSubtitleAttributeContext, KMaxTInt );
-
-	iMediaList->AddMediaListObserverL(this);
+    iMediaList->AddMediaListObserverL(this);
     TRect apRect = iEikonEnv->EikAppUi()->ApplicationRect();
     iBgContext = CAknsBasicBackgroundControlContext::NewL( 
             KAknsIIDQsnBgScreen,apRect,ETrue);
@@ -241,18 +259,19 @@
 
     iPreviewTNBinding = CGlxPreviewThumbnailBinding::NewL(*this);
     CreateListL();
-    if (iPreviewTNBinding && iBackwardNavigation && iMediaList->FocusIndex()
-            == 0)
-        {
-        GLX_LOG_INFO("CGlxListViewImp::DoMLViewActivateL() - HandleItemChangedL()");        
-        iPopulateListTNs = ETrue;
-        CMPXCollectionPath* path = iMediaList->PathLC(
-                NGlxListDefs::EPathFocusOrSelection);
-        iPreviewTNBinding->HandleItemChangedL(*path, iPopulateListTNs,
-                iIsRefreshNeeded, iBackwardNavigation);
-        CleanupStack::PopAndDestroy(path);
-        }
+    if (iMediaList->IdSpaceId(0) == KGlxIdSpaceIdRoot && iPreviewTNBinding
+			&& iBackwardNavigation && iMediaList->FocusIndex() == 0)
+		{
+		GLX_LOG_INFO("CGlxListViewImp::DoMLViewActivateL() - HandleItemChangedL()");
+		iPopulateListTNs = ETrue;
+		CMPXCollectionPath* path = iMediaList->PathLC(
+				NGlxListDefs::EPathFocusOrSelection);
+		iPreviewTNBinding->HandleItemChangedL(*path, iPopulateListTNs,
+				iIsRefreshNeeded, iBackwardNavigation);
+		CleanupStack::PopAndDestroy(path);
+		}
     iProgressIndicator = CGlxProgressIndicator::NewL(*this);
+    iProgressIndicator->ShowProgressbarL();
     }
 
 // ---------------------------------------------------------------------------
@@ -266,10 +285,10 @@
     if(StatusPane())
        {
        if(iTitletext)
-                  {
-                  delete iTitletext;
-                  iTitletext = NULL;
-                  }
+          {
+          delete iTitletext;
+          iTitletext = NULL;
+          }
        CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
        TRAP_IGNORE(CAknTitlePane* titlePane = ( CAknTitlePane* )statusPane->ControlL(
                TUid::Uid( EEikStatusPaneUidTitle ));        
@@ -283,18 +302,21 @@
     iMediaList->RemoveContext( iSubtitleAttributeContext );
    	delete iSubtitleAttributeContext;
    	iSubtitleAttributeContext = NULL;
-
+    if (iMediaList->IdSpaceId(0) != KGlxIdSpaceIdRoot)
+        {
+        iMediaList->RemoveContext(iThumbnailContext);
+        delete iThumbnailContext;
+        iThumbnailContext = NULL;
+        }   
 	iMediaList->RemoveMediaListObserver( this );
 	delete iPreviewTNBinding;
 	iPreviewTNBinding = NULL;
 	DestroyListViewWidget();
-#ifndef __WINSCW__ 
 	if(iProgressIndicator)
 	    {
         delete iProgressIndicator;
         iProgressIndicator = NULL;
 	    }
-#endif
 	}
 
 // ---------------------------------------------------------------------------
@@ -421,18 +443,26 @@
         const TGlxMedia& item = iMediaList->Item(i);
         iList->ItemL(i).SetTitleL(item.Title());
         iList->ItemL(i).SetTextL(item.SubTitle());
+        UpdatePreviewL(i);
+        iList->RefreshScreen(i);
         }
     
     iList->RefreshScreen(visIndex);
-    
-    if ( visIndex != iLastFocusedIndex && !iPopulateListTNs)
+    if(iMediaList->IdSpaceId(0) == KGlxIdSpaceIdRoot)
         {
-        GLX_LOG_INFO1("CGlxListViewImp::RequestL - SetFocusL()"
-                " iPopulateListTNs(%d)", iPopulateListTNs);      
-        GLX_LOG_INFO1("CGlxListViewImp::RequestL - SetFocusL()"
-                " visIndex(%d)", visIndex);
-        iPopulateListTNs = ETrue;
-        iStartIndex = KErrNotFound;
+        if ( visIndex != iLastFocusedIndex && !iPopulateListTNs)
+            {
+            GLX_LOG_INFO1("CGlxListViewImp::RequestL - SetFocusL()"
+                    " iPopulateListTNs(%d)", iPopulateListTNs);      
+            GLX_LOG_INFO1("CGlxListViewImp::RequestL - SetFocusL()"
+                    " visIndex(%d)", visIndex);
+            iPopulateListTNs = ETrue;
+            iStartIndex = KErrNotFound;
+            iMediaList->SetFocusL(NGlxListDefs::EAbsolute, visIndex);
+            }
+        }
+    else
+        {
         iMediaList->SetFocusL(NGlxListDefs::EAbsolute, visIndex);
         }
     }
@@ -458,23 +488,15 @@
     TRACER("CGlxListViewImp::HandleOpenL");
     
 #ifndef __WINSCW__ 
-    TInt leftVariable = 0;
-    TRAPD(err,leftVariable = iUiUtility->GetItemsLeftCountL());
-    GLX_LOG_INFO1("CGlxListViewImp RProperty::Get leftVariable %d",leftVariable);
-    isTnGenerationComplete = (leftVariable)?EFalse:ETrue;
-    GLX_LOG_INFO1("CGlxListViewImp isTnGenerationComplete %d",isTnGenerationComplete);
-    if(err != KErrNone)
+    GLX_LOG_INFO1("CGlxListViewImp RProperty::Get leftVariable %d",(iUiUtility->GetItemsLeftCount()));
+
+    if (iUiUtility->GetItemsLeftCount())
         {
-        GLX_LOG_INFO1("CGlxListViewImp RProperty::Get errorcode %d",err);
-        }
-    if(!isTnGenerationComplete)
-        {
-        if(iProgressIndicator)
+        if(!iProgressIndicator)
             {
-            delete iProgressIndicator;
-            iProgressIndicator = NULL;
+            iProgressIndicator = CGlxProgressIndicator::NewL(*this);
             }
-        iProgressIndicator = CGlxProgressIndicator::NewL(*this);
+        iProgressIndicator->ShowProgressbarL();
         if(iSchedulerWait)
             {
             delete iSchedulerWait;
@@ -484,11 +506,11 @@
         iSchedulerWait->Start();
         }
 #endif
-	if( iNextViewActivationEnabled && ( aIndex >= 0 && aIndex < 
-	        iMediaList->Count()) && isTnGenerationComplete )
-	    {
-	    	//Delete the PreviewTNMBinding as in forward navigation
-		//we do not get the medialist callback.
+    if (iNextViewActivationEnabled && (aIndex >= 0 && aIndex
+            < iMediaList->Count()) && (iUiUtility->GetItemsLeftCount() == 0))
+        {
+        //Delete the PreviewTNMBinding as in forward navigation
+        //we do not get the medialist callback.
         delete iPreviewTNBinding;
         iPreviewTNBinding = NULL;
         
@@ -497,11 +519,10 @@
 	    iNextViewActivationEnabled = EFalse;
         iUiUtility->SetViewNavigationDirection(EGlxNavigationForwards); 
         //Navigate to the next view
-        CMPXCollectionPath* path =
-             iMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection );
+        CMPXCollectionPath* path = iMediaList->PathLC(
+                NGlxListDefs::EPathFocusOrSelection);
         iCollectionUtility->Collection().OpenL(*path);
         CleanupStack::PopAndDestroy(path);  
-        
 	    }
     }
 
@@ -608,14 +629,17 @@
                  * The callback is not given because the setfocus index is same as the focused index
                  * in medialist. 
                  */
-                if(count==1)
-                    {                        
-                    CMPXCollectionPath* path = iMediaList->PathLC( 
-                            NGlxListDefs::EPathFocusOrSelection );
-                    GLX_LOG_INFO("CGlxListViewImp::PreviewTNReadyL() - HandleItemChangedL()");                    
-                    iPreviewTNBinding->HandleItemChangedL(*path, 
-                            iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation);
-                    CleanupStack::PopAndDestroy( path );
+                if(count==1 )
+                    {       
+                    if(id == KGlxIdSpaceIdRoot )
+                    	{
+                        CMPXCollectionPath* path = iMediaList->PathLC( 
+                                NGlxListDefs::EPathFocusOrSelection );
+                        GLX_LOG_INFO("CGlxListViewImp::PreviewTNReadyL() - HandleItemChangedL()");                    
+                        iPreviewTNBinding->HandleItemChangedL(*path, 
+                                iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation);
+                        CleanupStack::PopAndDestroy( path );
+                    	}
                     }
                 }
 			}
@@ -639,43 +663,52 @@
 	    TFileName resFile(KDC_APP_BITMAP_DIR);
 		resFile.Append(KGlxIconsFilename);
         
-        CFbsBitmap* bitmap;
-        CMPXCollectionPath* path = iMediaList->PathLC( NGlxListDefs::EPathParent );
+        CFbsBitmap* bitmap = NULL;
+        CFbsBitmap* mask = NULL;
+        TInt bitmapId = 0;
+        TInt maskId = 0;
+        CMPXCollectionPath* path = iMediaList->PathLC(
+                NGlxListDefs::EPathParent);
         if (path->Id() == KGlxCollectionPluginAlbumsImplementationUid)
             {           
-            bitmap = AknIconUtils::CreateIconL(resFile,
-                    EMbmGlxiconsQgn_prop_photo_album_large);
-            AknIconUtils::SetSize(bitmap, 
-                    CHgDoubleGraphicListFlat::PreferredImageSize());
+            bitmapId = EMbmGlxiconsQgn_prop_photo_album_large;
+            maskId = EMbmGlxiconsQgn_prop_photo_album_large_mask;
             }
         else if (path->Id() == KGlxCollectionPluginMonthsImplementationUid)
             {
-            bitmap = AknIconUtils::CreateIconL(resFile,
-                    EMbmGlxiconsQgn_prop_photo_calendar_large);
-            AknIconUtils::SetSize(bitmap, 
-                    CHgDoubleGraphicListFlat::PreferredImageSize());
+            bitmapId = EMbmGlxiconsQgn_prop_photo_calendar_large;
+            maskId = EMbmGlxiconsQgn_prop_photo_calendar_large_mask;
             }
         else
             {
-            bitmap = AknIconUtils::CreateIconL(resFile,
-   						 EMbmGlxiconsQgn_prop_image_notcreated);
-		AknIconUtils::SetSize(bitmap, 
-				CHgDoubleGraphicListFlat::PreferredImageSize());
+            bitmapId = EMbmGlxiconsQgn_prop_image_notcreated;
+            maskId = EMbmGlxiconsQgn_prop_image_notcreated_mask;
             }
-		
-	    iList = CHgDoubleGraphicListFlat::NewL(
-	            ClientRect(), 
-	            mediaCount, 
-	            CGulIcon::NewL(bitmap) );
+
+        AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone,
+                bitmap, mask, resFile, bitmapId, maskId);
+        __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+        __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
 
+        AknIconUtils::SetSize(bitmap,
+                CHgDoubleGraphicListFlat::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+        AknIconUtils::SetSize(mask,
+                CHgDoubleGraphicListFlat::PreferredImageSize(),
+                EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+        iList = CHgDoubleGraphicListFlat::NewL(ClientRect(), mediaCount,
+                CGulIcon::NewL(bitmap, mask));
+        CleanupStack::Pop(mask);
+        CleanupStack::Pop(bitmap); 
 	    iList->SetMopParent(this);
 	    
 		iList->SetSelectionObserver(*this);
 		
-	    // Enable Buffer support
-		iList->EnableScrollBufferL(*this, (KNoOfPages * KBufferTresholdSize),
-	            KBufferTresholdSize);
-		
+		TInt items = iList->ItemsOnScreen();
+        // Enable Buffer support
+        iList->EnableScrollBufferL(*this, KNoOfPages * items, items);
+	
         if (iUiUtility->ViewNavigationDirection() == EGlxNavigationBackwards)
             {
             GLX_DEBUG1("CGlxListViewImp::CreateListL() - SetEmptyTextL()");			
@@ -816,23 +849,41 @@
 				== EGlxNavigationBackwards)
 			{
 			iIsRefreshNeeded = ETrue;
+			if(iMediaList->IdSpaceId(0) != KGlxIdSpaceIdRoot)
+				{
+				CleanUpL();
+				}
 			}
-
+		if(iMediaList->IdSpaceId(0) != KGlxIdSpaceIdRoot)
+			{
+			UpdatePreviewL(aItemIndex);
+			}
 		// Set iPopulateListTNs to ETrue and refresh all the items in
 		// list view if subtitle is updated
-		if (iPreviewTNBinding && ((!iPopulateListTNs && aItemIndex
+		else if (iPreviewTNBinding && ((!iPopulateListTNs && aItemIndex
                 == aList->Count() - 1) || (iIsRefreshNeeded)))
             {
 			iPopulateListTNs = ETrue;
 			iStartIndex = KErrNotFound;
 			CMPXCollectionPath* path = iMediaList->PathLC(
 					NGlxListDefs::EPathFocusOrSelection);
-            GLX_LOG_INFO("CGlxListViewImp::HandleAttributesAvailableL() - HandleItemChangedL()");		
+			GLX_LOG_INFO("CGlxListViewImp::HandleAttributesAvailableL() - HandleItemChangedL()");		
 			iPreviewTNBinding->HandleItemChangedL(*path, iPopulateListTNs,
 					iIsRefreshNeeded, iBackwardNavigation);
-			CleanupStack::PopAndDestroy(path);
+			CleanupStack::PopAndDestroy(path);		            	
 			}
 		}
+    TMPXAttribute thumbnailAttribute(KGlxMediaIdThumbnail,
+            GlxFullThumbnailAttributeId(ETrue, iGridIconSize.iWidth,
+                    iGridIconSize.iHeight));
+    if (KErrNotFound != aAttributes.Find(thumbnailAttribute, match))
+        {
+        if (iMediaList->IdSpaceId(0) != KGlxIdSpaceIdRoot)
+            {
+            UpdatePreviewL(aItemIndex);
+            iIsRefreshNeeded = EFalse;
+            }
+        }
 	}
 	
 // ----------------------------------------------------------------------------
@@ -843,22 +894,24 @@
 	TFocusChangeType /*aType*/, TInt /*aNewIndex*/, TInt /*aOldIndex*/,
 	MGlxMediaList* /*aList*/ )
 	{
-	TRACER( "CGlxListViewImp::HandleFocusChangedL");
-	 
+	TRACER( "CGlxListViewImp::HandleFocusChangedL");	 
 	if (iPreviewTNBinding && iPopulateListTNs)
 		{
-        CMPXCollectionPath* path = iMediaList->PathLC(
-                NGlxListDefs::EPathFocusOrSelection);
-        if (!iBackwardNavigation && path->Levels() == KGlxCollectionRootLevel
-                && path->Id(0) == KGlxCollectionPluginMonthsImplementationUid)
-            {
-            CleanupStack::PopAndDestroy(path);
-            return;
-            }
-        GLX_LOG_INFO("CGlxListViewImp::HandleFocusChangedL() - HandleItemChangedL()");        
-        iPreviewTNBinding->HandleItemChangedL(*path, iPopulateListTNs,
-                iIsRefreshNeeded, iBackwardNavigation);
-        CleanupStack::PopAndDestroy(path);
+		if(iMediaList->IdSpaceId(0) == KGlxIdSpaceIdRoot)
+			{
+	        CMPXCollectionPath* path = iMediaList->PathLC(
+	                NGlxListDefs::EPathFocusOrSelection);
+	        if (!iBackwardNavigation && path->Levels() == KGlxCollectionRootLevel
+	                && path->Id(0) == KGlxCollectionPluginMonthsImplementationUid)
+	            {
+	            CleanupStack::PopAndDestroy(path);
+	            return;
+	            }
+	        GLX_LOG_INFO("CGlxListViewImp::HandleFocusChangedL() - HandleItemChangedL()");        
+	        iPreviewTNBinding->HandleItemChangedL(*path, iPopulateListTNs,
+	                iIsRefreshNeeded, iBackwardNavigation);	                
+	        CleanupStack::PopAndDestroy(path);			
+			}
         }
 	}
 
@@ -885,9 +938,29 @@
 // HandleError
 // ----------------------------------------------------------------------------
 //
-void CGlxListViewImp::HandleError( TInt /*aError*/ ) 
+void CGlxListViewImp::HandleError( TInt aError ) 
+    {
+	TRACER( "CGlxListViewImp::HandleError");
+	TRAP_IGNORE( DoHandleErrorL( aError ) );
+    }
+
+// ----------------------------------------------------------------------------
+// DoHandleErrorL
+// ----------------------------------------------------------------------------
+//
+void CGlxListViewImp::DoHandleErrorL(TInt /*aError*/)
     {
-    
+    TRACER( "CGlxListViewImp::DoHandleErrorL");
+    for (TInt i = 0; i < iMediaList->Count(); i++)
+        {
+        const TGlxMedia& item = iMediaList->Item(i);
+        TInt tnError = GlxErrorManager::HasAttributeErrorL(item.Properties(),
+                KGlxMediaIdThumbnail);
+        if (tnError != KErrNone)
+            {
+            SetDefaultThumbnailL(i);
+            }
+        }
     }
   
 // ----------------------------------------------------------------------------
@@ -950,7 +1023,10 @@
 void CGlxListViewImp::SetDefaultThumbnailL(TInt aIndex)
     {
     TRACER("CGlxListViewImp::SetDefaultThumbnail");
-    CFbsBitmap* defaultBitmap = NULL;
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    TInt bitmapId = 0;
+    TInt maskId = 0;
     
     TFileName resFile(KDC_APP_BITMAP_DIR);
     resFile.Append(KGlxIconsFilename);
@@ -967,28 +1043,28 @@
         switch(aIndex)
             {
             case EGlxListItemAll:
-                defaultBitmap = AknIconUtils::CreateIconL(resFile,
-                        EMbmGlxiconsQgn_prop_photo_all_large);
-                AknIconUtils::SetSize(defaultBitmap, 
-                        CHgDoubleGraphicListFlat::PreferredImageSize());            
+                {
+                bitmapId = EMbmGlxiconsQgn_prop_photo_all_large;
+                maskId = EMbmGlxiconsQgn_prop_photo_all_large_mask;
+                }
                 break;
             case EGlxListItemMonth:
-                defaultBitmap = AknIconUtils::CreateIconL(resFile,
-                        EMbmGlxiconsQgn_prop_photo_calendar_large);
-                AknIconUtils::SetSize(defaultBitmap, 
-                        CHgDoubleGraphicListFlat::PreferredImageSize());
+                {
+                bitmapId = EMbmGlxiconsQgn_prop_photo_calendar_large;
+                maskId = EMbmGlxiconsQgn_prop_photo_calendar_large_mask;
+                }
                 break;
             case EGlxListItemAlbum:
-                defaultBitmap = AknIconUtils::CreateIconL(resFile,
-                        EMbmGlxiconsQgn_prop_photo_album_large);
-                AknIconUtils::SetSize(defaultBitmap, 
-                        CHgDoubleGraphicListFlat::PreferredImageSize());
+                {
+                bitmapId = EMbmGlxiconsQgn_prop_photo_album_large;
+                maskId = EMbmGlxiconsQgn_prop_photo_album_large_mask;
+                }
                 break;
             case EGlxLIstItemTag:
-                defaultBitmap = AknIconUtils::CreateIconL(resFile,
-                        EMbmGlxiconsQgn_prop_photo_tag_large);
-                AknIconUtils::SetSize(defaultBitmap, 
-                        CHgDoubleGraphicListFlat::PreferredImageSize());
+                {
+                bitmapId = EMbmGlxiconsQgn_prop_photo_tag_large;
+                maskId = EMbmGlxiconsQgn_prop_photo_tag_large_mask;
+                }
                 break;
             default:
                 break;                    
@@ -998,34 +1074,43 @@
         {
         GLX_LOG_INFO1("CGlxListViewImp::SetDefaultThumbnail - For other list view "
                 "aIndex %d",aIndex);
-        CMPXCollectionPath* path = iMediaList->PathLC( NGlxListDefs::EPathParent );
+        CMPXCollectionPath* path = iMediaList->PathLC(
+                NGlxListDefs::EPathParent);
         if(path->Id(0) == KGlxCollectionPluginAlbumsImplementationUid)
             {
-            defaultBitmap = AknIconUtils::CreateIconL(resFile,
-                    EMbmGlxiconsQgn_prop_photo_album_large);
-            AknIconUtils::SetSize(defaultBitmap, 
-                    CHgDoubleGraphicListFlat::PreferredImageSize());
+            bitmapId = EMbmGlxiconsQgn_prop_photo_album_large;
+            maskId = EMbmGlxiconsQgn_prop_photo_album_large_mask;
             }
         else if(path->Id(0) == KGlxCollectionPluginMonthsImplementationUid)
             {
-            defaultBitmap = AknIconUtils::CreateIconL(resFile,
-                    EMbmGlxiconsQgn_prop_photo_calendar_large);
-            AknIconUtils::SetSize(defaultBitmap, 
-                    CHgDoubleGraphicListFlat::PreferredImageSize());
+            bitmapId = EMbmGlxiconsQgn_prop_photo_calendar_large;
+            maskId = EMbmGlxiconsQgn_prop_photo_calendar_large_mask;
             }
         else
             {
-            defaultBitmap = AknIconUtils::CreateIconL(resFile,
-                    EMbmGlxiconsQgn_prop_image_notcreated);
-            AknIconUtils::SetSize(defaultBitmap, 
-                    CHgDoubleGraphicListFlat::PreferredImageSize());
+            bitmapId = EMbmGlxiconsQgn_prop_image_notcreated;
+            maskId = EMbmGlxiconsQgn_prop_image_notcreated_mask;
             }
         CleanupStack::PopAndDestroy(path);
         }
-    iList->ItemL(aIndex).SetIcon(CGulIcon::NewL(defaultBitmap));
+
+    AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), KAknsIIDNone, bitmap,
+            mask, resFile, bitmapId, maskId);
+    __ASSERT_DEBUG(bitmap, Panic(EGlxPanicNullPointer));
+    __ASSERT_DEBUG(mask, Panic(EGlxPanicNullPointer));
+
+    AknIconUtils::SetSize(bitmap,
+            CHgDoubleGraphicListFlat::PreferredImageSize(),
+            EAspectRatioPreservedAndUnusedSpaceRemoved);
+    AknIconUtils::SetSize(mask,
+            CHgDoubleGraphicListFlat::PreferredImageSize(),
+            EAspectRatioPreservedAndUnusedSpaceRemoved);
+
+    iList->ItemL(aIndex).SetIcon(CGulIcon::NewL(bitmap, mask));
+    CleanupStack::Pop(mask);
+    CleanupStack::Pop(bitmap); 
     }
 
-
 // ----------------------------------------------------------------------------
 // HandleDialogDismissedL
 // ----------------------------------------------------------------------------
@@ -1033,7 +1118,6 @@
 void CGlxListViewImp::HandleDialogDismissedL()
     {
     TRACER("CGlxListViewImp::HandleDialogDismissedL()");
-    isTnGenerationComplete = ETrue;
     if(iSchedulerWait)
         {
         iSchedulerWait->AsyncStop();    
@@ -1086,12 +1170,50 @@
 void CGlxListViewImp::NavigateToMainListL()
     {
     TRACER("CGlxListViewImp::NavigateToMainListL()");
-    CMPXCollectionPath* naviState = iNavigationalState->StateLC();
-    GLX_LOG_INFO1("From listview level = %d",naviState->Levels());
-//    if ( naviState->Levels() >= 1)
+    ProcessCommandL(EAknSoftkeyClose);
+    }
+// ----------------------------------------------------------------------------
+// CleanUpL
+// ----------------------------------------------------------------------------
+//	
+void CGlxListViewImp::CleanUpL()
+    {
+    GLX_LOG_INFO("CGlxListViewImp::CleanUpL()");
+    MGlxCache* cacheManager = MGlxCache::InstanceL();
+    for (TInt i = 0; i < iMediaList->Count(); i++)
         {
-        ProcessCommandL(EAknSoftkeyClose);
+        cacheManager->ForceCleanupMedia(iMediaList->IdSpaceId(0),
+                iMediaList->Item(i).Id());
         }
-    CleanupStack::PopAndDestroy(naviState);
+    cacheManager->Close();
     }
+
+// ----------------------------------------------------------------------------
+// UpdatePreviewL
+// ----------------------------------------------------------------------------
+//	
+void CGlxListViewImp::UpdatePreviewL(TInt aIndex)
+    {
+    TRACER("CGlxListViewImp::UpdatePreviewL()");
+    if (aIndex >= 0 && aIndex < iMediaList->Count())
+        {
+        TMPXAttribute thumbnailAttribute(KGlxMediaIdThumbnail,
+                GlxFullThumbnailAttributeId(ETrue, iGridIconSize.iWidth,
+                        iGridIconSize.iHeight));
+        GLX_LOG_INFO1("CGlxListViewImp::UpdatePreviewL(aIndex = %d)", aIndex);
+        const TGlxMedia& item = iMediaList->Item(aIndex);
+        const CGlxThumbnailAttribute* value = item.ThumbnailAttribute(
+                thumbnailAttribute);
+        if (value)
+            {
+            CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
+            CleanupStack::PushL(bitmap);
+            iPreviewTNBinding->ScaleBitmapToListSizeL(value->iBitmap, bitmap);
+            iList->ItemL(aIndex).SetIcon(CGulIcon::NewL(bitmap));
+            iList->RefreshScreen(aIndex);
+            CleanupStack::Pop(bitmap);
+            }
+        }
+    }
+
 //  End of File
--- a/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -347,6 +347,7 @@
 //-----------------------------------------------------------------------------
 void CGlxMetadataContainer::HandleListboxChangesL()
     {
+    TRACER("CGlxMetadataContainer::HandleListboxChangesL");
     if(iItemMediaList->Count() == 0)
     	{
     	return;
@@ -1109,14 +1110,13 @@
 // ----------------------------------------------------------------------------
 // 
 void CGlxMetadataContainer::HandleCommandCompleteL(TAny* aSessionId, 
-        CMPXCommand* /*aCommandResult*/, TInt aError, MGlxMediaList* aList)
+        CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList)
     {
     TRACER("CGlxMetadataContainer::HandleCommandCompleteL()");
     //To rename the uri in File System
     if(aError == KErrNone)
 		{
-		TInt index = ListBox()->CurrentItemIndex();
-		if(aList == iItemMediaList && index == ENameItem)
+		if(aList == iItemMediaList && aCommandResult->IsSupported(KMPXMediaGeneralTitle))
 			{
 			iItemMediaList->SetFocusL(NGlxListDefs::EAbsolute,0);
 			const TGlxMedia& media = iItemMediaList->Item(0);
--- a/photosgallery/viewframework/views/viewbase/inc/glxtoolbarcontroller.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/inc/glxtoolbarcontroller.h	Wed Apr 14 15:57:24 2010 +0300
@@ -77,6 +77,7 @@
             TInt aOldIndex, MGlxMediaList* aList);
     void HandleItemSelectedL(TInt aIndex, TBool aSelected, MGlxMediaList* aList);
     void HandleMessageL(const CMPXMessage& aMessage, MGlxMediaList* aList);
+    void HandlePopulatedL( MGlxMediaList* aList );
     
 private:
     /*
@@ -90,6 +91,12 @@
      * aLatched ETrue if the command button needs to be latched. 
      */
     void EnableLatch( TInt aCommandId, TInt aLatched );
+
+    /*
+     * Set toolbar items dimmed.
+     * @param aDimmed Flag for the toolbar items to be dimmed.
+     */
+    void SetToolbarItemsDimmed(TBool aDimmed);
      
 private:    
     CAknToolbar* iToolbar;
--- a/photosgallery/viewframework/views/viewbase/inc/glxviewbase.h	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/inc/glxviewbase.h	Wed Apr 14 15:57:24 2010 +0300
@@ -230,6 +230,12 @@
      */
     CAknTitlePane* GetTitlePaneL();
 
+    /*
+     * Set toolbar items dimmed.
+     * @param aDimmed Flag for the toolbar items to be dimmed.
+     */
+    void SetToolbarItemsDimmed(TBool aDimmed);
+    
 protected:
 	/**
 	 * Optionally implemented by sub-classes to prepare command handlers.
--- a/photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -23,6 +23,7 @@
 #include <akntoolbar.h>                     // For Toolbar
 #include <glxcommandhandlers.hrh>           // For Command ids
 #include <glxtracer.h>                         // For Logs
+#include <glxlog.h>                         // For Logs
 #include <mglxmedialist.h>
 
 #include <glxnavigationalstate.h>
@@ -63,8 +64,6 @@
 
     iToolbar = aToolbar;
     iAttributeAvailable = EFalse;
-    iToolbar->SetDimmed(ETrue);
-    iToolbar->DrawNow();
     aList.AddMediaListObserverL ( this );
     }
 
@@ -116,8 +115,7 @@
     
     if( aList->Count() <= 0 )
         {
-        iToolbar->SetDimmed(ETrue);
-        iToolbar->DrawNow();
+         SetToolbarItemsDimmed(ETrue);
         }
     }
 
@@ -153,40 +151,15 @@
 // HandleFocusChangedL
 //----------------------------------------------------------------------------
 //
-void CGlxToolbarController::HandleFocusChangedL(NGlxListDefs::TFocusChangeType /*aType*/, 
-        TInt aNewIndex, TInt /*aOldIndex*/, 
-        MGlxMediaList* aList)
+void CGlxToolbarController::HandleFocusChangedL(
+        NGlxListDefs::TFocusChangeType /*aType*/, TInt /*aNewIndex*/, 
+        TInt /*aOldIndex*/, MGlxMediaList* aList)
     {  
     TRACER("CGlxToolbarController::HandleFocusChangedL");
-    
-    // If new index is not equal to -1 (i.e., if there are some items present), 
-    // then check the media item
-    if( (aNewIndex == aList->FocusIndex()) && (KErrNotFound != aNewIndex) )
+    if (aList->Count() <= 0)
         {
-        //Get the current media item from medialist
-        const TGlxMedia& mediaItem = aList->Item(aList->FocusIndex());
-        //Check whether media item is a system item, for example Favourites album
-        TBool isSystemItem = EFalse;
-        mediaItem.GetSystemItem(isSystemItem);
-        if( mediaItem.IsStatic() )
-            {
-            iToolbar->SetDimmed(ETrue);  
-            }
-        else if( iToolbar->IsDimmed() )
-            {
-            iToolbar->SetDimmed(EFalse);
-            }
-        if( isSystemItem )
-             {
-             iToolbar->SetItemDimmed( EGlxCmdRename, ETrue, ETrue );
-             }
-        else
-             {
-             iToolbar->SetItemDimmed( EGlxCmdRename, EFalse, ETrue );   
-            }
+        SetToolbarItemsDimmed(ETrue);
         }
-    //DrawNow must be called since SetDimmed does not redraw the toolbar
-    iToolbar->DrawNow();     
     }
 
 //----------------------------------------------------------------------------
@@ -232,16 +205,17 @@
 //
 void CGlxToolbarController::SetStatusOnViewActivationL( MGlxMediaList* aList )
      {
-     	TRACER("CGlxToolbarController::SetStatusOnViewActivationL");
-     	
-     // When going back from fullscreen to grid, when the attributes are already 
-     // available in the cache, there is no HandleAttributeAvailable callback. Hence,
-     // checking for medialist count.
-     if( !iAttributeAvailable && (aList->Count(NGlxListDefs::ECountNonStatic) > 0))
-         {
-         SetStatusL(aList);
-         }    
-     }
+    TRACER("CGlxToolbarController::SetStatusOnViewActivationL");
+    GLX_LOG_INFO1("CGlxToolbarController::SetStatusOnViewActivationL(%d)",
+            aList->Count());
+    // When going back from fullscreen to grid, when the attributes are already 
+    // available in the cache, there is no HandleAttributeAvailable callback. Hence,
+    // checking for medialist count.
+    if (!iAttributeAvailable)
+        {
+        SetStatusL(aList);
+        }
+    }
 
 //----------------------------------------------------------------------------
 //SetStatusL
@@ -249,36 +223,25 @@
 //
 void CGlxToolbarController::SetStatusL(MGlxMediaList* aList)
 	{
-	TRACER("CGlxToolbarController::SetStatusL");
-	if(KErrNotFound != aList->FocusIndex())
-		{
-		//Get the current media item from medialist
-		const TGlxMedia& mediaItem = aList->Item(aList->FocusIndex());      
-
-		//Check whether media item is a system item, for example Favourites album
-		TBool isSystemItem = EFalse;    
-		mediaItem.GetSystemItem(isSystemItem);
+    TRACER("CGlxToolbarController::SetStatusL");
 
-		if(!mediaItem.IsStatic() && iToolbar->IsDimmed())
-			{
-			//Activate (Undim) the toolbar if item in focus is not static
-			iToolbar->SetDimmed(EFalse);            
-			}    
-
-
-		if( isSystemItem )
-			{
-			iToolbar->SetItemDimmed( EGlxCmdRename, ETrue, ETrue );
-			}
-		else
-			{
-			iToolbar->SetItemDimmed( EGlxCmdRename, EFalse, ETrue );
-			}    
-		}    
-	
-	//DrawNow must be called since SetDimmed does not redraw the toolbar
-	iToolbar->DrawNow();
-	}
+    GLX_LOG_INFO1("CGlxToolbarController::SetStatusL(%d)", aList->Count());
+    if (aList->Count() <= 0)
+        {
+        SetToolbarItemsDimmed(ETrue);
+        }
+    else if (KErrNotFound != aList->FocusIndex())
+        {
+        CGlxNavigationalState* navigationalState =
+                CGlxNavigationalState::InstanceL();
+        CleanupClosePushL(*navigationalState);
+        if (navigationalState->ViewingMode() == NGlxNavigationalState::EView)
+            {
+            SetToolbarItemsDimmed(EFalse);
+            }
+        CleanupStack::PopAndDestroy(navigationalState);
+        }
+    }
 
 //----------------------------------------------------------------------------
 // EnableLatch
@@ -301,5 +264,52 @@
             }
         }
     }
+
+// ----------------------------------------------------------------------------
+// HandlePopulatedL
+// ----------------------------------------------------------------------------
+//
+void CGlxToolbarController::HandlePopulatedL( MGlxMediaList* aList )
+    {
+    TRACER("CGlxToolbarController::HandlePopulatedL()");
+    if (aList->Count() <= 0)
+        {
+        SetToolbarItemsDimmed(ETrue);
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// SetToolbarItemsDimmed
+// ----------------------------------------------------------------------------
+//
+void CGlxToolbarController::SetToolbarItemsDimmed(TBool aDimmed)
+    {
+    TRACER("CGlxToolbarController::SetToolbarItemsDimmed()");
+    if (iToolbar)
+        {
+        iToolbar->SetItemDimmed(EGlxCmdSlideshowPlay, aDimmed, ETrue);
+        iToolbar->SetItemDimmed(EGlxCmdStartMultipleMarking, aDimmed, ETrue);
+        
+        if (!aDimmed)
+            {
+            CAknButton* uploadButton =
+                    static_cast<CAknButton*> (iToolbar->ControlOrNull(
+                            EGlxCmdUpload));
+            TBool dimmed = EFalse;
+            if (uploadButton)
+                {
+                // Get current button state
+                CAknButtonState* currentState = uploadButton->State();
+                dimmed = uploadButton->IsDimmed();
+                iToolbar->SetItemDimmed(EGlxCmdUpload, dimmed, ETrue);
+                }
+            }
+        else
+            {
+            iToolbar->SetItemDimmed(EGlxCmdUpload, aDimmed, ETrue);
+            }
+        }
+    }
+
 //end of file
 	
--- a/photosgallery/viewframework/views/viewbase/src/glxviewbase.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/src/glxviewbase.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -289,8 +289,7 @@
     else
         {
         // Deactivate the toolbar untill the view gets activated properly.
-        toolbar->SetDimmed(ETrue);
-        toolbar->DrawNow();            
+        SetToolbarItemsDimmed(ETrue);
         }
     toolbar->SetToolbarVisibility(ETrue);
     
@@ -539,25 +538,46 @@
     CAknToolbar* toolbar = GetToolBar();
     if(toolbar)
         {
-		//Here after the toolbar cmd is processed it is enabled
-		//back. For share the toolbar state should be same as it was 
-		//earlier, so we take the current state and reset back after
-		//the command is processed.
+        CAknButton* slideshowButton =
+            static_cast<CAknButton*> (toolbar->ControlOrNull(EGlxCmdSlideshow));
+        TBool slideshowdimmed = EFalse;
+
+        //Here after the toolbar cmd is processed it is enabled
+        //back. For share the toolbar state should be same as it was 
+        //earlier, so we take the current state and reset back after
+        //the command is processed.
         CAknButton* uploadButton =
             static_cast<CAknButton*> (toolbar->ControlOrNull(EGlxCmdUpload));
-        TBool dimmed = EFalse;
+        TBool uploaddimmed = EFalse;
+
+        CAknButton* markButton =
+            static_cast<CAknButton*> (toolbar->ControlOrNull(EGlxCmdStartMultipleMarking));
+        TBool markButtondimmed = EFalse;
+
+        if(slideshowButton)
+            {
+            // Get current button state
+            CAknButtonState* currentState = slideshowButton->State();
+            slideshowdimmed = slideshowButton->IsDimmed();
+            }
+
+        if(markButton)
+            {
+            // Get current button state
+            CAknButtonState* currentState = markButton->State();
+            markButtondimmed = markButton->IsDimmed();
+            }        
         
         if(uploadButton)
             {
             // Get current button state
             CAknButtonState* currentState = uploadButton->State();
-            dimmed = uploadButton->IsDimmed();
+            uploaddimmed = uploadButton->IsDimmed();
             }
-        
+
         // Deactivate the toolbar. Don't accept the toolbar input when the command
         // execution is already in progress.
-        toolbar->SetDimmed(ETrue);
-        toolbar->DrawNow();    
+        SetToolbarItemsDimmed(ETrue); 
         
         // Execute the command recieved.
         ProcessCommandL(aCommand);
@@ -565,8 +585,18 @@
         // Activate back the toolbar and set it's state properly
         // after command execution.
         SetToolbarStateL();
+
+        if(!markButtondimmed)
+            {
+            toolbar->SetItemDimmed(EGlxCmdStartMultipleMarking, EFalse, ETrue);
+            }
+
+        if(!slideshowdimmed)
+            {
+            toolbar->SetItemDimmed(EGlxCmdSlideshowPlay, EFalse, ETrue);
+            }
         
-        if(dimmed || (aCommand == EGlxCmdStartMultipleMarking))
+        if(uploaddimmed || (aCommand == EGlxCmdStartMultipleMarking))
             {
             toolbar->SetItemDimmed(EGlxCmdUpload, ETrue, ETrue);
             }
@@ -675,5 +705,20 @@
     InitAnimationL(EGlxViewAnimationEntry); 
     }
 
+// ----------------------------------------------------------------------------
+// SetToolbarItemsDimmed
+// ----------------------------------------------------------------------------
+//
+void CGlxViewBase::SetToolbarItemsDimmed(TBool aDimmed)
+    {
+    TRACER("CGlxViewBase::SetToolbarItemsDimmed()");
+    CAknToolbar* toolbar = GetToolBar();
+    if (toolbar)
+        {
+        toolbar->SetItemDimmed(EGlxCmdSlideshowPlay, aDimmed, ETrue);
+        toolbar->SetItemDimmed(EGlxCmdStartMultipleMarking, aDimmed, ETrue);
+        toolbar->SetItemDimmed(EGlxCmdUpload, aDimmed, ETrue);
+        }
+    }