Revision: 201011
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:58:46 +0300
changeset 24 99ad1390cd33
parent 23 74c9f037fd5d
child 26 c499df2dbb33
Revision: 201011 Kit: 201015
commonui/bwins/glxcommonuiu.def
commonui/eabi/glxcommonuiu.def
commonui/group/glxcommonui.mmp
commonui/inc/glxattributeretriever.h
commonui/src/glxattributeretriever.cpp
commonutilities/imageviewer/inc/glximageviewermanager.h
data/Albums_default.png
data/Albums_selected.png
data/All_default.png
data/All_selected.png
data/Thumbs.db
data/camera_default.png
data/camera_selected.png
data/corrupt.svg
data/fullscreentogrid.fxml
data/gridtofullscreenhide.fxml
data/imagestrip.css
data/ovi_default.png
data/ovi_selected.png
data/photos.css
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsattribute.h
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsthumbnail.h
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsattribute.cpp
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp
engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp
engine/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp
loggers/loggerqt/src/glxperformancelog.cpp
main/al/DLA.h
main/al/newallocator.cpp
main/al/newallocator.h
main/al/newallocator.inl
main/main.cpp
main/main.pro
package_definition.xml
photos.qrc
traces/OstTraceDefinitions.h
traces/fixed_id.definitions
traces/glxcommandhandlerTraces.h
traces/glxcommandhandleraddtocontainerTraces.h
traces/glxcommandhandlerdeleteTraces.h
traces/glxcommandhandlernewmediaTraces.h
traces/glxcommandhandlerremovefromTraces.h
traces/glxcommandhandlerrotateTraces.h
traces/glxdetailsviewTraces.h
traces/glxfullscreenviewTraces.h
traces/glxgridviewTraces.h
traces/glxmpxcommandhandlerTraces.h
tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.cpp
tvout/bwins/glxtvoutu.def
tvout/eabi/glxtvoutu.def
tvout/inc/glxactivedecoder.h
tvout/inc/glxhdmicontroller.h
tvout/inc/glxhdmisurfaceupdater.h
tvout/src/glxactivedecoder.cpp
tvout/src/glxhdmicontroller.cpp
tvout/src/glxhdmisurfaceupdater.cpp
tvout/src/glxtv.cpp
ui/commandhandlers/bwins/glxcommandhandlerbaseu.def
ui/commandhandlers/bwins/glxcommoncommandhandlersu.def
ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro
ui/commandhandlers/commandhandlerbase/inc/glxcommandhandler.h
ui/commandhandlers/commandhandlerbase/inc/glxmodelcommandhandler.h
ui/commandhandlers/commandhandlerbase/inc/glxmpxcommandhandler.h
ui/commandhandlers/commandhandlerbase/src/glxcommandhandler.cpp
ui/commandhandlers/commandhandlerbase/src/glxmodelcommandhandler.cpp
ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp
ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerdelete.h
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlernewmedia.h
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerremovefrom.h
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerremovefrom.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotate.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp
ui/commandhandlers/eabi/glxcommandhandlerbaseu.def
ui/commandhandlers/eabi/glxcommoncommandhandlersu.def
ui/inc/glxcommandhandlers.hrh
ui/inc/glxdocloaderdefs.h
ui/inc/glxicondefs.h
ui/inc/glxmodelparm.h
ui/inc/glxuistd.h
ui/inc/glxviewids.h
ui/uiengine/medialists/bwins/glxmedialistsu.def
ui/uiengine/medialists/eabi/glxmedialistsu.def
ui/uiengine/medialists/inc/glxattributecontext.h
ui/uiengine/medialists/inc/glxmedialistiterator.h
ui/uiengine/medialists/src/glxattributecontext.cpp
ui/uiengine/medialists/src/glxcachemanager.cpp
ui/uiengine/medialists/src/glxgarbagecollector.cpp
ui/uiengine/medialists/src/glxmedialistiterator.cpp
ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h
ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp
ui/uiengine/model/listmodel/src/glxalbummodel.cpp
ui/uiengine/model/mediamodel/inc/glxmediamodel.h
ui/uiengine/model/mediamodel/src/glxmediamodel.cpp
ui/viewmanagement/bwins/glxstatehandleru.def
ui/viewmanagement/eabi/glxstatehandleru.def
ui/viewmanagement/statehandler/inc/glxactionhandler.h
ui/viewmanagement/statehandler/inc/glxfullscreenstate.h
ui/viewmanagement/statehandler/inc/glxgridstate.h
ui/viewmanagement/statehandler/inc/glxslideshowstate.h
ui/viewmanagement/statehandler/inc/glxstatemanager.h
ui/viewmanagement/statehandler/inc/processhandler.h
ui/viewmanagement/statehandler/src/glxactionhandler.cpp
ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp
ui/viewmanagement/statehandler/src/glxgridstate.cpp
ui/viewmanagement/statehandler/src/glxstatemanager.cpp
ui/viewmanagement/statehandler/src/processhandler.cpp
ui/viewmanagement/statehandler/statehandler.pro
ui/viewmanagement/viewmanager/inc/glxmenumanager.h
ui/viewmanagement/viewmanager/inc/glxviewmanager.h
ui/viewmanagement/viewmanager/src/glxmenumanager.cpp
ui/viewmanagement/viewmanager/src/glxviewmanager.cpp
ui/views/detailsview/inc/glxdetailscustomwidgets.h
ui/views/detailsview/inc/glxdetailsview.h
ui/views/detailsview/src/glxdetailscustomwidgets.cpp
ui/views/detailsview/src/glxdetailsview.cpp
ui/views/effectengine/src/glxeffectengine.cpp
ui/views/fullscreenview/inc/glxfullscreenview.h
ui/views/fullscreenview/src/glxcoverflow.cpp
ui/views/fullscreenview/src/glxfullscreenview.cpp
ui/views/gridview/inc/glxgridview.h
ui/views/gridview/src/glxgridview.cpp
ui/views/listview/inc/glxlistview.h
ui/views/listview/src/glxlistview.cpp
ui/views/slideshowview/src/glxslideshowview.cpp
ui/views/slideshowview/src/glxslideshowwidget.cpp
ui/views/viewbase/inc/glxview.h
ui/views/viewbase/src/glxview.cpp
ui/views/views.pro
--- a/commonui/bwins/glxcommonuiu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/commonui/bwins/glxcommonuiu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -24,4 +24,5 @@
 	?SetToViewMode@CGlxNavigationalState@@QAEXXZ @ 23 NONAME ABSENT ; void CGlxNavigationalState::SetToViewMode(void)
 	?StateLC@CGlxNavigationalState@@QBEPAVCMPXCollectionPath@@XZ @ 24 NONAME ABSENT ; class CMPXCollectionPath * CGlxNavigationalState::StateLC(void) const
 	?ViewingMode@CGlxNavigationalState@@QAE?AW4TViewingMode@NGlxNavigationalState@@XZ @ 25 NONAME ABSENT ; enum NGlxNavigationalState::TViewingMode CGlxNavigationalState::ViewingMode(void)
+	?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 26 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int)
 
--- a/commonui/eabi/glxcommonuiu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/commonui/eabi/glxcommonuiu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -11,8 +11,11 @@
 	_ZN21CGlxResolutionUtility14RemoveObserverER28MGlxResolutionChangeObserver @ 10 NONAME
 	_ZN21CGlxResolutionUtility5CloseEv @ 11 NONAME
 	_ZN21CGlxResolutionUtility9InstanceLEv @ 12 NONAME
-	_ZN22NGlxZoomStatePublisher13PublishStateLEi @ 13 NONAME
-	_ZNK21CGlxResolutionUtility10ScreenSizeEv @ 14 NONAME
-	_ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 15 NONAME
-	_ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 16 NONAME
+	_ZN21GlxAttributeRetriever9RetrieveLERK16MGlxFetchContextR13MGlxMediaListi @ 13 NONAME
+	_ZN22NGlxZoomStatePublisher13PublishStateLEi @ 14 NONAME
+	_ZNK21CGlxResolutionUtility10ScreenSizeEv @ 15 NONAME
+	_ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 16 NONAME
+	_ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 17 NONAME
+	_ZTI33CGlxSynchronousAttributeRetriever @ 18 NONAME
+	_ZTV33CGlxSynchronousAttributeRetriever @ 19 NONAME
 
--- a/commonui/group/glxcommonui.mmp	Fri Mar 19 09:28:59 2010 +0200
+++ b/commonui/group/glxcommonui.mmp	Fri Apr 16 14:58:46 2010 +0300
@@ -36,7 +36,7 @@
 
 SYSTEMINCLUDE   ../../inc
 SYSTEMINCLUDE   ../../commonutilities/common/inc
-
+SYSTEMINCLUDE   ../../ui/uiengine/medialists/inc
 
 USERINCLUDE     ../inc
 
@@ -45,6 +45,7 @@
 SOURCE          glxresolutionmanager.cpp
 SOURCE          glxresolutionutility.cpp
 SOURCE          glxzoomstatepublisher.cpp
+SOURCE          glxattributeretriever.cpp
 
 LIBRARY         bafl.lib
 LIBRARY         efsrv.lib
--- a/commonui/inc/glxattributeretriever.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/commonui/inc/glxattributeretriever.h	Fri Apr 16 14:58:46 2010 +0300
@@ -38,7 +38,7 @@
  *	@ingroup mlm_media_list_manager_design
  *  @lib glxuiutilities.lib
  */
-NONSHARABLE_CLASS( GlxAttributeRetriever )
+class GlxAttributeRetriever 
 	{
 public:
 	/**
--- a/commonui/src/glxattributeretriever.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/commonui/src/glxattributeretriever.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -19,13 +19,11 @@
 
 #include "glxattributeretriever.h"
 
-#include <aknWaitDialog.h>
-#include <avkon.rsg>
-#include <EIKENV.H>
-#include <aknutils.h>
+#include <eikenv.h>
+#include <AknUtils.h>
 #include <bautils.h>
 #include <data_caging_path_literals.hrh>
-#include <stringloader.h>
+
 
 #include <mpxattributespecs.h>
 #include <mpxcollectionpath.h>
@@ -33,11 +31,8 @@
 #include <glxlog.h>
 #include <glxmedialist.h>
 #include <glxpanic.h>
-#include <glxuistd.h>
-#include <glxuiutilities.rsg>
 #include <mglxfetchcontext.h>
 #include <mglxmedialistobserver.h>
-#include <glxresourceutilities.h>
 
 
 
@@ -152,80 +147,6 @@
     };
     
 /**
- *  This class displays a wait dialog and blocks until all requested metadata has been retrieved.
- */  
-class CGlxWaitDialogAttributeRetriever : public CBase, 
-                                         public MProgressDialogCallback,
-                                         public MGlxBlockingAttributeRetriever,
-                                         public MGlxAttributeRetrieverObserver
-    {
-public:
-    static CGlxWaitDialogAttributeRetriever* NewLC();
-    
-public: // from MGlxBlockingAttributeRetriever
-    /**
-     * See @ref MGlxBlockingAttributeRetriever::RetrieveL
-     */
-    TInt RetrieveL(const MGlxFetchContext* aContext, MGlxMediaList* aList);
-
-private: // from MGlxAttributeRetrieverObserver
-    /**
-     * See @ref MGlxAttributeRetrieverObserver::AttributeRetrievalCompleteL
-     */
-    void AttributeRetrievalCompleteL(TInt aError);
-    
-public: // From MProgressDialogCallback
-     void DialogDismissedL(TInt aButtonId);
-
-private:
-    /**
-     * Constructor
-     */
-    CGlxWaitDialogAttributeRetriever();
-    
-    /**
-     * Destructor
-     */
-    ~CGlxWaitDialogAttributeRetriever();
-    
-    /**
-     * Second stage constructor
-     */
-    void ConstructL();
-    
-private:
-    /**
-     * Loads the resource file for this dll
-     */
-    void AddResourceFileL();
-
-    /**
-     * Unloads the resource file for this dll
-     */
-    void RemoveResourceFile();
-
-private:
-    /// App environment used for accessing resource file (not owned)
-    CCoeEnv* iCoeEnv;
-
-    /// Wait dialog
-    CAknWaitDialog* iWaitDialog;
-
-    /// Resource file offset
-    TInt iResourceOffset;
-    
-    /**
-     * Attribute retriever (owned)
-     */
-    CGlxAttributeRetriever* iAttributeRetriever;
-    
-    /**
-     * Attribute retrieval error
-     */
-    TInt iError;
-    };
-
-/**
  *  This class blocks until all requested metadata has been retrieved
  */  
 class CGlxSynchronousAttributeRetriever : public CBase,
@@ -284,26 +205,12 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C TInt GlxAttributeRetriever::RetrieveL(const MGlxFetchContext& aContext, 
-        MGlxMediaList& aList, TBool aShowDialog)
+        MGlxMediaList& aList, TBool /*aShowDialog*/)
     {
-    MGlxBlockingAttributeRetriever* retriever = NULL;
-    if (aShowDialog)
-        {
-        retriever = CGlxWaitDialogAttributeRetriever::NewLC();
-        }
-    else
-        {
-        retriever = CGlxSynchronousAttributeRetriever::NewLC();
-        }
+    CGlxSynchronousAttributeRetriever* retriever = NULL;
+    retriever = CGlxSynchronousAttributeRetriever::NewLC();
     TInt err = retriever->RetrieveL(&aContext, &aList);
-   /**
-     * This will cause a code scanner warning, but it is not possible to do 
-     * CleanupStack::PopAndDestroy(retriever) because the pointer pushed 
-     * onto the cleanup stack was either of class CGlxWaitDialogAttributeRetriever
-     * or a CGlxSynchronousAttributeRetriever and the object 'retriever' is of
-     * class MGlxBlockingAttributeRetriever
-     */
-    CleanupStack::PopAndDestroy(); 
+    CleanupStack::PopAndDestroy(retriever); 
     return err;
     }
 
@@ -507,135 +414,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CGlxWaitDialogAttributeRetriever
-// -----------------------------------------------------------------------------
-//
-
-// -----------------------------------------------------------------------------
-// CGlxWaitDialogAttributeRetriever::NewLC
-// -----------------------------------------------------------------------------
-//
-CGlxWaitDialogAttributeRetriever* CGlxWaitDialogAttributeRetriever::NewLC()
-    {
-    CGlxWaitDialogAttributeRetriever* self = new (ELeave) CGlxWaitDialogAttributeRetriever();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
-    }
-    
-// -----------------------------------------------------------------------------
-// CGlxWaitDialogAttributeRetriever::RetrieveL
-// -----------------------------------------------------------------------------
-//
-TInt CGlxWaitDialogAttributeRetriever::RetrieveL(const MGlxFetchContext* aContext, MGlxMediaList* aList)
-    {
-    // Load the resource file for this dll containing the wait dialog
-    AddResourceFileL();
-    
-    // prepare the wait dialog
-    iWaitDialog = new( ELeave ) CAknWaitDialog(reinterpret_cast<CEikDialog**>(&iWaitDialog));
-    iWaitDialog->PrepareLC(R_GLX_WAIT_NOTE_BLOCKING); // Pushes a point to a CEikDialog onto the CleanupStack. RunLD Pops it.
-    
-    iWaitDialog->SetCallback(this);
-    
-    // Load string for dialog
-    HBufC* title = StringLoader::LoadLC( R_GLX_PROGRESS_GENERAL );
-    iWaitDialog->SetTextL(*title);
-    CleanupStack::PopAndDestroy(title);         
-    
-    // The cancel key is specified in the resource
-    CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-    cba->AddCommandSetToStackL(R_AVKON_SOFTKEYS_CANCEL);
-    
-    iAttributeRetriever->RetrieveL(aContext, aList);
-    iWaitDialog->RunLD(); // starts another active scheduler and blocks
-    return iError;
-    }
-
-// -----------------------------------------------------------------------------
-// CGlxWaitDialogAttributeRetriever::AttributeRetrievalComplete
-// -----------------------------------------------------------------------------
-//
-void CGlxWaitDialogAttributeRetriever::AttributeRetrievalCompleteL(TInt aError)
-    {
-    iError = aError;
-    iWaitDialog->ProcessFinishedL();
-    }
-
-// -----------------------------------------------------------------------------
-// CGlxWaitDialogAttributeRetriever::DialogDismissedL
-// -----------------------------------------------------------------------------
-//
-void CGlxWaitDialogAttributeRetriever::DialogDismissedL(TInt aButtonId)
-    {
-    if (aButtonId == EEikBidCancel)
-        {
-        iAttributeRetriever->CancelRetrieve();
-        iError = KErrCancel;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Constructor
-// -----------------------------------------------------------------------------
-//
-CGlxWaitDialogAttributeRetriever::CGlxWaitDialogAttributeRetriever()
-    {
-    iCoeEnv = CCoeEnv::Static();
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CGlxWaitDialogAttributeRetriever::~CGlxWaitDialogAttributeRetriever()
-    {
-    RemoveResourceFile();
-    delete iAttributeRetriever;
-    }
-
-// -----------------------------------------------------------------------------
-// CGlxWaitDialogAttributeRetriever::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CGlxWaitDialogAttributeRetriever::ConstructL()
-    {
-    iAttributeRetriever = new (ELeave) CGlxAttributeRetriever(*this);
-    }
-
-// -----------------------------------------------------------------------------
-// AddResourceFileL
-// -----------------------------------------------------------------------------
-//
-void CGlxWaitDialogAttributeRetriever::AddResourceFileL()
-    {
-    if (!iResourceOffset) // Lazy construction - ensure that this is only run once
-        {
-        GLX_LOG_INFO("Adding attribute retriever resource file");
-        TParse parse;
-        parse.Set(KGlxUiUtilitiesResource, &KDC_APP_RESOURCE_DIR, NULL);
-        TFileName resourceFile;
-        resourceFile.Append(parse.FullName());
-        CGlxResourceUtilities::GetResourceFilenameL(resourceFile);  
-        iResourceOffset = iCoeEnv->AddResourceFileL(resourceFile);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// RemoveResourceFile
-// -----------------------------------------------------------------------------
-//
-void CGlxWaitDialogAttributeRetriever::RemoveResourceFile()
-    {
-    if (iResourceOffset) // Check that the resource has been loaded
-        {
-        GLX_LOG_INFO("Removing attribute retriever resource file");
-        iCoeEnv->DeleteResourceFile( iResourceOffset );
-        iResourceOffset = 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // CGlxSynchronousAttributeRetriever
 // -----------------------------------------------------------------------------
 //
--- a/commonutilities/imageviewer/inc/glximageviewermanager.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/commonutilities/imageviewer/inc/glximageviewermanager.h	Fri Apr 16 14:58:46 2010 +0300
@@ -43,7 +43,7 @@
     /**
      * Singleton constructor.
      */
-    static CGlxImageViewerManager* InstanceL();
+    IMPORT_C static CGlxImageViewerManager* InstanceL();
     
 public:
     IMPORT_C HBufC* ImageUri();
Binary file data/Albums_default.png has changed
Binary file data/Albums_selected.png has changed
Binary file data/All_default.png has changed
Binary file data/All_selected.png has changed
Binary file data/Thumbs.db has changed
Binary file data/camera_default.png has changed
Binary file data/camera_selected.png has changed
--- a/data/corrupt.svg	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg width="72" height="60" viewBox="0 0 72 60">
-<linearGradient id="_18" gradientUnits="userSpaceOnUse" x1="-4.96" y1="-11.63" x2="35.54" y2="29.54">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<path fill="url(#_18)" d="M1.325,1.188v57.625h69.349V1.188H1.325z M69.727,2.188v55.625H2.271V2.188H69.727z"/>
-<rect x="3.16" y="3.144" fill="#FFFFFF" width="65.645" height="53.717"/>
-<linearGradient id="_19" gradientUnits="userSpaceOnUse" x1="81.49" y1="63.31" x2="24.32" y2="21.47">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<path fill="url(#_19)" d="M2.213,2.144v55.717h67.538V2.144H2.213z M68.805,3.144v53.717H3.16V3.144H68.805z"/>
-<linearGradient id="_20" gradientUnits="userSpaceOnUse" x1="29.3" y1="25.97" x2="34.58" y2="36.38">
-<stop stop-color="#A0C4E0" offset="0.1"/>
-<stop stop-color="#7084B8" offset="0.71"/>
-<stop stop-color="#003C70" offset="0.99"/>
-</linearGradient>
-<path fill="url(#_20)" d="M14.352,33.699l0.736,1.302l14.227,3.978l10.53-7.776l-0.075-1.429c0,0-2.215-5.232-2.346-5.539 c0.292-0.17,7.105-4.16,7.105-4.16l-0.102-1.47l-19.552-3.548L14.352,33.699z"/>
-<linearGradient id="_21" gradientUnits="userSpaceOnUse" x1="46.48" y1="34.72" x2="51.06" y2="43.73">
-<stop stop-color="#A0C4E0" offset="0.1"/>
-<stop stop-color="#7084B8" offset="0.71"/>
-<stop stop-color="#003C70" offset="0.99"/>
-</linearGradient>
-<path fill="url(#_21)" d="M42.087,25.547c0,0,1.627,6.77,1.697,7.063C43.51,32.75,32.24,38.556,32.24,38.556l0.359,1.556 l13.705,5.965l11.662-19.673l-0.078-1.963l-6.825-2.337L42.087,25.547z"/>
-<linearGradient id="_22" gradientUnits="userSpaceOnUse" x1="13.37" y1="32.08" x2="32.87" y2="41.14">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_22)" points="14.582,33.698 15.223,34.83 29.273,38.759 29.092,37.495 "/>
-<linearGradient id="_23" gradientUnits="userSpaceOnUse" x1="72.25" y1="16.33" x2="18.63" y2="28.67">
-<stop stop-color="#FFFFFF" offset="0.15"/>
-<stop stop-color="#A0C4E0" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_23)" points="36.717,23.079 42.595,19.674 25.518,16.518 16.697,32.896 30.502,36.512 39.57,29.818 "/>
-<linearGradient id="_24" gradientUnits="userSpaceOnUse" x1="69.89" y1="42.73" x2="20.55" y2="32.45">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<path fill="url(#_24)" d="M18.393,30.045L16.784,32.8l13.673,3.67c0.347-0.234,0.594-0.415,0.719-0.51 C30.863,35.917,20.57,31.294,18.393,30.045z"/>
-<path fill="#105C80" d="M23.918,30.787l2.039,2.121c1.498,0.498,4.688,1.425,7.105,1.56 c0.061,0.002,0.118,0.002,0.178,0.004c0.982-0.719,1.967-1.443,2.854-2.098C31.803,31.598,25.73,30.65,23.918,30.787z"/>
-<polygon fill="#C0DCE0" points="28.959,31.822 30.592,32.006 32.594,34.179 30.842,33.991 "/>
-<polygon fill="#309098" points="28.959,31.822 28.889,32.071 30.481,33.932 30.805,33.933 "/>
-<path fill="#288498" d="M33.1,34.391c-1.842-0.126-4.975-0.771-7.03-1.552c-0.205,0.288-1.85,0.67-2.222,0.554 c0.506,0.672,3.641,1.833,6.363,2.448c0.338,0.068,0.659,0.123,0.975,0.166c0.69-0.509,1.43-1.052,2.175-1.601 C33.271,34.401,33.184,34.396,33.1,34.391z"/>
-<linearGradient id="_25" gradientUnits="userSpaceOnUse" x1="23.28" y1="31.6" x2="25.15" y2="33.29">
-<stop stop-color="#D8E8F0" offset="0"/>
-<stop stop-color="#288498" offset="1"/>
-</linearGradient>
-<path fill="url(#_25)" d="M23.773,30.758c0,0,2.316,2.056,2.296,2.08c-0.292,0.321-1.138,0.954-1.937,0.817 c-0.846-0.584-0.908-1.527-0.908-1.527S23.343,31.36,23.773,30.758z"/>
-<path fill="#C0DCE0" d="M32.969,34.058c-2.336-0.209-5.211-1.041-6.455-1.461l-1.723-1.564 c1.474-0.03,7.344,0.771,11.227,1.442c0.078-0.058,0.158-0.115,0.234-0.173c-4.289-0.773-10.469-1.717-12.447-1.54 l2.273,2.114c1.664,0.663,4.678,1.422,7.082,1.617c0.036,0.004,0.069,0.004,0.105,0.007c0.177-0.13,0.353-0.259,0.529-0.39 C33.521,34.099,33.244,34.081,32.969,34.058z"/>
-<path fill="#FFFFFF" d="M36.945,23.704c-0.605,0.613-3.156,0.448-3.156,0.448s-8.658-1.026-10.996-2.672l1.2-2.251 c1.04-0.012,2.136,0.259,2.653,0.59c0.013-0.749,2.879-2.054,4.197-0.252c1.289-1.094,5.271-1.362,4.982,1.563 C38.984,21.519,36.945,23.704,36.945,23.704z"/>
-<linearGradient id="_26" gradientUnits="userSpaceOnUse" x1="35.68" y1="25.68" x2="21.07" y2="28.27">
-<stop stop-color="#2898A0" offset="0"/>
-<stop stop-color="#084C60" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_26)" points="30.584,32.431 37.542,19.503 24.52,28.993 "/>
-<polygon fill="#309098" points="34.89,33.22 31.27,33.26 36.427,22.056 36.254,32.302 "/>
-<linearGradient id="_27" gradientUnits="userSpaceOnUse" x1="2.66" y1="30.81" x2="50.99" y2="22.06">
-<stop stop-color="#FFFFFF" offset="0.15"/>
-<stop stop-color="#A0C4E0" offset="1"/>
-</linearGradient>
-<path fill="url(#_27)" d="M16.932,32.812l8.81-15.998l16.661,2.953l1.83-1.104l-19.25-3.385l-10.42,18.458l14.39,3.804 c0.492-0.362,1.073-0.79,1.706-1.255L16.932,32.812z"/>
-<linearGradient id="_28" gradientUnits="userSpaceOnUse" x1="42.08" y1="17.84" x2="38.15" y2="27.09">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#486CA0" offset="0.71"/>
-<stop stop-color="#205488" offset="0.99"/>
-</linearGradient>
-<polygon fill="url(#_28)" points="44.232,18.663 44.322,19.964 37.154,24.159 36.709,23.07 "/>
-<linearGradient id="_29" gradientUnits="userSpaceOnUse" x1="34.08" y1="29.59" x2="34.62" y2="42.53">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#486CA0" offset="0.71"/>
-<stop stop-color="#205488" offset="0.99"/>
-</linearGradient>
-<polygon fill="url(#_29)" points="39.551,29.804 39.639,31.104 29.273,38.759 28.922,37.539 "/>
-<polygon fill="url(#_23)" points="55.553,25.249 49.131,23.082 42.324,25.671 44.017,32.716 34.158,37.792 45.006,42.313 "/>
-<path fill="#288498" d="M41.658,34.837l-1.035-0.368l-4.932,2.533C38.661,37.163,41.658,34.837,41.658,34.837z"/>
-<path fill="#C0DCE0" d="M38.316,35.652c0.908,0.021,1.686-0.132,2.461-0.403c0.273-0.102,0.564-0.235,0.881-0.412 c-0.262-0.115-1.039-0.371-1.039-0.371L38.316,35.652z"/>
-<path fill="#105C80" d="M40.388,34.587l-1.325,0.691c0.67-0.065,1.313-0.205,1.915-0.451 C40.818,34.756,40.615,34.675,40.388,34.587z"/>
-<path fill="url(#_24)" d="M37.207,36.707c-0.266-0.021-0.588-0.022-0.844-0.056l-2.061,1.055l10.752,4.578l1.49-2.377 C46.545,39.907,44.143,37.172,37.207,36.707z"/>
-<path fill="url(#_27)" d="M57.674,24.589l-6.606-2.271c-0.556,0.217-1.286,0.503-2.093,0.816l6.374,2.217L44.953,42.152 l-10.574-4.483l-1.908,0.993l13.182,5.759L57.674,24.589z"/>
-<linearGradient id="_33" gradientUnits="userSpaceOnUse" x1="54.14" y1="18.67" x2="49.2" y2="52.99">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_33)" points="57.694,24.586 45.74,44.174 46.223,45.821 57.764,26.351 "/>
-<linearGradient id="_34" gradientUnits="userSpaceOnUse" x1="19.04" y1="20.03" x2="47.66" y2="51.22">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_34)" points="45.773,44.187 32.471,38.663 32.771,39.968 46.223,45.821 "/>
-</svg>
\ No newline at end of file
--- a/data/fullscreentogrid.fxml	Fri Mar 19 09:28:59 2010 +0200
+++ b/data/fullscreentogrid.fxml	Fri Apr 16 14:58:46 2010 +0300
@@ -2,12 +2,12 @@
 <visual>
 
 <param name="translation_x" type="anim">
-<duration>0.3</duration>
+<duration>0.4</duration>
 <style>linear</style>
       <keyframe at="0">0</keyframe>
       <keyframe at="1">1</keyframe>
-<start ref="screen.right">1</start>
-<end ref="screen.left">1</end>
+<start ref="visual.right">1</start>
+<end ref="visual.left">1</end>
 </param>
 
 </visual>
--- a/data/gridtofullscreenhide.fxml	Fri Mar 19 09:28:59 2010 +0200
+++ b/data/gridtofullscreenhide.fxml	Fri Apr 16 14:58:46 2010 +0300
@@ -2,36 +2,32 @@
 <visual>
 
 <param name="scale_x" type="anim">
-    <duration>0.4</duration>
+    <duration>0.3</duration>
     <style>linear</style>
     <keyframe at="0.0">0.0</keyframe>
-    <keyframe at="0.99">1.0</keyframe>
-    <keyframe at="1.0">0.0</keyframe>
+    <keyframe at="1.0">1.0</keyframe>
     <start ref="visual.width">1</start>
     <end ref="screen.width">1</end>
-
 </param>
     
 <param name="scale_y" type="anim">
-    <duration>0.4</duration>
+    <duration>0.3</duration>
     <style>linear</style>
     <keyframe at="0.0">0.0</keyframe>
-    <keyframe at="0.99">1.0</keyframe>
-    <keyframe at="1.0">0.0</keyframe>
+    <keyframe at="1.0">1.0</keyframe>
     <start ref="visual.height">1</start>
     <end ref="screen.height">1</end>
-
 </param>
 
 <param name="scale_origin_x" ref="screen.width">0.5</param>
 <param name="scale_origin_y" ref="screen.height">0.5</param>
 
 <param name="opacity" type="anim">
-<duration>0.4</duration>
+<duration>0.3</duration>
 <style>linear</style>
 <keyframe at="0.0">1.0</keyframe>
-<keyframe at="0.5">0.75</keyframe>
-<keyframe at="1.0">0</keyframe>
+<keyframe at="0.5">1.0</keyframe>
+<keyframe at="1.0">0.5</keyframe>
 </param>
 
 </visual>
--- a/data/imagestrip.css	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-HbGridViewItem::icon{
-	left:0un;
-	top:0un;
-	right:0un;
-	bottom:0un;
-    fixed-width:80px;
-    fixed-height:80px;
-}
Binary file data/ovi_default.png has changed
Binary file data/ovi_selected.png has changed
--- a/data/photos.css	Fri Mar 19 09:28:59 2010 +0200
+++ b/data/photos.css	Fri Apr 16 14:58:46 2010 +0300
@@ -1,22 +1,65 @@
-HbGridViewItem::icon:portrait{
+HbGridViewItem[layoutName="GridView"]::icon:portrait{
+	left:0un;
+	top:0un;
+	right:0un;
+	bottom:0un;
+    fixed-width:17.761un;
+    fixed-height:15.373un;
+}
+
+HbGridViewItem[layoutName="GridView"]::icon:landscape{
 	left:0un;
 	top:0un;
 	right:0un;
 	bottom:0un;
-    fixed-width:120px;
-    fixed-height:120px;
+    fixed-width:18.9552un;
+    fixed-height:16.4179un;
+}
+
+HbGridViewItem[layoutName="GridView"]::multiselection-toucharea{
+    fixed-width: 17un;
+    fixed-height: 15un;
 }
 
-HbGridViewItem::icon:landscape{
-	left:0un;
-	top:0un;
+HbGridViewItem[layoutName="ImageStrip"]::icon:portrait{
+	left:0px;
+	top:0px;
+	right:0un;
+	bottom:0un;
+    fixed-width:13.28358un;
+    fixed-height:11.50546un;
+}
+
+HbGridViewItem[layoutName="ImageStrip"]::icon:landscape{
+	left:0px;
+	top:0px;
 	right:0un;
 	bottom:0un;
-    fixed-width:128px;
-    fixed-height:128px;
+    fixed-width:14.179104un;
+    fixed-height:12.2811un;
+}
+
+HbListViewItem::icon-1[graphicsSize="Image"]:portrait{
+	fixed-height: 13.43283un;
+	fixed-width: 15.522388un;
+}
+
+HbListViewItem::icon-1[graphicsSize="Image"]:landscape{
+	fixed-height: 13.43283un;
+	fixed-width: 15.522388un;
 }
 
-HbGridViewItem::multiselection-toucharea{
-    fixed-width: 120px;
-    fixed-height: 120px;
+HbListViewItem::selection-icon{
+	fixed-height: var(hb-param-graphic-size-primary-medium);
+	fixed-width: var(hb-param-graphic-size-primary-medium);
 }
+
+HbListViewItem::multiselection-toucharea{
+	fixed-width: 90.0un;
+}
+
+HbListViewItem::icon-1{
+	fixed-height: var(hb-param-graphic-size-function);
+	fixed-width: var(hb-param-margin-view-bottom);
+}
+
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h	Fri Apr 16 14:58:46 2010 +0300
@@ -247,9 +247,10 @@
     TBool iTnRequestInProgress;
     TInt iTnHandle;
     TGlxMediaId iMediaId;
-    
+#ifdef _DEBUG   
 	TTime iStartTime;
 	TTime iStopTime;
+#endif
 #else
     CGlxtnThumbnailCreator*   iThumbnailCreator;
     CGlxtnThumbnailDatabase*  iThumbnailDatabase;
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsattribute.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsattribute.h	Fri Apr 16 14:58:46 2010 +0300
@@ -156,9 +156,10 @@
      * Attributes associated with outstanding queries
      */
     RArray< TGlxQueryAttribute > iQueryAttributes;
-
+#ifdef _DEBUG
 	TTime iStartTime;
-	TTime iStopTime;	
+	TTime iStopTime;
+#endif
 	};
 
 
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsthumbnail.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsthumbnail.h	Fri Apr 16 14:58:46 2010 +0300
@@ -131,9 +131,10 @@
     TRequestStatus* iTnRequestStatus;
 
     TBool iTnRequestInProgress;
-
+#ifdef _DEBUG
 	TTime iStartTime;
-	TTime iStopTime;	
+	TTime iStopTime;
+#endif
 	};
 
 #endif // GLXDATASOURCETASKMDSTHUMBNAIL_H_
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -226,6 +226,7 @@
 void CGlxDataSourceMde::HandleSessionError(CMdESession& /*aSession*/, TInt /*aError*/ )    
     {
     TRACER("CGlxDataSourceMde::HandleSessionError(CMdESession& /*aSession*/, TInt /*aError*/)")
+    delete iSession;
     iSession = NULL;
     iDataSourceReady = EFalse;
     iSessionOpen = EFalse;
@@ -252,14 +253,15 @@
 		}
 	else if (dynamic_cast< CGlxGetRequest *>(aRequest))
 		{
-	    _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]");
-	    RDebug::Print(_L("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeAttributeMde+"));
+	    GLX_LOG_INFO("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeAttributeMde+");
+#ifdef _DEBUG
+        _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]");
 	    TTime time;
 	    time.HomeTime(); // Get home time
 	    TBuf<32> timeStampBuf;
 	    time.FormatL(timeStampBuf, KFormatTimeStamp);
 	    RDebug::Print(_L("%S"), &timeStampBuf);    
-		
+#endif
         CleanupStack::PushL(aRequest);
         CGlxDataSourceTaskMdeAttributeMde* task = new (ELeave) CGlxDataSourceTaskMdeAttributeMde(static_cast<CGlxGetRequest*>(aRequest), aObserver, this);
 		CleanupStack::Pop(aRequest); // now owned by task
@@ -280,14 +282,15 @@
 		}
 	else if (dynamic_cast< CGlxThumbnailRequest *>(aRequest))
 		{	
-	    _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]");
-	    RDebug::Print(_L("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeThumbnail+"));
+	    GLX_LOG_INFO("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeThumbnail+");
+#ifdef _DEBUG
+        _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]");
 	    TTime time;
 	    time.HomeTime(); // Get home time
 	    TBuf<32> timeStampBuf;
 	    time.FormatL(timeStampBuf, KFormatTimeStamp);
 	    RDebug::Print(_L("%S"), &timeStampBuf);    
-
+#endif
         CleanupStack::PushL(aRequest);
         CGlxDataSourceTaskMdeThumbnail* task = new (ELeave) CGlxDataSourceTaskMdeThumbnail(static_cast<CGlxThumbnailRequest*>(aRequest), aObserver, this);
         CleanupStack::Pop(aRequest); // now owned by task
@@ -887,7 +890,9 @@
 	     GLX_LOG_INFO("CGlxDataSourceMde::FetchThumbnailL() - Fetch TN attrib - EFullScreenThumbnailSize");
 	}
     CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(request->ThumbnailInfo()->FilePath(), 0);
-	iStartTime.UniversalTime();
+#ifdef _DEBUG
+    iStartTime.UniversalTime();
+#endif
     iTnThumbnailCbId = iTnEngine->GetThumbnailL(*source);
     iTnRequestInProgress = ETrue;
     CleanupStack::PopAndDestroy();
@@ -915,9 +920,10 @@
 	if (iTnThumbnailCbId == aId)
 		{
 		iTnRequestInProgress = EFalse;
+#ifdef _DEBUG
 		iStopTime.UniversalTime();
-		RDebug::Print(_L("==> S60 TNMan fetch took <%d> us"), (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
-	    
+		GLX_LOG_INFO1("==> S60 TNMan fetch took <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
+#endif
 	    if (aError == KErrNone && iTnHandle)
 	    	{
 	    	if (iTnHandle == KGlxMessageIdBackgroundThumbnail)
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsattribute.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsattribute.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -114,9 +114,10 @@
         
     __ASSERT_DEBUG(request->MediaIds().Count() > 0, User::Invariant());
 
- 	RDebug::Print(_L("==> CGlxDataSourceTaskMdeAttributeMde::ExecuteRequestL"));
-	iStartTime.HomeTime(); // Get home time
-    
+ 	GLX_LOG_INFO("==> CGlxDataSourceTaskMdeAttributeMde::ExecuteRequestL");
+#ifdef _DEBUG
+ 	iStartTime.HomeTime(); // Get home time
+#endif
     if (request->MediaIds().Count() > 1)
         {
         iMediaArray = CMPXMediaArray::NewL();
@@ -1164,13 +1165,14 @@
 	CMdEQuery* query = iQueries[0];
 	
     TInt queryResultsCount = query->Count();
-   	iStopTime.HomeTime(); // Get home time
-   	RDebug::Print(_L("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL - queryResultsCount=%d"), queryResultsCount);
+   	GLX_LOG_INFO1("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL - queryResultsCount=%d", queryResultsCount);
+#ifdef _DEBUG
+    iStopTime.HomeTime(); // Get home time
    	if (queryResultsCount)
    		{
-		RDebug::Print(_L("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL took <%d> us"), (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
+   		GLX_LOG_INFO1("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL took <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
    		}
-
+#endif
     if( ( queryResultsCount == 1 ) && ( !iMediaArray ) )
         {
         CMdEObject& object = static_cast<CMdEObject&>(query->ResultItem(0));
@@ -1186,11 +1188,10 @@
         for (TInt i = 0; i < queryResultsCount; i++)
             {
             CMdEObject& object = static_cast<CMdEObject&>(query->ResultItem(i));
-            
             CMPXMedia* entry = CMPXMedia::NewL();
             CleanupStack::PushL(entry);
-            iMediaArray->AppendL(entry);
-            CleanupStack::Pop(entry);
+            iMediaArray->AppendL(*entry);
+            CleanupStack::PopAndDestroy(entry);
             AddAttributesL(object, (*iMediaArray)[iMediaArray->Count() - 1]);
             }
         }    
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -160,10 +160,10 @@
     
     TGlxThumbnailRequest tnReq;
     request->ThumbnailRequest(tnReq);
-
+#ifdef _DEBUG
 	RDebug::Print(_L("==> CGlxDataSourceTaskMdeThumbnail::ExecuteRequestL - FetchThumbnailL(Id=%d), W(%d), H(%d)"), request->ItemId().Value(), tnReq.iSizeClass.iWidth, tnReq.iSizeClass.iHeight);
 	iStartTime.HomeTime(); // Get home time
-
+#endif
 #ifdef USE_S60_TNM
 	if(request->ThumbnailInfo())
 		{
@@ -241,8 +241,10 @@
     {
     TRACER("CGlxDataSourceTaskMdeThumbnail::HandleThumbnailFetchCompleteL()")
     __ASSERT_DEBUG(dynamic_cast<CGlxThumbnailRequest*>(iRequest), Panic(EGlxPanicLogicError));
-	iStopTime.HomeTime(); // Get home time
+#ifdef _DEBUG
+    iStopTime.HomeTime(); // Get home time
 	RDebug::Print(_L("==> ThumbnailFetchComplete <%d> us"), (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
+#endif
     CGlxThumbnailRequest* req = static_cast<CGlxThumbnailRequest*>(iRequest);
     delete iResponse;
     iResponse = NULL;
--- a/engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -318,6 +318,8 @@
         case KGlxCollectionAlbumContentsLevel:
             {
             filterProperties.iSortDirection = EGlxFilterSortDirectionDescending;
+			filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate;
+            break;
             }
         case KGlxCollectionAlbumContentsFSLevel:
             {
--- a/engine/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/engine/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -344,6 +344,8 @@
         case KGlxCollectionTagContentsLevel:
 	        {
         	filterProperties.iSortDirection = EGlxFilterSortDirectionDescending;
+			filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate;
+            break;
 	        }
         case KGlxCollectionTagFSContentsLevel:
             {
--- a/loggers/loggerqt/src/glxperformancelog.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/loggers/loggerqt/src/glxperformancelog.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -28,8 +28,9 @@
     if( GlxPerformanceLog::mLogFile.isOpen() == FALSE) {
 	    GlxPerformanceLog::mLogFile.setFileName("glxperlog.txt");
 	    QDir::setCurrent("c:\\data\\");
-	    GlxPerformanceLog::mLogFile.open(QIODevice::Append);
-	    GlxPerformanceLog::mLogFile.setTextModeEnabled(TRUE);
+	    if(GlxPerformanceLog::mLogFile.open(QIODevice::Append)) {
+			 GlxPerformanceLog::mLogFile.setTextModeEnabled(TRUE);
+		}
     }
 }
 
--- a/main/al/DLA.h	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1040 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-/*DLA.h*/
-#ifndef __DLA__
-#define __DLA__
-
-#define DEFAULT_TRIM_THRESHOLD ((size_t)4U * (size_t)1024U)
-
-#define __SYMBIAN__
-#define MSPACES 0
-#define HAVE_MORECORE 1
-#define	MORECORE_CONTIGUOUS 1
-#define	HAVE_MMAP 0
-#define HAVE_MREMAP 0
-#define DEFAULT_GRANULARITY (4096U)
-#define FOOTERS 0
-#define USE_LOCKS 0
-#define INSECURE 1
-#define NO_MALLINFO 0
-
-#define LACKS_SYS_TYPES_H
-#ifndef LACKS_SYS_TYPES_H
-#include <sys/types.h>  /* For size_t */
-#else
-#ifndef _SIZE_T_DECLARED
-typedef unsigned int size_t;
-#define	_SIZE_T_DECLARED
-#endif
-#endif  /* LACKS_SYS_TYPES_H */
-
-/* The maximum possible size_t value has all bits set */
-#define MAX_SIZE_T           (~(size_t)0)
-
-#ifndef ONLY_MSPACES
-	#define ONLY_MSPACES 0
-#endif  /* ONLY_MSPACES */
-
-#ifndef MSPACES
-	#if ONLY_MSPACES
-		#define MSPACES 1
-	#else   /* ONLY_MSPACES */
-		#define MSPACES 0
-	#endif  /* ONLY_MSPACES */
-#endif  /* MSPACES */
-
-#ifndef MALLOC_ALIGNMENT
-	#define MALLOC_ALIGNMENT ((size_t)8U)
-#endif  /* MALLOC_ALIGNMENT */
-
-#ifndef FOOTERS
-	#define FOOTERS 0
-#endif  /* FOOTERS */
-
-#ifndef ABORT
-//	#define ABORT  abort()
-	#define ABORT  User::Invariant()// redefined so euser isn't dependant on oe
-#endif  /* ABORT */
-
-#ifndef ABORT_ON_ASSERT_FAILURE
-	#define ABORT_ON_ASSERT_FAILURE 1
-#endif  /* ABORT_ON_ASSERT_FAILURE */
-
-#ifndef PROCEED_ON_ERROR
-	#define PROCEED_ON_ERROR 0
-#endif  /* PROCEED_ON_ERROR */
-
-#ifndef USE_LOCKS
-	#define USE_LOCKS 0
-#endif  /* USE_LOCKS */
-
-#ifndef INSECURE
-	#define INSECURE 0
-#endif  /* INSECURE */
-
-#ifndef HAVE_MMAP
-	#define HAVE_MMAP 1
-#endif  /* HAVE_MMAP */
-
-#ifndef MMAP_CLEARS
-	#define MMAP_CLEARS 1
-#endif  /* MMAP_CLEARS */
-
-#ifndef HAVE_MREMAP
-	#ifdef linux
-		#define HAVE_MREMAP 1
-	#else   /* linux */
-		#define HAVE_MREMAP 0
-	#endif  /* linux */
-#endif  /* HAVE_MREMAP */
-
-#ifndef MALLOC_FAILURE_ACTION
-	//#define MALLOC_FAILURE_ACTION  errno = ENOMEM;
-	#define MALLOC_FAILURE_ACTION ;
-#endif  /* MALLOC_FAILURE_ACTION */
-
-#ifndef HAVE_MORECORE
-	#if ONLY_MSPACES
-		#define HAVE_MORECORE 1 /*AMOD: has changed */
-	#else   /* ONLY_MSPACES */
-		#define HAVE_MORECORE 1
-	#endif  /* ONLY_MSPACES */
-#endif  /* HAVE_MORECORE */
-
-#if !HAVE_MORECORE
-	#define MORECORE_CONTIGUOUS 0
-#else   /* !HAVE_MORECORE */
-	#ifndef MORECORE
-		#define MORECORE DLAdjust
-	#endif  /* MORECORE */
-	#ifndef MORECORE_CONTIGUOUS
-		#define MORECORE_CONTIGUOUS 0
-	#endif  /* MORECORE_CONTIGUOUS */
-#endif  /* !HAVE_MORECORE */
-
-#ifndef DEFAULT_GRANULARITY
-	#if MORECORE_CONTIGUOUS
-		#define DEFAULT_GRANULARITY 4096  /* 0 means to compute in init_mparams */
-	#else   /* MORECORE_CONTIGUOUS */
-		#define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U)
-	#endif  /* MORECORE_CONTIGUOUS */
-#endif  /* DEFAULT_GRANULARITY */
-
-#ifndef DEFAULT_TRIM_THRESHOLD
-	#ifndef MORECORE_CANNOT_TRIM
-		#define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U)
-	#else   /* MORECORE_CANNOT_TRIM */
-		#define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T
-	#endif  /* MORECORE_CANNOT_TRIM */	
-#endif  /* DEFAULT_TRIM_THRESHOLD */
-
-#ifndef DEFAULT_MMAP_THRESHOLD
-	#if HAVE_MMAP
-		#define DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U)
-	#else   /* HAVE_MMAP */
-		#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T
-	#endif  /* HAVE_MMAP */
-#endif  /* DEFAULT_MMAP_THRESHOLD */
-
-#ifndef USE_BUILTIN_FFS
-	#define USE_BUILTIN_FFS 0
-#endif  /* USE_BUILTIN_FFS */
-
-#ifndef USE_DEV_RANDOM
-	#define USE_DEV_RANDOM 0
-#endif  /* USE_DEV_RANDOM */
-
-#ifndef NO_MALLINFO
-	#define NO_MALLINFO 0
-#endif  /* NO_MALLINFO */
-#ifndef MALLINFO_FIELD_TYPE
-	#define MALLINFO_FIELD_TYPE size_t
-#endif  /* MALLINFO_FIELD_TYPE */
-
-/*
-  mallopt tuning options.  SVID/XPG defines four standard parameter
-  numbers for mallopt, normally defined in malloc.h.  None of these
-  are used in this malloc, so setting them has no effect. But this
-  malloc does support the following options.
-*/
-
-#define M_TRIM_THRESHOLD     (-1)
-#define M_GRANULARITY        (-2)
-#define M_MMAP_THRESHOLD     (-3)
-
-#if !NO_MALLINFO
-/*
-  This version of malloc supports the standard SVID/XPG mallinfo
-  routine that returns a struct containing usage properties and
-  statistics. It should work on any system that has a
-  /usr/include/malloc.h defining struct mallinfo.  The main
-  declaration needed is the mallinfo struct that is returned (by-copy)
-  by mallinfo().  The malloinfo struct contains a bunch of fields that
-  are not even meaningful in this version of malloc.  These fields are
-  are instead filled by mallinfo() with other numbers that might be of
-  interest.
-
-  HAVE_USR_INCLUDE_MALLOC_H should be set if you have a
-  /usr/include/malloc.h file that includes a declaration of struct
-  mallinfo.  If so, it is included; else a compliant version is
-  declared below.  These must be precisely the same for mallinfo() to
-  work.  The original SVID version of this struct, defined on most
-  systems with mallinfo, declares all fields as ints. But some others
-  define as unsigned long. If your system defines the fields using a
-  type of different width than listed here, you MUST #include your
-  system version and #define HAVE_USR_INCLUDE_MALLOC_H.
-*/
-
-/* #define HAVE_USR_INCLUDE_MALLOC_H */
-
-#ifdef HAVE_USR_INCLUDE_MALLOC_H
-#include "/usr/include/malloc.h"
-#else /* HAVE_USR_INCLUDE_MALLOC_H */
-
-struct mallinfo {
-  MALLINFO_FIELD_TYPE arena;    /* non-mmapped space allocated from system */
-  MALLINFO_FIELD_TYPE ordblks;  /* number of free chunks */
-  MALLINFO_FIELD_TYPE smblks;   /* always 0 */
-  MALLINFO_FIELD_TYPE hblks;    /* always 0 */
-  MALLINFO_FIELD_TYPE hblkhd;   /* space in mmapped regions */
-  MALLINFO_FIELD_TYPE usmblks;  /* maximum total allocated space */
-  MALLINFO_FIELD_TYPE fsmblks;  /* always 0 */
-  MALLINFO_FIELD_TYPE uordblks; /* total allocated space */
-  MALLINFO_FIELD_TYPE fordblks; /* total free space */
-  MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */
-  MALLINFO_FIELD_TYPE cellCount;/* Number of chunks allocated*/
-};
-
-#endif /* HAVE_USR_INCLUDE_MALLOC_H */
-#endif /* NO_MALLINFO */
-
-#if MSPACES
-	typedef void* mspace;
-#endif /* MSPACES */
-
-#if 0
-
-#include <stdio.h>/* for printing in malloc_stats */
-
-#ifndef LACKS_ERRNO_H
-	#include <errno.h>       /* for MALLOC_FAILURE_ACTION */
-#endif /* LACKS_ERRNO_H */
-
-#if FOOTERS
-	#include <time.h>        /* for magic initialization */
-#endif /* FOOTERS */
-
-#ifndef LACKS_STDLIB_H
-	#include <stdlib.h>      /* for abort() */
-#endif /* LACKS_STDLIB_H */
-
-#ifdef DEBUG
-	#if ABORT_ON_ASSERT_FAILURE
-		#define assert(x) if(!(x)) ABORT
-	#else /* ABORT_ON_ASSERT_FAILURE */
-		#include <assert.h>
-	#endif /* ABORT_ON_ASSERT_FAILURE */
-#else  /* DEBUG */
-		#define assert(x)
-#endif /* DEBUG */
-
-#ifndef LACKS_STRING_H
-	#include <string.h>      /* for memset etc */
-#endif  /* LACKS_STRING_H */
-
-#if USE_BUILTIN_FFS
-	#ifndef LACKS_STRINGS_H
-		#include <strings.h>     /* for ffs */
-	#endif /* LACKS_STRINGS_H */
-#endif /* USE_BUILTIN_FFS */
-
-#if HAVE_MMAP
-	#ifndef LACKS_SYS_MMAN_H
-		#include <sys/mman.h>    /* for mmap */
-	#endif /* LACKS_SYS_MMAN_H */
-	#ifndef LACKS_FCNTL_H
-		#include <fcntl.h>
-	#endif /* LACKS_FCNTL_H */
-#endif /* HAVE_MMAP */
-
-#if HAVE_MORECORE
-	#ifndef LACKS_UNISTD_H
-		#include <unistd.h>     /* for sbrk */
-	extern void*     sbrk(size_t);
-	#else /* LACKS_UNISTD_H */
-		#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__)
-			extern void*     sbrk(ptrdiff_t);			
-			/*Amod sbrk is not defined in WIN32 need to check in symbian*/
-		#endif /* FreeBSD etc */
-	#endif /* LACKS_UNISTD_H */
-#endif /* HAVE_MORECORE */
-
-#endif
-
-#define assert(x)	ASSERT(x)
-			
-/*AMOD: For malloc_getpagesize*/
-#if 0	// replaced with GET_PAGE_SIZE() defined in heap.cpp
-#ifndef WIN32
-	#ifndef malloc_getpagesize
-		#ifdef _SC_PAGESIZE         /* some SVR4 systems omit an underscore */
-			#ifndef _SC_PAGE_SIZE
-				#define _SC_PAGE_SIZE _SC_PAGESIZE
-			#endif
-		#endif
-		#ifdef _SC_PAGE_SIZE
-			#define malloc_getpagesize sysconf(_SC_PAGE_SIZE)
-		#else
-			#if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE)
-				extern size_t getpagesize();
-				#define malloc_getpagesize getpagesize()
-			#else
-				#ifdef WIN32 /* use supplied emulation of getpagesize */
-					#define malloc_getpagesize getpagesize()
-				#else
-					#ifndef LACKS_SYS_PARAM_H
-						#include <sys/param.h>
-					#endif
-					#ifdef EXEC_PAGESIZE
-						#define malloc_getpagesize EXEC_PAGESIZE
-					#else
-						#ifdef NBPG
-							#ifndef CLSIZE
-								#define malloc_getpagesize NBPG
-							#else
-								#define malloc_getpagesize (NBPG * CLSIZE)
-							#endif
-						#else
-							#ifdef NBPC
-								#define malloc_getpagesize NBPC
-							#else
-								#ifdef PAGESIZE
-									#define malloc_getpagesize PAGESIZE
-								#else /* just guess */
-									#define malloc_getpagesize ((size_t)4096U)
-								#endif
-							#endif
-						#endif
-					#endif
-				#endif
-			#endif
-		#endif
-	#endif
-#endif
-#endif
-/*AMOD: For malloc_getpagesize*/
-
-/* ------------------- size_t and alignment properties -------------------- */
-
-/* The byte and bit size of a size_t */
-#define SIZE_T_SIZE         (sizeof(size_t))
-#define SIZE_T_BITSIZE      (sizeof(size_t) << 3)
-
-/* Some constants coerced to size_t */
-/* Annoying but necessary to avoid errors on some plaftorms */
-#define SIZE_T_ZERO         ((size_t)0)
-#define SIZE_T_ONE          ((size_t)1)
-#define SIZE_T_TWO          ((size_t)2)
-#define TWO_SIZE_T_SIZES    (SIZE_T_SIZE<<1)
-#define FOUR_SIZE_T_SIZES   (SIZE_T_SIZE<<2)
-#define SIX_SIZE_T_SIZES    (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES)
-#define HALF_MAX_SIZE_T     (MAX_SIZE_T / 2U)
-
-/* The bit mask value corresponding to MALLOC_ALIGNMENT */
-#define CHUNK_ALIGN_MASK    (MALLOC_ALIGNMENT - SIZE_T_ONE)
-
-/* True if address a has acceptable alignment */
-//#define is_aligned(A)       (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0)
-#define is_aligned(A)       (((unsigned int)((A)) & (CHUNK_ALIGN_MASK)) == 0)
-
-/* the number of bytes to offset an address to align it */
-#define align_offset(A)\
-	((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\
-	((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK))
-				
-/* -------------------------- MMAP preliminaries ------------------------- */
-
-/*
-   If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and
-   checks to fail so compiler optimizer can delete code rather than
-   using so many "#if"s.
-*/
-
-
-/* MORECORE and MMAP must return MFAIL on failure */
-#define MFAIL                ((void*)(MAX_SIZE_T))
-#define CMFAIL               ((TUint8*)(MFAIL)) /* defined for convenience */
-
-#if !HAVE_MMAP
-	#define IS_MMAPPED_BIT       (SIZE_T_ZERO)
-	#define USE_MMAP_BIT         (SIZE_T_ZERO)
-	#define CALL_MMAP(s)         MFAIL
-	#define CALL_MUNMAP(a, s)    (-1)
-	#define DIRECT_MMAP(s)       MFAIL
-#else /* !HAVE_MMAP */
-	#define IS_MMAPPED_BIT       (SIZE_T_ONE)
-	#define USE_MMAP_BIT         (SIZE_T_ONE)
-		#ifndef WIN32
-			#define CALL_MUNMAP(a, s)    DLUMMAP((a),(s)) /*munmap((a), (s))*/
-			#define MMAP_PROT            (PROT_READ|PROT_WRITE)
-			#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
-				#define MAP_ANONYMOUS        MAP_ANON
-			#endif /* MAP_ANON */
-			#ifdef MAP_ANONYMOUS       
-				#define MMAP_FLAGS           (MAP_PRIVATE|MAP_ANONYMOUS)
-				#define CALL_MMAP(s)         mmap(0, (s), MMAP_PROT, (int)MMAP_FLAGS, -1, 0)
-			#else /* MAP_ANONYMOUS */
-				/*
-				   Nearly all versions of mmap support MAP_ANONYMOUS, so the following
-				   is unlikely to be needed, but is supplied just in case.
-				*/
-				#define MMAP_FLAGS           (MAP_PRIVATE)
-				//static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */
-				#define CALL_MMAP(s) DLMMAP(s)
-				/*#define CALL_MMAP(s) ((dev_zero_fd < 0) ? \
-			           (dev_zero_fd = open("/dev/zero", O_RDWR), \
-			            mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \
-			            mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0))
-			            */
-				#define CALL_REMAP(a, s, d)    DLREMAP((a),(s),(d))
-			#endif /* MAP_ANONYMOUS */
-			#define DIRECT_MMAP(s)       CALL_MMAP(s)
-		#else /* WIN32 */
-			#define CALL_MMAP(s)         win32mmap(s)
-			#define CALL_MUNMAP(a, s)    win32munmap((a), (s))
-			#define DIRECT_MMAP(s)       win32direct_mmap(s)
-		#endif /* WIN32 */
-#endif /* HAVE_MMAP */
-
-#if HAVE_MMAP && HAVE_MREMAP
-	#define CALL_MREMAP(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv))
-#else  /* HAVE_MMAP && HAVE_MREMAP */
-	#define CALL_MREMAP(addr, osz, nsz, mv) MFAIL
-#endif /* HAVE_MMAP && HAVE_MREMAP */
-
-#if HAVE_MORECORE
-	#define CALL_MORECORE(S)     SetBrk(S)
-#else  /* HAVE_MORECORE */
-	#define CALL_MORECORE(S)     MFAIL
-#endif /* HAVE_MORECORE */
-
-/* mstate bit set if continguous morecore disabled or failed */
-#define USE_NONCONTIGUOUS_BIT (4U)
-
-/* segment bit set in create_mspace_with_base */
-#define EXTERN_BIT            (8U)
-
-
-#if USE_LOCKS
-/*
-  When locks are defined, there are up to two global locks:
-  * If HAVE_MORECORE, morecore_mutex protects sequences of calls to
-    MORECORE.  In many cases sys_alloc requires two calls, that should
-    not be interleaved with calls by other threads.  This does not
-    protect against direct calls to MORECORE by other threads not
-    using this lock, so there is still code to cope the best we can on
-    interference.
-  * magic_init_mutex ensures that mparams.magic and other
-    unique mparams values are initialized only once.
-*/
-	#ifndef WIN32
-		/* By default use posix locks */
-		#include <pthread.h>
-		#define MLOCK_T pthread_mutex_t
-		#define INITIAL_LOCK(l)      pthread_mutex_init(l, NULL)
-		#define ACQUIRE_LOCK(l)      pthread_mutex_lock(l)
-		#define RELEASE_LOCK(l)      pthread_mutex_unlock(l)
-		
-		#if HAVE_MORECORE
-			//static MLOCK_T morecore_mutex = PTHREAD_MUTEX_INITIALIZER;
-		#endif /* HAVE_MORECORE */
-			//static MLOCK_T magic_init_mutex = PTHREAD_MUTEX_INITIALIZER;
-	#else /* WIN32 */
-		#define MLOCK_T long
-		#define INITIAL_LOCK(l)      *(l)=0
-		#define ACQUIRE_LOCK(l)      win32_acquire_lock(l)
-		#define RELEASE_LOCK(l)      win32_release_lock(l)
-		#if HAVE_MORECORE
-			static MLOCK_T morecore_mutex;
-		#endif /* HAVE_MORECORE */
-		static MLOCK_T magic_init_mutex;
-	#endif /* WIN32 */
-	#define USE_LOCK_BIT               (2U)
-#else  /* USE_LOCKS */
-	#define USE_LOCK_BIT               (0U)
-	#define INITIAL_LOCK(l)
-#endif /* USE_LOCKS */
-
-#if USE_LOCKS && HAVE_MORECORE
-	#define ACQUIRE_MORECORE_LOCK(M)    ACQUIRE_LOCK((M->morecore_mutex)/*&morecore_mutex*/);
-	#define RELEASE_MORECORE_LOCK(M)    RELEASE_LOCK((M->morecore_mutex)/*&morecore_mutex*/);
-#else /* USE_LOCKS && HAVE_MORECORE */
-	#define ACQUIRE_MORECORE_LOCK(M)
-	#define RELEASE_MORECORE_LOCK(M)
-#endif /* USE_LOCKS && HAVE_MORECORE */
-
-#if USE_LOCKS
-		/*Currently not suporting this*/				
-	#define ACQUIRE_MAGIC_INIT_LOCK(M)  ACQUIRE_LOCK(((M)->magic_init_mutex));
-	//AMOD: changed #define ACQUIRE_MAGIC_INIT_LOCK()
-	//#define RELEASE_MAGIC_INIT_LOCK()
-	#define RELEASE_MAGIC_INIT_LOCK(M)  RELEASE_LOCK(((M)->magic_init_mutex));
-#else  /* USE_LOCKS */
-	#define ACQUIRE_MAGIC_INIT_LOCK(M)
-	#define RELEASE_MAGIC_INIT_LOCK(M)
-#endif /* USE_LOCKS */
-
-/*CHUNK representation*/
-struct malloc_chunk {
-  size_t               prev_foot;  /* Size of previous chunk (if free).  */
-  size_t               head;       /* Size and inuse bits. */
-  struct malloc_chunk* fd;         /* double links -- used only if free. */
-  struct malloc_chunk* bk;
-};
-
-typedef struct malloc_chunk  mchunk;
-typedef struct malloc_chunk* mchunkptr;
-typedef struct malloc_chunk* sbinptr;  /* The type of bins of chunks */
-typedef unsigned int bindex_t;         /* Described below */
-typedef unsigned int binmap_t;         /* Described below */
-typedef unsigned int flag_t;           /* The type of various bit flag sets */
-
-
-/* ------------------- Chunks sizes and alignments ----------------------- */
-#define MCHUNK_SIZE         (sizeof(mchunk))
-
-#if FOOTERS
-	#define CHUNK_OVERHEAD      (TWO_SIZE_T_SIZES)
-#else /* FOOTERS */
-	#define CHUNK_OVERHEAD      (SIZE_T_SIZE)
-#endif /* FOOTERS */
-
-/* MMapped chunks need a second word of overhead ... */
-#define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES)
-/* ... and additional padding for fake next-chunk at foot */
-#define MMAP_FOOT_PAD       (FOUR_SIZE_T_SIZES)
-
-/* The smallest size we can malloc is an aligned minimal chunk */
-#define MIN_CHUNK_SIZE ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK)
-
-/* conversion from malloc headers to user pointers, and back */
-#define chunk2mem(p)        ((void*)((TUint8*)(p)       + TWO_SIZE_T_SIZES))
-#define mem2chunk(mem)      ((mchunkptr)((TUint8*)(mem) - TWO_SIZE_T_SIZES))
-/* chunk associated with aligned address A */
-#define align_as_chunk(A)   (mchunkptr)((A) + align_offset(chunk2mem(A)))
-
-/* Bounds on request (not chunk) sizes. */
-#define MAX_REQUEST         ((-MIN_CHUNK_SIZE) << 2)
-#define MIN_REQUEST         (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE)
-
-/* pad request bytes into a usable size */
-#define pad_request(req) (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK)
-
-/* pad request, checking for minimum (but not maximum) */
-#define request2size(req) (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req))
-
-/* ------------------ Operations on head and foot fields ----------------- */
-
-/*
-  The head field of a chunk is or'ed with PINUSE_BIT when previous
-  adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in
-  use. If the chunk was obtained with mmap, the prev_foot field has
-  IS_MMAPPED_BIT set, otherwise holding the offset of the base of the
-  mmapped region to the base of the chunk.
-*/
-#define PINUSE_BIT          (SIZE_T_ONE)
-#define CINUSE_BIT          (SIZE_T_TWO)
-#define INUSE_BITS          (PINUSE_BIT|CINUSE_BIT)
-
-/* Head value for fenceposts */
-#define FENCEPOST_HEAD      (INUSE_BITS|SIZE_T_SIZE)
-
-/* extraction of fields from head words */
-#define cinuse(p)           ((p)->head & CINUSE_BIT)
-#define pinuse(p)           ((p)->head & PINUSE_BIT)
-#define chunksize(p)        ((p)->head & ~(INUSE_BITS))
-
-#define clear_pinuse(p)     ((p)->head &= ~PINUSE_BIT)
-#define clear_cinuse(p)     ((p)->head &= ~CINUSE_BIT)
-
-/* Treat space at ptr +/- offset as a chunk */
-#define chunk_plus_offset(p, s)  ((mchunkptr)(((TUint8*)(p)) + (s)))
-#define chunk_minus_offset(p, s) ((mchunkptr)(((TUint8*)(p)) - (s)))
-
-/* Ptr to next or previous physical malloc_chunk. */
-#define next_chunk(p) ((mchunkptr)( ((TUint8*)(p)) + ((p)->head & ~INUSE_BITS)))
-#define prev_chunk(p) ((mchunkptr)( ((TUint8*)(p)) - ((p)->prev_foot) ))
-
-/* extract next chunk's pinuse bit */
-#define next_pinuse(p)  ((next_chunk(p)->head) & PINUSE_BIT)
-
-/* Get/set size at footer */
-#define get_foot(p, s)  (((mchunkptr)((TUint8*)(p) + (s)))->prev_foot)
-#define set_foot(p, s)  (((mchunkptr)((TUint8*)(p) + (s)))->prev_foot = (s))
-
-/* Set size, pinuse bit, and foot */
-#define set_size_and_pinuse_of_free_chunk(p, s) ((p)->head = (s|PINUSE_BIT), set_foot(p, s))
-
-/* Set size, pinuse bit, foot, and clear next pinuse */
-#define set_free_with_pinuse(p, s, n) (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s))
-
-#define is_mmapped(p) (!((p)->head & PINUSE_BIT) && ((p)->prev_foot & IS_MMAPPED_BIT))
-
-/* Get the internal overhead associated with chunk p */
-#define overhead_for(p) (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD)
-
-/* Return true if malloced space is not necessarily cleared */
-#if MMAP_CLEARS
-	#define calloc_must_clear(p) (!is_mmapped(p))
-#else /* MMAP_CLEARS */
-	#define calloc_must_clear(p) (1)
-#endif /* MMAP_CLEARS */
-
-/* ---------------------- Overlaid data structures ----------------------- */
-struct malloc_tree_chunk {
-  /* The first four fields must be compatible with malloc_chunk */
-  size_t                    				prev_foot;
-  size_t                    				head;
-  struct malloc_tree_chunk*	fd;
-  struct malloc_tree_chunk*	bk;
-
-  struct malloc_tree_chunk* child[2];
-  struct malloc_tree_chunk* parent;
-  bindex_t                  index;
-};
-
-typedef struct malloc_tree_chunk  tchunk;
-typedef struct malloc_tree_chunk* tchunkptr;
-typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */
-
-/* A little helper macro for trees */
-#define leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1])
-/*Segment structur*/
-struct malloc_segment {
-  TUint8*        base;             /* base address */
-  size_t       size;             /* allocated size */
-  struct malloc_segment* next;   /* ptr to next segment */
-  flag_t       sflags;           /* mmap and extern flag */
-};
-
-#define is_mmapped_segment(S)  ((S)->sflags & IS_MMAPPED_BIT)
-#define is_extern_segment(S)   ((S)->sflags & EXTERN_BIT)
-
-typedef struct malloc_segment  msegment;
-typedef struct malloc_segment* msegmentptr;
-
-/*Malloc State data structur*/
-
-#define NSMALLBINS        (32U)
-#define NTREEBINS         (32U)
-#define SMALLBIN_SHIFT    (3U)
-#define SMALLBIN_WIDTH    (SIZE_T_ONE << SMALLBIN_SHIFT)
-#define TREEBIN_SHIFT     (8U)
-#define MIN_LARGE_SIZE    (SIZE_T_ONE << TREEBIN_SHIFT)
-#define MAX_SMALL_SIZE    (MIN_LARGE_SIZE - SIZE_T_ONE)
-#define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD)
-
-struct malloc_state {
-  binmap_t   smallmap;
-  binmap_t   treemap;
-  size_t     dvsize;
-  size_t     topsize;
-  TUint8*      least_addr;
-  mchunkptr  dv;
-  mchunkptr  top;
-  size_t     trim_check;
-  size_t     magic;
-  mchunkptr  smallbins[(NSMALLBINS+1)*2];
-  tbinptr    treebins[NTREEBINS];
-  size_t     footprint;
-  size_t     max_footprint;
-  flag_t     mflags;
-#if USE_LOCKS
-  MLOCK_T    mutex;     /* locate lock among fields that rarely change */
-  MLOCK_T	magic_init_mutex;  
-  MLOCK_T	morecore_mutex;
-#endif /* USE_LOCKS */
-  msegment   seg;
-};
-
-typedef struct malloc_state*    mstate;
-
-/* ------------- Global malloc_state and malloc_params ------------------- */
-
-/*
-  malloc_params holds global properties, including those that can be
-  dynamically set using mallopt. There is a single instance, mparams,
-  initialized in init_mparams.
-*/
-
-struct malloc_params {
-  size_t magic;
-  size_t page_size;
-  size_t granularity;
-  size_t mmap_threshold;
-  size_t trim_threshold;
-  flag_t default_mflags;
-#if USE_LOCKS
-  MLOCK_T	magic_init_mutex;  
-#endif /* USE_LOCKS */
-};
-
-/* The global malloc_state used for all non-"mspace" calls */
-/*AMOD: Need to check this as this will be the member of the class*/
-
-//static struct malloc_state _gm_;
-//#define gm                 (&_gm_)
- 
-//#define is_global(M)       ((M) == &_gm_)
-/*AMOD: has changed*/
-#define is_global(M)       ((M) == gm)
-#define is_initialized(M)  ((M)->top != 0)
-
-/* -------------------------- system alloc setup ------------------------- */
-
-/* Operations on mflags */
-
-#define use_lock(M)           ((M)->mflags &   USE_LOCK_BIT)
-#define enable_lock(M)        ((M)->mflags |=  USE_LOCK_BIT)
-#define disable_lock(M)       ((M)->mflags &= ~USE_LOCK_BIT)
-
-#define use_mmap(M)           ((M)->mflags &   USE_MMAP_BIT)
-#define enable_mmap(M)        ((M)->mflags |=  USE_MMAP_BIT)
-#define disable_mmap(M)       ((M)->mflags &= ~USE_MMAP_BIT)
-
-#define use_noncontiguous(M)  ((M)->mflags &   USE_NONCONTIGUOUS_BIT)
-#define disable_contiguous(M) ((M)->mflags |=  USE_NONCONTIGUOUS_BIT)
-
-#define set_lock(M,L) ((M)->mflags = (L)? ((M)->mflags | USE_LOCK_BIT) :  ((M)->mflags & ~USE_LOCK_BIT))
-
-/* page-align a size */
-#define page_align(S) (((S) + (mparams.page_size)) & ~(mparams.page_size - SIZE_T_ONE))
-
-/* granularity-align a size */
-#define granularity_align(S)  (((S) + (mparams.granularity)) & ~(mparams.granularity - SIZE_T_ONE))
-
-#define is_page_aligned(S)   (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0)
-#define is_granularity_aligned(S)   (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0)
-
-/*  True if segment S holds address A */
-#define segment_holds(S, A)  ((TUint8*)(A) >= S->base && (TUint8*)(A) < S->base + S->size)
-
-#ifndef MORECORE_CANNOT_TRIM
-	#define should_trim(M,s)  ((s) > (M)->trim_check)
-#else  /* MORECORE_CANNOT_TRIM */
-	#define should_trim(M,s)  (0)
-#endif /* MORECORE_CANNOT_TRIM */
-
-/*
-  TOP_FOOT_SIZE is padding at the end of a segment, including space
-  that may be needed to place segment records and fenceposts when new
-  noncontiguous segments are added.
-*/
-#define TOP_FOOT_SIZE  (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE)
-
-/* -------------------------------  Hooks -------------------------------- */
-
-/*
-  PREACTION should be defined to return 0 on success, and nonzero on
-  failure. If you are not using locking, you can redefine these to do
-  anything you like.
-*/
-
-#if USE_LOCKS
-	/* Ensure locks are initialized */
-	#define GLOBALLY_INITIALIZE() (mparams.page_size == 0 && init_mparams())
-	#define PREACTION(M) (use_lock((M))?(ACQUIRE_LOCK((M)->mutex),0):0) /*Action to take like lock before alloc*/
-	#define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK((M)->mutex); }
-
-#else /* USE_LOCKS */
-	#ifndef PREACTION
-		#define PREACTION(M) (0)
-	#endif  /* PREACTION */
-	#ifndef POSTACTION
-		#define POSTACTION(M)
-	#endif  /* POSTACTION */
-#endif /* USE_LOCKS */
-
-/*
-  CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses.
-  USAGE_ERROR_ACTION is triggered on detected bad frees and
-  reallocs. The argument p is an address that might have triggered the
-  fault. It is ignored by the two predefined actions, but might be
-  useful in custom actions that try to help diagnose errors.
-*/
-
-#if PROCEED_ON_ERROR
-	/* A count of the number of corruption errors causing resets */
-	int malloc_corruption_error_count;
-	/* default corruption action */
-	static void reset_on_error(mstate m);
-	#define CORRUPTION_ERROR_ACTION(m)  reset_on_error(m)
-	#define USAGE_ERROR_ACTION(m, p)
-#else /* PROCEED_ON_ERROR */
-	#ifndef CORRUPTION_ERROR_ACTION
-		#define CORRUPTION_ERROR_ACTION(m) ABORT
-	#endif /* CORRUPTION_ERROR_ACTION */
-	#ifndef USAGE_ERROR_ACTION
-		#define USAGE_ERROR_ACTION(m,p) ABORT
-	#endif /* USAGE_ERROR_ACTION */
-#endif /* PROCEED_ON_ERROR */
-
-	/* -------------------------- Debugging setup ---------------------------- */
-
-#if ! DEBUG
-	#define check_free_chunk(M,P)
-	#define check_inuse_chunk(M,P)
-	#define check_malloced_chunk(M,P,N)
-	#define check_mmapped_chunk(M,P)
-	#define check_malloc_state(M)
-	#define check_top_chunk(M,P)
-#else /* DEBUG */
-	#define check_free_chunk(M,P)       do_check_free_chunk(M,P)
-	#define check_inuse_chunk(M,P)      do_check_inuse_chunk(M,P)
-	#define check_top_chunk(M,P)        do_check_top_chunk(M,P)
-	#define check_malloced_chunk(M,P,N) do_check_malloced_chunk(M,P,N)
-	#define check_mmapped_chunk(M,P)    do_check_mmapped_chunk(M,P)
-	#define check_malloc_state(M)       do_check_malloc_state(M)
-	static void   do_check_any_chunk(mstate m, mchunkptr p);
-	static void   do_check_top_chunk(mstate m, mchunkptr p);
-	static void   do_check_mmapped_chunk(mstate m, mchunkptr p);
-	static void   do_check_inuse_chunk(mstate m, mchunkptr p);
-	static void   do_check_free_chunk(mstate m, mchunkptr p);
-	static void   do_check_malloced_chunk(mstate m, void* mem, size_t s);
-	static void   do_check_tree(mstate m, tchunkptr t);
-	static void   do_check_treebin(mstate m, bindex_t i);
-	static void   do_check_smallbin(mstate m, bindex_t i);
-	static void   do_check_malloc_state(mstate m);
-	static int    bin_find(mstate m, mchunkptr x);
-	static size_t traverse_and_check(mstate m);
-#endif /* DEBUG */
-
-/* ---------------------------- Indexing Bins ---------------------------- */
-
-#define is_small(s)         (((s) >> SMALLBIN_SHIFT) < NSMALLBINS)
-#define small_index(s)      ((s)  >> SMALLBIN_SHIFT)
-#define small_index2size(i) ((i)  << SMALLBIN_SHIFT)
-#define MIN_SMALL_INDEX     (small_index(MIN_CHUNK_SIZE))
-
-/* addressing by index. See above about smallbin repositioning */
-#define smallbin_at(M, i)   ((sbinptr)((TUint8*)&((M)->smallbins[(i)<<1])))
-#define treebin_at(M,i)     (&((M)->treebins[i]))
-
-
-/* Bit representing maximum resolved size in a treebin at i */
-#define bit_for_tree_index(i) (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2)
-
-/* Shift placing maximum resolved bit in a treebin at i as sign bit */
-#define leftshift_for_tree_index(i) ((i == NTREEBINS-1)? 0 : ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2)))
-
-/* The size of the smallest chunk held in bin with index i */
-#define minsize_for_tree_index(i) ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) |  (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1)))
-
-
-/* ------------------------ Operations on bin maps ----------------------- */
-/* bit corresponding to given index */
-#define idx2bit(i)              ((binmap_t)(1) << (i))
-/* Mark/Clear bits with given index */
-#define mark_smallmap(M,i)      ((M)->smallmap |=  idx2bit(i))
-#define clear_smallmap(M,i)     ((M)->smallmap &= ~idx2bit(i))
-#define smallmap_is_marked(M,i) ((M)->smallmap &   idx2bit(i))
-#define mark_treemap(M,i)       ((M)->treemap  |=  idx2bit(i))
-#define clear_treemap(M,i)      ((M)->treemap  &= ~idx2bit(i))
-#define treemap_is_marked(M,i)  ((M)->treemap  &   idx2bit(i))
-
-/* isolate the least set bit of a bitmap */
-#define least_bit(x)         ((x) & -(x))
-
-/* mask with all bits to left of least bit of x on */
-#define left_bits(x)         ((x<<1) | -(x<<1))
-
-/* mask with all bits to left of or equal to least bit of x on */
-#define same_or_left_bits(x) ((x) | -(x))
-
-	/* isolate the least set bit of a bitmap */
-#define least_bit(x)         ((x) & -(x))
-
-/* mask with all bits to left of least bit of x on */
-#define left_bits(x)         ((x<<1) | -(x<<1))
-
-/* mask with all bits to left of or equal to least bit of x on */
-#define same_or_left_bits(x) ((x) | -(x))
-
-#if !INSECURE
-	/* Check if address a is at least as high as any from MORECORE or MMAP */
-	#define ok_address(M, a) ((TUint8*)(a) >= (M)->least_addr)
-	/* Check if address of next chunk n is higher than base chunk p */
-	#define ok_next(p, n)    ((TUint8*)(p) < (TUint8*)(n))
-	/* Check if p has its cinuse bit on */
-	#define ok_cinuse(p)     cinuse(p)
-	/* Check if p has its pinuse bit on */
-	#define ok_pinuse(p)     pinuse(p)
-#else /* !INSECURE */
-	#define ok_address(M, a) (1)
-	#define ok_next(b, n)    (1)
-	#define ok_cinuse(p)     (1)
-	#define ok_pinuse(p)     (1)
-#endif /* !INSECURE */
-
-#if (FOOTERS && !INSECURE)
-	/* Check if (alleged) mstate m has expected magic field */
-	#define ok_magic(M)      ((M)->magic == mparams.magic)
-#else  /* (FOOTERS && !INSECURE) */
-	#define ok_magic(M)      (1)
-#endif /* (FOOTERS && !INSECURE) */
-
-/* In gcc, use __builtin_expect to minimize impact of checks */
-#if !INSECURE
-	#if defined(__GNUC__) && __GNUC__ >= 3
-		#define RTCHECK(e)  __builtin_expect(e, 1)
-	#else /* GNUC */
-		#define RTCHECK(e)  (e)
-	#endif /* GNUC */
-
-#else /* !INSECURE */
-	#define RTCHECK(e)  (1)
-#endif /* !INSECURE */
-/* macros to set up inuse chunks with or without footers */
-#if !FOOTERS
-	#define mark_inuse_foot(M,p,s)
-	/* Set cinuse bit and pinuse bit of next chunk */
-	#define set_inuse(M,p,s)  ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT)
-	/* Set cinuse and pinuse of this chunk and pinuse of next chunk */
-	#define set_inuse_and_pinuse(M,p,s) ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT)
-	/* Set size, cinuse and pinuse bit of this chunk */
-	#define set_size_and_pinuse_of_inuse_chunk(M, p, s) ((p)->head = (s|PINUSE_BIT|CINUSE_BIT))
-#else /* FOOTERS */
-	/* Set foot of inuse chunk to be xor of mstate and seed */
-	#define mark_inuse_foot(M,p,s) (((mchunkptr)((TUint8*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic))
-	#define get_mstate_for(p) ((mstate)(((mchunkptr)((TUint8*)(p)+(chunksize(p))))->prev_foot ^ mparams.magic))
-	#define set_inuse(M,p,s)\
-		((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\
-		(((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT), \
-		mark_inuse_foot(M,p,s))
-	#define set_inuse_and_pinuse(M,p,s)\
-	((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\
-	(((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT),\
-	mark_inuse_foot(M,p,s))
-	#define set_size_and_pinuse_of_inuse_chunk(M, p, s)\
-	((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\
-	mark_inuse_foot(M, p, s))
-#endif /* !FOOTERS */
-
-
-#if ONLY_MSPACES
-#define internal_malloc(m, b) mspace_malloc(m, b)
-#define internal_free(m, mem) mspace_free(m,mem);
-#else /* ONLY_MSPACES */
-	#if MSPACES
-		#define internal_malloc(m, b) (m == gm)? dlmalloc(b) : mspace_malloc(m, b)
-		#define internal_free(m, mem) if (m == gm) dlfree(mem); else mspace_free(m,mem);
-	#else /* MSPACES */
-		#define internal_malloc(m, b) dlmalloc(b)
-		#define internal_free(m, mem) dlfree(mem)
-	#endif /* MSPACES */
-#endif /* ONLY_MSPACES */
-/******CODE TO SUPORT SLAB ALLOCATOR******/
-	
-	#ifndef NDEBUG
-	#define CHECKING 1
-	#endif
-	
-	#if CHECKING
-	//#define ASSERT(x) {if (!(x)) abort();}
-	#define CHECK(x) x
-	#else 
-	#define ASSERT(x) (void)0
-	#define CHECK(x) (void)0
-	#endif
-	
-	class slab;
-	class slabhdr;
-	#define maxslabsize		56
-	#define	pageshift		12
-	#define pagesize		(1<<pageshift)
-	#define	slabshift		10
-	#define	slabsize		(1 << slabshift)
-	#define cellalign		8
-	const unsigned slabfull = 0;
-	const TInt	slabsperpage	=	(int)(pagesize/slabsize);
-	#define hibit(bits) (((unsigned)bits & 0xc) ? 2 + ((unsigned)bits>>3) : ((unsigned) bits>>1))
-
-	#define lowbit(bits)	(((unsigned) bits&3) ? 1 - ((unsigned)bits&1) : 3 - (((unsigned)bits>>2)&1))
-	#define minpagepower	pageshift+2
-	#define cellalign	8
-	class slabhdr
-	{
-	public:
-		unsigned header;
-		// made up of
-		// bits   |    31    | 30..28 | 27..18 | 17..12 |  11..8  |   7..0   |
-		//        +----------+--------+--------+--------+---------+----------+
-		// field  | floating |  zero  | used-4 |  size  | pagemap | free pos |
-		//
-		slab** parent;		// reference to parent's pointer to this slab in tree
-		slab* child1;		// 1st child in tree
-		slab* child2;		// 2nd child in tree
-	};
-
-	inline unsigned header_floating(unsigned h)
-	{return (h&0x80000000);}
-	const unsigned maxuse = (slabsize - sizeof(slabhdr))>>2;
-	const unsigned firstpos = sizeof(slabhdr)>>2;
-	#define checktree(x) (void)0
-	template <class T> inline T floor(const T addr, unsigned aln)
-		{return T((unsigned(addr))&~(aln-1));}
-	template <class T> inline T ceiling(T addr, unsigned aln)
-		{return T((unsigned(addr)+(aln-1))&~(aln-1));}
-	template <class T> inline unsigned lowbits(T addr, unsigned aln)
-		{return unsigned(addr)&(aln-1);}
-	template <class T1, class T2> inline int ptrdiff(const T1* a1, const T2* a2)
-		{return reinterpret_cast<const unsigned char*>(a1) - reinterpret_cast<const unsigned char*>(a2);}
-	template <class T> inline T offset(T addr, unsigned ofs)
-		{return T(unsigned(addr)+ofs);}
-	class slabset
-	{
-	public:
-		slab* partial;
-	};
-	
-	class slab : public slabhdr
-	{
-	public:
-		void init(unsigned clz);
-		//static slab* slabfor( void* p);
-		static slab* slabfor(const void* p) ;
-	private:
-		unsigned char payload[slabsize-sizeof(slabhdr)];
-	};
-	class page
-	{
-	public:
-		inline static page* pagefor(slab* s);
-		//slab slabs;
-		slab slabs[slabsperpage];
-	};
-	
-	
-	inline page* page::pagefor(slab* s)
-		{return reinterpret_cast<page*>(floor(s, pagesize));}
-	struct pagecell
-	{
-		void* page;
-		unsigned size;
-	};
-	/******CODE TO SUPORT SLAB ALLOCATOR******/
-#endif/*__DLA__*/
--- a/main/al/newallocator.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2843 +0,0 @@
-/*
-* Copyright (c) 1994-2001 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-#include <e32std.h>
-#include <e32cmn.h>
-#include <hal.h>
-#include <e32panic.h>
-#include <u32std.h>
-#include <e32btrace.h>
-#include <e32svr.h>
-
-#ifndef __WINS__
-#pragma push
-#pragma arm
-#endif
-
-#include "DLA.h"
-#include "newallocator.h"
-
-#define ALLOCATOR_ADP75
-//#define TRACING_HEAPS
-//#define DEBUG_DEVLON70
-//#define ENABLE_BTRACE
-
-// if non zero this causes the slabs to be configured only when the chunk size exceeds this level
-#define DELAYED_SLAB_THRESHOLD (64*1024)		// 64KB seems about right based on trace data
-#define SLAB_CONFIG (0xabe)
-
-_LIT(KDLHeapPanicCategory, "DL Heap");
-#define	GET_PAGE_SIZE(x)			HAL::Get(HALData::EMemoryPageSize, x)
-#define	__CHECK_CELL(p)
-#define __POWER_OF_2(x)				((TUint32)((x)^((x)-1))>=(TUint32)(x))
-#define HEAP_PANIC(r)               Panic(r)
-
-LOCAL_C void Panic(TCdtPanic aPanic)
-// Panic the process with USER as the category.
-	{
-	User::Panic(_L("USER"),aPanic);
-	}
-
-
-#define gm  (&iGlobalMallocState)
-
-RNewAllocator::RNewAllocator(TInt aMaxLength, TInt aAlign, TBool aSingleThread)
-// constructor for a fixed heap. Just use DL allocator
-	:iMinLength(aMaxLength), iMaxLength(aMaxLength), iOffset(0), iGrowBy(0), iChunkHandle(0),
-	iNestingLevel(0), iAllocCount(0), iFailType(ENone), iTestData(NULL), iChunkSize(aMaxLength)
-	{
-
-	// bodge so GKIServ (hudson generic low level layer) starts up ok - it uses an aAlign of 0 which panics, so if see 0 then force to 4
-	if ((TUint32)aAlign>=sizeof(TAny*) && __POWER_OF_2(iAlign))
-		{
-		iAlign = aAlign;
-		}
-	else
-		{
-		iAlign = 4;
-		}
-	iPageSize = 0;
-	iFlags = aSingleThread ? (ESingleThreaded|EFixedSize) : EFixedSize;
-
-	Init(0, 0, 0);
-	}
-#ifdef TRACING_HEAPS
-RNewAllocator::RNewAllocator(TInt aChunkHandle, TInt aOffset, TInt aMinLength, TInt aMaxLength, TInt aGrowBy,
-			TInt aAlign, TBool aSingleThread)
-		: iMinLength(aMinLength), iMaxLength(aMaxLength), iOffset(aOffset), iChunkHandle(aChunkHandle), iNestingLevel(0), iAllocCount(0),
-			iAlign(aAlign),iFailType(ENone), iTestData(NULL), iChunkSize(aMinLength),iHighWaterMark(aMinLength)
-#else
-RNewAllocator::RNewAllocator(TInt aChunkHandle, TInt aOffset, TInt aMinLength, TInt aMaxLength, TInt aGrowBy,
-			TInt aAlign, TBool aSingleThread)
-		: iMinLength(aMinLength), iMaxLength(aMaxLength), iOffset(aOffset), iChunkHandle(aChunkHandle), iNestingLevel(0), iAllocCount(0),
-			iAlign(aAlign),iFailType(ENone), iTestData(NULL), iChunkSize(aMinLength)
-#endif
-	{
-	// TODO: Locked the page size to 4 KB - change this to pick up from the OS
-	GET_PAGE_SIZE(iPageSize);
-	__ASSERT_ALWAYS(aOffset >=0, User::Panic(KDLHeapPanicCategory, ETHeapNewBadOffset));
-	iGrowBy = _ALIGN_UP(aGrowBy, iPageSize);
-	iFlags = aSingleThread ? ESingleThreaded : 0;
-
-	// Initialise
-	// if the heap is created with aMinLength==aMaxLength then it cannot allocate slab or page memory
-	// so these sub-allocators should be disabled. Otherwise initialise with default values
-	if (aMinLength == aMaxLength)
-		Init(0, 0, 0);
-	else
-		Init(0xabe, 16, iPageSize*4);	// slabs {48, 40, 32, 24, 20, 16, 12, 8}, page {64KB}, trim {16KB}
-#ifdef TRACING_HEAPS
-	RChunk chunk;
-	chunk.SetHandle(iChunkHandle);
-	TKName chunk_name;
-	chunk.FullName(chunk_name);
-	BTraceContextBig(BTrace::ETest1, 2, 22, chunk_name.Ptr(), chunk_name.Size());
-
-	TUint32 traceData[4];
-	traceData[0] = iChunkHandle;
-	traceData[1] = iMinLength;
-	traceData[2] = iMaxLength;
-	traceData[3] = iAlign;
-	BTraceContextN(BTrace::ETest1, 1, (TUint32)this, 11, traceData, sizeof(traceData));
-#endif
-
-	}
-
-TAny* RNewAllocator::operator new(TUint aSize, TAny* aBase) __NO_THROW
-	{
-	__ASSERT_ALWAYS(aSize>=sizeof(RNewAllocator), HEAP_PANIC(ETHeapNewBadSize));
-	RNewAllocator* h = (RNewAllocator*)aBase;
-	h->iAlign = 0x80000000;	// garbage value
-	h->iBase = ((TUint8*)aBase) + aSize;
-	return aBase;
-	}
-
-void RNewAllocator::Init(TInt aBitmapSlab, TInt aPagePower, size_t aTrimThreshold)
-	{
-	__ASSERT_ALWAYS((TUint32)iAlign>=sizeof(TAny*) && __POWER_OF_2(iAlign), HEAP_PANIC(ETHeapNewBadAlignment));
-
-	/*Moved code which does iunitilization */
-	iTop = (TUint8*)this + iMinLength;
-	iAllocCount = 0;
-	memset(&mparams,0,sizeof(mparams));
-
-	Init_Dlmalloc(iTop - iBase, 0, aTrimThreshold);
-
-	slab_init();
-	slab_config_bits = aBitmapSlab;
-#ifdef DELAYED_SLAB_THRESHOLD
-	if (iChunkSize < DELAYED_SLAB_THRESHOLD)
-		{
-		slab_init_threshold = DELAYED_SLAB_THRESHOLD;
-		}
-	else
-#endif // DELAYED_SLAB_THRESHOLD
-		{
-		slab_init_threshold = KMaxTUint;
-		slab_config(aBitmapSlab);
-		}
-
-	/*10-1K,11-2K,12-4k,13-8K,14-16K,15-32K,16-64K*/
-	paged_init(aPagePower);
-
-#ifdef ENABLE_BTRACE
-		TUint32 traceData[3];
-		traceData[0] = aBitmapSlab;
-		traceData[1] = aPagePower;
-		traceData[2] = aTrimThreshold;
-		BTraceContextN(BTrace::ETest1, BTrace::EHeapAlloc, (TUint32)this, 0, traceData, sizeof(traceData));
-#endif
-
-	}
-
-RNewAllocator::SCell* RNewAllocator::GetAddress(const TAny* aCell) const
-//
-// As much as possible, check a cell address and backspace it
-// to point at the cell header.
-//
-	{
-
-	TLinAddr m = TLinAddr(iAlign - 1);
-	__ASSERT_ALWAYS(!(TLinAddr(aCell)&m), HEAP_PANIC(ETHeapBadCellAddress));
-
-	SCell* pC = (SCell*)(((TUint8*)aCell)-EAllocCellSize);
-	__CHECK_CELL(pC);
-
-	return pC;
-	}
-
-TInt RNewAllocator::AllocLen(const TAny* aCell) const
-{
-	if (ptrdiff(aCell, this) >= 0)
-	{
-		mchunkptr m = mem2chunk(aCell);
-		return chunksize(m) - overhead_for(m);
-	}
-	if (lowbits(aCell, pagesize) > cellalign)
-		return header_size(slab::slabfor(aCell)->header);
-	if (lowbits(aCell, pagesize) == cellalign)
-		return *(unsigned*)(offset(aCell,-int(cellalign)))-cellalign;
-	return paged_descriptor(aCell)->size;
-}
-
-TAny* RNewAllocator::Alloc(TInt aSize)
-{
-	__ASSERT_ALWAYS((TUint)aSize<(KMaxTInt/2),HEAP_PANIC(ETHeapBadAllocatedCellSize));
-
-	TAny* addr;
-
-#ifdef ENABLE_BTRACE
-	TInt aCnt=0;
-#endif
-	Lock();
-	if (aSize < slab_threshold)
-	{
-		TInt ix = sizemap[(aSize+3)>>2];
-		ASSERT(ix != 0xff);
-		addr = slab_allocate(slaballoc[ix]);
-	}else if((aSize >> page_threshold)==0)
-		{
-#ifdef ENABLE_BTRACE
-		aCnt=1;
-#endif
-		addr = dlmalloc(aSize);
-		}
-	else
-		{
-#ifdef ENABLE_BTRACE
-		aCnt=2;
-#endif
-		addr = paged_allocate(aSize);
-		}
-
-	iCellCount++;
-	iTotalAllocSize += aSize;
-	Unlock();
-
-#ifdef ENABLE_BTRACE
-	if (iFlags & ETraceAllocs)
-		{
-		TUint32 traceData[3];
-		traceData[0] = AllocLen(addr);
-		traceData[1] = aSize;
-		traceData[2] = aCnt;
-		BTraceContextN(BTrace::EHeap, BTrace::EHeapAlloc, (TUint32)this, (TUint32)addr, traceData, sizeof(traceData));
-		}
-#endif
-
-#ifdef DEBUG_DEVLON70
-	if(!addr)
-		{
-		TUint32 traceD[5];
-		traceD[0] = 1;
-		traceD[1] = aSize;
-		traceD[2] = iMaxLength;
-		traceD[3] = iChunkSize;
-		traceD[4] = (TUint32)addr;
-		BTraceContextN(BTrace::ETest2, 2, (TUint32)this, 2, traceD, sizeof(traceD));
-		}
-#endif
-
-	return addr;
-}
-
-TInt RNewAllocator::Compress()
-	{
-	if (iFlags & EFixedSize)
-		return 0;
-
-	Lock();
-	dlmalloc_trim(0);
-	if (spare_page)
-		{
-		unmap(spare_page,pagesize);
-		spare_page = 0;
-		}
-	Unlock();
-	return 0;
-	}
-
-void RNewAllocator::Free(TAny* aPtr)
-{
-
-#ifdef ENABLE_BTRACE
-	TInt aCnt=0;
-#endif
-#ifdef ENABLE_DEBUG_TRACE
-	RThread me;
-	TBuf<100> thName;
-	me.FullName(thName);
-#endif
-    //if (!aPtr) return; //return in case of NULL pointer
-
-	Lock();
-
-	if (!aPtr)
-		;
-	else if (ptrdiff(aPtr, this) >= 0)
-		{
-#ifdef ENABLE_BTRACE
-		aCnt = 1;
-#endif
-		dlfree( aPtr);
-		}
-	else if (lowbits(aPtr, pagesize) <= cellalign)
-		{
-#ifdef ENABLE_BTRACE
-		aCnt = 2;
-#endif
-		paged_free(aPtr);
-		}
-	else
-		{
-#ifdef ENABLE_BTRACE
-		aCnt = 0;
-#endif
-		slab_free(aPtr);
-		}
-	iCellCount--;
-	Unlock();
-
-#ifdef ENABLE_BTRACE
-	if (iFlags & ETraceAllocs)
-		{
-		TUint32 traceData;
-		traceData = aCnt;
-		BTraceContextN(BTrace::EHeap, BTrace::EHeapFree, (TUint32)this, (TUint32)aPtr, &traceData, sizeof(traceData));
-		}
-#endif
-}
-
-
-void RNewAllocator::Reset()
-	{
-	// TODO free everything
-	}
-
-#ifdef ENABLE_BTRACE
-TAny* RNewAllocator::DLReAllocImpl(TAny* aPtr, TInt aSize)
-	{
-	if(ptrdiff(aPtr,this)>=0)
-	{
-		// original cell is in DL zone
-		if(aSize >= slab_threshold && (aSize>>page_threshold)==0)
-			{
-			// and so is the new one
-			Lock();
-			TAny* addr = dlrealloc(aPtr,aSize);
-			Unlock();
-#ifdef DEBUG_DEVLON70
-			if(!addr)
-				{
-				TUint32 traceD[5];
-				traceD[0] = 15;
-				traceD[1] = aSize;
-				traceD[2] = iMaxLength;
-				traceD[3] = iChunkSize;
-				traceD[4] = (TUint32)addr;
-				BTraceContextN(BTrace::ETest2, 33, (TUint32)this, 10, traceD, sizeof(traceD));
-				}
-#endif
-			return addr;
-			}
-	}
-	else if(lowbits(aPtr,pagesize)<=cellalign)
-	{
-		// original cell is either NULL or in paged zone
-		if (!aPtr)
-			return Alloc(aSize);
-		if(aSize >> page_threshold)
-			{
-			// and so is the new one
-			Lock();
-			TAny* addr = paged_reallocate(aPtr,aSize);
-			Unlock();
-#ifdef DEBUG_DEVLON70
-			if(!addr)
-				{
-				TUint32 traceD[5];
-				traceD[0] = 15;
-				traceD[1] = aSize;
-				traceD[2] = iMaxLength;
-				traceD[3] = iChunkSize;
-				traceD[4] = (TUint32)addr;
-				BTraceContextN(BTrace::ETest2, 33, (TUint32)this, 11, traceD, sizeof(traceD));
-				}
-#endif
-			return addr;
-			}
-	}
-	else
-	{
-		// original cell is in slab znoe
-		if(aSize <= header_size(slab::slabfor(aPtr)->header))
-			return aPtr;
-	}
-	TAny* newp = Alloc(aSize);
-	if(newp)
-	{
-		TInt oldsize = AllocLen(aPtr);
-		memcpy(newp,aPtr,oldsize<aSize?oldsize:aSize);
-		Free(aPtr);
-	}
-	return newp;
-
-	}
-#endif
-TAny* RNewAllocator::ReAlloc(TAny* aPtr, TInt aSize, TInt /*aMode = 0*/)
-	{
-#ifdef  ENABLE_BTRACE
-	TAny* retval = DLReAllocImpl(aPtr,aSize);
-
-#ifdef ENABLE_BTRACE
-	if (retval && (iFlags & ETraceAllocs))
-		{
-		TUint32 traceData[3];
-		traceData[0] = AllocLen(retval);
-		traceData[1] = aSize;
-		traceData[2] = (TUint32)aPtr;
-		BTraceContextN(BTrace::EHeap, BTrace::EHeapReAlloc,(TUint32)this, (TUint32)retval,traceData, sizeof(traceData));
-		}
-#endif
-	return retval;
-#else
-	if(ptrdiff(aPtr,this)>=0)
-	{
-		// original cell is in DL zone
-		if(aSize >= slab_threshold && (aSize>>page_threshold)==0)
-			{
-			// and so is the new one
-			Lock();
-			TAny* addr = dlrealloc(aPtr,aSize);
-			Unlock();
-			return addr;
-			}
-	}
-	else if(lowbits(aPtr,pagesize)<=cellalign)
-	{
-		// original cell is either NULL or in paged zone
-		if (!aPtr)
-			return Alloc(aSize);
-		if(aSize >> page_threshold)
-			{
-			// and so is the new one
-			Lock();
-			TAny* addr = paged_reallocate(aPtr,aSize);
-			Unlock();
-			return addr;
-			}
-	}
-	else
-	{
-		// original cell is in slab znoe
-		if(aSize <= header_size(slab::slabfor(aPtr)->header))
-			return aPtr;
-	}
-	TAny* newp = Alloc(aSize);
-	if(newp)
-	{
-		TInt oldsize = AllocLen(aPtr);
-		memcpy(newp,aPtr,oldsize<aSize?oldsize:aSize);
-		Free(aPtr);
-	}
-	return newp;
-#endif
-	}
-
-TInt RNewAllocator::Available(TInt& aBiggestBlock) const
-{
-	aBiggestBlock = 0;
-	return 1000;
-	/*Need to see how to implement this*/
-	// TODO: return iHeap.Available(aBiggestBlock);
-}
-TInt RNewAllocator::AllocSize(TInt& aTotalAllocSize) const
-{
-	aTotalAllocSize = iTotalAllocSize;
-//	aTotalAllocSize = iChunkSize;
-	return iCellCount;
-}
-
-TInt RNewAllocator::DebugFunction(TInt /*aFunc*/, TAny* /*a1*/, TAny* /*a2*/)
-	{
-	return 0;
-	}
-TInt RNewAllocator::Extension_(TUint /* aExtensionId */, TAny*& /* a0 */, TAny* /* a1 */)
-	{
-	return KErrNotSupported;
-	}
-
-long    sysconf		(int size )
-	{
-	if (GET_PAGE_SIZE(size)!=KErrNone)
-		size = 0x1000;
-	return size;
-	}
-
-
-//
-// imported from dla.cpp
-//
-
-//#include <unistd.h>
-//#define DEBUG_REALLOC
-#ifdef DEBUG_REALLOC
-#include <e32debug.h>
-#endif
-inline int RNewAllocator::init_mparams(size_t aTrimThreshold /*= DEFAULT_TRIM_THRESHOLD*/)
-{
-	if (mparams.page_size == 0)
-	{
-		size_t s;
-		mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD;
-		mparams.trim_threshold = aTrimThreshold;
-		#if MORECORE_CONTIGUOUS
-			mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT;
-		#else  /* MORECORE_CONTIGUOUS */
-			mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT;
-		#endif /* MORECORE_CONTIGUOUS */
-
-			s = (size_t)0x58585858U;
-		ACQUIRE_MAGIC_INIT_LOCK(&mparams);
-		if (mparams.magic == 0) {
-		  mparams.magic = s;
-		  /* Set up lock for main malloc area */
-		  INITIAL_LOCK(&gm->mutex);
-		  gm->mflags = mparams.default_mflags;
-		}
-		RELEASE_MAGIC_INIT_LOCK(&mparams);
-
-		// DAN replaced
-		// mparams.page_size = malloc_getpagesize;
-		int temp = 0;
-		GET_PAGE_SIZE(temp);
-		mparams.page_size = temp;
-
-		mparams.granularity = ((DEFAULT_GRANULARITY != 0)?
-							   DEFAULT_GRANULARITY : mparams.page_size);
-
-		/* Sanity-check configuration:
-		   size_t must be unsigned and as wide as pointer type.
-		   ints must be at least 4 bytes.
-		   alignment must be at least 8.
-		   Alignment, min chunk size, and page size must all be powers of 2.
-		*/
-
-		if ((sizeof(size_t) != sizeof(TUint8*)) ||
-			(MAX_SIZE_T < MIN_CHUNK_SIZE)  ||
-			(sizeof(int) < 4)  ||
-			(MALLOC_ALIGNMENT < (size_t)8U) ||
-			((MALLOC_ALIGNMENT    & (MALLOC_ALIGNMENT-SIZE_T_ONE))    != 0) ||
-			((MCHUNK_SIZE         & (MCHUNK_SIZE-SIZE_T_ONE))         != 0) ||
-			((mparams.granularity & (mparams.granularity-SIZE_T_ONE)) != 0) ||
-			((mparams.page_size   & (mparams.page_size-SIZE_T_ONE))   != 0))
-		  ABORT;
-	}
-	return 0;
-}
-
-inline void RNewAllocator::init_bins(mstate m) {
-  /* Establish circular links for smallbins */
-  bindex_t i;
-  for (i = 0; i < NSMALLBINS; ++i) {
-    sbinptr bin = smallbin_at(m,i);
-    bin->fd = bin->bk = bin;
-  }
-}
-/* ---------------------------- malloc support --------------------------- */
-
-/* allocate a large request from the best fitting chunk in a treebin */
-void* RNewAllocator::tmalloc_large(mstate m, size_t nb) {
-  tchunkptr v = 0;
-  size_t rsize = -nb; /* Unsigned negation */
-  tchunkptr t;
-  bindex_t idx;
-  compute_tree_index(nb, idx);
-
-  if ((t = *treebin_at(m, idx)) != 0) {
-    /* Traverse tree for this bin looking for node with size == nb */
-    size_t sizebits =
-    nb <<
-    leftshift_for_tree_index(idx);
-    tchunkptr rst = 0;  /* The deepest untaken right subtree */
-    for (;;) {
-      tchunkptr rt;
-      size_t trem = chunksize(t) - nb;
-      if (trem < rsize) {
-        v = t;
-        if ((rsize = trem) == 0)
-          break;
-      }
-      rt = t->child[1];
-      t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1];
-      if (rt != 0 && rt != t)
-        rst = rt;
-      if (t == 0) {
-        t = rst; /* set t to least subtree holding sizes > nb */
-        break;
-      }
-      sizebits <<= 1;
-    }
-  }
-  if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */
-    binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap;
-    if (leftbits != 0) {
-      bindex_t i;
-      binmap_t leastbit = least_bit(leftbits);
-      compute_bit2idx(leastbit, i);
-      t = *treebin_at(m, i);
-    }
-  }
-  while (t != 0) { /* find smallest of tree or subtree */
-    size_t trem = chunksize(t) - nb;
-    if (trem < rsize) {
-      rsize = trem;
-      v = t;
-    }
-    t = leftmost_child(t);
-  }
-  /*  If dv is a better fit, return 0 so malloc will use it */
-  if (v != 0 && rsize < (size_t)(m->dvsize - nb)) {
-    if (RTCHECK(ok_address(m, v))) { /* split */
-      mchunkptr r = chunk_plus_offset(v, nb);
-      assert(chunksize(v) == rsize + nb);
-      if (RTCHECK(ok_next(v, r))) {
-        unlink_large_chunk(m, v);
-        if (rsize < MIN_CHUNK_SIZE)
-          set_inuse_and_pinuse(m, v, (rsize + nb));
-        else {
-          set_size_and_pinuse_of_inuse_chunk(m, v, nb);
-          set_size_and_pinuse_of_free_chunk(r, rsize);
-          insert_chunk(m, r, rsize);
-        }
-        return chunk2mem(v);
-      }
-    }
-    CORRUPTION_ERROR_ACTION(m);
-  }
-  return 0;
-}
-
-/* allocate a small request from the best fitting chunk in a treebin */
-void* RNewAllocator::tmalloc_small(mstate m, size_t nb) {
-  tchunkptr t, v;
-  size_t rsize;
-  bindex_t i;
-  binmap_t leastbit = least_bit(m->treemap);
-  compute_bit2idx(leastbit, i);
-
-  v = t = *treebin_at(m, i);
-  rsize = chunksize(t) - nb;
-
-  while ((t = leftmost_child(t)) != 0) {
-    size_t trem = chunksize(t) - nb;
-    if (trem < rsize) {
-      rsize = trem;
-      v = t;
-    }
-  }
-
-  if (RTCHECK(ok_address(m, v))) {
-    mchunkptr r = chunk_plus_offset(v, nb);
-    assert(chunksize(v) == rsize + nb);
-    if (RTCHECK(ok_next(v, r))) {
-      unlink_large_chunk(m, v);
-      if (rsize < MIN_CHUNK_SIZE)
-        set_inuse_and_pinuse(m, v, (rsize + nb));
-      else {
-        set_size_and_pinuse_of_inuse_chunk(m, v, nb);
-        set_size_and_pinuse_of_free_chunk(r, rsize);
-        replace_dv(m, r, rsize);
-      }
-      return chunk2mem(v);
-    }
-  }
-  CORRUPTION_ERROR_ACTION(m);
-  return 0;
-}
-
-inline void RNewAllocator::init_top(mstate m, mchunkptr p, size_t psize)
-{
-	/* Ensure alignment */
-	size_t offset = align_offset(chunk2mem(p));
-	p = (mchunkptr)((TUint8*)p + offset);
-	psize -= offset;
-	m->top = p;
-	m->topsize = psize;
-	p->head = psize | PINUSE_BIT;
-	/* set size of fake trailing chunk holding overhead space only once */
-	mchunkptr chunkPlusOff = chunk_plus_offset(p, psize);
-	chunkPlusOff->head = TOP_FOOT_SIZE;
-	m->trim_check = mparams.trim_threshold; /* reset on each update */
-}
-
-void* RNewAllocator::internal_realloc(mstate m, void* oldmem, size_t bytes)
-{
-  if (bytes >= MAX_REQUEST) {
-    MALLOC_FAILURE_ACTION;
-    return 0;
-  }
-  if (!PREACTION(m)) {
-    mchunkptr oldp = mem2chunk(oldmem);
-    size_t oldsize = chunksize(oldp);
-    mchunkptr next = chunk_plus_offset(oldp, oldsize);
-    mchunkptr newp = 0;
-    void* extra = 0;
-
-    /* Try to either shrink or extend into top. Else malloc-copy-free */
-
-    if (RTCHECK(ok_address(m, oldp) && ok_cinuse(oldp) &&
-                ok_next(oldp, next) && ok_pinuse(next))) {
-      size_t nb = request2size(bytes);
-      if (is_mmapped(oldp))
-        newp = mmap_resize(m, oldp, nb);
-      else
-	  if (oldsize >= nb) { /* already big enough */
-        size_t rsize = oldsize - nb;
-        newp = oldp;
-        if (rsize >= MIN_CHUNK_SIZE) {
-          mchunkptr remainder = chunk_plus_offset(newp, nb);
-          set_inuse(m, newp, nb);
-          set_inuse(m, remainder, rsize);
-          extra = chunk2mem(remainder);
-        }
-      }
-		/*AMOD: Modified to optimized*/
-		else if (next == m->top && oldsize + m->topsize > nb)
-		{
-			/* Expand into top */
-			if(oldsize + m->topsize > nb)
-			{
-		        size_t newsize = oldsize + m->topsize;
-		        size_t newtopsize = newsize - nb;
-		        mchunkptr newtop = chunk_plus_offset(oldp, nb);
-		        set_inuse(m, oldp, nb);
-		        newtop->head = newtopsize |PINUSE_BIT;
-		        m->top = newtop;
-		        m->topsize = newtopsize;
-		        newp = oldp;
-			}
-      }
-    }
-    else {
-      USAGE_ERROR_ACTION(m, oldmem);
-      POSTACTION(m);
-      return 0;
-    }
-
-    POSTACTION(m);
-
-    if (newp != 0) {
-      if (extra != 0) {
-        internal_free(m, extra);
-      }
-      check_inuse_chunk(m, newp);
-      return chunk2mem(newp);
-    }
-    else {
-      void* newmem = internal_malloc(m, bytes);
-      if (newmem != 0) {
-        size_t oc = oldsize - overhead_for(oldp);
-        memcpy(newmem, oldmem, (oc < bytes)? oc : bytes);
-        internal_free(m, oldmem);
-      }
-      return newmem;
-    }
-  }
-  return 0;
-}
-/* ----------------------------- statistics ------------------------------ */
-mallinfo RNewAllocator::internal_mallinfo(mstate m) {
-  struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-  TInt chunkCnt = 0;
-  if (!PREACTION(m)) {
-    check_malloc_state(m);
-    if (is_initialized(m)) {
-      size_t nfree = SIZE_T_ONE; /* top always free */
-      size_t mfree = m->topsize + TOP_FOOT_SIZE;
-      size_t sum = mfree;
-      msegmentptr s = &m->seg;
-      TInt tmp = (TUint8*)m->top - (TUint8*)s->base;
-      while (s != 0) {
-        mchunkptr q = align_as_chunk(s->base);
-        chunkCnt++;
-        while (segment_holds(s, q) &&
-               q != m->top && q->head != FENCEPOST_HEAD) {
-          size_t sz = chunksize(q);
-          sum += sz;
-          if (!cinuse(q)) {
-            mfree += sz;
-            ++nfree;
-          }
-          q = next_chunk(q);
-        }
-        s = s->next;
-      }
-      nm.arena    = sum;
-      nm.ordblks  = nfree;
-      nm.hblkhd   = m->footprint - sum;
-      nm.usmblks  = m->max_footprint;
-      nm.uordblks = m->footprint - mfree;
-      nm.fordblks = mfree;
-      nm.keepcost = m->topsize;
-      nm.cellCount= chunkCnt;/*number of chunks allocated*/
-    }
-    POSTACTION(m);
-  }
-  return nm;
-}
-
-void  RNewAllocator::internal_malloc_stats(mstate m) {
-if (!PREACTION(m)) {
-  size_t maxfp = 0;
-  size_t fp = 0;
-  size_t used = 0;
-  check_malloc_state(m);
-  if (is_initialized(m)) {
-    msegmentptr s = &m->seg;
-    maxfp = m->max_footprint;
-    fp = m->footprint;
-    used = fp - (m->topsize + TOP_FOOT_SIZE);
-
-    while (s != 0) {
-      mchunkptr q = align_as_chunk(s->base);
-      while (segment_holds(s, q) &&
-             q != m->top && q->head != FENCEPOST_HEAD) {
-        if (!cinuse(q))
-          used -= chunksize(q);
-        q = next_chunk(q);
-      }
-      s = s->next;
-    }
-  }
-  POSTACTION(m);
-}
-}
-/* support for mallopt */
-int RNewAllocator::change_mparam(int param_number, int value) {
-  size_t val = (size_t)value;
-  init_mparams(DEFAULT_TRIM_THRESHOLD);
-  switch(param_number) {
-  case M_TRIM_THRESHOLD:
-    mparams.trim_threshold = val;
-    return 1;
-  case M_GRANULARITY:
-    if (val >= mparams.page_size && ((val & (val-1)) == 0)) {
-      mparams.granularity = val;
-      return 1;
-    }
-    else
-      return 0;
-  case M_MMAP_THRESHOLD:
-    mparams.mmap_threshold = val;
-    return 1;
-  default:
-    return 0;
-  }
-}
-/* Get memory from system using MORECORE or MMAP */
-void* RNewAllocator::sys_alloc(mstate m, size_t nb)
-{
-	TUint8* tbase = CMFAIL;
-	size_t tsize = 0;
-	flag_t mmap_flag = 0;
-	//init_mparams();/*No need to do init_params here*/
-	/* Directly map large chunks */
-	if (use_mmap(m) && nb >= mparams.mmap_threshold)
-	{
-		void* mem = mmap_alloc(m, nb);
-		if (mem != 0)
-			return mem;
-	}
-  /*
-    Try getting memory in any of three ways (in most-preferred to
-    least-preferred order):
-    1. A call to MORECORE that can normally contiguously extend memory.
-       (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or
-       or main space is mmapped or a previous contiguous call failed)
-    2. A call to MMAP new space (disabled if not HAVE_MMAP).
-       Note that under the default settings, if MORECORE is unable to
-       fulfill a request, and HAVE_MMAP is true, then mmap is
-       used as a noncontiguous system allocator. This is a useful backup
-       strategy for systems with holes in address spaces -- in this case
-       sbrk cannot contiguously expand the heap, but mmap may be able to
-       find space.
-    3. A call to MORECORE that cannot usually contiguously extend memory.
-       (disabled if not HAVE_MORECORE)
-  */
-  /*Trying to allocate the memory*/
-	if(MORECORE_CONTIGUOUS && !use_noncontiguous(m))
-	{
-	TUint8* br = CMFAIL;
-    msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (TUint8*)m->top);
-    size_t asize = 0;
-    ACQUIRE_MORECORE_LOCK(m);
-    if (ss == 0)
-	{  /* First time through or recovery */
-		TUint8* base = (TUint8*)CALL_MORECORE(0);
-		if (base != CMFAIL)
-		{
-			asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE);
-			/* Adjust to end on a page boundary */
-			if (!is_page_aligned(base))
-				asize += (page_align((size_t)base) - (size_t)base);
-			/* Can't call MORECORE if size is negative when treated as signed */
-			if (asize < HALF_MAX_SIZE_T &&(br = (TUint8*)(CALL_MORECORE(asize))) == base)
-			{
-				tbase = base;
-				tsize = asize;
-			}
-		}
-    }
-    else
-	{
-      /* Subtract out existing available top space from MORECORE request. */
-		asize = granularity_align(nb - m->topsize + TOP_FOOT_SIZE + SIZE_T_ONE);
-    /* Use mem here only if it did continuously extend old space */
-      if (asize < HALF_MAX_SIZE_T &&
-          (br = (TUint8*)(CALL_MORECORE(asize))) == ss->base+ss->size) {
-        tbase = br;
-        tsize = asize;
-      }
-    }
-    if (tbase == CMFAIL) {    /* Cope with partial failure */
-      if (br != CMFAIL) {    /* Try to use/extend the space we did get */
-        if (asize < HALF_MAX_SIZE_T &&
-            asize < nb + TOP_FOOT_SIZE + SIZE_T_ONE) {
-          size_t esize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE - asize);
-          if (esize < HALF_MAX_SIZE_T) {
-            TUint8* end = (TUint8*)CALL_MORECORE(esize);
-            if (end != CMFAIL)
-              asize += esize;
-            else {            /* Can't use; try to release */
-              CALL_MORECORE(-asize);
-              br = CMFAIL;
-            }
-          }
-        }
-      }
-      if (br != CMFAIL) {    /* Use the space we did get */
-        tbase = br;
-        tsize = asize;
-      }
-      else
-        disable_contiguous(m); /* Don't try contiguous path in the future */
-    }
-    RELEASE_MORECORE_LOCK(m);
-  }
-  if (HAVE_MMAP && tbase == CMFAIL) {  /* Try MMAP */
-    size_t req = nb + TOP_FOOT_SIZE + SIZE_T_ONE;
-    size_t rsize = granularity_align(req);
-    if (rsize > nb) { /* Fail if wraps around zero */
-      TUint8* mp = (TUint8*)(CALL_MMAP(rsize));
-      if (mp != CMFAIL) {
-        tbase = mp;
-        tsize = rsize;
-        mmap_flag = IS_MMAPPED_BIT;
-      }
-    }
-  }
-  if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */
-    size_t asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE);
-    if (asize < HALF_MAX_SIZE_T) {
-      TUint8* br = CMFAIL;
-      TUint8* end = CMFAIL;
-      ACQUIRE_MORECORE_LOCK(m);
-      br = (TUint8*)(CALL_MORECORE(asize));
-      end = (TUint8*)(CALL_MORECORE(0));
-      RELEASE_MORECORE_LOCK(m);
-      if (br != CMFAIL && end != CMFAIL && br < end) {
-        size_t ssize = end - br;
-        if (ssize > nb + TOP_FOOT_SIZE) {
-          tbase = br;
-          tsize = ssize;
-        }
-      }
-    }
-  }
-  if (tbase != CMFAIL) {
-    if ((m->footprint += tsize) > m->max_footprint)
-      m->max_footprint = m->footprint;
-    if (!is_initialized(m)) { /* first-time initialization */
-      m->seg.base = m->least_addr = tbase;
-      m->seg.size = tsize;
-      m->seg.sflags = mmap_flag;
-      m->magic = mparams.magic;
-      init_bins(m);
-      if (is_global(m))
-        init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE);
-      else {
-        /* Offset top by embedded malloc_state */
-        mchunkptr mn = next_chunk(mem2chunk(m));
-        init_top(m, mn, (size_t)((tbase + tsize) - (TUint8*)mn) -TOP_FOOT_SIZE);
-      }
-    }else {
-      /* Try to merge with an existing segment */
-      msegmentptr sp = &m->seg;
-      while (sp != 0 && tbase != sp->base + sp->size)
-        sp = sp->next;
-      if (sp != 0 && !is_extern_segment(sp) &&
-          (sp->sflags & IS_MMAPPED_BIT) == mmap_flag &&
-          segment_holds(sp, m->top))
-    	  { /* append */
-        sp->size += tsize;
-        init_top(m, m->top, m->topsize + tsize);
-      }
-      else {
-        if (tbase < m->least_addr)
-          m->least_addr = tbase;
-        sp = &m->seg;
-        while (sp != 0 && sp->base != tbase + tsize)
-          sp = sp->next;
-        if (sp != 0 &&
-            !is_extern_segment(sp) &&
-            (sp->sflags & IS_MMAPPED_BIT) == mmap_flag) {
-          TUint8* oldbase = sp->base;
-          sp->base = tbase;
-          sp->size += tsize;
-          return prepend_alloc(m, tbase, oldbase, nb);
-        }
-        else
-          add_segment(m, tbase, tsize, mmap_flag);
-      }
-    }
-    if (nb < m->topsize) { /* Allocate from new or extended top space */
-      size_t rsize = m->topsize -= nb;
-      mchunkptr p = m->top;
-      mchunkptr r = m->top = chunk_plus_offset(p, nb);
-      r->head = rsize | PINUSE_BIT;
-      set_size_and_pinuse_of_inuse_chunk(m, p, nb);
-      check_top_chunk(m, m->top);
-      check_malloced_chunk(m, chunk2mem(p), nb);
-      return chunk2mem(p);
-    }
-  }
-  /*need to check this*/
-  //errno = -1;
-  return 0;
-}
-msegmentptr RNewAllocator::segment_holding(mstate m, TUint8* addr) {
-  msegmentptr sp = &m->seg;
-  for (;;) {
-    if (addr >= sp->base && addr < sp->base + sp->size)
-      return sp;
-    if ((sp = sp->next) == 0)
-      return 0;
-  }
-}
-/* Unlink the first chunk from a smallbin */
-inline void RNewAllocator::unlink_first_small_chunk(mstate M,mchunkptr B,mchunkptr P,bindex_t& I)
-{
-  mchunkptr F = P->fd;
-  assert(P != B);
-  assert(P != F);
-  assert(chunksize(P) == small_index2size(I));
-  if (B == F)
-    clear_smallmap(M, I);
-  else if (RTCHECK(ok_address(M, F))) {
-    B->fd = F;
-    F->bk = B;
-  }
-  else {
-    CORRUPTION_ERROR_ACTION(M);
-  }
-}
-/* Link a free chunk into a smallbin  */
-inline void RNewAllocator::insert_small_chunk(mstate M,mchunkptr P, size_t S)
-{
-  bindex_t I  = small_index(S);
-  mchunkptr B = smallbin_at(M, I);
-  mchunkptr F = B;
-  assert(S >= MIN_CHUNK_SIZE);
-  if (!smallmap_is_marked(M, I))
-    mark_smallmap(M, I);
-  else if (RTCHECK(ok_address(M, B->fd)))
-    F = B->fd;
-  else {
-    CORRUPTION_ERROR_ACTION(M);
-  }
-  B->fd = P;
-  F->bk = P;
-  P->fd = F;
-  P->bk = B;
-}
-
-
-inline void RNewAllocator::insert_chunk(mstate M,mchunkptr P,size_t S)
-{
-	if (is_small(S))
-		insert_small_chunk(M, P, S);
-	else{
-		tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S);
-	 }
-}
-
-inline void RNewAllocator::unlink_large_chunk(mstate M,tchunkptr X)
-{
-  tchunkptr XP = X->parent;
-  tchunkptr R;
-  if (X->bk != X) {
-    tchunkptr F = X->fd;
-    R = X->bk;
-    if (RTCHECK(ok_address(M, F))) {
-      F->bk = R;
-      R->fd = F;
-    }
-    else {
-      CORRUPTION_ERROR_ACTION(M);
-    }
-  }
-  else {
-    tchunkptr* RP;
-    if (((R = *(RP = &(X->child[1]))) != 0) ||
-        ((R = *(RP = &(X->child[0]))) != 0)) {
-      tchunkptr* CP;
-      while ((*(CP = &(R->child[1])) != 0) ||
-             (*(CP = &(R->child[0])) != 0)) {
-        R = *(RP = CP);
-      }
-      if (RTCHECK(ok_address(M, RP)))
-        *RP = 0;
-      else {
-        CORRUPTION_ERROR_ACTION(M);
-      }
-    }
-  }
-  if (XP != 0) {
-    tbinptr* H = treebin_at(M, X->index);
-    if (X == *H) {
-      if ((*H = R) == 0)
-        clear_treemap(M, X->index);
-    }
-    else if (RTCHECK(ok_address(M, XP))) {
-      if (XP->child[0] == X)
-        XP->child[0] = R;
-      else
-        XP->child[1] = R;
-    }
-    else
-      CORRUPTION_ERROR_ACTION(M);
-    if (R != 0) {
-      if (RTCHECK(ok_address(M, R))) {
-        tchunkptr C0, C1;
-        R->parent = XP;
-        if ((C0 = X->child[0]) != 0) {
-          if (RTCHECK(ok_address(M, C0))) {
-            R->child[0] = C0;
-            C0->parent = R;
-          }
-          else
-            CORRUPTION_ERROR_ACTION(M);
-        }
-        if ((C1 = X->child[1]) != 0) {
-          if (RTCHECK(ok_address(M, C1))) {
-            R->child[1] = C1;
-            C1->parent = R;
-          }
-          else
-            CORRUPTION_ERROR_ACTION(M);
-        }
-      }
-      else
-        CORRUPTION_ERROR_ACTION(M);
-    }
-  }
-}
-
-/* Unlink a chunk from a smallbin  */
-inline void RNewAllocator::unlink_small_chunk(mstate M, mchunkptr P,size_t S)
-{
-  mchunkptr F = P->fd;
-  mchunkptr B = P->bk;
-  bindex_t I = small_index(S);
-  assert(P != B);
-  assert(P != F);
-  assert(chunksize(P) == small_index2size(I));
-  if (F == B)
-    clear_smallmap(M, I);
-  else if (RTCHECK((F == smallbin_at(M,I) || ok_address(M, F)) &&
-                   (B == smallbin_at(M,I) || ok_address(M, B)))) {
-    F->bk = B;
-    B->fd = F;
-  }
-  else {
-    CORRUPTION_ERROR_ACTION(M);
-  }
-}
-
-inline void RNewAllocator::unlink_chunk(mstate M, mchunkptr P, size_t S)
-{
-  if (is_small(S))
-	unlink_small_chunk(M, P, S);
-  else
-  {
-	  tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP);
-  }
-}
-
-inline void RNewAllocator::compute_tree_index(size_t S, bindex_t& I)
-{
-  size_t X = S >> TREEBIN_SHIFT;
-  if (X == 0)
-    I = 0;
-  else if (X > 0xFFFF)
-    I = NTREEBINS-1;
-  else {
-    unsigned int Y = (unsigned int)X;
-    unsigned int N = ((Y - 0x100) >> 16) & 8;
-    unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;
-    N += K;
-    N += K = (((Y <<= K) - 0x4000) >> 16) & 2;
-    K = 14 - N + ((Y <<= K) >> 15);
-    I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));
-  }
-}
-
-/* ------------------------- Operations on trees ------------------------- */
-
-/* Insert chunk into tree */
-inline void RNewAllocator::insert_large_chunk(mstate M,tchunkptr X,size_t S)
-{
-  tbinptr* H;
-  bindex_t I;
-  compute_tree_index(S, I);
-  H = treebin_at(M, I);
-  X->index = I;
-  X->child[0] = X->child[1] = 0;
-  if (!treemap_is_marked(M, I)) {
-    mark_treemap(M, I);
-    *H = X;
-    X->parent = (tchunkptr)H;
-    X->fd = X->bk = X;
-  }
-  else {
-    tchunkptr T = *H;
-    size_t K = S << leftshift_for_tree_index(I);
-    for (;;) {
-      if (chunksize(T) != S) {
-        tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);
-        K <<= 1;
-        if (*C != 0)
-          T = *C;
-        else if (RTCHECK(ok_address(M, C))) {
-          *C = X;
-          X->parent = T;
-          X->fd = X->bk = X;
-          break;
-        }
-        else {
-          CORRUPTION_ERROR_ACTION(M);
-          break;
-        }
-      }
-      else {
-        tchunkptr F = T->fd;
-        if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {
-          T->fd = F->bk = X;
-          X->fd = F;
-          X->bk = T;
-          X->parent = 0;
-          break;
-        }
-        else {
-          CORRUPTION_ERROR_ACTION(M);
-          break;
-        }
-      }
-    }
-  }
-}
-
-/*
-  Unlink steps:
-
-  1. If x is a chained node, unlink it from its same-sized fd/bk links
-     and choose its bk node as its replacement.
-  2. If x was the last node of its size, but not a leaf node, it must
-     be replaced with a leaf node (not merely one with an open left or
-     right), to make sure that lefts and rights of descendents
-     correspond properly to bit masks.  We use the rightmost descendent
-     of x.  We could use any other leaf, but this is easy to locate and
-     tends to counteract removal of leftmosts elsewhere, and so keeps
-     paths shorter than minimally guaranteed.  This doesn't loop much
-     because on average a node in a tree is near the bottom.
-  3. If x is the base of a chain (i.e., has parent links) relink
-     x's parent and children to x's replacement (or null if none).
-*/
-
-/* Replace dv node, binning the old one */
-/* Used only when dvsize known to be small */
-inline void RNewAllocator::replace_dv(mstate M, mchunkptr P, size_t S)
-{
-  size_t DVS = M->dvsize;
-  if (DVS != 0) {
-    mchunkptr DV = M->dv;
-    assert(is_small(DVS));
-    insert_small_chunk(M, DV, DVS);
-  }
-  M->dvsize = S;
-  M->dv = P;
-}
-
-inline void RNewAllocator::compute_bit2idx(binmap_t X,bindex_t& I)
-{
-	unsigned int Y = X - 1;
-	unsigned int K = Y >> (16-4) & 16;
-	unsigned int N = K;        Y >>= K;
-	N += K = Y >> (8-3) &  8;  Y >>= K;
-	N += K = Y >> (4-2) &  4;  Y >>= K;
-	N += K = Y >> (2-1) &  2;  Y >>= K;
-	N += K = Y >> (1-0) &  1;  Y >>= K;
-	I = (bindex_t)(N + Y);
-}
-
-void RNewAllocator::add_segment(mstate m, TUint8* tbase, size_t tsize, flag_t mmapped) {
-  /* Determine locations and sizes of segment, fenceposts, old top */
-  TUint8* old_top = (TUint8*)m->top;
-  msegmentptr oldsp = segment_holding(m, old_top);
-  TUint8* old_end = oldsp->base + oldsp->size;
-  size_t ssize = pad_request(sizeof(struct malloc_segment));
-  TUint8* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK);
-  size_t offset = align_offset(chunk2mem(rawsp));
-  TUint8* asp = rawsp + offset;
-  TUint8* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp;
-  mchunkptr sp = (mchunkptr)csp;
-  msegmentptr ss = (msegmentptr)(chunk2mem(sp));
-  mchunkptr tnext = chunk_plus_offset(sp, ssize);
-  mchunkptr p = tnext;
-  int nfences = 0;
-
-  /* reset top to new space */
-  init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE);
-
-  /* Set up segment record */
-  assert(is_aligned(ss));
-  set_size_and_pinuse_of_inuse_chunk(m, sp, ssize);
-  *ss = m->seg; /* Push current record */
-  m->seg.base = tbase;
-  m->seg.size = tsize;
-  m->seg.sflags = mmapped;
-  m->seg.next = ss;
-
-  /* Insert trailing fenceposts */
-  for (;;) {
-    mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE);
-    p->head = FENCEPOST_HEAD;
-    ++nfences;
-    if ((TUint8*)(&(nextp->head)) < old_end)
-      p = nextp;
-    else
-      break;
-  }
-  assert(nfences >= 2);
-
-  /* Insert the rest of old top into a bin as an ordinary free chunk */
-  if (csp != old_top) {
-    mchunkptr q = (mchunkptr)old_top;
-    size_t psize = csp - old_top;
-    mchunkptr tn = chunk_plus_offset(q, psize);
-    set_free_with_pinuse(q, psize, tn);
-    insert_chunk(m, q, psize);
-  }
-
-  check_top_chunk(m, m->top);
-}
-
-
-void* RNewAllocator::prepend_alloc(mstate m, TUint8* newbase, TUint8* oldbase,
-                           size_t nb) {
-  mchunkptr p = align_as_chunk(newbase);
-  mchunkptr oldfirst = align_as_chunk(oldbase);
-  size_t psize = (TUint8*)oldfirst - (TUint8*)p;
-  mchunkptr q = chunk_plus_offset(p, nb);
-  size_t qsize = psize - nb;
-  set_size_and_pinuse_of_inuse_chunk(m, p, nb);
-
-  assert((TUint8*)oldfirst > (TUint8*)q);
-  assert(pinuse(oldfirst));
-  assert(qsize >= MIN_CHUNK_SIZE);
-
-  /* consolidate remainder with first chunk of old base */
-  if (oldfirst == m->top) {
-    size_t tsize = m->topsize += qsize;
-    m->top = q;
-    q->head = tsize | PINUSE_BIT;
-    check_top_chunk(m, q);
-  }
-  else if (oldfirst == m->dv) {
-    size_t dsize = m->dvsize += qsize;
-    m->dv = q;
-    set_size_and_pinuse_of_free_chunk(q, dsize);
-  }
-  else {
-    if (!cinuse(oldfirst)) {
-      size_t nsize = chunksize(oldfirst);
-      unlink_chunk(m, oldfirst, nsize);
-      oldfirst = chunk_plus_offset(oldfirst, nsize);
-      qsize += nsize;
-    }
-    set_free_with_pinuse(q, qsize, oldfirst);
-    insert_chunk(m, q, qsize);
-    check_free_chunk(m, q);
-  }
-
-  check_malloced_chunk(m, chunk2mem(p), nb);
-  return chunk2mem(p);
-}
-
-void* RNewAllocator::mmap_alloc(mstate m, size_t nb) {
-  size_t mmsize = granularity_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK);
-  if (mmsize > nb) {     /* Check for wrap around 0 */
-    TUint8* mm = (TUint8*)(DIRECT_MMAP(mmsize));
-    if (mm != CMFAIL) {
-      size_t offset = align_offset(chunk2mem(mm));
-      size_t psize = mmsize - offset - MMAP_FOOT_PAD;
-      mchunkptr p = (mchunkptr)(mm + offset);
-      p->prev_foot = offset | IS_MMAPPED_BIT;
-      (p)->head = (psize|CINUSE_BIT);
-      mark_inuse_foot(m, p, psize);
-      chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD;
-      chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0;
-
-      if (mm < m->least_addr)
-        m->least_addr = mm;
-      if ((m->footprint += mmsize) > m->max_footprint)
-        m->max_footprint = m->footprint;
-      assert(is_aligned(chunk2mem(p)));
-      check_mmapped_chunk(m, p);
-      return chunk2mem(p);
-    }
-  }
-  return 0;
-}
-
-	int RNewAllocator::sys_trim(mstate m, size_t pad)
-	{
-	  size_t released = 0;
-	  if (pad < MAX_REQUEST && is_initialized(m)) {
-	    pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */
-
-	    if (m->topsize > pad) {
-	      /* Shrink top space in granularity-size units, keeping at least one */
-	      size_t unit = mparams.granularity;
-				size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - SIZE_T_ONE) * unit;
-	      msegmentptr sp = segment_holding(m, (TUint8*)m->top);
-
-	      if (!is_extern_segment(sp)) {
-	        if (is_mmapped_segment(sp)) {
-	          if (HAVE_MMAP &&
-	              sp->size >= extra &&
-	              !has_segment_link(m, sp)) { /* can't shrink if pinned */
-	            size_t newsize = sp->size - extra;
-	            /* Prefer mremap, fall back to munmap */
-	            if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) ||
-	                (CALL_MUNMAP(sp->base + newsize, extra) == 0)) {
-	              released = extra;
-	            }
-	          }
-	        }
-	        else if (HAVE_MORECORE) {
-	          if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */
-	            extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit;
-	          ACQUIRE_MORECORE_LOCK(m);
-	          {
-	            /* Make sure end of memory is where we last set it. */
-	            TUint8* old_br = (TUint8*)(CALL_MORECORE(0));
-	            if (old_br == sp->base + sp->size) {
-	              TUint8* rel_br = (TUint8*)(CALL_MORECORE(-extra));
-	              TUint8* new_br = (TUint8*)(CALL_MORECORE(0));
-	              if (rel_br != CMFAIL && new_br < old_br)
-	                released = old_br - new_br;
-	            }
-	          }
-	          RELEASE_MORECORE_LOCK(m);
-	        }
-	      }
-
-	      if (released != 0) {
-	        sp->size -= released;
-	        m->footprint -= released;
-	        init_top(m, m->top, m->topsize - released);
-	        check_top_chunk(m, m->top);
-	      }
-	    }
-
-	    /* Unmap any unused mmapped segments */
-	    if (HAVE_MMAP)
-	      released += release_unused_segments(m);
-
-	    /* On failure, disable autotrim to avoid repeated failed future calls */
-	    if (released == 0)
-	      m->trim_check = MAX_SIZE_T;
-	  }
-
-	  return (released != 0)? 1 : 0;
-	}
-
-	inline int RNewAllocator::has_segment_link(mstate m, msegmentptr ss)
-	{
-	  msegmentptr sp = &m->seg;
-	  for (;;) {
-	    if ((TUint8*)sp >= ss->base && (TUint8*)sp < ss->base + ss->size)
-	      return 1;
-	    if ((sp = sp->next) == 0)
-	      return 0;
-	  }
-	}
-
-	/* Unmap and unlink any mmapped segments that don't contain used chunks */
-	size_t RNewAllocator::release_unused_segments(mstate m)
-	{
-	  size_t released = 0;
-	  msegmentptr pred = &m->seg;
-	  msegmentptr sp = pred->next;
-	  while (sp != 0) {
-	    TUint8* base = sp->base;
-	    size_t size = sp->size;
-	    msegmentptr next = sp->next;
-	    if (is_mmapped_segment(sp) && !is_extern_segment(sp)) {
-	      mchunkptr p = align_as_chunk(base);
-	      size_t psize = chunksize(p);
-	      /* Can unmap if first chunk holds entire segment and not pinned */
-	      if (!cinuse(p) && (TUint8*)p + psize >= base + size - TOP_FOOT_SIZE) {
-	        tchunkptr tp = (tchunkptr)p;
-	        assert(segment_holds(sp, (TUint8*)sp));
-	        if (p == m->dv) {
-	          m->dv = 0;
-	          m->dvsize = 0;
-	        }
-	        else {
-	          unlink_large_chunk(m, tp);
-	        }
-	        if (CALL_MUNMAP(base, size) == 0) {
-	          released += size;
-	          m->footprint -= size;
-	          /* unlink obsoleted record */
-	          sp = pred;
-	          sp->next = next;
-	        }
-	        else { /* back out if cannot unmap */
-	          insert_large_chunk(m, tp, psize);
-	        }
-	      }
-	    }
-	    pred = sp;
-	    sp = next;
-	  }/*End of while*/
-	  return released;
-	}
-	/* Realloc using mmap */
-	inline	mchunkptr RNewAllocator::mmap_resize(mstate m, mchunkptr oldp, size_t nb)
-	{
-	  size_t oldsize = chunksize(oldp);
-	  if (is_small(nb)) /* Can't shrink mmap regions below small size */
-	    return 0;
-	  /* Keep old chunk if big enough but not too big */
-	  if (oldsize >= nb + SIZE_T_SIZE &&
-	      (oldsize - nb) <= (mparams.granularity << 1))
-	    return oldp;
-	  else {
-	    size_t offset = oldp->prev_foot & ~IS_MMAPPED_BIT;
-	    size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD;
-	    size_t newmmsize = granularity_align(nb + SIX_SIZE_T_SIZES +
-	                                         CHUNK_ALIGN_MASK);
-	    TUint8* cp = (TUint8*)CALL_MREMAP((char*)oldp - offset,
-	                                  oldmmsize, newmmsize, 1);
-	    if (cp != CMFAIL) {
-	      mchunkptr newp = (mchunkptr)(cp + offset);
-	      size_t psize = newmmsize - offset - MMAP_FOOT_PAD;
-	      newp->head = (psize|CINUSE_BIT);
-	      mark_inuse_foot(m, newp, psize);
-	      chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD;
-	      chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0;
-
-	      if (cp < m->least_addr)
-	        m->least_addr = cp;
-	      if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint)
-	        m->max_footprint = m->footprint;
-	      check_mmapped_chunk(m, newp);
-	      return newp;
-	    }
-	  }
-	  return 0;
-	}
-
-
-void RNewAllocator::Init_Dlmalloc(size_t capacity, int locked, size_t aTrimThreshold)
-	{
-		memset(gm,0,sizeof(malloc_state));
-		init_mparams(aTrimThreshold); /* Ensure pagesize etc initialized */
-		// The maximum amount that can be allocated can be calculated as:-
-		// 2^sizeof(size_t) - sizeof(malloc_state) - TOP_FOOT_SIZE - page size (all accordingly padded)
-		// If the capacity exceeds this, no allocation will be done.
-		gm->seg.base = gm->least_addr = iBase;
-		gm->seg.size = capacity;
-		gm->seg.sflags = !IS_MMAPPED_BIT;
-		set_lock(gm, locked);
-		gm->magic = mparams.magic;
-		init_bins(gm);
-		init_top(gm, (mchunkptr)iBase, capacity - TOP_FOOT_SIZE);
-	}
-
-void* RNewAllocator::dlmalloc(size_t bytes) {
-  /*
-     Basic algorithm:
-     If a small request (< 256 bytes minus per-chunk overhead):
-       1. If one exists, use a remainderless chunk in associated smallbin.
-          (Remainderless means that there are too few excess bytes to
-          represent as a chunk.)
-       2. If it is big enough, use the dv chunk, which is normally the
-          chunk adjacent to the one used for the most recent small request.
-       3. If one exists, split the smallest available chunk in a bin,
-          saving remainder in dv.
-       4. If it is big enough, use the top chunk.
-       5. If available, get memory from system and use it
-     Otherwise, for a large request:
-       1. Find the smallest available binned chunk that fits, and use it
-          if it is better fitting than dv chunk, splitting if necessary.
-       2. If better fitting than any binned chunk, use the dv chunk.
-       3. If it is big enough, use the top chunk.
-       4. If request size >= mmap threshold, try to directly mmap this chunk.
-       5. If available, get memory from system and use it
-
-     The ugly goto's here ensure that postaction occurs along all paths.
-  */
-  if (!PREACTION(gm)) {
-    void* mem;
-    size_t nb;
-    if (bytes <= MAX_SMALL_REQUEST) {
-      bindex_t idx;
-      binmap_t smallbits;
-      nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes);
-      idx = small_index(nb);
-      smallbits = gm->smallmap >> idx;
-
-      if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */
-        mchunkptr b, p;
-        idx += ~smallbits & 1;       /* Uses next bin if idx empty */
-        b = smallbin_at(gm, idx);
-        p = b->fd;
-        assert(chunksize(p) == small_index2size(idx));
-        unlink_first_small_chunk(gm, b, p, idx);
-        set_inuse_and_pinuse(gm, p, small_index2size(idx));
-        mem = chunk2mem(p);
-        check_malloced_chunk(gm, mem, nb);
-        goto postaction;
-      }
-
-      else if (nb > gm->dvsize) {
-        if (smallbits != 0) { /* Use chunk in next nonempty smallbin */
-          mchunkptr b, p, r;
-          size_t rsize;
-          bindex_t i;
-          binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx));
-          binmap_t leastbit = least_bit(leftbits);
-          compute_bit2idx(leastbit, i);
-          b = smallbin_at(gm, i);
-          p = b->fd;
-          assert(chunksize(p) == small_index2size(i));
-          unlink_first_small_chunk(gm, b, p, i);
-          rsize = small_index2size(i) - nb;
-          /* Fit here cannot be remainderless if 4byte sizes */
-          if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE)
-            set_inuse_and_pinuse(gm, p, small_index2size(i));
-          else {
-            set_size_and_pinuse_of_inuse_chunk(gm, p, nb);
-            r = chunk_plus_offset(p, nb);
-            set_size_and_pinuse_of_free_chunk(r, rsize);
-            replace_dv(gm, r, rsize);
-          }
-          mem = chunk2mem(p);
-          check_malloced_chunk(gm, mem, nb);
-          goto postaction;
-        }
-
-        else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) {
-          check_malloced_chunk(gm, mem, nb);
-          goto postaction;
-        }
-      }
-    }
-    else if (bytes >= MAX_REQUEST)
-      nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */
-    else {
-      nb = pad_request(bytes);
-      if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) {
-        check_malloced_chunk(gm, mem, nb);
-        goto postaction;
-      }
-    }
-
-    if (nb <= gm->dvsize) {
-      size_t rsize = gm->dvsize - nb;
-      mchunkptr p = gm->dv;
-      if (rsize >= MIN_CHUNK_SIZE) { /* split dv */
-        mchunkptr r = gm->dv = chunk_plus_offset(p, nb);
-        gm->dvsize = rsize;
-        set_size_and_pinuse_of_free_chunk(r, rsize);
-        set_size_and_pinuse_of_inuse_chunk(gm, p, nb);
-      }
-      else { /* exhaust dv */
-        size_t dvs = gm->dvsize;
-        gm->dvsize = 0;
-        gm->dv = 0;
-        set_inuse_and_pinuse(gm, p, dvs);
-      }
-      mem = chunk2mem(p);
-      check_malloced_chunk(gm, mem, nb);
-      goto postaction;
-    }
-
-    else if (nb < gm->topsize) { /* Split top */
-      size_t rsize = gm->topsize -= nb;
-      mchunkptr p = gm->top;
-      mchunkptr r = gm->top = chunk_plus_offset(p, nb);
-      r->head = rsize | PINUSE_BIT;
-      set_size_and_pinuse_of_inuse_chunk(gm, p, nb);
-      mem = chunk2mem(p);
-      check_top_chunk(gm, gm->top);
-      check_malloced_chunk(gm, mem, nb);
-      goto postaction;
-    }
-
-    mem = sys_alloc(gm, nb);
-
-  postaction:
-    POSTACTION(gm);
-    return mem;
-  }
-
-  return 0;
-}
-
-void RNewAllocator::dlfree(void* mem) {
-  /*
-     Consolidate freed chunks with preceeding or succeeding bordering
-     free chunks, if they exist, and then place in a bin.  Intermixed
-     with special cases for top, dv, mmapped chunks, and usage errors.
-  */
-
-	if (mem != 0)
-	{
-		mchunkptr p  = mem2chunk(mem);
-#if FOOTERS
-		mstate fm = get_mstate_for(p);
-		if (!ok_magic(fm))
-		{
-			USAGE_ERROR_ACTION(fm, p);
-			return;
-		}
-#else /* FOOTERS */
-#define fm gm
-#endif /* FOOTERS */
-
-		if (!PREACTION(fm))
-		{
-			check_inuse_chunk(fm, p);
-			if (RTCHECK(ok_address(fm, p) && ok_cinuse(p)))
-			{
-				size_t psize = chunksize(p);
-				iTotalAllocSize -= psize;			// TODO DAN
-				mchunkptr next = chunk_plus_offset(p, psize);
-				if (!pinuse(p))
-				{
-					size_t prevsize = p->prev_foot;
-					if ((prevsize & IS_MMAPPED_BIT) != 0)
-					{
-						prevsize &= ~IS_MMAPPED_BIT;
-						psize += prevsize + MMAP_FOOT_PAD;
-						/*TInt tmp = TOP_FOOT_SIZE;
-						TUint8* top = (TUint8*)fm->top + fm->topsize + 40;
-						if((top == (TUint8*)p)&& fm->topsize > 4096)
-						{
-							fm->topsize += psize;
-							msegmentptr sp = segment_holding(fm, (TUint8*)fm->top);
-							sp->size+=psize;
-							if (should_trim(fm, fm->topsize))
-								sys_trim(fm, 0);
- 							goto postaction;
-						}
-						else*/
-						{
-							if (CALL_MUNMAP((char*)p - prevsize, psize) == 0)
-								fm->footprint -= psize;
-							goto postaction;
-						}
-					}
-					else
-					{
-						mchunkptr prev = chunk_minus_offset(p, prevsize);
-						psize += prevsize;
-						p = prev;
-						if (RTCHECK(ok_address(fm, prev)))
-						{ /* consolidate backward */
-							if (p != fm->dv)
-							{
-								unlink_chunk(fm, p, prevsize);
-							}
-							else if ((next->head & INUSE_BITS) == INUSE_BITS)
-							{
-								fm->dvsize = psize;
-								set_free_with_pinuse(p, psize, next);
-								goto postaction;
-							}
-						}
-						else
-							goto erroraction;
-					}
-				}
-
-				if (RTCHECK(ok_next(p, next) && ok_pinuse(next)))
-				{
-					if (!cinuse(next))
-					{  /* consolidate forward */
-						if (next == fm->top)
-						{
-							size_t tsize = fm->topsize += psize;
-							fm->top = p;
-							p->head = tsize | PINUSE_BIT;
-							if (p == fm->dv)
-							{
-								fm->dv = 0;
-								fm->dvsize = 0;
-							}
-							if (should_trim(fm, tsize))
-								sys_trim(fm, 0);
-							goto postaction;
-						}
-						else if (next == fm->dv)
-						{
-							size_t dsize = fm->dvsize += psize;
-							fm->dv = p;
-							set_size_and_pinuse_of_free_chunk(p, dsize);
-							goto postaction;
-						}
-						else
-						{
-							size_t nsize = chunksize(next);
-							psize += nsize;
-							unlink_chunk(fm, next, nsize);
-							set_size_and_pinuse_of_free_chunk(p, psize);
-							if (p == fm->dv)
-							{
-								fm->dvsize = psize;
-								goto postaction;
-							}
-						}
-					}
-					else
-						set_free_with_pinuse(p, psize, next);
-					insert_chunk(fm, p, psize);
-					check_free_chunk(fm, p);
-					goto postaction;
-				}
-			}
-erroraction:
-    	USAGE_ERROR_ACTION(fm, p);
-postaction:
-    	POSTACTION(fm);
-		}
-	}
-#if !FOOTERS
-#undef fm
-#endif /* FOOTERS */
-}
-
-void* RNewAllocator::dlrealloc(void* oldmem, size_t bytes) {
-  if (oldmem == 0)
-    return dlmalloc(bytes);
-#ifdef REALLOC_ZERO_BYTES_FREES
-  if (bytes == 0) {
-    dlfree(oldmem);
-    return 0;
-  }
-#endif /* REALLOC_ZERO_BYTES_FREES */
-  else {
-#if ! FOOTERS
-    mstate m = gm;
-#else /* FOOTERS */
-    mstate m = get_mstate_for(mem2chunk(oldmem));
-    if (!ok_magic(m)) {
-      USAGE_ERROR_ACTION(m, oldmem);
-      return 0;
-    }
-#endif /* FOOTERS */
-    return internal_realloc(m, oldmem, bytes);
-  }
-}
-
-
-int RNewAllocator::dlmalloc_trim(size_t pad) {
-  int result = 0;
-  if (!PREACTION(gm)) {
-    result = sys_trim(gm, pad);
-    POSTACTION(gm);
-  }
-  return result;
-}
-
-size_t RNewAllocator::dlmalloc_footprint(void) {
-  return gm->footprint;
-}
-
-size_t RNewAllocator::dlmalloc_max_footprint(void) {
-  return gm->max_footprint;
-}
-
-#if !NO_MALLINFO
-struct mallinfo RNewAllocator::dlmallinfo(void) {
-  return internal_mallinfo(gm);
-}
-#endif /* NO_MALLINFO */
-
-void RNewAllocator::dlmalloc_stats() {
-  internal_malloc_stats(gm);
-}
-
-int RNewAllocator::dlmallopt(int param_number, int value) {
-  return change_mparam(param_number, value);
-}
-
-//inline slab* slab::slabfor(void* p)
-inline slab* slab::slabfor( const void* p)
-	{return (slab*)(floor(p, slabsize));}
-
-
-void RNewAllocator::tree_remove(slab* s)
-{
-	slab** r = s->parent;
-	slab* c1 = s->child1;
-	slab* c2 = s->child2;
-	for (;;)
-	{
-		if (!c2)
-		{
-			*r = c1;
-			if (c1)
-				c1->parent = r;
-			return;
-		}
-		if (!c1)
-		{
-			*r = c2;
-			c2->parent = r;
-			return;
-		}
-		if (c1 > c2)
-		{
-			slab* c3 = c1;
-			c1 = c2;
-			c2 = c3;
-		}
-		slab* newc2 = c1->child2;
-		*r = c1;
-		c1->parent = r;
-		c1->child2 = c2;
-		c2->parent = &c1->child2;
-		s = c1;
-		c1 = s->child1;
-		c2 = newc2;
-		r = &s->child1;
-	}
-}
-void RNewAllocator::tree_insert(slab* s,slab** r)
-	{
-		slab* n = *r;
-		for (;;)
-		{
-			if (!n)
-			{	// tree empty
-				*r = s;
-				s->parent = r;
-				s->child1 = s->child2 = 0;
-				break;
-			}
-			if (s < n)
-			{	// insert between parent and n
-				*r = s;
-				s->parent = r;
-				s->child1 = n;
-				s->child2 = 0;
-				n->parent = &s->child1;
-				break;
-			}
-			slab* c1 = n->child1;
-			slab* c2 = n->child2;
-			if (c1 < c2)
-			{
-				r = &n->child1;
-				n = c1;
-			}
-			else
-			{
-				r = &n->child2;
-				n = c2;
-			}
-		}
-	}
-void* RNewAllocator::allocnewslab(slabset& allocator)
-//
-// Acquire and initialise a new slab, returning a cell from the slab
-// The strategy is:
-// 1. Use the lowest address free slab, if available. This is done by using the lowest slab
-//    in the page at the root of the partial_page heap (which is address ordered). If the
-//    is now fully used, remove it from the partial_page heap.
-// 2. Allocate a new page for slabs if no empty slabs are available
-//
-{
-	page* p = page::pagefor(partial_page);
-	if (!p)
-		return allocnewpage(allocator);
-
-	unsigned h = p->slabs[0].header;
-	unsigned pagemap = header_pagemap(h);
-	ASSERT(&p->slabs[hibit(pagemap)] == partial_page);
-
-	unsigned slabix = lowbit(pagemap);
-	p->slabs[0].header = h &~ (0x100<<slabix);
-	if (!(pagemap &~ (1<<slabix)))
-	{
-		tree_remove(partial_page);	// last free slab in page
-	}
-	return initnewslab(allocator,&p->slabs[slabix]);
-}
-
-/**Defination of this functionis not there in proto code***/
-#if 0
-void RNewAllocator::partial_insert(slab* s)
-	{
-		// slab has had first cell freed and needs to be linked back into partial tree
-		slabset& ss = slaballoc[sizemap[s->clz]];
-
-		ASSERT(s->used == slabfull);
-		s->used = ss.fulluse - s->clz;		// full-1 loading
-		tree_insert(s,&ss.partial);
-		checktree(ss.partial);
-	}
-/**Defination of this functionis not there in proto code***/
-#endif
-
-void* RNewAllocator::allocnewpage(slabset& allocator)
-//
-// Acquire and initialise a new page, returning a cell from a new slab
-// The partial_page tree is empty (otherwise we'd have used a slab from there)
-// The partial_page link is put in the highest addressed slab in the page, and the
-// lowest addressed slab is used to fulfill the allocation request
-//
-{
-	page* p	 = spare_page;
-	if (p)
-		spare_page = 0;
-	else
-	{
-		p = static_cast<page*>(map(0,pagesize));
-		if (!p)
-			return 0;
-	}
-	ASSERT(p == floor(p,pagesize));
-	p->slabs[0].header = ((1<<3) + (1<<2) + (1<<1))<<8;		// set pagemap
-	p->slabs[3].parent = &partial_page;
-	p->slabs[3].child1 = p->slabs[3].child2 = 0;
-	partial_page = &p->slabs[3];
-	return initnewslab(allocator,&p->slabs[0]);
-}
-
-void RNewAllocator::freepage(page* p)
-//
-// Release an unused page to the OS
-// A single page is cached for reuse to reduce thrashing
-// the OS allocator.
-//
-{
-	ASSERT(ceiling(p,pagesize) == p);
-	if (!spare_page)
-	{
-		spare_page = p;
-		return;
-	}
-	unmap(p,pagesize);
-}
-
-void RNewAllocator::freeslab(slab* s)
-//
-// Release an empty slab to the slab manager
-// The strategy is:
-// 1. The page containing the slab is checked to see the state of the other slabs in the page by
-//    inspecting the pagemap field in the header of the first slab in the page.
-// 2. The pagemap is updated to indicate the new unused slab
-// 3. If this is the only unused slab in the page then the slab header is used to add the page to
-//    the partial_page tree/heap
-// 4. If all the slabs in the page are now unused the page is release back to the OS
-// 5. If this slab has a higher address than the one currently used to track this page in
-//    the partial_page heap, the linkage is moved to the new unused slab
-//
-{
-	tree_remove(s);
-	checktree(*s->parent);
-	ASSERT(header_usedm4(s->header) == header_size(s->header)-4);
-	CHECK(s->header |= 0xFF00000);			// illegal value for debug purposes
-	page* p = page::pagefor(s);
-	unsigned h = p->slabs[0].header;
-	int slabix = s - &p->slabs[0];
-	unsigned pagemap = header_pagemap(h);
-	p->slabs[0].header = h | (0x100<<slabix);
-	if (pagemap == 0)
-	{	// page was full before, use this slab as link in empty heap
-		tree_insert(s, &partial_page);
-	}
-	else
-	{	// find the current empty-link slab
-		slab* sl = &p->slabs[hibit(pagemap)];
-		pagemap ^= (1<<slabix);
-		if (pagemap == 0xf)
-		{	// page is now empty so recycle page to os
-			tree_remove(sl);
-			freepage(p);
-			return;
-		}
-		// ensure the free list link is in highest address slab in page
-		if (s > sl)
-		{	// replace current link with new one. Address-order tree so position stays the same
-			slab** r = sl->parent;
-			slab* c1 = sl->child1;
-			slab* c2 = sl->child2;
-			s->parent = r;
-			s->child1 = c1;
-			s->child2 = c2;
-			*r = s;
-			if (c1)
-				c1->parent = &s->child1;
-			if (c2)
-				c2->parent = &s->child2;
-		}
-		CHECK(if (s < sl) s=sl);
-	}
-	ASSERT(header_pagemap(p->slabs[0].header) != 0);
-	ASSERT(hibit(header_pagemap(p->slabs[0].header)) == unsigned(s - &p->slabs[0]));
-}
-
-void RNewAllocator::slab_init()
-{
-	slab_threshold=0;
-	partial_page = 0;
-	spare_page = 0;
-	memset(&sizemap[0],0xff,sizeof(sizemap));
-	memset(&slaballoc[0],0,sizeof(slaballoc));
-}
-
-void RNewAllocator::slab_config(unsigned slabbitmap)
-{
-	ASSERT((slabbitmap & ~okbits) == 0);
-	ASSERT(maxslabsize <= 60);
-
-	unsigned char ix = 0xff;
-	unsigned bit = 1<<((maxslabsize>>2)-1);
-	for (int sz = maxslabsize; sz >= 0; sz -= 4, bit >>= 1)
-	{
-		if (slabbitmap & bit)
-		{
-			if (ix == 0xff)
-				slab_threshold=sz+1;
-			ix = (sz>>2)-1;
-		}
-		sizemap[sz>>2] = ix;
-	}
-}
-
-void* RNewAllocator::slab_allocate(slabset& ss)
-//
-// Allocate a cell from the given slabset
-// Strategy:
-// 1. Take the partially full slab at the top of the heap (lowest address).
-// 2. If there is no such slab, allocate from a new slab
-// 3. If the slab has a non-empty freelist, pop the cell from the front of the list and update the slab
-// 4. Otherwise, if the slab is not full, return the cell at the end of the currently used region of
-//    the slab, updating the slab
-// 5. Otherwise, release the slab from the partial tree/heap, marking it as 'floating' and go back to
-//    step 1
-//
-{
-	for (;;)
-	{
-		slab *s = ss.partial;
-		if (!s)
-			break;
-		unsigned h = s->header;
-		unsigned free = h & 0xff;		// extract free cell positiong
-		if (free)
-		{
-			ASSERT(((free<<2)-sizeof(slabhdr))%header_size(h) == 0);
-			void* p = offset(s,free<<2);
-			free = *(unsigned char*)p;	// get next pos in free list
-			h += (h&0x3C000)<<6;		// update usedm4
-			h &= ~0xff;
-			h |= free;					// update freelist
-			s->header = h;
-			ASSERT(header_free(h) == 0 || ((header_free(h)<<2)-sizeof(slabhdr))%header_size(h) == 0);
-			ASSERT(header_usedm4(h) <= 0x3F8u);
-			ASSERT((header_usedm4(h)+4)%header_size(h) == 0);
-			return p;
-		}
-		unsigned h2 = h + ((h&0x3C000)<<6);
-		if (h2 < 0xfc00000)
-		{
-			ASSERT((header_usedm4(h2)+4)%header_size(h2) == 0);
-			s->header = h2;
-			return offset(s,(h>>18) + sizeof(unsigned) + sizeof(slabhdr));
-		}
-		h |= 0x80000000;				// mark the slab as full-floating
-		s->header = h;
-		tree_remove(s);
-		checktree(ss.partial);
-		// go back and try the next slab...
-	}
-	// no partial slabs found, so allocate from a new slab
-	return allocnewslab(ss);
-}
-
-void RNewAllocator::slab_free(void* p)
-//
-// Free a cell from the slab allocator
-// Strategy:
-// 1. Find the containing slab (round down to nearest 1KB boundary)
-// 2. Push the cell into the slab's freelist, and update the slab usage count
-// 3. If this is the last allocated cell, free the slab to the main slab manager
-// 4. If the slab was full-floating then insert the slab in it's respective partial tree
-//
-{
-	ASSERT(lowbits(p,3)==0);
-	slab* s = slab::slabfor(p);
-
-	unsigned pos = lowbits(p, slabsize);
-	unsigned h = s->header;
-	ASSERT(header_usedm4(h) != 0x3fC);		// slab is empty already
-	ASSERT((pos-sizeof(slabhdr))%header_size(h) == 0);
-	*(unsigned char*)p = (unsigned char)h;
-	h &= ~0xFF;
-	h |= (pos>>2);
-	unsigned size = h & 0x3C000;
-	iTotalAllocSize -= size;		// TODO DAN
-	if (int(h) >= 0)
-	{
-		h -= size<<6;
-		if (int(h)>=0)
-		{
-			s->header = h;
-			return;
-		}
-		freeslab(s);
-		return;
-	}
-	h -= size<<6;
-	h &= ~0x80000000;
-	s->header = h;
-	slabset& ss = slaballoc[(size>>14)-1];
-	tree_insert(s,&ss.partial);
-	checktree(ss.partial);
-}
-
-void* RNewAllocator::initnewslab(slabset& allocator, slab* s)
-//
-// initialise an empty slab for this allocator and return the fist cell
-// pre-condition: the slabset has no partial slabs for allocation
-//
-{
-	ASSERT(allocator.partial==0);
-	TInt size = 4 + ((&allocator-&slaballoc[0])<<2);	// infer size from slab allocator address
-	unsigned h = s->header & 0xF00;	// preserve pagemap only
-	h |= (size<<12);					// set size
-	h |= (size-4)<<18;					// set usedminus4 to one object minus 4
-	s->header = h;
-	allocator.partial = s;
-	s->parent = &allocator.partial;
-	s->child1 = s->child2 = 0;
-	return offset(s,sizeof(slabhdr));
-}
-
-TAny* RNewAllocator::SetBrk(TInt32 aDelta)
-{
-	if (iFlags & EFixedSize)
-		return MFAIL;
-
-	if (aDelta < 0)
-		{
-		unmap(offset(iTop, aDelta), -aDelta);
-		}
-	else if (aDelta > 0)
-		{
-		if (!map(iTop, aDelta))
-			return MFAIL;
-		}
-	void * p =iTop;
-	iTop = offset(iTop, aDelta);
-	return p;
-}
-
-void* RNewAllocator::map(void* p,unsigned sz)
-//
-// allocate pages in the chunk
-// if p is NULL, find an allocate the required number of pages (which must lie in the lower half)
-// otherwise commit the pages specified
-//
-{
-ASSERT(p == floor(p, pagesize));
-ASSERT(sz == ceiling(sz, pagesize));
-ASSERT(sz > 0);
-
-	if (iChunkSize + sz > iMaxLength)
-		return 0;
-
-	RChunk chunk;
-	chunk.SetHandle(iChunkHandle);
-	if (p)
-	{
-		TInt r = chunk.Commit(iOffset + ptrdiff(p, this),sz);
-		if (r < 0)
-			return 0;
-		//ASSERT(p = offset(this, r - iOffset));
-	}
-	else
-	{
-		TInt r = chunk.Allocate(sz);
-		if (r < 0)
-			return 0;
-		if (r > iOffset)
-		{
-			// can't allow page allocations in DL zone
-			chunk.Decommit(r, sz);
-			return 0;
-		}
-		p = offset(this, r - iOffset);
-	}
-	iChunkSize += sz;
-#ifdef TRACING_HEAPS
-	if(iChunkSize > iHighWaterMark)
-		{
-			iHighWaterMark = ceiling(iChunkSize,16*pagesize);
-
-
-			RChunk chunk;
-			chunk.SetHandle(iChunkHandle);
-			TKName chunk_name;
-			chunk.FullName(chunk_name);
-			BTraceContextBig(BTrace::ETest1, 4, 44, chunk_name.Ptr(), chunk_name.Size());
-
-			TUint32 traceData[6];
-			traceData[0] = iChunkHandle;
-			traceData[1] = iMinLength;
-			traceData[2] = iMaxLength;
-			traceData[3] = sz;
-			traceData[4] = iChunkSize;
-			traceData[5] = iHighWaterMark;
-			BTraceContextN(BTrace::ETest1, 3, (TUint32)this, 33, traceData, sizeof(traceData));
-		}
-#endif
-	if (iChunkSize >= slab_init_threshold)
-	{	// set up slab system now that heap is large enough
-		slab_config(slab_config_bits);
-		slab_init_threshold = KMaxTUint;
-	}
-	return p;
-}
-
-void* RNewAllocator::remap(void* p,unsigned oldsz,unsigned sz)
-{
-	if (oldsz > sz)
-		{	// shrink
-		unmap(offset(p,sz), oldsz-sz);
-		}
-	else if (oldsz < sz)
-		{	// grow, try and do this in place first
-		if (!map(offset(p, oldsz), sz-oldsz))
-			{
-			// need to allocate-copy-free
-			void* newp = map(0, sz);
-			memcpy(newp, p, oldsz);
-			unmap(p,oldsz);
-			return newp;
-			}
-		}
-	return p;
-}
-
-void RNewAllocator::unmap(void* p,unsigned sz)
-{
-	ASSERT(p == floor(p, pagesize));
-	ASSERT(sz == ceiling(sz, pagesize));
-	ASSERT(sz > 0);
-
-	RChunk chunk;
-	chunk.SetHandle(iChunkHandle);
-	TInt r = chunk.Decommit(ptrdiff(p, offset(this,-iOffset)), sz);
-	//TInt offset = (TUint8*)p-(TUint8*)chunk.Base();
-	//TInt r = chunk.Decommit(offset,sz);
-
-	ASSERT(r >= 0);
-	iChunkSize -= sz;
-}
-
-void RNewAllocator::paged_init(unsigned pagepower)
-	{
-		if (pagepower == 0)
-			pagepower = 31;
-		else if (pagepower < minpagepower)
-			pagepower = minpagepower;
-		page_threshold = pagepower;
-		for (int i=0;i<npagecells;++i)
-		{
-			pagelist[i].page = 0;
-			pagelist[i].size = 0;
-		}
-	}
-
-void* RNewAllocator::paged_allocate(unsigned size)
-{
-	unsigned nbytes = ceiling(size, pagesize);
-	if (nbytes < size + cellalign)
-	{	// not enough extra space for header and alignment, try and use cell list
-		for (pagecell *c = pagelist,*e = c + npagecells;c < e;++c)
-			if (c->page == 0)
-			{
-				void* p = map(0, nbytes);
-				if (!p)
-					return 0;
-				c->page = p;
-				c->size = nbytes;
-				return p;
-			}
-	}
-	// use a cell header
-	nbytes = ceiling(size + cellalign, pagesize);
-	void* p = map(0, nbytes);
-	if (!p)
-		return 0;
-	*static_cast<unsigned*>(p) = nbytes;
-	return offset(p, cellalign);
-}
-
-void* RNewAllocator::paged_reallocate(void* p, unsigned size)
-{
-	if (lowbits(p, pagesize) == 0)
-	{	// continue using descriptor
-		pagecell* c = paged_descriptor(p);
-		unsigned nbytes = ceiling(size, pagesize);
-		void* newp = remap(p, c->size, nbytes);
-		if (!newp)
-			return 0;
-		c->page = newp;
-		c->size = nbytes;
-		return newp;
-	}
-	else
-	{	// use a cell header
-		ASSERT(lowbits(p,pagesize) == cellalign);
-		p = offset(p,-int(cellalign));
-		unsigned nbytes = ceiling(size + cellalign, pagesize);
-		unsigned obytes = *static_cast<unsigned*>(p);
-		void* newp = remap(p, obytes, nbytes);
-		if (!newp)
-			return 0;
-		*static_cast<unsigned*>(newp) = nbytes;
-		return offset(newp, cellalign);
-	}
-}
-
-void RNewAllocator::paged_free(void* p)
-{
-	if (lowbits(p,pagesize) == 0)
-	{	// check pagelist
-		pagecell* c = paged_descriptor(p);
-
-		iTotalAllocSize -= c->size;		// TODO DAN
-
-		unmap(p, c->size);
-		c->page = 0;
-		c->size = 0;
-	}
-	else
-	{	// check page header
-		unsigned* page = static_cast<unsigned*>(offset(p,-int(cellalign)));
-		unsigned size = *page;
-		unmap(page,size);
-	}
-}
-
-pagecell* RNewAllocator::paged_descriptor(const void* p) const
-{
-	ASSERT(lowbits(p,pagesize) == 0);
-	// Double casting to keep the compiler happy. Seems to think we can trying to
-	// change a non-const member (pagelist) in a const function
-	pagecell* c = (pagecell*)((void*)pagelist);
-	pagecell* e = c + npagecells;
-	for (;;)
-	{
-		ASSERT(c!=e);
-		if (c->page == p)
-			return c;
-		++c;
-	}
-}
-
-RNewAllocator* RNewAllocator::FixedHeap(TAny* aBase, TInt aMaxLength, TInt aAlign, TBool aSingleThread)
-/**
-Creates a fixed length heap at a specified location.
-
-On successful return from this function, aMaxLength bytes are committed by the chunk.
-The heap cannot be extended.
-
-@param aBase         A pointer to the location where the heap is to be constructed.
-@param aMaxLength    The length of the heap. If the supplied value is less
-                     than KMinHeapSize, it is discarded and the value KMinHeapSize
-                     is used instead.
-@param aAlign        The alignment of heap cells.
-@param aSingleThread Indicates whether single threaded or not.
-
-@return A pointer to the new heap, or NULL if the heap could not be created.
-
-@panic USER 56 if aMaxLength is negative.
-*/
-//
-// Force construction of the fixed memory.
-//
-	{
-
-	__ASSERT_ALWAYS(aMaxLength>=0, ::Panic(ETHeapMaxLengthNegative));
-	if (aMaxLength<KMinHeapSize)
-		aMaxLength=KMinHeapSize;
-
-	RNewAllocator* h = new(aBase) RNewAllocator(aMaxLength, aAlign, aSingleThread);
-
-	if (!aSingleThread)
-		{
-		TInt r = h->iLock.CreateLocal();
-		if (r!=KErrNone)
-			return NULL;
-		h->iHandles = (TInt*)&h->iLock;
-		h->iHandleCount = 1;
-		}
-	return h;
-	}
-
-RNewAllocator* RNewAllocator::ChunkHeap(const TDesC* aName, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, TInt aAlign, TBool aSingleThread)
-/**
-Creates a heap in a local or global chunk.
-
-The chunk hosting the heap can be local or global.
-
-A local chunk is one which is private to the process creating it and is not
-intended for access by other user processes.
-A global chunk is one which is visible to all processes.
-
-The hosting chunk is local, if the pointer aName is NULL, otherwise
-the hosting chunk is global and the descriptor *aName is assumed to contain
-the name to be assigned to it.
-
-Ownership of the host chunk is vested in the current process.
-
-A minimum and a maximum size for the heap can be specified. On successful
-return from this function, the size of the heap is at least aMinLength.
-If subsequent requests for allocation of memory from the heap cannot be
-satisfied by compressing the heap, the size of the heap is extended in
-increments of aGrowBy until the request can be satisfied. Attempts to extend
-the heap causes the size of the host chunk to be adjusted.
-
-Note that the size of the heap cannot be adjusted by more than aMaxLength.
-
-@param aName         If NULL, the function constructs a local chunk to host
-                     the heap.
-                     If not NULL, a pointer to a descriptor containing the name
-                     to be assigned to the global chunk hosting the heap.
-@param aMinLength    The minimum length of the heap.
-@param aMaxLength    The maximum length to which the heap can grow.
-                     If the supplied value is less than KMinHeapSize, then it
-                     is discarded and the value KMinHeapSize used instead.
-@param aGrowBy       The increments to the size of the host chunk. If a value is
-                     not explicitly specified, the value KMinHeapGrowBy is taken
-                     by default
-@param aAlign        The alignment of heap cells.
-@param aSingleThread Indicates whether single threaded or not.
-
-@return A pointer to the new heap or NULL if the heap could not be created.
-
-@panic USER 41 if aMinLength is greater than the supplied value of aMaxLength.
-@panic USER 55 if aMinLength is negative.
-@panic USER 56 if aMaxLength is negative.
-*/
-//
-// Allocate a Chunk of the requested size and force construction.
-//
-	{
-
-	__ASSERT_ALWAYS(aMinLength>=0, ::Panic(ETHeapMinLengthNegative));
-	__ASSERT_ALWAYS(aMaxLength>=aMinLength, ::Panic(ETHeapCreateMaxLessThanMin));
-	if (aMaxLength<KMinHeapSize)
-		aMaxLength=KMinHeapSize;
-	RChunk c;
-	TInt r;
-	if (aName)
-		r = c.CreateDisconnectedGlobal(*aName, 0, 0, aMaxLength*2, aSingleThread ? EOwnerThread : EOwnerProcess);
-	else
-		r = c.CreateDisconnectedLocal(0, 0, aMaxLength*2, aSingleThread ? EOwnerThread : EOwnerProcess);
-	if (r!=KErrNone)
-		return NULL;
-
-	RNewAllocator* h = ChunkHeap(c, aMinLength, aGrowBy, aMaxLength, aAlign, aSingleThread, UserHeap::EChunkHeapDuplicate);
-	c.Close();
-	return h;
-	}
-
-RNewAllocator* RNewAllocator::ChunkHeap(RChunk aChunk, TInt aMinLength, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode)
-/**
-Creates a heap in an existing chunk.
-
-This function is intended to be used to create a heap in a user writable code
-chunk as created by a call to RChunk::CreateLocalCode().
-This type of heap can be used to hold code fragments from a JIT compiler.
-
-The maximum length to which the heap can grow is the same as
-the maximum size of the chunk.
-
-@param aChunk        The chunk that will host the heap.
-@param aMinLength    The minimum length of the heap.
-@param aGrowBy       The increments to the size of the host chunk.
-@param aMaxLength    The maximum length to which the heap can grow.
-@param aAlign        The alignment of heap cells.
-@param aSingleThread Indicates whether single threaded or not.
-@param aMode         Flags controlling the reallocation. The only bit which has any
-                     effect on reallocation is that defined by the enumeration
-                     ENeverMove of the enum RAllocator::TReAllocMode.
-                     If this is set, then any successful reallocation guarantees not
-                     to have changed the start address of the cell.
-                     By default, this parameter is zero.
-
-@return A pointer to the new heap or NULL if the heap could not be created.
-*/
-//
-// Construct a heap in an already existing chunk
-//
-	{
-
-	return OffsetChunkHeap(aChunk, aMinLength, 0, aGrowBy, aMaxLength, aAlign, aSingleThread, aMode);
-	}
-
-RNewAllocator* RNewAllocator::OffsetChunkHeap(RChunk aChunk, TInt aMinLength, TInt aOffset, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode)
-/**
-Creates a heap in an existing chunk, offset from the beginning of the chunk.
-
-This function is intended to be used to create a heap where a fixed amount of
-additional data must be stored at a known location. The additional data can be
-placed at the base address of the chunk, allowing it to be located without
-depending on the internals of the heap structure.
-
-The maximum length to which the heap can grow is the maximum size of the chunk,
-minus the offset.
-
-@param aChunk        The chunk that will host the heap.
-@param aMinLength    The minimum length of the heap.
-@param aOffset       The offset from the start of the chunk, to the start of the heap.
-@param aGrowBy       The increments to the size of the host chunk.
-@param aMaxLength    The maximum length to which the heap can grow.
-@param aAlign        The alignment of heap cells.
-@param aSingleThread Indicates whether single threaded or not.
-@param aMode         Flags controlling the reallocation. The only bit which has any
-                     effect on reallocation is that defined by the enumeration
-                     ENeverMove of the enum RAllocator::TReAllocMode.
-                     If this is set, then any successful reallocation guarantees not
-                     to have changed the start address of the cell.
-                     By default, this parameter is zero.
-
-@return A pointer to the new heap or NULL if the heap could not be created.
-*/
-//
-// Construct a heap in an already existing chunk
-//
-	{
-
-	TInt page_size;
-	GET_PAGE_SIZE(page_size);
-	if (!aAlign)
-		aAlign = RNewAllocator::ECellAlignment;
-	TInt maxLength = aChunk.MaxSize();
-	TInt round_up = Max(aAlign, page_size);
-	TInt min_cell = _ALIGN_UP(Max((TInt)RNewAllocator::EAllocCellSize, (TInt)RNewAllocator::EFreeCellSize), aAlign);
-	aOffset = _ALIGN_UP(aOffset, 8);
-
-#ifdef ALLOCATOR_ADP75
-#ifdef TRACING_HEAPS
-	TKName chunk_name;
-	aChunk.FullName(chunk_name);
-	BTraceContextBig(BTrace::ETest1, 0xF, 0xFF, chunk_name.Ptr(), chunk_name.Size());
-
-	TUint32 traceData[4];
-	traceData[0] = aChunk.Handle();
-	traceData[1] = aMinLength;
-	traceData[2] = aMaxLength;
-	traceData[3] = aAlign;
-	BTraceContextN(BTrace::ETest1, 0xE, 0xEE, 0xEE, traceData, sizeof(traceData));
-#endif
-	//modifying the aMinLength because not all memory is the same in the new allocator. So it cannot reserve it properly
-	if( aMinLength<aMaxLength)
-		aMinLength = 0;
-#endif
-
-	if (aMaxLength && aMaxLength+aOffset<maxLength)
-		maxLength = _ALIGN_UP(aMaxLength+aOffset, round_up);
-	__ASSERT_ALWAYS(aMinLength>=0, ::Panic(ETHeapMinLengthNegative));
-	__ASSERT_ALWAYS(maxLength>=aMinLength, ::Panic(ETHeapCreateMaxLessThanMin));
-	aMinLength = _ALIGN_UP(Max(aMinLength, (TInt)sizeof(RNewAllocator) + min_cell) + aOffset, round_up);
-
-	// the new allocator uses a disconnected chunk so must commit the initial allocation
-	// with Commit() instead of Adjust()
-	//	TInt r=aChunk.Adjust(aMinLength);
-	//TInt r = aChunk.Commit(aOffset, aMinLength);
-
-	aOffset = maxLength;
-	//TInt MORE_CORE_OFFSET = maxLength/2;
-	//TInt r = aChunk.Commit(MORE_CORE_OFFSET, aMinLength);
-	TInt r = aChunk.Commit(aOffset, aMinLength);
-
-	if (r!=KErrNone)
-		return NULL;
-
-	RNewAllocator* h = new (aChunk.Base() + aOffset) RNewAllocator(aChunk.Handle(), aOffset, aMinLength, maxLength, aGrowBy, aAlign, aSingleThread);
-	//RNewAllocator* h = new (aChunk.Base() + MORE_CORE_OFFSET) RNewAllocator(aChunk.Handle(), aOffset, aMinLength, maxLength, aGrowBy, aAlign, aSingleThread);
-
-	TBool duplicateLock = EFalse;
-	if (!aSingleThread)
-		{
-		duplicateLock = aMode & UserHeap::EChunkHeapSwitchTo;
-		if(h->iLock.CreateLocal(duplicateLock ? EOwnerThread : EOwnerProcess)!=KErrNone)
-			{
-			h->iChunkHandle = 0;
-			return NULL;
-			}
-		}
-
-	if (aMode & UserHeap::EChunkHeapSwitchTo)
-		User::SwitchHeap(h);
-
-	h->iHandles = &h->iChunkHandle;
-	if (!aSingleThread)
-		{
-		// now change the thread-relative chunk/semaphore handles into process-relative handles
-		h->iHandleCount = 2;
-		if(duplicateLock)
-			{
-			RHandleBase s = h->iLock;
-			r = h->iLock.Duplicate(RThread());
-			s.Close();
-			}
-		if (r==KErrNone && (aMode & UserHeap::EChunkHeapDuplicate))
-			{
-			r = ((RChunk*)&h->iChunkHandle)->Duplicate(RThread());
-			if (r!=KErrNone)
-				h->iLock.Close(), h->iChunkHandle=0;
-			}
-		}
-	else
-		{
-		h->iHandleCount = 1;
-		if (aMode & UserHeap::EChunkHeapDuplicate)
-			r = ((RChunk*)&h->iChunkHandle)->Duplicate(RThread(), EOwnerThread);
-		}
-
-	// return the heap address
-	return (r==KErrNone) ? h : NULL;
-	}
-
-
-#define UserTestDebugMaskBit(bit) (TBool)(UserSvr::DebugMask(bit>>5) & (1<<(bit&31)))
-
-// Hack to get access to TChunkCreateInfo internals outside of the kernel
-class TFakeChunkCreateInfo: public TChunkCreateInfo
-	{
-public:
-	 void SetThreadNewAllocator(TInt aInitialSize, TInt aMaxSize, const TDesC& aName)
-	 	{
-		iType = TChunkCreate::ENormal | TChunkCreate::EDisconnected | TChunkCreate::EData;
-		iMaxSize = aMaxSize * 2;
-
-	 	iInitialBottom = 0;
-	 	iInitialTop = aInitialSize;
-	 	iAttributes = TChunkCreate::ELocalNamed;
-	 	iName = &aName;
-	 	iOwnerType = EOwnerThread;
-	 	}
-	};
-
-_LIT(KLitDollarHeap,"$HEAP");
-TInt RNewAllocator::CreateThreadHeap(SStdEpocThreadCreateInfo& aInfo, RNewAllocator*& aHeap, TInt aAlign, TBool aSingleThread)
-/**
-@internalComponent
-*/
-//
-// Create a user-side heap
-//
-	{
-	TInt page_size;
-	GET_PAGE_SIZE(page_size);
-	TInt minLength = _ALIGN_UP(aInfo.iHeapInitialSize, page_size);
-	TInt maxLength = Max(aInfo.iHeapMaxSize, minLength);
-	if (UserTestDebugMaskBit(96)) // 96 == KUSERHEAPTRACE in nk_trace.h
-		aInfo.iFlags |= ETraceHeapAllocs;
-	// Create the thread's heap chunk.
-	RChunk c;
-	TFakeChunkCreateInfo createInfo;
-	createInfo.SetThreadNewAllocator(0, maxLength, KLitDollarHeap());	// Initialise with no memory committed.
-	TInt r = c.Create(createInfo);
-	if (r!=KErrNone)
-		return r;
-	aHeap = ChunkHeap(c, minLength, page_size, maxLength, aAlign, aSingleThread, UserHeap::EChunkHeapSwitchTo|UserHeap::EChunkHeapDuplicate);
-	c.Close();
-	if (!aHeap)
-		return KErrNoMemory;
-	if (aInfo.iFlags & ETraceHeapAllocs)
-		{
-		aHeap->iFlags |= RAllocator::ETraceAllocs;
-		BTraceContext8(BTrace::EHeap, BTrace::EHeapCreate,(TUint32)aHeap, RNewAllocator::EAllocCellSize);
-		TInt handle = aHeap->ChunkHandle();
-		TInt chunkId = ((RHandleBase&)handle).BTraceId();
-		BTraceContext8(BTrace::EHeap, BTrace::EHeapChunkCreate, (TUint32)aHeap, chunkId);
-		}
-	return KErrNone;
-	}
-
-TInt UserHeap::SetupThreadHeap(TBool, SStdEpocThreadCreateInfo& aInfo)
-/**
-@internalComponent
-*/
-    {
-    TInt r = KErrNone;
-    if (!aInfo.iAllocator && aInfo.iHeapInitialSize>0)
-        {
-        // new heap required
-        RNewAllocator* pH = NULL;
-        r = RNewAllocator::CreateThreadHeap(aInfo, pH);
-        }
-    else if (aInfo.iAllocator)
-        {
-        // sharing a heap
-        RAllocator* pA = aInfo.iAllocator;
-        pA->Open();
-        User::SwitchAllocator(pA);
-        }
-    return r;
-    }
-
-#ifndef __WINS__
-#pragma pop
-#endif
--- a/main/al/newallocator.h	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-#ifndef NEWALLOCATOR_H
-#define NEWALLOCATOR_H
-
-class RNewAllocator : public RAllocator
-	{
-public:
-	enum{EAllocCellSize = 8};
-	
-	virtual TAny* Alloc(TInt aSize);
-	virtual void Free(TAny* aPtr);
-	virtual TAny* ReAlloc(TAny* aPtr, TInt aSize, TInt aMode=0);
-	virtual TInt AllocLen(const TAny* aCell) const;
-	virtual TInt Compress();
-	virtual void Reset();
-	virtual TInt AllocSize(TInt& aTotalAllocSize) const;
-	virtual TInt Available(TInt& aBiggestBlock) const;
-	virtual TInt DebugFunction(TInt aFunc, TAny* a1=NULL, TAny* a2=NULL);
-protected:
-	virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
-
-public:
-	TInt Size() const
-	{ return iChunkSize; }
-
-	inline TInt MaxLength() const;
-	inline TUint8* Base() const;
-	inline TInt Align(TInt a) const;
-	inline const TAny* Align(const TAny* a) const;
-	inline void Lock() const;
-	inline void Unlock() const;
-	inline TInt ChunkHandle() const;
-
-    /**
-    @internalComponent
-    */
-	struct _s_align {char c; double d;};
-
-    /**
-    The structure of a heap cell header for a heap cell on the free list.
-    */
-	struct SCell {
-	             /**
-	             The length of the cell, which includes the length of
-	             this header.
-	             */
-	             TInt len;
-
-
-	             /**
-	             A pointer to the next cell in the free list.
-	             */
-	             SCell* next;
-	             };
-
-	/**
-    The default cell alignment.
-    */
-	enum {ECellAlignment = sizeof(_s_align)-sizeof(double)};
-
-	/**
-	Size of a free cell header.
-	*/
-	enum {EFreeCellSize = sizeof(SCell)};
-
-    /**
-    @internalComponent
-    */
-    enum TDefaultShrinkRatios {EShrinkRatio1=256, EShrinkRatioDflt=512};
-
-public:
-	RNewAllocator(TInt aMaxLength, TInt aAlign=0, TBool aSingleThread=ETrue);
-	RNewAllocator(TInt aChunkHandle, TInt aOffset, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, TInt aAlign=0, TBool aSingleThread=EFalse);
-	inline RNewAllocator();
-
-	TAny* operator new(TUint aSize, TAny* aBase) __NO_THROW;
-	inline void operator delete(TAny*, TAny*);
-
-protected:
-	SCell* GetAddress(const TAny* aCell) const;
-
-public:
-	TInt iMinLength;
-	TInt iMaxLength;			// maximum bytes used by the allocator in total
-	TInt iOffset;					// offset of RNewAllocator object from chunk base
-	TInt iGrowBy;
-
-	TInt iChunkHandle;			// handle of chunk
-	RFastLock iLock;
-	TUint8* iBase;				// bottom of DL memory, i.e. this+sizeof(RNewAllocator)
-	TUint8* iTop;					// top of DL memory (page aligned)
-	TInt iAlign;
-	TInt iMinCell;
-	TInt iPageSize;
-	SCell iFree;
-protected:
-	TInt iNestingLevel;
-	TInt iAllocCount;
-	TAllocFail iFailType;
-	TInt iFailRate;
-	TBool iFailed;
-	TInt iFailAllocCount;
-	TInt iRand;
-	TAny* iTestData;
-protected:
-	TInt iChunkSize;				// currently allocated bytes in the chunk (== chunk.Size())
-	malloc_state iGlobalMallocState;
-	malloc_params mparams;
-private:
-	void Init(TInt aBitmapSlab, TInt aPagePower, size_t aTrimThreshold);/*Init internal data structures*/
-	inline int init_mparams(size_t aTrimThreshold /*= DEFAULT_TRIM_THRESHOLD*/);
-	inline void init_bins(mstate m);
-	inline void init_top(mstate m, mchunkptr p, size_t psize);
-	void* sys_alloc(mstate m, size_t nb);
-	msegmentptr segment_holding(mstate m, TUint8* addr);
-	void add_segment(mstate m, TUint8* tbase, size_t tsize, flag_t mmapped);
-	int sys_trim(mstate m, size_t pad);
-	int has_segment_link(mstate m, msegmentptr ss);
-	size_t release_unused_segments(mstate m);
-	void* mmap_alloc(mstate m, size_t nb);/*Need to check this function*/
-	void* prepend_alloc(mstate m, TUint8* newbase, TUint8* oldbase, size_t nb);
-	void* tmalloc_large(mstate m, size_t nb);
-	void* tmalloc_small(mstate m, size_t nb);
-	/*MACROS converted functions*/
-	static inline void unlink_first_small_chunk(mstate M,mchunkptr B,mchunkptr P,bindex_t& I);
-	static inline void insert_small_chunk(mstate M,mchunkptr P, size_t S);
-	static inline void insert_chunk(mstate M,mchunkptr P,size_t S);
-	static inline void unlink_large_chunk(mstate M,tchunkptr X);
-	static inline void unlink_small_chunk(mstate M, mchunkptr P,size_t S);
-	static inline void unlink_chunk(mstate M, mchunkptr P, size_t S);
-	static inline void compute_tree_index(size_t S, bindex_t& I);
-	static inline void insert_large_chunk(mstate M,tchunkptr X,size_t S);
-	static inline void replace_dv(mstate M, mchunkptr P, size_t S);
-	static inline void compute_bit2idx(binmap_t X,bindex_t& I);
-	/*MACROS converted functions*/
-	TAny* SetBrk(TInt32 aDelta);
-	void* internal_realloc(mstate m, void* oldmem, size_t bytes);
-	void  internal_malloc_stats(mstate m);
-	int change_mparam(int param_number, int value);
-#if !NO_MALLINFO
-		mallinfo internal_mallinfo(mstate m);
-#endif
-	void Init_Dlmalloc(size_t capacity, int locked, size_t aTrimThreshold);
-	void* dlmalloc(size_t);
-	void  dlfree(void*);
-	void* dlrealloc(void*, size_t);
-	int dlmallopt(int, int);
-	size_t dlmalloc_footprint(void);
-	size_t dlmalloc_max_footprint(void);
-	#if !NO_MALLINFO
-		struct mallinfo dlmallinfo(void);
-	#endif
-	int  dlmalloc_trim(size_t);
-	size_t dlmalloc_usable_size(void*);
-	void  dlmalloc_stats(void);
-	inline	mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb);
-
-		/****************************Code Added For DL heap**********************/
-	friend class UserHeap;
-private:
-	unsigned short slab_threshold;
-	unsigned short page_threshold;		// 2^n is smallest cell size allocated in paged allocator
-	unsigned slab_init_threshold;
-	unsigned slab_config_bits;
-	slab* partial_page;// partial-use page tree
-	page* spare_page;					// single empty page cached
-	unsigned char sizemap[(maxslabsize>>2)+1];	// index of slabset based on size class
-private:
-	static void tree_remove(slab* s);
-	static void tree_insert(slab* s,slab** r);
-public:
-	enum {okbits = (1<<(maxslabsize>>2))-1};
-	void slab_init();
-	void slab_config(unsigned slabbitmap);
-	void* slab_allocate(slabset& allocator);
-	void slab_free(void* p);
-	void* allocnewslab(slabset& allocator);
-	void* allocnewpage(slabset& allocator);
-	void* initnewslab(slabset& allocator, slab* s);
-	void freeslab(slab* s);
-	void freepage(page* p);
-	void* map(void* p,unsigned sz);
-	void* remap(void* p,unsigned oldsz,unsigned sz);
-	void unmap(void* p,unsigned sz);
-	/**I think we need to move this functions to slab allocator class***/
-	static inline unsigned header_free(unsigned h)
-	{return (h&0x000000ff);}
-	static inline unsigned header_pagemap(unsigned h)
-	{return (h&0x00000f00)>>8;}
-	static inline unsigned header_size(unsigned h)
-	{return (h&0x0003f000)>>12;}
-	static inline unsigned header_usedm4(unsigned h)
-	{return (h&0x0ffc0000)>>18;}
-	/***paged allocator code***/
-	void paged_init(unsigned pagepower);
-	void* paged_allocate(unsigned size);
-	void paged_free(void* p);
-	void* paged_reallocate(void* p, unsigned size);
-	pagecell* paged_descriptor(const void* p) const ;
-private:
-	// paged allocator structures
-	enum {npagecells=4};
-	pagecell pagelist[npagecells];		// descriptors for page-aligned large allocations
-	TAny* DLReAllocImpl(TAny* aPtr, TInt aSize);
-	// to track maximum used
-	//TInt iHighWaterMark;
-
-	slabset slaballoc[maxslabsize>>2];
-	
-private:
-	static RNewAllocator* FixedHeap(TAny* aBase, TInt aMaxLength, TInt aAlign, TBool aSingleThread);
-	static RNewAllocator* ChunkHeap(const TDesC* aName, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, TInt aAlign, TBool aSingleThread);
-	static RNewAllocator* ChunkHeap(RChunk aChunk, TInt aMinLength, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode);
-	static RNewAllocator* OffsetChunkHeap(RChunk aChunk, TInt aMinLength, TInt aOffset, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode);
-	static TInt CreateThreadHeap(SStdEpocThreadCreateInfo& aInfo, RNewAllocator*& aHeap, TInt aAlign = 0, TBool aSingleThread = EFalse);
-};
-
-#include "newallocator.inl"
-
-#endif // NEWALLOCATOR_H
--- a/main/al/newallocator.inl	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-#ifndef NEWALLOCATOR_INL
-#define NEWALLOCATOR_INL
-
-inline RNewAllocator::RNewAllocator()
-    {}
-
-/**
-@return The maximum length to which the heap can grow.
-
-@publishedAll
-@released
-*/
-inline TInt RNewAllocator::MaxLength() const
-    {return iMaxLength;}
-
-inline void RNewAllocator::operator delete(TAny*, TAny*) 
-/**
-Called if constructor issued by operator new(TUint aSize, TAny* aBase) throws exception.
-This is dummy as corresponding new operator does not allocate memory.
-*/
-    {}
-
-
-inline TUint8* RNewAllocator::Base() const
-/**
-Gets a pointer to the start of the heap.
-    
-Note that because of the small space overhead incurred by all allocated cells, 
-no cell will have the same address as that returned by this function.
-    
-@return A pointer to the base of the heap.
-*/
-    {return iBase;}
-
-
-inline TInt RNewAllocator::Align(TInt a) const
-/**
-@internalComponent
-*/
-    {return _ALIGN_UP(a, iAlign);}
-
-
-
-
-inline const TAny* RNewAllocator::Align(const TAny* a) const
-/**
-@internalComponent
-*/
-    {return (const TAny*)_ALIGN_UP((TLinAddr)a, iAlign);}
-
-
-
-inline void RNewAllocator::Lock() const
-/**
-@internalComponent
-*/
-    {((RFastLock&)iLock).Wait();}
-
-
-
-
-inline void RNewAllocator::Unlock() const
-/**
-@internalComponent
-*/
-    {((RFastLock&)iLock).Signal();}
-
-
-inline TInt RNewAllocator::ChunkHandle() const
-/**
-@internalComponent
-*/
-    {
-    return iChunkHandle;
-    }
-
-
-#endif // NEWALLOCATOR_INL
--- a/main/main.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/main/main.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -23,7 +23,6 @@
 #include <glxloggerenabler.h>
 
 #include <hbstyle.h>
-#include <hbstyleloader.h>
 #include <QDebug>
 #include <QTranslator>
 #include <xqserviceutil.h>
@@ -35,7 +34,7 @@
 #endif
 
 int main(int argc, char *argv[])
-    {
+{
     OstTrace0( TRACE_IMPORTANT, _MAIN, "::main" );
     QApplication::setGraphicsSystem("openvg");
     
@@ -53,23 +52,22 @@
     GlxStateManager* stateMgr = NULL;
     GlxFetcher* mainWindow = NULL;
 
-    HbStyleLoader::load(":/data/photos.css");
     OstTraceEventStart0( EVENT_DUP1__MAIN_START, "launch" );
 
     if(!XQServiceUtil::isService()){
-	stateMgr = new GlxStateManager();
-    app.setApplicationName("Photos");          
-    stateMgr->launchApplication();  
+	      stateMgr = new GlxStateManager();
+        app.setApplicationName("Photos");          
+        stateMgr->launchApplication();  
     }
     else
     {
-	mainWindow = new GlxFetcher();
-    mainWindow->show();
+	      mainWindow = new GlxFetcher();
+        mainWindow->show();
     }
     OstTraceEventStop( EVENT_DUP1__MAIN_STOP, "launch", EVENT_DUP1__MAIN_START );
 
-	int ret = app.exec();
-	delete stateMgr;
-	delete mainWindow;
+    int ret = app.exec();
+    delete stateMgr;
+    delete mainWindow;
     return ret;
-    }
+}
--- a/main/main.pro	Fri Mar 19 09:28:59 2010 +0200
+++ b/main/main.pro	Fri Apr 16 14:58:46 2010 +0300
@@ -19,7 +19,6 @@
 DEPENDPATH += .
 INCLUDEPATH += . \
                ..\inc \
-               al \
                ../ui/viewmanagement/statehandler/inc \
                ../loggers/loggerqt/inc \
                ../ui/inc \
@@ -54,8 +53,7 @@
 
 # Input
 SOURCES += main.cpp \
-			glxfetcher.cpp \
-            al/newallocator.cpp
+	   glxfetcher.cpp 
 HEADERS +=glxfetcher.h
 
 RESOURCES += ../photos.qrc
--- a/package_definition.xml	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
-  <package id="photos" name="Photos" levels="support fw ui app">
-    <collection id="photosgallery" name="Photos Gallery" level="app">
-    	<!-- consider splitting collection into the application itself, and the frameworks behind it -->
-      <component id="photosgallery_help" filter="s60" name="Photos Help" introduced="^2">
-        <unit bldFile="photosgallery/help/group"/>
-      </component>
-      <component id="logging" filter="s60" name="Photos Logging" introduced="^2">
-        <!-- <unit bldFile="photosgallery/logging/app/group"/> -->
-        <unit bldFile="photosgallery/logging/group"/>
-      </component>
-      <component id="photosgallery_common" filter="s60" name="Photos Common" introduced="^2">
-        <unit bldFile="photosgallery/common/group"/>
-      </component>
-      <component id="photosgallery_commonui" filter="s60" name="Photos Common UI" introduced="^2">
-        <unit bldFile="photosgallery/commonui/group"/>
-      </component>
-      <component id="photosgalleryollectionfw" filter="s60" name="Photos Collection Framework" introduced="^2">
-        <unit bldFile="photosgallery/collectionframework/group"/>
-        <!-- <unit bldFile="photosgallery/collectionframework/plugins/glxcollectionpluginalbums/group"/> -->
-      </component>
-      <component id="photosgalleryviewfw" filter="s60" name="View Framework" introduced="^2">
-        <unit bldFile="photosgallery/viewframework/group"/>
-        	<!-- do the following need to be #included? -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commandhandlerbase/tsrc/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxupnprenderer/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/t_cglxaiwservicehandler/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/t_glxcommandhandlerback/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/plugins/metadataviewplugin/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/views/listview/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/views/metadataview/group"/> -->
-        <!-- <unit bldFile="photosgallery/viewframework/views/viewbase/group"/> -->
-      </component>
-      <component id="controllers" filter="s60" name="Photos Controllers" introduced="^2">
-        <unit bldFile="photosgallery/controllers/group"/>
-      </component>
-      <component id="photogallery" filter="s60" name="Media Gallery" introduced="^2">
-        <unit bldFile="photosgallery/gallery/group"/>
-      </component>
-      <component id="slideshow" filter="s60" name="Slideshow" introduced="^2">
-        <unit bldFile="photosgallery/slideshow/group"/>
-        	<!-- does the test need to be #included? -->
-        <!-- <unit bldFile="photosgallery/slideshow/engine/tsrc/group"/> -->
-      </component>
-      <component id="contentharvesterplugin" filter="s60" name="Gallery Content Harvester Plugin" class="plugin" introduced="^2">
-        <unit bldFile="photosgallery/contentharvesterplugin/group"/>
-      </component>
-      <component id="photossuite" filter="s60" name="Photos Suite" class="config" introduced="^2">
-        <unit bldFile="photosgallery/photossuite/group"/>
-      </component>
-      <component id="galleryicons" filter="s60" name="Photos Icons" class="config" introduced="^2">
-        <unit bldFile="photosgallery/icons"/>
-      </component>
-      <component id="photosgallery_build" filter="s60" name="Photos Gallery Build" introduced="^2">
-      	<!--  remove the #included above bld.infs from this  -->
-        <unit bldFile="photosgallery/group"/>
-      </component>
-    </collection>
-    <collection id="photos_info" name="Photos Info" level="app">
-      <component id="photos_plat" filter="s60" name="Photos Platform Interfaces" class="api" introduced="^2">
-        <unit bldFile="photos_plat/group"/>
-        <!-- should these be #included in the above? -->
-        <!-- <unit bldFile="photos_plat/controllers_collection_api/tsrc/ui_metadatadialog/group"/> -->
-        <!-- <unit bldFile="photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group"/> -->
-        <!-- <unit bldFile="photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group"/> -->
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/photos.qrc	Fri Mar 19 09:28:59 2010 +0200
+++ b/photos.qrc	Fri Apr 16 14:58:46 2010 +0300
@@ -1,13 +1,5 @@
 <RCC>
     <qresource prefix="/" >
-        <file>data/Albums_default.png</file>
-        <file>data/All_default.png</file>
-        <file>data/camera_default.png</file>
-        <file>data/ovi_default.png</file>
-        <file>data/Albums_selected.png</file>
-        <file>data/All_selected.png</file>
-        <file>data/camera_selected.png</file>
-        <file>data/ovi_selected.png</file>
         <file>data/transition.fxml</file>
         <file>data/transitionleft.fxml</file>
         <file>data/transitionright.fxml</file>
@@ -29,11 +21,9 @@
         <file>data/transitionrotate90.fxml</file>
         <file>data/transitionrotate180.fxml</file>
         <file>data/transitionrotate270.fxml</file>
-        <file>data/corrupt.svg</file>
-        <file>data/imagestrip.css</file>
         <file>data/grid.docml</file>
         <file>data/listview.docml</file>
         <file>data/fullscreen.docml</file>
         <file>data/slideshow.docml</file>
-    </qresource>
+	    </qresource>
 </RCC>
--- a/traces/OstTraceDefinitions.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/traces/OstTraceDefinitions.h	Fri Apr 16 14:58:46 2010 +0300
@@ -1,3 +1,19 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
 #ifndef __OSTTRACEDEFINITIONS_H__
 #define __OSTTRACEDEFINITIONS_H__
 // OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
--- a/traces/fixed_id.definitions	Fri Mar 19 09:28:59 2010 +0200
+++ b/traces/fixed_id.definitions	Fri Apr 16 14:58:46 2010 +0300
@@ -1,43 +1,70 @@
 #Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
 [GROUP]TRACE_FLOW=0x8a
-[GROUP]TRACE_IMPORTANT=0x85
 [GROUP]TRACE_NORMAL=0x86
-[GROUP]TRACE_PERFORMANCE=0x8b
-[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY=0xf
-[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT=0x10
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ACTIVATE_ENTRY=0x3
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ACTIVATE_EXIT=0x4
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ADDTOOLBAR_ENTRY=0x9
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ADDTOOLBAR_EXIT=0xa
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_DEACTIVATE_ENTRY=0x5
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_DEACTIVATE_EXIT=0x6
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GETANIMATIONITEM_ENTRY=0xb
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GETANIMATIONITEM_EXIT=0xc
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY=0x1
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GLXGRIDVIEW_EXIT=0x2
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_LOADGRIDVIEW_ENTRY=0xd
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_LOADGRIDVIEW_EXIT=0xe
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_SETMODEL_ENTRY=0x7
-[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_SETMODEL_EXIT=0x8
-[TRACE]TRACE_IMPORTANT[0x85]_DUP1_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x5
-[TRACE]TRACE_IMPORTANT[0x85]_DUP1_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x2
-[TRACE]TRACE_IMPORTANT[0x85]_DUP2_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x7
-[TRACE]TRACE_IMPORTANT[0x85]_DUP2_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x3
-[TRACE]TRACE_IMPORTANT[0x85]_DUP3_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x8
-[TRACE]TRACE_IMPORTANT[0x85]_DUP3_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x4
-[TRACE]TRACE_IMPORTANT[0x85]_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x6
-[TRACE]TRACE_IMPORTANT[0x85]_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x1
-[TRACE]TRACE_NORMAL[0x86]_DUP1_GLXGRIDVIEW_HANDLEUSERACTION=0x4
-[TRACE]TRACE_NORMAL[0x86]_DUP2_GLXGRIDVIEW_HANDLEUSERACTION=0x5
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ADDVIEWCONNECTION=0x9
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_DISABLEMARKING=0x2
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ENABLEMARKING=0x1
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_GETSELECTIONMODEL=0x6
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_HANDLEUSERACTION=0x3
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_INDICATELONGPRESS=0xc
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ITEMCHANGE=0x8
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ITEMDESTROYED=0x7
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ITEMSELECTED=0xb
-[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_REMOVEVIEWCONNECTION=0xa
-[TRACE]TRACE_PERFORMANCE[0x8B]_EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START=0x1
-[TRACE]TRACE_PERFORMANCE[0x8B]_EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP=0x2
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY=0xd
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT=0xe
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY=0x3
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT=0x4
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY=0x17
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT=0x18
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY=0x3b
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT=0x3c
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY=0x27
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT=0x28
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY=0x7
+[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT=0x8
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_ENTRY=0xf
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_EXIT=0x10
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_ENTRY=0x13
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_EXIT=0x14
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_ENTRY=0x11
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_EXIT=0x12
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY=0xb
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT=0xc
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_EXIT=0x6
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY=0x1
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT=0x2
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_ENTRY=0x19
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_EXIT=0x1a
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_ENTRY=0x1d
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_EXIT=0x1e
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_ENTRY=0x1b
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_EXIT=0x1c
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY=0x15
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT=0x16
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_ENTRY=0x23
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_EXIT=0x24
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_ENTRY=0x21
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_EXIT=0x22
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_ENTRY=0x1f
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_EXIT=0x20
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_ENTRY=0x3d
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_EXIT=0x3e
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY=0x39
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT=0x3a
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_ENTRY=0x33
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_EXIT=0x34
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_ENTRY=0x29
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_EXIT=0x2a
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_ENTRY=0x37
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_EXIT=0x38
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_ENTRY=0x2b
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_EXIT=0x2c
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY=0x25
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT=0x26
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_ENTRY=0x2f
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_EXIT=0x30
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_ENTRY=0x31
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_EXIT=0x32
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_ENTRY=0x2d
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_EXIT=0x2e
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_ENTRY=0x35
+[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_EXIT=0x36
+[TRACE]TRACE_FLOW[0x8A]_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY=0x9
+[TRACE]TRACE_FLOW[0x8A]_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT=0xa
+[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL=0x1
+[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST=0x2
+[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL=0x5
+[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL=0x3
+[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL=0x4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxcommandhandlerTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,18 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXCOMMANDHANDLERTRACES_H__
+#define __GLXCOMMANDHANDLERTRACES_H__
+
+#define KOstTraceComponentID 0x20000a11
+
+#define GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY 0x8a0001
+#define GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT 0x8a0002
+#define DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY 0x8a0003
+#define DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT 0x8a0004
+
+
+#endif
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxcommandhandleraddtocontainerTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,65 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXCOMMANDHANDLERADDTOCONTAINERTRACES_H__
+#define __GLXCOMMANDHANDLERADDTOCONTAINERTRACES_H__
+
+#define KOstTraceComponentID 0x20000a0d
+
+#define DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY 0x8a0007
+#define DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT 0x8a0008
+#define GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY 0x8a0009
+#define GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT 0x8a000a
+#define GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY 0x8a000b
+#define GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT 0x8a000c
+#define DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY 0x8a000d
+#define DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT 0x8a000e
+#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_ENTRY 0x8a000f
+#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_EXIT 0x8a0010
+#define GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_ENTRY 0x8a0011
+#define GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_EXIT 0x8a0012
+#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_ENTRY 0x8a0013
+#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_EXIT 0x8a0014
+#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL 0x860001
+#define GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST 0x860002
+
+
+inline TBool OstTraceGen2( TUint32 aTraceID, TInt aParam1, TInt aParam2 )
+    {
+    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
+    if ( retval )
+        {
+        TUint8 data[ 8 ];
+        TUint8* ptr = data;
+        *( ( TInt* )ptr ) = aParam1;
+        ptr += sizeof ( TInt );
+        *( ( TInt* )ptr ) = aParam2;
+        ptr += sizeof ( TInt );
+        ptr -= 8;
+        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
+        }
+    return retval;
+    }
+
+inline TBool OstTraceGen2( TUint32 aTraceID, TInt32 aParam1, TInt32 aParam2 )
+    {
+    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
+    if ( retval )
+        {
+        TUint8 data[ 8 ];
+        TUint8* ptr = data;
+        *( ( TInt* )ptr ) = aParam1;
+        ptr += sizeof ( TInt );
+        *( ( TInt* )ptr ) = aParam2;
+        ptr += sizeof ( TInt );
+        ptr -= 8;
+        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
+        }
+    return retval;
+    }
+
+
+#endif
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxcommandhandlerdeleteTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,20 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXCOMMANDHANDLERDELETETRACES_H__
+#define __GLXCOMMANDHANDLERDELETETRACES_H__
+
+#define KOstTraceComponentID 0x20000a0d
+
+#define GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY 0x8a0001
+#define GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT 0x8a0002
+#define DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY 0x8a0003
+#define DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT 0x8a0004
+#define GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_ENTRY 0x8a0005
+#define GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_EXIT 0x8a0006
+
+
+#endif
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxcommandhandlernewmediaTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,30 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXCOMMANDHANDLERNEWMEDIATRACES_H__
+#define __GLXCOMMANDHANDLERNEWMEDIATRACES_H__
+
+#define KOstTraceComponentID 0x20000a0d
+
+#define GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY 0x8a0015
+#define GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT 0x8a0016
+#define DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY 0x8a0017
+#define DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT 0x8a0018
+#define GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_ENTRY 0x8a0019
+#define GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_EXIT 0x8a001a
+#define GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_ENTRY 0x8a001b
+#define GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_EXIT 0x8a001c
+#define GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_ENTRY 0x8a001d
+#define GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_EXIT 0x8a001e
+#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_ENTRY 0x8a001f
+#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_EXIT 0x8a0020
+#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_ENTRY 0x8a0021
+#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_EXIT 0x8a0022
+#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_ENTRY 0x8a0023
+#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_EXIT 0x8a0024
+
+
+#endif
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxcommandhandlerremovefromTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,20 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXCOMMANDHANDLERREMOVEFROMTRACES_H__
+#define __GLXCOMMANDHANDLERREMOVEFROMTRACES_H__
+
+#define KOstTraceComponentID 0x20000a0d
+
+#define GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY 0x8a0039
+#define GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT 0x8a003a
+#define DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY 0x8a003b
+#define DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT 0x8a003c
+#define GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_ENTRY 0x8a003d
+#define GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_EXIT 0x8a003e
+
+
+#endif
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxcommandhandlerrotateTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,37 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXCOMMANDHANDLERROTATETRACES_H__
+#define __GLXCOMMANDHANDLERROTATETRACES_H__
+
+#define KOstTraceComponentID 0x20000a0d
+
+#define GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY 0x8a0025
+#define GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT 0x8a0026
+#define DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY 0x8a0027
+#define DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT 0x8a0028
+#define GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_ENTRY 0x8a0029
+#define GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_EXIT 0x8a002a
+#define GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_ENTRY 0x8a002b
+#define GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_EXIT 0x8a002c
+#define GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_ENTRY 0x8a002d
+#define GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_EXIT 0x8a002e
+#define GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_ENTRY 0x8a002f
+#define GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_EXIT 0x8a0030
+#define GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_ENTRY 0x8a0031
+#define GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_EXIT 0x8a0032
+#define GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_ENTRY 0x8a0033
+#define GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_EXIT 0x8a0034
+#define GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_ENTRY 0x8a0035
+#define GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_EXIT 0x8a0036
+#define GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_ENTRY 0x8a0037
+#define GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_EXIT 0x8a0038
+#define GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL 0x860004
+#define GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL 0x860005
+#define GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL 0x860006
+
+
+#endif
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxdetailsviewTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,50 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXDETAILSVIEWTRACES_H__
+#define __GLXDETAILSVIEWTRACES_H__
+
+#define KOstTraceComponentID 0x200009ef
+
+#define GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY 0x8a0001
+#define GLXDETAILSVIEW_GLXDETAILSVIEW_EXIT 0x8a0002
+#define GLXDETAILSVIEW_ACTIVATE_ENTRY 0x8a0003
+#define GLXDETAILSVIEW_ACTIVATE_EXIT 0x8a0004
+#define GLXDETAILSVIEW_INITIALIZEVIEW_ENTRY 0x8a0005
+#define GLXDETAILSVIEW_INITIALIZEVIEW_EXIT 0x8a0006
+#define GLXDETAILSVIEW_DEACTIVATE_ENTRY 0x8a0007
+#define GLXDETAILSVIEW_DEACTIVATE_EXIT 0x8a0008
+#define GLXDETAILSVIEW_SETIMAGENAME_ENTRY 0x8a0009
+#define GLXDETAILSVIEW_SETIMAGENAME_EXIT 0x8a000a
+#define GLXDETAILSVIEW_SETDATE_ENTRY 0x8a000b
+#define GLXDETAILSVIEW_SETDATE_EXIT 0x8a000c
+#define GLXDETAILSVIEW_GLXDETAILSVIEW 0x850001
+#define GLXDETAILSVIEW_RESETVIEW 0x860001
+#define GLXDETAILSVIEW_ADDWIDGETS 0x860002
+#define DUP1_GLXDETAILSVIEW_ADDWIDGETS 0x860003
+#define DUP2_GLXDETAILSVIEW_ADDWIDGETS 0x860004
+#define DUP3_GLXDETAILSVIEW_ADDWIDGETS 0x860005
+#define DUP5_GLXDETAILSVIEW_ADDWIDGETS 0x860006
+#define GLXDETAILSVIEW_SETMODEL 0x860007
+#define GLXDETAILSVIEW_GETANIMATIONITEM 0x860008
+#define GLXDETAILSVIEW_UPDATELAYOUT 0x860009
+#define DUP1_GLXDETAILSVIEW_UPDATELAYOUT 0x86000a
+#define DUP2_GLXDETAILSVIEW_UPDATELAYOUT 0x86000b
+#define GLXDETAILSVIEW_ROWSREMOVED 0x86000c
+#define GLXDETAILSVIEW_SHOWIMAGE 0x86000d
+#define DUP1_GLXDETAILSVIEW_SHOWIMAGE 0x86000e
+#define DUP2_GLXDETAILSVIEW_SHOWIMAGE 0x86000f
+#define GLXDETAILSVIEW_SETFORMDATA 0x860010
+#define GLXDETAILSVIEW_SETIMAGENAME 0x860011
+#define DUP1_GLXDETAILSVIEW_SETIMAGENAME 0x860012
+#define GLXDETAILSVIEW_SETDATE 0x860013
+#define DUP1_GLXDETAILSVIEW_SETDATE 0x860014
+#define DUP2_GLXDETAILSVIEW_SETDATE 0x860015
+#define GLXDETAILSVIEW_INITIALIZENEWMODEL 0x860016
+#define GLXDETAILSVIEW_CLEARCURRENTMODEL 0x860017
+
+
+#endif
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxfullscreenviewTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,125 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXFULLSCREENVIEWTRACES_H__
+#define __GLXFULLSCREENVIEWTRACES_H__
+
+#define KOstTraceComponentID 0x200009ef
+
+#define GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY 0x8a000d
+#define GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT 0x8a000e
+#define GLXFULLSCREENVIEW_INITIALIZEVIEW_ENTRY 0x8a000f
+#define GLXFULLSCREENVIEW_INITIALIZEVIEW_EXIT 0x8a0010
+#define GLXFULLSCREENVIEW_LOADWIDGETS_ENTRY 0x8a0011
+#define GLXFULLSCREENVIEW_LOADWIDGETS_EXIT 0x8a0012
+#define GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_ENTRY 0x8a0013
+#define GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_EXIT 0x8a0014
+#define GLXFULLSCREENVIEW_ACTIVATE_ENTRY 0x8a0015
+#define GLXFULLSCREENVIEW_ACTIVATE_EXIT 0x8a0016
+#define GLXFULLSCREENVIEW_LOADVIEWSECTION_ENTRY 0x8a0017
+#define GLXFULLSCREENVIEW_LOADVIEWSECTION_EXIT 0x8a0018
+#define GLXFULLSCREENVIEW_RESETVIEW_ENTRY 0x8a0019
+#define GLXFULLSCREENVIEW_RESETVIEW_EXIT 0x8a001a
+#define GLXFULLSCREENVIEW_DEACTIVATE_ENTRY 0x8a001b
+#define GLXFULLSCREENVIEW_DEACTIVATE_EXIT 0x8a001c
+#define GLXFULLSCREENVIEW_CLEANUP_ENTRY 0x8a001d
+#define GLXFULLSCREENVIEW_CLEANUP_EXIT 0x8a001e
+#define GLXFULLSCREENVIEW_SETMODEL_ENTRY 0x8a001f
+#define GLXFULLSCREENVIEW_SETMODEL_EXIT 0x8a0020
+#define GLXFULLSCREENVIEW_SETMODELCONTEXT_ENTRY 0x8a0021
+#define GLXFULLSCREENVIEW_SETMODELCONTEXT_EXIT 0x8a0022
+#define GLXFULLSCREENVIEW_ORIENTATIONCHANGED_ENTRY 0x8a0023
+#define GLXFULLSCREENVIEW_ORIENTATIONCHANGED_EXIT 0x8a0024
+#define GLXFULLSCREENVIEW_ACTIVATEUI_ENTRY 0x8a0025
+#define GLXFULLSCREENVIEW_ACTIVATEUI_EXIT 0x8a0026
+#define GLXFULLSCREENVIEW_HIDEUI_ENTRY 0x8a0027
+#define GLXFULLSCREENVIEW_HIDEUI_EXIT 0x8a0028
+#define DUP1_GLXFULLSCREENVIEW_HIDEUI_EXIT 0x8a0029
+#define GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_ENTRY 0x8a002a
+#define GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT 0x8a002b
+#define DUP1_GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT 0x8a002c
+#define GLXFULLSCREENVIEW_INDEXCHANGED_ENTRY 0x8a002d
+#define GLXFULLSCREENVIEW_INDEXCHANGED_EXIT 0x8a002e
+#define DUP1_GLXFULLSCREENVIEW_INDEXCHANGED_EXIT 0x8a002f
+#define GLXFULLSCREENVIEW_SCROLLINGSTARTED_ENTRY 0x8a0030
+#define GLXFULLSCREENVIEW_SCROLLINGSTARTED_EXIT 0x8a0031
+#define GLXFULLSCREENVIEW_SCROLLINGENDED_ENTRY 0x8a0032
+#define GLXFULLSCREENVIEW_SCROLLINGENDED_EXIT 0x8a0033
+#define GLXFULLSCREENVIEW_PRESSED_ENTRY 0x8a0034
+#define GLXFULLSCREENVIEW_PRESSED_EXIT 0x8a0035
+#define GLXFULLSCREENVIEW_RELEASED_ENTRY 0x8a0036
+#define GLXFULLSCREENVIEW_RELEASED_EXIT 0x8a0037
+#define GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_ENTRY 0x8a0038
+#define GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_EXIT 0x8a0039
+#define GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_ENTRY 0x8a003a
+#define GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_EXIT 0x8a003b
+#define GLXFULLSCREENVIEW_EFFECTFINISHED_ENTRY 0x8a003c
+#define GLXFULLSCREENVIEW_EFFECTFINISHED_EXIT 0x8a003d
+#define GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_ENTRY 0x8a003e
+#define GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_EXIT 0x8a003f
+#define GLXFULLSCREENVIEW_SETLAYOUT_ENTRY 0x8a0040
+#define GLXFULLSCREENVIEW_SETLAYOUT_EXIT 0x8a0041
+#define GLXFULLSCREENVIEW_ADDCONNECTION_ENTRY 0x8a0042
+#define GLXFULLSCREENVIEW_ADDCONNECTION_EXIT 0x8a0043
+#define GLXFULLSCREENVIEW_REMOVECONNECTION_ENTRY 0x8a0044
+#define GLXFULLSCREENVIEW_REMOVECONNECTION_EXIT 0x8a0045
+#define GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_ENTRY 0x8a0046
+#define GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_EXIT 0x8a0047
+#define DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY 0x8a0048
+#define DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT 0x8a0049
+#define GLXFULLSCREENVIEW_HANDLEUSERACTION_ENTRY 0x8a004a
+#define GLXFULLSCREENVIEW_HANDLEUSERACTION_EXIT 0x8a004b
+#define GLXFULLSCREENVIEW_SETIMAGETOHDMIL_ENTRY 0x8a004c
+#define GLXFULLSCREENVIEW_SETIMAGETOHDMIL_EXIT 0x8a004d
+#define GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_ENTRY 0x8a004e
+#define GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_EXIT 0x8a004f
+#define GLXFULLSCREENVIEW_HANDLETOOLBARACTION_ENTRY 0x8a0050
+#define GLXFULLSCREENVIEW_HANDLETOOLBARACTION_EXIT 0x8a0051
+#define GLXFULLSCREENVIEW_ACTIVATE 0x860018
+#define GLXFULLSCREENVIEW_CLEANUP 0x860019
+#define DUP1_GLXFULLSCREENVIEW_CLEANUP 0x86001a
+#define DUP2_GLXFULLSCREENVIEW_CLEANUP 0x86001b
+#define GLXFULLSCREENVIEW_SETMODEL 0x86001c
+#define GLXFULLSCREENVIEW_SETIMAGETOHDMIL 0x86001d
+#define DUP1_GLXFULLSCREENVIEW_SETIMAGETOHDMIL 0x86001e
+
+
+inline TBool OstTraceGen2( TUint32 aTraceID, TUint aParam1, TUint aParam2 )
+    {
+    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
+    if ( retval )
+        {
+        TUint8 data[ 8 ];
+        TUint8* ptr = data;
+        *( ( TUint* )ptr ) = aParam1;
+        ptr += sizeof ( TUint );
+        *( ( TUint* )ptr ) = aParam2;
+        ptr += sizeof ( TUint );
+        ptr -= 8;
+        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
+        }
+    return retval;
+    }
+
+inline TBool OstTraceGen2( TUint32 aTraceID, TUint32 aParam1, TUint32 aParam2 )
+    {
+    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
+    if ( retval )
+        {
+        TUint8 data[ 8 ];
+        TUint8* ptr = data;
+        *( ( TUint* )ptr ) = aParam1;
+        ptr += sizeof ( TUint );
+        *( ( TUint* )ptr ) = aParam2;
+        ptr += sizeof ( TUint );
+        ptr -= 8;
+        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
+        }
+    return retval;
+    }
+
+
+#endif
+
+// End of file
+
--- a/traces/glxgridviewTraces.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/traces/glxgridviewTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -6,44 +6,40 @@
 
 #define KOstTraceComponentID 0x200009ef
 
-#define GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a0001
-#define GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0002
-#define GLXGRIDVIEW_ACTIVATE_ENTRY 0x8a0003
-#define GLXGRIDVIEW_ACTIVATE_EXIT 0x8a0004
-#define GLXGRIDVIEW_DEACTIVATE_ENTRY 0x8a0005
-#define GLXGRIDVIEW_DEACTIVATE_EXIT 0x8a0006
-#define GLXGRIDVIEW_SETMODEL_ENTRY 0x8a0007
-#define GLXGRIDVIEW_SETMODEL_EXIT 0x8a0008
-#define GLXGRIDVIEW_ADDTOOLBAR_ENTRY 0x8a0009
-#define GLXGRIDVIEW_ADDTOOLBAR_EXIT 0x8a000a
-#define GLXGRIDVIEW_GETANIMATIONITEM_ENTRY 0x8a000b
-#define GLXGRIDVIEW_GETANIMATIONITEM_EXIT 0x8a000c
-#define GLXGRIDVIEW_LOADGRIDVIEW_ENTRY 0x8a000d
-#define GLXGRIDVIEW_LOADGRIDVIEW_EXIT 0x8a000e
-#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a000f
-#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0010
-#define GLXGRIDVIEW_ENABLEMARKING 0x860001
-#define GLXGRIDVIEW_DISABLEMARKING 0x860002
-#define GLXGRIDVIEW_HANDLEUSERACTION 0x860003
-#define DUP1_GLXGRIDVIEW_HANDLEUSERACTION 0x860004
-#define DUP2_GLXGRIDVIEW_HANDLEUSERACTION 0x860005
-#define GLXGRIDVIEW_GETSELECTIONMODEL 0x860006
-#define GLXGRIDVIEW_ITEMDESTROYED 0x860007
-#define GLXGRIDVIEW_ITEMCHANGE 0x860008
-#define GLXGRIDVIEW_ADDVIEWCONNECTION 0x860009
-#define GLXGRIDVIEW_REMOVEVIEWCONNECTION 0x86000a
-#define GLXGRIDVIEW_ITEMSELECTED 0x86000b
-#define GLXGRIDVIEW_INDICATELONGPRESS 0x86000c
+#define GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a0052
+#define GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0053
+#define GLXGRIDVIEW_ACTIVATE_ENTRY 0x8a0054
+#define GLXGRIDVIEW_ACTIVATE_EXIT 0x8a0055
+#define GLXGRIDVIEW_DEACTIVATE_ENTRY 0x8a0056
+#define GLXGRIDVIEW_DEACTIVATE_EXIT 0x8a0057
+#define GLXGRIDVIEW_SETMODEL_ENTRY 0x8a0058
+#define GLXGRIDVIEW_SETMODEL_EXIT 0x8a0059
+#define GLXGRIDVIEW_ADDTOOLBAR_ENTRY 0x8a005a
+#define GLXGRIDVIEW_ADDTOOLBAR_EXIT 0x8a005b
+#define GLXGRIDVIEW_GETANIMATIONITEM_ENTRY 0x8a005c
+#define GLXGRIDVIEW_GETANIMATIONITEM_EXIT 0x8a005d
+#define GLXGRIDVIEW_LOADGRIDVIEW_ENTRY 0x8a005e
+#define GLXGRIDVIEW_LOADGRIDVIEW_EXIT 0x8a005f
+#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a0060
+#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0061
+#define GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850002
+#define DUP1_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850003
+#define DUP2_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850004
+#define DUP3_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850005
+#define GLXGRIDVIEW_ENABLEMARKING 0x86001f
+#define GLXGRIDVIEW_DISABLEMARKING 0x860020
+#define GLXGRIDVIEW_HANDLEUSERACTION 0x860021
+#define DUP1_GLXGRIDVIEW_HANDLEUSERACTION 0x860022
+#define DUP2_GLXGRIDVIEW_HANDLEUSERACTION 0x860023
+#define GLXGRIDVIEW_GETSELECTIONMODEL 0x860024
+#define GLXGRIDVIEW_ITEMDESTROYED 0x860025
+#define GLXGRIDVIEW_ITEMCHANGE 0x860026
+#define GLXGRIDVIEW_ADDVIEWCONNECTION 0x860027
+#define GLXGRIDVIEW_REMOVEVIEWCONNECTION 0x860028
+#define GLXGRIDVIEW_ITEMSELECTED 0x860029
+#define GLXGRIDVIEW_INDICATELONGPRESS 0x86002a
 #define EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START 0x8b0001
 #define EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP 0x8b0002
-#define GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850001
-#define DUP1_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850002
-#define DUP2_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850003
-#define DUP3_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850004
-#define DUP1_GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850005
-#define GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850006
-#define DUP2_GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850007
-#define DUP3_GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850008
 
 
 inline TBool OstTraceGen2( TUint32 aTraceID, TInt aParam1, TUint aParam2 )
@@ -81,59 +77,6 @@
     }
 
 
-inline TBool OstTraceGen2( TUint32 aTraceID, TReal aParam1, TReal aParam2 )
-    {
-    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
-    if ( retval )
-        {
-        TUint8 data[ 16 ];
-        TUint8* ptr = data;
-        *( ( TReal* )ptr ) = aParam1;
-        ptr += sizeof ( TReal );
-        *( ( TReal* )ptr ) = aParam2;
-        ptr += sizeof ( TReal );
-        ptr -= 16;
-        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 16 );
-        }
-    return retval;
-    }
-
-
-inline TBool OstTraceGen2( TUint32 aTraceID, TInt aParam1, TInt aParam2 )
-    {
-    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
-    if ( retval )
-        {
-        TUint8 data[ 8 ];
-        TUint8* ptr = data;
-        *( ( TInt* )ptr ) = aParam1;
-        ptr += sizeof ( TInt );
-        *( ( TInt* )ptr ) = aParam2;
-        ptr += sizeof ( TInt );
-        ptr -= 8;
-        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
-        }
-    return retval;
-    }
-
-inline TBool OstTraceGen2( TUint32 aTraceID, TInt32 aParam1, TInt32 aParam2 )
-    {
-    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
-    if ( retval )
-        {
-        TUint8 data[ 8 ];
-        TUint8* ptr = data;
-        *( ( TInt* )ptr ) = aParam1;
-        ptr += sizeof ( TInt );
-        *( ( TInt* )ptr ) = aParam2;
-        ptr += sizeof ( TInt );
-        ptr -= 8;
-        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
-        }
-    return retval;
-    }
-
-
 #endif
 
 // End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traces/glxmpxcommandhandlerTraces.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,54 @@
+// Created by TraceCompiler 2.1.2
+// DO NOT EDIT, CHANGES WILL BE LOST
+
+#ifndef __GLXMPXCOMMANDHANDLERTRACES_H__
+#define __GLXMPXCOMMANDHANDLERTRACES_H__
+
+#define KOstTraceComponentID 0x20000a11
+
+#define GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY 0x8a0005
+#define GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT 0x8a0006
+#define DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY 0x8a0007
+#define DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT 0x8a0008
+#define GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_ENTRY 0x8a0009
+#define GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_EXIT 0x8a000a
+#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_ENTRY 0x8a000b
+#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_EXIT 0x8a000c
+#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_ENTRY 0x8a000d
+#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_EXIT 0x8a000e
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_ENTRY 0x8a000f
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_EXIT 0x8a0010
+#define GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_ENTRY 0x8a0011
+#define GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_EXIT 0x8a0012
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_ENTRY 0x8a0013
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_EXIT 0x8a0014
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_ENTRY 0x8a0015
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_EXIT 0x8a0016
+#define GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_ENTRY 0x8a0017
+#define GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_EXIT 0x8a0018
+#define GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_ENTRY 0x8a0019
+#define GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_EXIT 0x8a001a
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_ENTRY 0x8a001b
+#define GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_EXIT 0x8a001c
+#define GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_ENTRY 0x8a001d
+#define GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_EXIT 0x8a001e
+#define GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_ENTRY 0x8a001f
+#define GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_EXIT 0x8a0020
+#define GLXMPXCOMMANDHANDLER_HANDLEERROR_ENTRY 0x8a0021
+#define GLXMPXCOMMANDHANDLER_HANDLEERROR_EXIT 0x8a0022
+#define GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_ENTRY 0x8a0023
+#define GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_EXIT 0x8a0024
+#define GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_ENTRY 0x8a0025
+#define GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_EXIT 0x8a0026
+#define GLXMPXCOMMANDHANDLER_TRYEXITL_ENTRY 0x8a0027
+#define GLXMPXCOMMANDHANDLER_TRYEXITL_EXIT 0x8a0028
+#define GLXMPXCOMMANDHANDLER_HANDLEERRORL_ENTRY 0x8a0029
+#define GLXMPXCOMMANDHANDLER_HANDLEERRORL_EXIT 0x8a002a
+#define DUP2_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND 0x860001
+#define DUP3_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND 0x860002
+
+
+#endif
+
+// End of file
+
--- a/tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -122,7 +122,7 @@
     QVERIFY(icon == NULL);
     
     // After adding grid context should get grid icon 
-    mTestObject->setContextMode(GlxContextGrid);
+    mTestObject->setContextMode(GlxContextPtGrid);
     QTest::qWait(2000);
     icon = mTestObject->retrieveItemIcon(itemIndex,GlxTBContextGrid);
     QVERIFY(icon != NULL);
@@ -133,7 +133,7 @@
     qDebug("TestGlxMLWrapper::testRetrieveItemUri enter");
 	
 	int count = mTestObject->getItemCount();
-	mTestObject->setContextMode(GlxContextGrid);
+	mTestObject->setContextMode(GlxContextPtGrid);
     QTest::qWait(20000);
 	QString uri = mTestObject->retrieveItemUri(count-1);
 	qDebug("TestGlxMLWrapper::testRetrieveItemUri =%d",uri.isEmpty());
@@ -145,7 +145,7 @@
     qDebug("TestGlxMLWrapper::testRetrieveItemUriName enter");
 	
 	int count = mTestObject->getItemCount();
-	mTestObject->setContextMode(GlxContextGrid);
+	mTestObject->setContextMode(GlxContextPtGrid);
     QTest::qWait(20000);
     	
     QString uri = mTestObject->retrieveItemUri(count-1);
@@ -173,7 +173,7 @@
     QVERIFY(icon != NULL);
     
     // Should get grid icon
-    mTestObject->setContextMode(GlxContextGrid);
+    mTestObject->setContextMode(GlxContextPtGrid);
     QTest::qWait(2000);
     icon = mTestObject->retrieveItemIcon(itemIndex,GlxTBContextGrid);
     QVERIFY(icon != NULL);
@@ -184,7 +184,7 @@
 {
     qDebug("TestGlxMLWrapper::testRetrieveItemDateIsNotNull enter");
     int count = mTestObject->getItemCount();
-    mTestObject->setContextMode(GlxContextGrid);
+    mTestObject->setContextMode(GlxContextPtGrid);
     QTest::qWait(20000);
 	
 	QDate date = mTestObject->retrieveItemDate(count-1);
@@ -197,7 +197,7 @@
 {
     qDebug("TestGlxMLWrapper::testRetrieveItemDateIsValid enter");
     int count = mTestObject->getItemCount();
-    mTestObject->setContextMode(GlxContextGrid);
+    mTestObject->setContextMode( GlxContextPtGrid );
     QTest::qWait(20000);
 	
 	QDate date = mTestObject->retrieveItemDate(count-1);
@@ -212,7 +212,7 @@
 {
     qDebug("TestGlxMLWrapper::testRetrieveItemDateValidate enter");
     int count = mTestObject->getItemCount();
-	mTestObject->setContextMode(GlxContextGrid);
+	mTestObject->setContextMode( GlxContextPtGrid );
     QTest::qWait(20000);
 	
     QDate date = mTestObject->retrieveItemDate(count-1);
--- a/tvout/bwins/glxtvoutu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/bwins/glxtvoutu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -1,16 +1,17 @@
 EXPORTS
-	?ScreenSizeL@CGlxTv@@QBE?AVTSize@@XZ @ 1 NONAME ; class TSize CGlxTv::ScreenSizeL(void) const
-	??1CGlxTv@@UAE@XZ @ 2 NONAME ; CGlxTv::~CGlxTv(void)
-	??1CGlxHdmiController@@UAE@XZ @ 3 NONAME ; CGlxHdmiController::~CGlxHdmiController(void)
-	?NewL@CGlxHdmiController@@SAPAV1@XZ @ 4 NONAME ; class CGlxHdmiController * CGlxHdmiController::NewL(void)
-	?SetImageL@CGlxHdmiController@@QAEXABVTDesC16@@VTSize@@HH@Z @ 5 NONAME ; void CGlxHdmiController::SetImageL(class TDesC16 const &, class TSize, int, int)
+	?ActivateZoom@CGlxHdmiController@@QAEXH@Z @ 1 NONAME ; void CGlxHdmiController::ActivateZoom(int)
+	?ScreenSizeL@CGlxTv@@QBE?AVTSize@@XZ @ 2 NONAME ; class TSize CGlxTv::ScreenSizeL(void) const
+	??1CGlxTv@@UAE@XZ @ 3 NONAME ; CGlxTv::~CGlxTv(void)
+	??1CGlxHdmiController@@UAE@XZ @ 4 NONAME ; CGlxHdmiController::~CGlxHdmiController(void)
+	?NewL@CGlxHdmiController@@SAPAV1@XZ @ 5 NONAME ; class CGlxHdmiController * CGlxHdmiController::NewL(void)
 	?IsWidescreen@CGlxTv@@QBEHXZ @ 6 NONAME ; int CGlxTv::IsWidescreen(void) const
-	?ShiftToPostingMode@CGlxHdmiController@@QAEXXZ @ 7 NONAME ; void CGlxHdmiController::ShiftToPostingMode(void)
-	?ShiftToCloningMode@CGlxHdmiController@@QAEXXZ @ 8 NONAME ; void CGlxHdmiController::ShiftToCloningMode(void)
-	?NewL@CGlxTv@@SAPAV1@AAVMGlxTvObserver@@@Z @ 9 NONAME ; class CGlxTv * CGlxTv::NewL(class MGlxTvObserver &)
-	?IsConnected@CGlxTv@@QBEHXZ @ 10 NONAME ; int CGlxTv::IsConnected(void) const
-	?IsVideo@CGlxHdmiController@@QAEXXZ @ 11 NONAME ; void CGlxHdmiController::IsVideo(void)
-	?IsHDMIConnected@CGlxTv@@QBEHXZ @ 12 NONAME ; int CGlxTv::IsHDMIConnected(void) const
-	?ActivateZoom@CGlxHdmiController@@QAEXXZ @ 13 NONAME ; void CGlxHdmiController::ActivateZoom(void)
-	?DeactivateZoom@CGlxHdmiController@@QAEXXZ @ 14 NONAME ; void CGlxHdmiController::DeactivateZoom(void)
+	?IsHDMIConnected@CGlxHdmiController@@QAEHXZ @ 7 NONAME ; int CGlxHdmiController::IsHDMIConnected(void)
+	?ShiftToPostingMode@CGlxHdmiController@@QAEXXZ @ 8 NONAME ; void CGlxHdmiController::ShiftToPostingMode(void)
+	?ShiftToCloningMode@CGlxHdmiController@@QAEXXZ @ 9 NONAME ; void CGlxHdmiController::ShiftToCloningMode(void)
+	?SetImageL@CGlxHdmiController@@QAEXABVTDesC16@@H@Z @ 10 NONAME ; void CGlxHdmiController::SetImageL(class TDesC16 const &, int)
+	?NewL@CGlxTv@@SAPAV1@AAVMGlxTvObserver@@@Z @ 11 NONAME ; class CGlxTv * CGlxTv::NewL(class MGlxTvObserver &)
+	?IsConnected@CGlxTv@@QBEHXZ @ 12 NONAME ; int CGlxTv::IsConnected(void) const
+	?ItemNotSupported@CGlxHdmiController@@QAEXXZ @ 13 NONAME ; void CGlxHdmiController::ItemNotSupported(void)
+	?IsHDMIConnected@CGlxTv@@QBEHXZ @ 14 NONAME ; int CGlxTv::IsHDMIConnected(void) const
+	?DeactivateZoom@CGlxHdmiController@@QAEXXZ @ 15 NONAME ; void CGlxHdmiController::DeactivateZoom(void)
 
--- a/tvout/eabi/glxtvoutu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/eabi/glxtvoutu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -1,28 +1,29 @@
 EXPORTS
-	_ZN18CGlxHdmiController12ActivateZoomEv @ 1 NONAME
+	_ZN18CGlxHdmiController12ActivateZoomEi @ 1 NONAME
 	_ZN18CGlxHdmiController14DeactivateZoomEv @ 2 NONAME
-	_ZN18CGlxHdmiController18ShiftToCloningModeEv @ 3 NONAME
-	_ZN18CGlxHdmiController18ShiftToPostingModeEv @ 4 NONAME
-	_ZN18CGlxHdmiController4NewLEv @ 5 NONAME
-	_ZN18CGlxHdmiController7IsVideoEv @ 6 NONAME
-	_ZN18CGlxHdmiController9SetImageLERK7TDesC165TSizeii @ 7 NONAME
-	_ZN18CGlxHdmiControllerD0Ev @ 8 NONAME
-	_ZN18CGlxHdmiControllerD1Ev @ 9 NONAME
-	_ZN18CGlxHdmiControllerD2Ev @ 10 NONAME
-	_ZN6CGlxTv4NewLER14MGlxTvObserver @ 11 NONAME
-	_ZN6CGlxTvD0Ev @ 12 NONAME
-	_ZN6CGlxTvD1Ev @ 13 NONAME
-	_ZN6CGlxTvD2Ev @ 14 NONAME
-	_ZNK6CGlxTv11IsConnectedEv @ 15 NONAME
-	_ZNK6CGlxTv11ScreenSizeLEv @ 16 NONAME
-	_ZNK6CGlxTv12IsWidescreenEv @ 17 NONAME
-	_ZNK6CGlxTv15IsHDMIConnectedEv @ 18 NONAME
-	_ZTI17CGlxHdmiContainer @ 19 NONAME
-	_ZTI17CGlxHdmiDecoderAO @ 20 NONAME
-	_ZTI18CGlxHdmiController @ 21 NONAME
-	_ZTI22CGlxHdmiSurfaceUpdater @ 22 NONAME
-	_ZTV17CGlxHdmiContainer @ 23 NONAME
-	_ZTV17CGlxHdmiDecoderAO @ 24 NONAME
-	_ZTV18CGlxHdmiController @ 25 NONAME
-	_ZTV22CGlxHdmiSurfaceUpdater @ 26 NONAME
+	_ZN18CGlxHdmiController15IsHDMIConnectedEv @ 3 NONAME
+	_ZN18CGlxHdmiController16ItemNotSupportedEv @ 4 NONAME
+	_ZN18CGlxHdmiController18ShiftToCloningModeEv @ 5 NONAME
+	_ZN18CGlxHdmiController18ShiftToPostingModeEv @ 6 NONAME
+	_ZN18CGlxHdmiController4NewLEv @ 7 NONAME
+	_ZN18CGlxHdmiController9SetImageLERK7TDesC16i @ 8 NONAME
+	_ZN18CGlxHdmiControllerD0Ev @ 9 NONAME
+	_ZN18CGlxHdmiControllerD1Ev @ 10 NONAME
+	_ZN18CGlxHdmiControllerD2Ev @ 11 NONAME
+	_ZN6CGlxTv4NewLER14MGlxTvObserver @ 12 NONAME
+	_ZN6CGlxTvD0Ev @ 13 NONAME
+	_ZN6CGlxTvD1Ev @ 14 NONAME
+	_ZN6CGlxTvD2Ev @ 15 NONAME
+	_ZNK6CGlxTv11IsConnectedEv @ 16 NONAME
+	_ZNK6CGlxTv11ScreenSizeLEv @ 17 NONAME
+	_ZNK6CGlxTv12IsWidescreenEv @ 18 NONAME
+	_ZNK6CGlxTv15IsHDMIConnectedEv @ 19 NONAME
+	_ZTI17CGlxHdmiContainer @ 20 NONAME
+	_ZTI17CGlxHdmiDecoderAO @ 21 NONAME
+	_ZTI18CGlxHdmiController @ 22 NONAME
+	_ZTI22CGlxHdmiSurfaceUpdater @ 23 NONAME
+	_ZTV17CGlxHdmiContainer @ 24 NONAME
+	_ZTV17CGlxHdmiDecoderAO @ 25 NONAME
+	_ZTV18CGlxHdmiController @ 26 NONAME
+	_ZTV22CGlxHdmiSurfaceUpdater @ 27 NONAME
 
--- a/tvout/inc/glxactivedecoder.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/inc/glxactivedecoder.h	Fri Apr 16 14:58:46 2010 +0300
@@ -33,10 +33,8 @@
     /*
      * NewL()
      * @Param1 CGlxHdmiSurfaceUpdater
-     * @param2 framecount
      */
-    static CGlxHdmiDecoderAO* NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater,
-            TInt aFrameCount);
+    static CGlxHdmiDecoderAO* NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater);
     
     /*
      * Destructor
@@ -47,25 +45,24 @@
      * ConvertImageL() 
      * This calls the asyncronous service request to ICL convert
      * @param1 - Destination Bitmap
-     * @param2 - Framecount
-     * @param3 - Image decoder 
+     * @param2 - Image decoder 
      */
-    void ConvertImageL(CFbsBitmap& iBitmap, TInt aFrameNum,CImageDecoder* aDecoder);
+    void ConvertImageL(CFbsBitmap& iBitmap,CImageDecoder* aDecoder);
+    
 protected:
     // from CActive
     void RunL();
     void DoCancel();
+    
 private:
     /*
      * Constructor
      */
-    CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater,TInt aFrameCount);
+    CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater);
 
 private:
     CGlxHdmiSurfaceUpdater* iHdmiSurfaceUpdater; // not owned
     CImageDecoder* iDecoder;
-    TInt iFrameCount;
-    TInt iDecodeCount;
     };
 
 #endif /* GLXACTIVEDECODER_H_ */
--- a/tvout/inc/glxhdmicontroller.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/inc/glxhdmicontroller.h	Fri Apr 16 14:58:46 2010 +0300
@@ -46,21 +46,18 @@
     /*
      * Update Image
      * @param1 - Image file path
-     * @param2 - Image dimensions
-     * @param3 - frame count
      */
-    IMPORT_C void SetImageL(const TDesC& aImageFile,TSize aImageDimensions, 
-            TInt aFrameCount = 1, TBool aStore = ETrue);
+    IMPORT_C void SetImageL(const TDesC& aImageFile, TBool aStore = ETrue);
 
     /*
-     * To Determine it is a video and not image 
+     * To intimate that the item is not supported.  
      */
-    IMPORT_C void IsVideo();
+    IMPORT_C void ItemNotSupported();
     
     /*
      * Activating zoom in posting mode 
      */
-    IMPORT_C void ActivateZoom();
+    IMPORT_C void ActivateZoom(TBool aAutoZoomOut);
     /*
      * Deactivating zoom in posting mode 
      */
@@ -76,6 +73,11 @@
      */
     IMPORT_C void ShiftToPostingMode();
 
+    /*
+     * Tells if HDMi is Connected.
+     */
+    IMPORT_C TBool IsHDMIConnected();
+
 private:// From MGlxTvObserver
     virtual void HandleTvStatusChangedL ( TTvChangeType aChangeType );
 
@@ -97,12 +99,9 @@
     
     /*
      * Create surface updater and update background surface 
-     * @param1 - Image file
-     * @param2 - Image dimensions
-     * @param3 - framecount
+     * @param1 - Image file     
      */
-    void CreateSurfaceUpdaterL(const TDesC& aImageFile, TSize aImageDimensions, 
-            TInt aFrameCount);
+    void CreateSurfaceUpdaterL(const TDesC& aImageFile);
     
     /*
      * To Destroy the surface updater if present
@@ -115,16 +114,14 @@
     void DestroyContainer();
 
     /*
-     * 
+     * Stores the Image File name
+     * @param1 - Image file
      */
-    void StoreImageInfoL(const TDesC& aImageFile,
-            TSize aImageDimensions, TInt aFrameCount);
+    void StoreImageInfoL(const TDesC& aImageFile);
 
 private:
     HBufC*  iStoredImagePath;
-    TSize   iImageDimensions; 
-    TInt    iFrameCount;
-
+    
     CGlxHdmiContainer*      iHdmiContainer;
     CGlxHdmiSurfaceUpdater* iSurfaceUpdater;
     CGlxTv*  iGlxTvOut;
--- a/tvout/inc/glxhdmisurfaceupdater.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/inc/glxhdmisurfaceupdater.h	Fri Apr 16 14:58:46 2010 +0300
@@ -42,12 +42,13 @@
      * 
      */
     static CGlxHdmiSurfaceUpdater* NewL(RWindow* aWindow, const TDesC& aImageFile, 
-            TSize aImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack);
+                                         MGlxGenCallback* aCallBack);
     
     /*
      * destructor
      */
     ~CGlxHdmiSurfaceUpdater();
+    
 public:
     /*
      * This is to cancel the active object from decoding 
@@ -57,13 +58,12 @@
     /*
      * This updates the new image.
      */
-    void UpdateNewImageL(const TDesC& aImageFile, 
-            TInt aFrameCount,TSize aImageDimensions);
+    void UpdateNewImageL(const TDesC& aImageFile);
     
     /*
      * Activate Zoom 
      */
-    void ActivateZoom();
+    void ActivateZoom(TBool aAutoZoomOut);
     /*
     * Deactivate Zoom 
     */
@@ -88,12 +88,12 @@
      * Ctor 
      */
     CGlxHdmiSurfaceUpdater(RWindow* aWindow, const TDesC& aImageFile,
-            TSize aOrigImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack);
+                            MGlxGenCallback* aCallBack);
     
     /*
      * ConstructL()
      */
-    void ConstructL(TSize aImageDimensions);   
+    void ConstructL();   
     
     /*
      * Create a New surface with given size
@@ -123,7 +123,7 @@
     /*
      * Create bitmap  
      */
-    void CreateBitmapAndStartDecodingL();
+    void CreateBitmapL();
     
     /*
      * Create an image decoder with given file
@@ -144,23 +144,9 @@
 	* ModifySurface positions of the surface to be displayed on screen
 	*/
 	void ModifySurfacePostion();
-	
-    static TInt TimerCallbackL(TAny* aThis);
-    
-    /*
-     * 
-     */
-    void ProcessTimerEventL();
-
-    /*
-	 * 
-	 */
-	void ProcessTvImageL();
 private:
     RWindow* iWindow;
     const TDesC& iImagePath;
-    TSize iOrigImageDimensions;
-    TInt iFrameCount;
     MGlxGenCallback* iCallBack;
 
     // GCE Surface
@@ -172,7 +158,7 @@
     TSurfaceConfiguration   iConfig;                // surface configuration for zoom
     
     TSize               iZoomRectSz ;
-    CFbsBitmap*         iDecodedBitmap[15];             //Decoded bitmap of the focussed image
+    CFbsBitmap*         iDecodedBitmap;             //Decoded bitmap of the focussed image
     
     void*               iSurfBuffer;               // Surface buffer
     CGlxActiveCallBack* iSurfBufferAO;             // Surface buffer AO 
@@ -180,14 +166,14 @@
     //ICL
     CGlxHdmiDecoderAO*  iGlxDecoderAO;              // Internal Image decoder AO              
     CImageDecoder*      iImageDecoder;              // Image Decoder
-    TInt                iAnimCount;                 // animation count
     RFs                 iFsSession;                 // RFs
     
     TPoint iLeftCornerForZoom;
     CPeriodic* iTimer;
-    CPeriodic* iAnimationTimer;
     TBool iZoom;
 	TBool iBitmapReady;
+	TBool iAutoZoomOut;
+	TBool iSurfSessionConnected;
 #ifdef _DEBUG
     TTime iStartTime;
     TTime iStopTime;
--- a/tvout/src/glxactivedecoder.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/src/glxactivedecoder.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -22,24 +22,20 @@
 // -----------------------------------------------------------------------------
 // NewL
 // -----------------------------------------------------------------------------
-CGlxHdmiDecoderAO* CGlxHdmiDecoderAO::NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater,
-        TInt aFrameCount)
+CGlxHdmiDecoderAO* CGlxHdmiDecoderAO::NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater)
     {
     TRACER("CGlxHdmiDecoderAO::NewL()");
-    CGlxHdmiDecoderAO* self = new (ELeave) CGlxHdmiDecoderAO(aHdmiSurfaceUpdater, 
-                                                                        aFrameCount);
+    CGlxHdmiDecoderAO* self = new (ELeave) CGlxHdmiDecoderAO(aHdmiSurfaceUpdater);
     return self;
     }
     
 // -----------------------------------------------------------------------------
 // CGlxHdmiDecoderAO()
 // -----------------------------------------------------------------------------
-CGlxHdmiDecoderAO::CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater,
-        TInt aFrameCount):CActive(CActive::EPriorityStandard-1),
-    iHdmiSurfaceUpdater(aHdmiSurfaceUpdater), iFrameCount(aFrameCount)
+CGlxHdmiDecoderAO::CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater):
+    CActive(CActive::EPriorityStandard-1),iHdmiSurfaceUpdater(aHdmiSurfaceUpdater)
     {
     TRACER("CGlxHdmiDecoderAO::CGlxHdmiDecoderAO()");
-    iDecodeCount = 0;
     CActiveScheduler::Add(this);
     }
 
@@ -83,18 +79,12 @@
 // -----------------------------------------------------------------------------
 // ConvertImageL
 // -----------------------------------------------------------------------------
-void CGlxHdmiDecoderAO::ConvertImageL(CFbsBitmap& aBitmap, TInt aFrameNum,
-        CImageDecoder* aDecoder)
+void CGlxHdmiDecoderAO::ConvertImageL(CFbsBitmap& aBitmap,
+                                       CImageDecoder* aDecoder)
     {
     TRACER("CGlxHdmiDecoderAO::ConvertImageL()");
-    if (iDecoder)
-        {
-        GLX_LOG_INFO("CGlxHdmiDecoderAO::ConvertImageL() -1");
-        iDecoder = NULL;
-        }
     iDecoder = aDecoder;
-    GLX_LOG_INFO1("CGlxHdmiDecoderAO::ConvertImageL() FrameNo=%d",aFrameNum);
-    iDecoder->Convert(&iStatus,aBitmap, aFrameNum); 
+    iDecoder->Convert(&iStatus,aBitmap); 
     SetActive();
     }
     
--- a/tvout/src/glxhdmicontroller.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/src/glxhdmicontroller.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -59,35 +59,34 @@
 // Setting an Image Path 
 // -----------------------------------------------------------------------------
 EXPORT_C void CGlxHdmiController::SetImageL(const TDesC& aImageFile,
-        TSize aImageDimensions, TInt aFrameCount, TBool aStore)
+                                             TBool aStore)
     {
     TRACER("CGlxHdmiController::SetImageL()");
-    GLX_LOG_INFO2("CGlxHdmiController::SetImageL() - imagedimension width=%d, height=%d",aImageDimensions.iWidth,aImageDimensions.iHeight);
     if (aStore)
         {
         iIsImageSupported = ETrue;
-        StoreImageInfoL(aImageFile, aImageDimensions, aFrameCount);
+        StoreImageInfoL(aImageFile);
         }
     if (iGlxTvOut->IsHDMIConnected())
         {
 		iIsPostingMode = ETrue;
-        GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
-        // do not close the surface , use the same surface instead.
-        // Call a function to pass imagefile, imagedimension, framecount
-        if (!iHdmiContainer)
-            {
-            CreateHdmiContainerL(); 
-            }            
-        if (!iSurfaceUpdater)
-            {
-            // This case would come when surface updater is not created at the first instance and also
-            // it satisfies the 720p condition                
-            CreateSurfaceUpdaterL(aImageFile, aImageDimensions, aFrameCount);
-            }
-        else
-            {
-            GLX_LOG_INFO1("CGlxHdmiController::SetImageL() FrameCount =%d",aFrameCount);
-            iSurfaceUpdater->UpdateNewImageL(aImageFile, aFrameCount,aImageDimensions);
+            GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
+            // do not close the surface , use the same surface instead.
+            // Call a function to pass imagefile
+            if (!iHdmiContainer)
+                {            
+                CreateHdmiContainerL(); 
+                }            
+            if (!iSurfaceUpdater)
+                {
+                // This case would come when surface updater is not created at the first instance and also
+                // it satisfies the 720p condition                
+                CreateSurfaceUpdaterL(aImageFile);
+                }
+            else
+                {
+            GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
+            iSurfaceUpdater->UpdateNewImageL(aImageFile);
             }
         iHdmiContainer->DrawNow();
         }
@@ -96,7 +95,7 @@
 // -----------------------------------------------------------------------------
 // IsVideo 
 // -----------------------------------------------------------------------------
-EXPORT_C void CGlxHdmiController::IsVideo()
+EXPORT_C void CGlxHdmiController::ItemNotSupported()
     {
     TRACER("CGlxHdmiController::IsVideo()");
     iIsImageSupported = EFalse;
@@ -110,12 +109,12 @@
 // -----------------------------------------------------------------------------
 // ActivateZoom 
 // -----------------------------------------------------------------------------
-EXPORT_C void CGlxHdmiController::ActivateZoom()
+EXPORT_C void CGlxHdmiController::ActivateZoom(TBool aAutoZoomOut)
     {
     TRACER("CGlxHdmiController::ActivateZoom()");
     if (iGlxTvOut->IsHDMIConnected())
         {
-        iSurfaceUpdater->ActivateZoom();
+        iSurfaceUpdater->ActivateZoom(aAutoZoomOut);
         }
     }
 
@@ -137,10 +136,10 @@
 EXPORT_C void CGlxHdmiController::ShiftToCloningMode()
     {
     TRACER("CGlxHdmiController::ShiftToCloningMode()");
+    iIsPostingMode = EFalse;
     if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
         {
         iSurfaceUpdater->ShiftToCloningMode();
-		iIsPostingMode = EFalse;
         }
     }
 
@@ -150,10 +149,10 @@
 EXPORT_C void CGlxHdmiController::ShiftToPostingMode()
     {
     TRACER("CGlxHdmiController::ShiftToPostingMode()");
+    iIsPostingMode = ETrue;
     if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
         {
         iSurfaceUpdater->ShiftToPostingMode();
-		iIsPostingMode = ETrue;
         }
     }
 
@@ -217,21 +216,19 @@
 // -----------------------------------------------------------------------------
 // CreateSurfaceUpdaterL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile, 
-        TSize aImageDimensions, TInt aFrameCount)
+void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile)
     {
     TRACER("CGlxHdmiController::CreateSurfaceUpdater()");
     RWindow* window = iHdmiContainer->GetWindow();
-    iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, aImageDimensions, 
-            aFrameCount, iHdmiContainer);
+    iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, 
+                                                    iHdmiContainer);
     iHdmiContainer->DrawNow();
     }
 
 // -----------------------------------------------------------------------------
 // StoreImageInfoL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile,
-        TSize aImageDimensions, TInt aFrameCount)
+void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile)
     {
     TRACER("CGlxHdmiController::StoreImageInfoL()");
     if(iStoredImagePath)
@@ -240,9 +237,6 @@
         iStoredImagePath = NULL;
         }
     iStoredImagePath = aImageFile.AllocL();
-    iImageDimensions = aImageDimensions;
-    iFrameCount = aFrameCount;
-    GLX_LOG_INFO1("CGlxHdmiController::StoreImageInfoL() FrameCount =%d",iFrameCount);
     }
 
 // -----------------------------------------------------------------------------
@@ -257,7 +251,7 @@
             {
             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected");
             // Calling SetImageL() with appropriate parameters
-            SetImageL(iStoredImagePath->Des(), iImageDimensions, iFrameCount, EFalse);
+            SetImageL(iStoredImagePath->Des(), EFalse);
             }
         else
             {
@@ -268,3 +262,12 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+// HandleTvStatusChangedL 
+// -----------------------------------------------------------------------------
+EXPORT_C TBool CGlxHdmiController::IsHDMIConnected()
+    {
+    TRACER("CGlxHdmiController::IsHDMIConnected()");
+    return iGlxTvOut->IsHDMIConnected(); 
+    }
+
--- a/tvout/src/glxhdmisurfaceupdater.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/src/glxhdmisurfaceupdater.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -38,19 +38,17 @@
 const TInt KMaxZoomLimit = 100;
 //evey time we zoom , there is a increase in the ht amd width by 10 pixels.
 const TInt KSingleStepForZoom = 10;
-
-const TInt KSleepTime = 50*1000; // 100 ms
 // -----------------------------------------------------------------------------
 // NewLC
 // -----------------------------------------------------------------------------
 CGlxHdmiSurfaceUpdater* CGlxHdmiSurfaceUpdater::NewL(RWindow* aWindow, const TDesC& aImageFile, 
-        TSize aImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack)
+                                                      MGlxGenCallback* aCallBack)
     {
     TRACER("CGlxHdmiSurfaceUpdater* CGlxHdmiSurfaceUpdater::NewL()");
     CGlxHdmiSurfaceUpdater* self = new (ELeave) CGlxHdmiSurfaceUpdater(aWindow, aImageFile,
-            aImageDimensions, aFrameCount, aCallBack);
+                                                                    aCallBack);
     CleanupStack::PushL(self);
-    self->ConstructL(aImageDimensions);
+    self->ConstructL();
     CleanupStack::Pop(self);
     return self;
     }
@@ -80,7 +78,10 @@
     if (iSurfManager)
         {
         GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::~CGlxHdmiSurfaceUpdater() - Close"); 
-        iSurfUpdateSession.Close();
+        if(iSurfSessionConnected)
+            {
+            iSurfUpdateSession.Close();
+            }
         if (iSurfChunk)
             {
             iSurfChunk->Close();
@@ -106,37 +107,37 @@
         {
         iGlxDecoderAO->Cancel();
         }
-    // Delete the animation timer
-    if(iAnimationTimer && iAnimationTimer->IsActive())
-        {
-        iAnimationTimer->Cancel();
-        delete iAnimationTimer;   
-        }
-    for (TInt i=0; i<= iFrameCount-1; i++)
+    
+    if ( iDecodedBitmap )
         {
-        GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ReleaseContent(). Releasing AnimBitmaps %d", i);
-        delete(iDecodedBitmap[i]);
-        iDecodedBitmap[i] = NULL;
+        delete iDecodedBitmap;
+        iDecodedBitmap= NULL;
         }
-    if ( iSurfBufferAO->IsActive() )
+    
+    if(iSurfBufferAO && iSurfBufferAO->IsActive())
         {
-        iSurfBufferAO->Cancel();        
+		iSurfBufferAO->Cancel();
         }
+    
     if ( iImageDecoder )
         {
         delete iImageDecoder;
         iImageDecoder = NULL;    
         }
-    iSurfUpdateSession.CancelAllUpdateNotifications();
+    
+    if (iSurfSessionConnected &&  iSurfManager)
+        {
+        iSurfUpdateSession.CancelAllUpdateNotifications();
+        }
     }
 
 // -----------------------------------------------------------------------------
 // CTor 
 // -----------------------------------------------------------------------------
-CGlxHdmiSurfaceUpdater::CGlxHdmiSurfaceUpdater(RWindow* aWindow, const TDesC& aImageFile, 
-        TSize aOrigImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack): 
-        iWindow(aWindow), iImagePath(aImageFile), iOrigImageDimensions(aOrigImageDimensions),
-        iFrameCount(aFrameCount ),iCallBack(aCallBack)
+CGlxHdmiSurfaceUpdater::CGlxHdmiSurfaceUpdater(RWindow* aWindow, 
+                          const TDesC& aImageFile, MGlxGenCallback* aCallBack): 
+                          iWindow(aWindow), iImagePath(aImageFile), 
+                          iCallBack(aCallBack)
     {
     TRACER("CGlxHdmiSurfaceUpdater::CGlxHdmiSurfaceUpdater()");
     // Implement nothing here
@@ -145,30 +146,30 @@
 // -----------------------------------------------------------------------------
 // ConstructL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::ConstructL(TSize /*aImageDimensions*/)
+void CGlxHdmiSurfaceUpdater::ConstructL()
     {
     TRACER("CGlxHdmiSurfaceUpdater::ConstructL()");
     TInt error = iFsSession.Connect ();
-    if ( KErrNone!= iFsSession.Connect () )
-        {
-        User::LeaveIfError(error);
-        }
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() FsSession Connect error = %d", error);
+    User::LeaveIfError(error);
+    
     iBitmapReady = EFalse;
-    iAnimCount = 0;
     // Create the active object
-    iGlxDecoderAO = CGlxHdmiDecoderAO::NewL(this, iFrameCount);
+    iGlxDecoderAO = CGlxHdmiDecoderAO::NewL(this);
     CreateImageDecoderL(iImagePath);
-    CreateBitmapAndStartDecodingL();
+    CreateBitmapL();
     CreateHdmiL();
     error = iSurfUpdateSession.Connect();
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() Surface update Session Connect error = %d", error);
+    User::LeaveIfError(error);
+    iSurfSessionConnected = ETrue;
+    
 #ifdef _DEBUG
     iStartTime.HomeTime();
 #endif
-    if (KErrNone !=error)
-        {
-        GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() Surface update Session Connect Failed with error = %d", error);
-        User::LeaveIfError(error);
-        }
+    //start decoding the image    
+    iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder);    
+    
     iLeftCornerForZoom.iX = 0; 
     iLeftCornerForZoom.iY = 0;
     iTimer = CPeriodic::NewL( CActive::EPriorityStandard );
@@ -178,23 +179,28 @@
 // -----------------------------------------------------------------------------
 // UpdateNewImageL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::UpdateNewImageL(const TDesC& aImageFile, 
-        TInt aFrameCount,TSize aImageDimensions)
+void CGlxHdmiSurfaceUpdater::UpdateNewImageL(const TDesC& aImageFile)
     {
     TRACER("CGlxHdmiSurfaceUpdater::UpdateNewImageL()");
-    // First release the contents before proceeding further
-    ReleaseContent();   
-    iOrigImageDimensions = aImageDimensions;
-    iFrameCount = aFrameCount;
+	//Cancel the zoom timers if any
+	if(iTimer->IsActive())
+        {
+		GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::UpdateNewImageL() - Cancel Timer");
+        iTimer->Cancel();
+        }
+    
 	iBitmapReady = EFalse;
-	iAnimCount = 0;
-	
+	iLeftCornerForZoom.iX = 0; 
+	iLeftCornerForZoom.iY = 0;
+    ReleaseContent();   
     CreateImageDecoderL(aImageFile);    
-    CreateBitmapAndStartDecodingL();
+    CreateBitmapL();
     CreateHdmiL(EFalse);
 #ifdef _DEBUG
     iStartTime.HomeTime();
 #endif
+    //start decoding the image
+    iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder);
     }
 
 // -----------------------------------------------------------------------------
@@ -228,11 +234,9 @@
     TSize surfaceSize = iWindow->Size();   // create surface of the screen size, i.e 1280x720
     iSurfManager = new(ELeave) RSurfaceManager();
     TInt error = iSurfManager->Open();
-    if (error != KErrNone)
-        {
-        GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL Open Surface manager failed with error = %d", error);
-        User::LeaveIfError(error);
-        }
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL Open Surface manager error = %d", error);
+    User::LeaveIfError(error);
+    
     RSurfaceManager::TSurfaceCreationAttributesBuf attributes;
     attributes().iPixelFormat           = EUidPixelFormatARGB_8888;// EUidPixelFormatYUV_420Planar;
     attributes().iSize                  = surfaceSize;
@@ -244,11 +248,9 @@
     attributes().iMappable              = ETrue;
         
     error = iSurfManager->CreateSurface(attributes, iSurfId);
-    if(error)
-        {
-        GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL, Creating surface failed with error : %d",error);
-        User::LeaveIfError(error);
-        }    
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL, Creating surface error : %d",error);
+    User::LeaveIfError(error);
+        
     //Map the surface and stride the surface info
     MapSurfaceL();
     // Set the Configuration to the surface ID when creating a surface
@@ -266,17 +268,17 @@
     iSurfChunk = new(ELeave) RChunk();
     User::LeaveIfNull(iSurfChunk);    
     TInt error = iSurfManager->MapSurface(iSurfId, *iSurfChunk);
-    if(error!=KErrNone)
-        {
-        GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL(), MapSurface Failed wint error : %d",error);
-        }  
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::MapSurfaceL(), MapSurface error : %d",error);
+    User::LeaveIfError(error);
     
     // Get the info from the surfaceManager
     // and store pointers to the pixel data
     RSurfaceManager::TInfoBuf info;
-    error = iSurfManager->SurfaceInfo(iSurfId, info);    
-    iSurfaceStride = info().iStride;
+    error = iSurfManager->SurfaceInfo(iSurfId, info);
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::MapSurfaceL(), SurfaceInfo error : %d",error);
     User::LeaveIfError(error);  
+    
+    iSurfaceStride = info().iStride;    
     TInt offset = 0;
     iSurfManager->GetBufferOffset( iSurfId, 0,offset);
     iSurfBuffer = iSurfChunk->Base()+offset;
@@ -297,12 +299,6 @@
 void CGlxHdmiSurfaceUpdater::Refresh()
     {
     TRACER("CGlxHdmiSurfaceUpdater::Refresh()");
-    // Advance animation
-    // if the animation count is becoming maximum [8], then set it to zero, 
-    // such that it can animate again frm begining
-    if (++iAnimCount >= iFrameCount)
-        iAnimCount = 0; 
-    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::Refresh() animCOunt = %d",iAnimCount);
     // copy the decoded bitmap on to the surface
     SwapBuffers();   
     // Modify the surface position with respect to the buffer size 
@@ -319,15 +315,15 @@
 void CGlxHdmiSurfaceUpdater::SwapBuffers()
     {
     TRACER("CGlxHdmiSurfaceUpdater::SwapBuffers()"); 
-    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::SwapBuffers() animCOunt = %d",iAnimCount);
+      
     // Lock the heap so that subsequent call to dataaddress doesnt happen
-    iDecodedBitmap[iAnimCount]->LockHeap();    
+    iDecodedBitmap->LockHeap();    
     
     // Data stride
-    TUint fs = iDecodedBitmap[iAnimCount]->DataStride();    
+    TUint fs = iDecodedBitmap->DataStride();    
     
     //Bitmap address from where the data has to be copied.
-    TUint8* from = (TUint8*)iDecodedBitmap[iAnimCount]->DataAddress();
+    TUint8* from = (TUint8*)iDecodedBitmap->DataAddress();
     
     //surface chunk address to where the bitmap data has to be copied.
     TUint8* to = (TUint8*)iSurfBuffer;    
@@ -335,70 +331,53 @@
     // To buffer (32 bit colors)
     TUint ts = iSurfaceStride;
     //No of bytes to be copied on to the surface.
-    TUint bytes = iDecodedBitmap[iAnimCount]->SizeInPixels().iWidth * KMulFactorToCreateBitmap;
+    TUint bytes = iDecodedBitmap->SizeInPixels().iWidth * KMulFactorToCreateBitmap;
     
     GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::SwapBuffers() - decodeSize width = %d and height %d",
-            iDecodedBitmap[iAnimCount]->SizeInPixels().iWidth, iDecodedBitmap[iAnimCount]->SizeInPixels().iHeight );
+            iDecodedBitmap->SizeInPixels().iWidth, iDecodedBitmap->SizeInPixels().iHeight );
     
     // Copy the bitmap on to the surface.
-    for (TInt y = iDecodedBitmap[iAnimCount]->SizeInPixels().iHeight; y >0; y--)
+    for (TInt y = iDecodedBitmap->SizeInPixels().iHeight; y >0; y--)
         {
         Mem::Copy(to, from, bytes);        
         to += ts;        
         from += fs;        
         }            
-    iDecodedBitmap[iAnimCount]->UnlockHeap();
+    iDecodedBitmap->UnlockHeap();
     }
 
 // -----------------------------------------------------------------------------
 // CreateBitmapL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL()
+void CGlxHdmiSurfaceUpdater::CreateBitmapL()
     {
-    TRACER("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL()");
+    TRACER("CGlxHdmiSurfaceUpdater::CreateBitmapL()");
     TSize scrnSize = iWindow->Size();
     TSize targetBitmapSize;
-    if (iFrameCount>1)
-        {
-        iAnimationTimer = CPeriodic::NewL( CActive::EPriorityLow );
-        }
-
-//    if (iFrameCount >1)
-//        {
-//        // For Gif images , use the same size of its dimensions, as Image decoder wont decode to different size.
-//        GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() -1");
-//        targetBitmapSize = iOrigImageDimensions;
-//        }
-//    else
-//        {
-        // for all other images, re calculate the size of the image based on aspect ratio and fit the screen
-        GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() -2");
-        GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() - bitmapsize=%d, %d",iOrigImageDimensions.iWidth,iOrigImageDimensions.iHeight);
+    TSize imageSize = iImageDecoder->FrameInfo().iOverallSizeInPixels;
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - bitmapsize=%d, %d",imageSize.iWidth,imageSize.iHeight);
     TReal32 scaleFactor = 0.0f;
-    if (scrnSize.iWidth * iOrigImageDimensions.iHeight > scrnSize.iHeight
-            * iOrigImageDimensions.iWidth)
+    if (scrnSize.iWidth * imageSize.iHeight > scrnSize.iHeight
+            * imageSize.iWidth)
         {
         scaleFactor = (TReal32) scrnSize.iHeight
-                / (TReal32) iOrigImageDimensions.iHeight;
+                / (TReal32) imageSize.iHeight;
         }
     else
         {
         scaleFactor = (TReal32) scrnSize.iWidth
-                / (TReal32) iOrigImageDimensions.iWidth;
+                / (TReal32) imageSize.iWidth;
         }
-        GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() - scaleFactor=%f",scaleFactor);
-        targetBitmapSize.iHeight = iOrigImageDimensions.iHeight * scaleFactor;
-        targetBitmapSize.iWidth = iOrigImageDimensions.iWidth * scaleFactor;
-//        }
-    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() - targetBitmapSize=%d, %d",targetBitmapSize.iWidth,targetBitmapSize.iHeight);
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - scaleFactor=%f",scaleFactor);
+    targetBitmapSize.iHeight = imageSize.iHeight * scaleFactor;
+    targetBitmapSize.iWidth = imageSize.iWidth * scaleFactor;
+
+    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - targetBitmapSize=%d, %d",targetBitmapSize.iWidth,targetBitmapSize.iHeight);
     //create the bitmap for the required size
-    iDecodedBitmap[iAnimCount] = new (ELeave) CFbsBitmap();
+    iDecodedBitmap = new (ELeave) CFbsBitmap();
 
-    TInt err = iDecodedBitmap[iAnimCount]->Create(targetBitmapSize, EColor16MU);
-    User::LeaveIfNull(iDecodedBitmap[iAnimCount]);
-    GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() FrameCOunt = %d, AnimCOunt =%d",iFrameCount, iAnimCount);
-    //start decoding the image
-    iGlxDecoderAO->ConvertImageL(*iDecodedBitmap[iAnimCount],iAnimCount,iImageDecoder);
+    TInt err = iDecodedBitmap->Create(targetBitmapSize, EColor16MU);
+    User::LeaveIfNull(iDecodedBitmap);
     }
 
 // -----------------------------------------------------------------------------
@@ -408,98 +387,71 @@
     {
     TRACER("CGlxHdmiSurfaceUpdater::HandleRunL()");
 
-    if (iFrameCount >1 && iAnimCount !=iFrameCount-1)
+#ifdef _DEBUG
+    iStopTime.HomeTime();
+    GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() ConvertImageL took"
+            " <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
+#endif
+    if(aStatus.Int() !=KErrNone)
         {
-        GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::HandleRunL() - gif image - iAnimCount= %d,FrameCOunt =%d",iAnimCount,iFrameCount);
-        while(iAnimCount != iFrameCount-1 && !iGlxDecoderAO->IsActive())
-            {
-            iAnimCount++;
-            GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() - gif image - iAnimCount= %d",iAnimCount);
-            CreateBitmapAndStartDecodingL();
-            }
+        GLX_LOG_INFO("HandleRunL - Convert failed");
+        ShiftToCloningMode();
         }
     else
-        {
-#ifdef _DEBUG
-        iStopTime.HomeTime();
-        GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() ConvertImageL took"
-                " <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64());
-#endif
-        if(aStatus.Int() !=KErrNone)
+        {        
+        iZoomRectSz = iDecodedBitmap->SizeInPixels();
+        if (iSurfBufferAO->iStatus != KRequestPending
+                && !iSurfBufferAO->IsActive())
             {
-            GLX_LOG_INFO1("HandleRunL - Convert failed with error=%d",aStatus.Int());
-            ShiftToCloningMode();
+            Refresh();
+            iSurfBufferAO->iStatus = KRequestPending;
+            iSurfBufferAO->SetActive();
+            iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus);
+            TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL);
             }
-        else
-            {
-            iBitmapReady = ETrue;
-            iZoomRectSz = iDecodedBitmap[iAnimCount]->SizeInPixels();
-            ProcessTvImageL();
-            }
-        //release imagedecoder after the conversion is over     
-        if(iImageDecoder)
-            {
-            delete iImageDecoder;
-            iImageDecoder = NULL;    
-            }
+		iBitmapReady = ETrue;
+        }
+	//release imagedecoder after the conversion is over		
+    if(iImageDecoder)
+        {
+        delete iImageDecoder;
+        iImageDecoder = NULL;    
         }
     }
 
 // -----------------------------------------------------------------------------
 // CreateImageDecoderL 
 // -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::ProcessTvImageL()
-    {
-    TRACER("CGlxHdmiSurfaceUpdater::ProcessTvImageL()");
-    if (iSurfBufferAO->iStatus != KRequestPending
-            && !iSurfBufferAO->IsActive())
-        {
-        Refresh();
-        iSurfBufferAO->iStatus = KRequestPending;
-        iSurfBufferAO->SetActive();
-        iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus);
-        TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL);
-        // If the Animation framecount is more that 1, it means this is a gif image, 
-        // start the timer to refresh the TV 
-        if (iFrameCount>1)
-            {
-            GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ProcessTvImageL() :Gif Image, ANimCOUnt =%d",iAnimCount);
-            iAnimationTimer->Cancel();   
-
-            // Next frame
-            iAnimationTimer->Start(KSleepTime, KSleepTime, TCallBack(TimerCallbackL, this));       
-            }
-        }
-    }
-// -----------------------------------------------------------------------------
-// CreateImageDecoderL 
-// -----------------------------------------------------------------------------
 void CGlxHdmiSurfaceUpdater::CreateImageDecoderL(const TDesC& aImageFile)
     {
     TRACER("CGlxHdmiController::CreateImageDecoderL()");
      // Create a decoder for the image in the named file
     TRAPD(error,iImageDecoder = CImageDecoder::FileNewL(iFsSession, 
             aImageFile, CImageDecoder::EOptionNone, KNullUid));
-    if (error!=KErrNone)
-        {
-        User::Leave(error);
-        }
+    GLX_LOG_INFO1("CreateImageDecoderL CImageDecoder:FileNewL error %d",error);
+    User::LeaveIfError(error);
+    
     }
 
 // -----------------------------------------------------------------------------
 // ActivateZoom 
 // -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::ActivateZoom()
+void CGlxHdmiSurfaceUpdater::ActivateZoom(TBool aAutoZoomOut)
     {
     TRACER("CGlxHdmiSurfaceUpdater::ActivateZoom()");
     iZoom = ETrue;
-    if (!(iFrameCount >1))
+    iAutoZoomOut = aAutoZoomOut;
+    if(iTimer->IsActive())
         {
-        if(!iTimer->IsActive() && iBitmapReady)
-           {
-           iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this ));
-           }
+		GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::ActivateZoom() - Cancel Timer");
+        iTimer->Cancel();
         }
+    
+    if(!iTimer->IsActive() && iBitmapReady)
+       {
+	   GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::ActivateZoom() - Start Timer");
+       iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this ));
+       }
     }
 
 // -----------------------------------------------------------------------------
@@ -508,13 +460,18 @@
 void CGlxHdmiSurfaceUpdater::DeactivateZoom()
     {
     TRACER("CGlxHdmiSurfaceUpdater::DeactivateZoom()");
-    if(iDecodedBitmap[iAnimCount] && !(iFrameCount >1))
+    
+    if(iTimer->IsActive())
         {
-        TSize bitmapsize = iDecodedBitmap[iAnimCount]->SizeInPixels(); 
-        iConfig.SetViewport(TRect(0,0,bitmapsize.iWidth,bitmapsize.iHeight));
-        iConfig.SetExtent(TRect(0,0,bitmapsize.iWidth,bitmapsize.iHeight));
-        iWindow->SetBackgroundSurface(iConfig, ETrue);
+		GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::DeactivateZoom() - Cancel Timer");
+        iTimer->Cancel();
         }
+    if(!iTimer->IsActive() && iBitmapReady && iLeftCornerForZoom.iX)
+       {
+	   GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::DeactivateZoom() - Start Timer");
+	   iZoom = EFalse;
+       iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this ));
+       }
     }
 
 // ---------------------------------------------------------------------------
@@ -536,33 +493,26 @@
     }
 
 // -----------------------------------------------------------------------------
-// TimerCallbackL 
-// -----------------------------------------------------------------------------
-TInt CGlxHdmiSurfaceUpdater::TimerCallbackL(TAny* aThis)
-    {
-    TRACER("CGlxHdmiSurfaceUpdater::TimerCallbackL()");
-    static_cast<CGlxHdmiSurfaceUpdater*>(aThis)->ProcessTimerEventL();
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// ProcessTimerEventL 
-// -----------------------------------------------------------------------------
-void CGlxHdmiSurfaceUpdater::ProcessTimerEventL()
-    {
-    TRACER("CGlxHdmiSurfaceUpdater::ProcessTimerEventL()");
-    ProcessTvImageL();
-    }
-
-// -----------------------------------------------------------------------------
 // Zoom 
 // -----------------------------------------------------------------------------
 void CGlxHdmiSurfaceUpdater::Zoom(TBool aZoom)
     {
     TRACER("CGlxHdmiSurfaceUpdater::Zoom()");
+	
+	if(!iBitmapReady)
+		{
+		return;
+		}
+		
     if(iLeftCornerForZoom.iX == KMaxZoomLimit)
         {
         iZoom = EFalse;
+        //If autozoomout is not set then cancel the timer and do
+        //the zoom out on DeactivateZoom.
+        if(!iAutoZoomOut)
+            {
+            iTimer->Cancel();			
+            }
         }    
     if(aZoom && iZoom)
         {
@@ -598,7 +548,7 @@
 void CGlxHdmiSurfaceUpdater::ModifySurfacePostion()
 	{
 	TRACER("CGlxHdmiSurfaceUpdater::ModifySurfacePostion()");
-	TSize bitmapSize = iDecodedBitmap[iAnimCount]->SizeInPixels();
+	TSize bitmapSize = iDecodedBitmap->SizeInPixels();
 	TPoint startPoint(0,0);
 	if (bitmapSize.iWidth <KHdTvWidth)
 	    {
--- a/tvout/src/glxtv.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/src/glxtv.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -165,17 +165,6 @@
 #else
     iSettingsTVAspectRatio = 0;
 #endif
-	// Commenting out code for request notification as these doesnt work fine,
-	// would be soon updated with latest api's to support aspectration chnages.
-    // Request notification when the user changes cenrep values
-//    TInt err = iRepository.NotifyRequest( iSettingsTVAspectRatio, iStatus );
-//    if (!(KErrNone ==err ||KErrAlreadyExists  ==err))
-//        {
-//        RDebug::Printf("## Error code in CGlxTv::CGlxTvOutCenRepMonitor::ConstructL() is %d",err);
-//        User::Leave(err);
-//        }
-    
-//    SetActive();
     }
 
     
--- a/ui/commandhandlers/bwins/glxcommandhandlerbaseu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/bwins/glxcommandhandlerbaseu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -1,22 +1,38 @@
 EXPORTS
-	?HandleItemRemovedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 1 NONAME ; void GlxMpxCommandHandler::HandleItemRemovedL(int, int, class MGlxMediaList *)
-	?HandleMessageL@GlxMpxCommandHandler@@MAEXABVCMPXMedia@@PAVMGlxMediaList@@@Z @ 2 NONAME ; void GlxMpxCommandHandler::HandleMessageL(class CMPXMedia const &, class MGlxMediaList *)
-	?HandleItemSelectedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 3 NONAME ; void GlxMpxCommandHandler::HandleItemSelectedL(int, int, class MGlxMediaList *)
-	?CreateMediaListAlbumItemL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 4 NONAME ; void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int, int, enum TGlxFilterItemType)
-	??_EGlxCommandHandler@@UAE@I@Z @ 5 NONAME ; GlxCommandHandler::~GlxCommandHandler(unsigned int)
-	??1GlxCommandHandler@@UAE@XZ @ 6 NONAME ; GlxCommandHandler::~GlxCommandHandler(void)
-	??1GlxMpxCommandHandler@@UAE@XZ @ 7 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(void)
-	?executeCommand@GlxMpxCommandHandler@@UAEXHH@Z @ 8 NONAME ; void GlxMpxCommandHandler::executeCommand(int, int)
-	?HandleItemAddedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 9 NONAME ; void GlxMpxCommandHandler::HandleItemAddedL(int, int, class MGlxMediaList *)
-	?HandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 10 NONAME ; void GlxMpxCommandHandler::HandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
-	??0GlxCommandHandler@@QAE@XZ @ 11 NONAME ; GlxCommandHandler::GlxCommandHandler(void)
-	?HandleMediaL@GlxMpxCommandHandler@@MAEXHPAVMGlxMediaList@@@Z @ 12 NONAME ; void GlxMpxCommandHandler::HandleMediaL(int, class MGlxMediaList *)
-	??0GlxMpxCommandHandler@@QAE@XZ @ 13 NONAME ; GlxMpxCommandHandler::GlxMpxCommandHandler(void)
-	?CreateMediaListL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 14 NONAME ; void GlxMpxCommandHandler::CreateMediaListL(int, int, enum TGlxFilterItemType)
-	??_EGlxMpxCommandHandler@@UAE@I@Z @ 15 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(unsigned int)
-	?HandleItemModifiedL@GlxMpxCommandHandler@@MAEXABV?$RArray@H@@PAVMGlxMediaList@@@Z @ 16 NONAME ; void GlxMpxCommandHandler::HandleItemModifiedL(class RArray<int> const &, class MGlxMediaList *)
-	?DoHandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 17 NONAME ; void GlxMpxCommandHandler::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
+	?HandleItemSelectedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 1 NONAME ; void GlxMpxCommandHandler::HandleItemSelectedL(int, int, class MGlxMediaList *)
+	?CreateMediaListAlbumItemL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 2 NONAME ; void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int, int, enum TGlxFilterItemType)
+	??_EGlxCommandHandler@@UAE@I@Z @ 3 NONAME ; GlxCommandHandler::~GlxCommandHandler(unsigned int)
+	??1GlxCommandHandler@@UAE@XZ @ 4 NONAME ; GlxCommandHandler::~GlxCommandHandler(void)
+	?ConfirmationNoteL@GlxMpxCommandHandler@@ABE_NAAVMGlxMediaList@@@Z @ 5 NONAME ; bool GlxMpxCommandHandler::ConfirmationNoteL(class MGlxMediaList &) const
+	?executeCommand@GlxModelCommandHandler@@UAEXHHV?$QList@VQModelIndex@@@@@Z @ 6 NONAME ; void GlxModelCommandHandler::executeCommand(int, int, class QList<class QModelIndex>)
+	?CompletionNoteL@GlxMpxCommandHandler@@ABEXXZ @ 7 NONAME ; void GlxMpxCommandHandler::CompletionNoteL(void) const
+	?ProgressTextL@GlxMpxCommandHandler@@MBE?AVQString@@XZ @ 8 NONAME ; class QString GlxMpxCommandHandler::ProgressTextL(void) const
+	?HandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 9 NONAME ; void GlxMpxCommandHandler::HandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
+	?TryExitL@GlxMpxCommandHandler@@AAEXH@Z @ 10 NONAME ; void GlxMpxCommandHandler::TryExitL(int)
+	?HandleMediaL@GlxMpxCommandHandler@@MAEXHPAVMGlxMediaList@@@Z @ 11 NONAME ; void GlxMpxCommandHandler::HandleMediaL(int, class MGlxMediaList *)
+	?HandleErrorL@GlxMpxCommandHandler@@MAEXH@Z @ 12 NONAME ; void GlxMpxCommandHandler::HandleErrorL(int)
+	??0GlxModelCommandHandler@@QAE@XZ @ 13 NONAME ; GlxModelCommandHandler::GlxModelCommandHandler(void)
+	?ConfirmationNoteMultipleL@GlxMpxCommandHandler@@ABE_NAAVMGlxMediaList@@@Z @ 14 NONAME ; bool GlxMpxCommandHandler::ConfirmationNoteMultipleL(class MGlxMediaList &) const
+	?CreateMediaListL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 15 NONAME ; void GlxMpxCommandHandler::CreateMediaListL(int, int, enum TGlxFilterItemType)
+	?ConfirmationNoteSingleL@GlxMpxCommandHandler@@ABE_NAAVMGlxMediaList@@@Z @ 16 NONAME ; bool GlxMpxCommandHandler::ConfirmationNoteSingleL(class MGlxMediaList &) const
+	?CompletionTextL@GlxMpxCommandHandler@@MBE?AVQString@@XZ @ 17 NONAME ; class QString GlxMpxCommandHandler::CompletionTextL(void) const
 	?HandleFocusChangedL@GlxMpxCommandHandler@@MAEXW4TFocusChangeType@NGlxListDefs@@HHPAVMGlxMediaList@@@Z @ 18 NONAME ; void GlxMpxCommandHandler::HandleFocusChangedL(enum NGlxListDefs::TFocusChangeType, int, int, class MGlxMediaList *)
 	?HandleAttributesAvailableL@GlxMpxCommandHandler@@MAEXHABV?$RArray@VTMPXAttribute@@@@PAVMGlxMediaList@@@Z @ 19 NONAME ; void GlxMpxCommandHandler::HandleAttributesAvailableL(int, class RArray<class TMPXAttribute> const &, class MGlxMediaList *)
-	?DoExecuteCommandL@GlxMpxCommandHandler@@MAEXHAAVMGlxMediaList@@AAH@Z @ 20 NONAME ; void GlxMpxCommandHandler::DoExecuteCommandL(int, class MGlxMediaList &, int &)
+	?HandleItemRemovedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 20 NONAME ; void GlxMpxCommandHandler::HandleItemRemovedL(int, int, class MGlxMediaList *)
+	?HandleMessageL@GlxMpxCommandHandler@@MAEXABVCMPXMedia@@PAVMGlxMediaList@@@Z @ 21 NONAME ; void GlxMpxCommandHandler::HandleMessageL(class CMPXMedia const &, class MGlxMediaList *)
+	?ProgressNoteL@GlxMpxCommandHandler@@AAEXH@Z @ 22 NONAME ; void GlxMpxCommandHandler::ProgressNoteL(int)
+	?HandleError@GlxMpxCommandHandler@@MAEXH@Z @ 23 NONAME ; void GlxMpxCommandHandler::HandleError(int)
+	??1GlxMpxCommandHandler@@UAE@XZ @ 24 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(void)
+	??1GlxModelCommandHandler@@UAE@XZ @ 25 NONAME ; GlxModelCommandHandler::~GlxModelCommandHandler(void)
+	?DismissProgressNoteL@GlxMpxCommandHandler@@AAEXXZ @ 26 NONAME ; void GlxMpxCommandHandler::DismissProgressNoteL(void)
+	?HandleItemAddedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 27 NONAME ; void GlxMpxCommandHandler::HandleItemAddedL(int, int, class MGlxMediaList *)
+	?executeCommand@GlxMpxCommandHandler@@UAEXHHV?$QList@VQModelIndex@@@@@Z @ 28 NONAME ; void GlxMpxCommandHandler::executeCommand(int, int, class QList<class QModelIndex>)
+	?DoExecuteCommandL@GlxMpxCommandHandler@@MAEXHAAVMGlxMediaList@@AAH@Z @ 29 NONAME ; void GlxMpxCommandHandler::DoExecuteCommandL(int, class MGlxMediaList &, int &)
+	??0GlxCommandHandler@@QAE@XZ @ 30 NONAME ; GlxCommandHandler::GlxCommandHandler(void)
+	?ConfirmationTextL@GlxMpxCommandHandler@@MBE?AVQString@@_N@Z @ 31 NONAME ; class QString GlxMpxCommandHandler::ConfirmationTextL(bool) const
+	??0GlxMpxCommandHandler@@QAE@XZ @ 32 NONAME ; GlxMpxCommandHandler::GlxMpxCommandHandler(void)
+	??_EGlxMpxCommandHandler@@UAE@I@Z @ 33 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(unsigned int)
+	?HandleItemModifiedL@GlxMpxCommandHandler@@MAEXABV?$RArray@H@@PAVMGlxMediaList@@@Z @ 34 NONAME ; void GlxMpxCommandHandler::HandleItemModifiedL(class RArray<int> const &, class MGlxMediaList *)
+	??_EGlxModelCommandHandler@@UAE@I@Z @ 35 NONAME ; GlxModelCommandHandler::~GlxModelCommandHandler(unsigned int)
+	?DoHandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 36 NONAME ; void GlxMpxCommandHandler::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
 
--- a/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -1,49 +1,69 @@
 EXPORTS
-	?iSelectionCount@GlxCommandHandlerAddToContainer@@0HA @ 1 NONAME ; int GlxCommandHandlerAddToContainer::iSelectionCount
-	?qt_metacall@GlxCommandHandlerNewMedia@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2 NONAME ; int GlxCommandHandlerNewMedia::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0GlxCommandHandlerAddToContainer@@QAE@XZ @ 3 NONAME ; GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer(void)
-	??1GlxCommandHandlerAddToContainer@@UAE@XZ @ 4 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(void)
-	?getStaticMetaObject@GlxCommandHandlerAddToContainer@@SAABUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const & GlxCommandHandlerAddToContainer::getStaticMetaObject(void)
-	?getStaticMetaObject@GlxCommandHandlerNewMedia@@SAABUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const & GlxCommandHandlerNewMedia::getStaticMetaObject(void)
-	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *)
-	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 8 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *, int)
-	?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 9 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *)
-	?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *, int)
-	?GetSelectionList@GlxCommandHandlerAddToContainer@@QBE?AV?$QList@VQModelIndex@@@@PAVGlxAlbumModel@@PA_N@Z @ 11 NONAME ; class QList<class QModelIndex> GlxCommandHandlerAddToContainer::GetSelectionList(class GlxAlbumModel *, bool *) const
-	?metaObject@GlxCommandHandlerNewMedia@@UBEPBUQMetaObject@@XZ @ 12 NONAME ; struct QMetaObject const * GlxCommandHandlerNewMedia::metaObject(void) const
-	??0GlxCommandHandlerNewMedia@@QAE@XZ @ 13 NONAME ; GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia(void)
-	?CreateCommandL@GlxCommandHandlerAddToContainer@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 14 NONAME ; class CMPXMedia * GlxCommandHandlerAddToContainer::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CreateCommandL@GlxCommandHandlerDelete@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 15 NONAME ; class CMPXMedia * GlxCommandHandlerDelete::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?DoHandleCommandCompleteL@GlxCommandHandlerNewMedia@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 16 NONAME ; void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
-	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 17 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *, int)
-	??_EGlxCommandHandlerAddToContainer@@UAE@I@Z @ 18 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(unsigned int)
-	?qt_metacall@GlxCommandHandlerAddToContainer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 19 NONAME ; int GlxCommandHandlerAddToContainer::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacast@GlxCommandHandlerNewMedia@@UAEPAXPBD@Z @ 20 NONAME ; void * GlxCommandHandlerNewMedia::qt_metacast(char const *)
-	?HandleItemAddedL@GlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 21 NONAME ; void GlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *)
-	?staticMetaObject@GlxCommandHandlerAddToContainer@@2UQMetaObject@@B @ 22 NONAME ; struct QMetaObject const GlxCommandHandlerAddToContainer::staticMetaObject
-	?ExecuteLD@GlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 23 NONAME ; int GlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &)
-	?createNewMedia@GlxCommandHandlerAddToContainer@@AAEXXZ @ 24 NONAME ; void GlxCommandHandlerAddToContainer::createNewMedia(void)
-	?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 25 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *)
-	?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 26 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *, int)
-	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 27 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *)
-	?metaObject@GlxCommandHandlerAddToContainer@@UBEPBUQMetaObject@@XZ @ 28 NONAME ; struct QMetaObject const * GlxCommandHandlerAddToContainer::metaObject(void) const
-	?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 29 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const
-	??1GlxCommandHandlerNewMedia@@UAE@XZ @ 30 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(void)
-	??1GlxCommandHandlerDelete@@UAE@XZ @ 31 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void)
-	??_EGlxCommandHandlerNewMedia@@UAE@I@Z @ 32 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(unsigned int)
-	?qt_metacast@GlxCommandHandlerAddToContainer@@UAEPAXPBD@Z @ 33 NONAME ; void * GlxCommandHandlerAddToContainer::qt_metacast(char const *)
-	??_EGlxCommandHandlerDelete@@UAE@I@Z @ 34 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(unsigned int)
-	??0GlxCommandHandlerDelete@@QAE@XZ @ 35 NONAME ; GlxCommandHandlerDelete::GlxCommandHandlerDelete(void)
-	?staticMetaObject@GlxCommandHandlerNewMedia@@2UQMetaObject@@B @ 36 NONAME ; struct QMetaObject const GlxCommandHandlerNewMedia::staticMetaObject
-	?RotateImageL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 37 NONAME ; void GlxCommandHandlerRotate::RotateImageL(class TBuf<256>)
-	?SetImageOrientationL@GlxCommandHandlerRotate@@AAEXG@Z @ 38 NONAME ; void GlxCommandHandlerRotate::SetImageOrientationL(unsigned short)
-	??_EGlxCommandHandlerRotate@@UAE@I@Z @ 39 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(unsigned int)
-	?DoExecuteCommandL@GlxCommandHandlerRotate@@UAEXHAAVMGlxMediaList@@AAH@Z @ 40 NONAME ; void GlxCommandHandlerRotate::DoExecuteCommandL(int, class MGlxMediaList &, int &)
-	?CreateCommandL@GlxCommandHandlerRotate@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 41 NONAME ; class CMPXMedia * GlxCommandHandlerRotate::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?ReadImageOrientationL@GlxCommandHandlerRotate@@AAEGXZ @ 42 NONAME ; unsigned short GlxCommandHandlerRotate::ReadImageOrientationL(void)
-	??1GlxCommandHandlerRotate@@UAE@XZ @ 43 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(void)
-	?CalculateFinalOrientationL@GlxCommandHandlerRotate@@AAEGG@Z @ 44 NONAME ; unsigned short GlxCommandHandlerRotate::CalculateFinalOrientationL(unsigned short)
-	?InitializeExifWriterL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 45 NONAME ; void GlxCommandHandlerRotate::InitializeExifWriterL(class TBuf<256>)
-	??0GlxCommandHandlerRotate@@QAE@XZ @ 46 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void)
-	?DestroyExifWriter@GlxCommandHandlerRotate@@AAEXXZ @ 47 NONAME ; void GlxCommandHandlerRotate::DestroyExifWriter(void)
+	??_EGlxCommandHandlerRemoveFrom@@UAE@I@Z @ 1 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(unsigned int)
+	?iSelectionCount@GlxCommandHandlerAddToContainer@@0HA @ 2 NONAME ; int GlxCommandHandlerAddToContainer::iSelectionCount
+	?RotateImageL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 3 NONAME ; void GlxCommandHandlerRotate::RotateImageL(class TBuf<256>)
+	?qt_metacall@GlxCommandHandlerNewMedia@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 4 NONAME ; int GlxCommandHandlerNewMedia::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?ProgressTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 5 NONAME ; class QString GlxCommandHandlerRemoveFrom::ProgressTextL(void) const
+	??1GlxCommandHandlerAddToContainer@@UAE@XZ @ 6 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(void)
+	?getStaticMetaObject@GlxCommandHandlerNewMedia@@SAABUQMetaObject@@XZ @ 7 NONAME ; struct QMetaObject const & GlxCommandHandlerNewMedia::getStaticMetaObject(void)
+	?SetImageOrientationL@GlxCommandHandlerRotate@@AAEXG@Z @ 8 NONAME ; void GlxCommandHandlerRotate::SetImageOrientationL(unsigned short)
+	?ConfirmationTextL@GlxCommandHandlerDelete@@EBE?AVQString@@_N@Z @ 9 NONAME ; class QString GlxCommandHandlerDelete::ConfirmationTextL(bool) const
+	??_EGlxCommandHandlerSend@@UAE@I@Z @ 10 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(unsigned int)
+	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *)
+	?HandleErrorL@GlxCommandHandlerNewMedia@@MAEXH@Z @ 12 NONAME ; void GlxCommandHandlerNewMedia::HandleErrorL(int)
+	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *, int)
+	?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *)
+	?DoExecuteCommandL@GlxCommandHandlerRotate@@UAEXHAAVMGlxMediaList@@AAH@Z @ 15 NONAME ; void GlxCommandHandlerRotate::DoExecuteCommandL(int, class MGlxMediaList &, int &)
+	?metaObject@GlxCommandHandlerNewMedia@@UBEPBUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const * GlxCommandHandlerNewMedia::metaObject(void) const
+	?CreateCommandL@GlxCommandHandlerDelete@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 17 NONAME ; class CMPXMedia * GlxCommandHandlerDelete::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CreateCommandL@GlxCommandHandlerAddToContainer@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 18 NONAME ; class CMPXMedia * GlxCommandHandlerAddToContainer::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CompletionTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 19 NONAME ; class QString GlxCommandHandlerDelete::CompletionTextL(void) const
+	?DoHandleCommandCompleteL@GlxCommandHandlerNewMedia@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 20 NONAME ; void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
+	?GenerateNewMediaItemTitleL@GlxCommandHandlerNewMedia@@ABE?AVQString@@V2@AAVMGlxMediaList@@@Z @ 21 NONAME ; class QString GlxCommandHandlerNewMedia::GenerateNewMediaItemTitleL(class QString, class MGlxMediaList &) const
+	??1GlxCommandHandlerRemoveFrom@@UAE@XZ @ 22 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(void)
+	?qt_metacast@GlxCommandHandlerNewMedia@@UAEPAXPBD@Z @ 23 NONAME ; void * GlxCommandHandlerNewMedia::qt_metacast(char const *)
+	?qt_metacall@GlxCommandHandlerAddToContainer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 24 NONAME ; int GlxCommandHandlerAddToContainer::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0GlxCommandHandlerRemoveFrom@@QAE@XZ @ 25 NONAME ; GlxCommandHandlerRemoveFrom::GlxCommandHandlerRemoveFrom(void)
+	?HandleItemAddedL@GlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 26 NONAME ; void GlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *)
+	?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 27 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *)
+	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 28 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *)
+	?metaObject@GlxCommandHandlerAddToContainer@@UBEPBUQMetaObject@@XZ @ 29 NONAME ; struct QMetaObject const * GlxCommandHandlerAddToContainer::metaObject(void) const
+	?ReadImageOrientationL@GlxCommandHandlerRotate@@AAEGXZ @ 30 NONAME ; unsigned short GlxCommandHandlerRotate::ReadImageOrientationL(void)
+	??1GlxCommandHandlerRotate@@UAE@XZ @ 31 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(void)
+	??1GlxCommandHandlerNewMedia@@UAE@XZ @ 32 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(void)
+	??_EGlxCommandHandlerNewMedia@@UAE@I@Z @ 33 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(unsigned int)
+	?CompletionTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 34 NONAME ; class QString GlxCommandHandlerRemoveFrom::CompletionTextL(void) const
+	??_EGlxCommandHandlerDelete@@UAE@I@Z @ 35 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(unsigned int)
+	?ProgressTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 36 NONAME ; class QString GlxCommandHandlerDelete::ProgressTextL(void) const
+	?staticMetaObject@GlxCommandHandlerNewMedia@@2UQMetaObject@@B @ 37 NONAME ; struct QMetaObject const GlxCommandHandlerNewMedia::staticMetaObject
+	??0GlxCommandHandlerDelete@@QAE@XZ @ 38 NONAME ; GlxCommandHandlerDelete::GlxCommandHandlerDelete(void)
+	?DestroyExifWriter@GlxCommandHandlerRotate@@AAEXXZ @ 39 NONAME ; void GlxCommandHandlerRotate::DestroyExifWriter(void)
+	??0GlxCommandHandlerSend@@QAE@XZ @ 40 NONAME ; GlxCommandHandlerSend::GlxCommandHandlerSend(void)
+	?HandleError@GlxCommandHandlerNewMedia@@MAEXH@Z @ 41 NONAME ; void GlxCommandHandlerNewMedia::HandleError(int)
+	??0GlxCommandHandlerAddToContainer@@QAE@XZ @ 42 NONAME ; GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer(void)
+	?getStaticMetaObject@GlxCommandHandlerAddToContainer@@SAABUQMetaObject@@XZ @ 43 NONAME ; struct QMetaObject const & GlxCommandHandlerAddToContainer::getStaticMetaObject(void)
+	??_EGlxCommandHandlerRotate@@UAE@I@Z @ 44 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(unsigned int)
+	?ProgressTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 45 NONAME ; class QString GlxCommandHandlerAddToContainer::ProgressTextL(void) const
+	??1GlxCommandHandlerSend@@UAE@XZ @ 46 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(void)
+	?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 47 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *, int)
+	?GetSelectionList@GlxCommandHandlerAddToContainer@@QBE?AV?$QList@VQModelIndex@@@@PAVGlxAlbumModel@@PA_N@Z @ 48 NONAME ; class QList<class QModelIndex> GlxCommandHandlerAddToContainer::GetSelectionList(class GlxAlbumModel *, bool *) const
+	?CompletionTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 49 NONAME ; class QString GlxCommandHandlerAddToContainer::CompletionTextL(void) const
+	??0GlxCommandHandlerNewMedia@@QAE@XZ @ 50 NONAME ; GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia(void)
+	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 51 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *, int)
+	?doHandleUserAction@GlxCommandHandlerSend@@UBEXPAVGlxMediaModel@@V?$QList@VQModelIndex@@@@@Z @ 52 NONAME ; void GlxCommandHandlerSend::doHandleUserAction(class GlxMediaModel *, class QList<class QModelIndex>) const
+	??_EGlxCommandHandlerAddToContainer@@UAE@I@Z @ 53 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(unsigned int)
+	?ProgressTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 54 NONAME ; class QString GlxCommandHandlerNewMedia::ProgressTextL(void) const
+	?staticMetaObject@GlxCommandHandlerAddToContainer@@2UQMetaObject@@B @ 55 NONAME ; struct QMetaObject const GlxCommandHandlerAddToContainer::staticMetaObject
+	?ExecuteLD@GlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 56 NONAME ; int GlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &)
+	?createNewMedia@GlxCommandHandlerAddToContainer@@AAEXXZ @ 57 NONAME ; void GlxCommandHandlerAddToContainer::createNewMedia(void)
+	?CreateCommandL@GlxCommandHandlerRotate@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 58 NONAME ; class CMPXMedia * GlxCommandHandlerRotate::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 59 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *, int)
+	?CompletionTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 60 NONAME ; class QString GlxCommandHandlerNewMedia::CompletionTextL(void) const
+	?CreateCommandL@GlxCommandHandlerRemoveFrom@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 61 NONAME ; class CMPXMedia * GlxCommandHandlerRemoveFrom::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CalculateFinalOrientationL@GlxCommandHandlerRotate@@AAEGG@Z @ 62 NONAME ; unsigned short GlxCommandHandlerRotate::CalculateFinalOrientationL(unsigned short)
+	?InitializeExifWriterL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 63 NONAME ; void GlxCommandHandlerRotate::InitializeExifWriterL(class TBuf<256>)
+	?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 64 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const
+	??1GlxCommandHandlerDelete@@UAE@XZ @ 65 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void)
+	??0GlxCommandHandlerRotate@@QAE@XZ @ 66 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void)
+	?qt_metacast@GlxCommandHandlerAddToContainer@@UAEPAXPBD@Z @ 67 NONAME ; void * GlxCommandHandlerAddToContainer::qt_metacast(char const *)
 
--- a/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro	Fri Apr 16 14:58:46 2010 +0300
@@ -18,19 +18,27 @@
 TARGET = glxcommandhandlerbase
 DEPENDPATH += . inc src
 
-CONFIG += qt
+CONFIG += hb
 
 INCLUDEPATH += . \
             ../../../commonutilities/common/inc \
             ../../../inc \
-            ../../uiengine/medialists/inc	    
+            ../../uiengine/medialists/inc \
+            ../../inc \
+            ../../../commonui/inc \
+            ../../uiengine/medialistwrapper/inc \
+            ../../uiengine/model/mediamodel/inc \
+            ../../../traces	    
 
 DEFINES += BUILD_COMMANDHANDLERBASE
 
 LIBS += -lmpxcollectionutility.dll \
         -lmpxcommon.dll \
         -lglxcommon.dll \
-        -lglxmedialists.dll
+        -lglxmedialists.dll\
+        -lglxcommonui.dll \
+        -lglxmediamodel.dll \
+        -lcommonengine.dll
 
 symbian: { 
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
@@ -40,7 +48,7 @@
 }
 
 # Input
-HEADERS += inc/glxcommandhandler.h  inc/glxmpxcommandhandler.h
-SOURCES += src/glxcommandhandler.cpp src/glxmpxcommandhandler.cpp
+HEADERS += inc/glxcommandhandler.h  inc/glxmpxcommandhandler.h inc/glxmodelcommandhandler.h
+SOURCES += src/glxcommandhandler.cpp src/glxmpxcommandhandler.cpp src/glxmodelcommandhandler.cpp
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
--- a/ui/commandhandlers/commandhandlerbase/inc/glxcommandhandler.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commandhandlerbase/inc/glxcommandhandler.h	Fri Apr 16 14:58:46 2010 +0300
@@ -26,12 +26,13 @@
 #define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_IMPORT
 #endif
 
+class QModelIndex;
 class GLX_COMMANDHANDLERBASE_EXPORT GlxCommandHandler : public QObject
 {
 public:
     GlxCommandHandler();
     virtual ~GlxCommandHandler();
-    virtual void executeCommand(int commandId,int collectionId) = 0;
+    virtual void executeCommand(int commandId,int collectionId ,QList<QModelIndex> indexList = QList<QModelIndex>() ) = 0;
     
 };
 #endif //GLXCOMMANDHANDLER_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commandhandlerbase/inc/glxmodelcommandhandler.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef GLXMODELCOMMANDHANDLER_H
+#define GLXMODELCOMMANDHANDLER_H
+
+#include <QObject>
+#include<glxcommandhandler.h>
+
+class GlxMediaModel;
+#ifdef BUILD_COMMANDHANDLERBASE
+#define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_EXPORT
+#else
+#define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_IMPORT
+#endif
+
+class GLX_COMMANDHANDLERBASE_EXPORT GlxModelCommandHandler : public GlxCommandHandler
+{
+public:
+    GlxModelCommandHandler();
+    virtual ~GlxModelCommandHandler();
+    virtual void executeCommand(int commandId,int collectionId, QList<QModelIndex> indexList = QList<QModelIndex>() );
+
+    protected: // From derived class    
+    virtual void doHandleUserAction(GlxMediaModel* model,QList<QModelIndex>  indexList) const = 0;
+
+};
+#endif //GLXMODELCOMMANDHANDLER_H
--- a/ui/commandhandlers/commandhandlerbase/inc/glxmpxcommandhandler.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commandhandlerbase/inc/glxmpxcommandhandler.h	Fri Apr 16 14:58:46 2010 +0300
@@ -29,13 +29,14 @@
 #define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_IMPORT
 #endif
 class MGlxMediaList;
+class HbProgressDialog;
 
 class GLX_COMMANDHANDLERBASE_EXPORT GlxMpxCommandHandler : public GlxCommandHandler, public MGlxMediaListObserver
 {
 public:
     GlxMpxCommandHandler();
     virtual ~GlxMpxCommandHandler();
-    virtual void executeCommand(int commandId,int collectionId);
+    virtual void executeCommand(int commandId,int collectionId,QList<QModelIndex> indexList = QList<QModelIndex>() );
 
 protected: // From MGlxMediaListObserver    
     /// See @ref MGlxMediaListObserver::HandleItemAddedL
@@ -66,21 +67,33 @@
     /// See @ref MGlxMediaListObserver::HandleCommandCompleteL
     void HandleCommandCompleteL(TAny* aSessionId, CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList);
     
+    /// See @ref MGlxMediaListObserver::HandleError
+    void HandleError(TInt aError);
 protected: // From derived class    
  
     virtual void DoHandleCommandCompleteL(TAny* aSessionId, 
             CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList); 
 
     virtual CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const = 0;
-	 virtual void DoExecuteCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume);
-            
-private:    
-
+	virtual void DoExecuteCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume);
+	virtual void HandleErrorL(TInt aErrorCode);
+	virtual QString CompletionTextL() const;
+	virtual QString ProgressTextL() const;        
+    virtual QString ConfirmationTextL(bool multiSelection = false) const; 
+private: 
+    bool ConfirmationNoteL(MGlxMediaList& aMediaList) const;
+    bool ConfirmationNoteSingleL(MGlxMediaList& aMediaList) const;
+    bool ConfirmationNoteMultipleL(MGlxMediaList& aMediaList) const;
+	void ProgressNoteL(TInt aCommandId);
+	void DismissProgressNoteL();
+	void CompletionNoteL() const;
+    void TryExitL(TInt aErrorCode);
     void CreateMediaListL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType) ;
     void CreateMediaListAlbumItemL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType);
 private:
     // Instance of Media List
     MGlxMediaList* iMediaList;
-    
+	TBool iProgressComplete;
+	HbProgressDialog* mProgressDialog;
 };
 #endif //GLXMPXCOMMANDHANDLER_H
\ No newline at end of file
--- a/ui/commandhandlers/commandhandlerbase/src/glxcommandhandler.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commandhandlerbase/src/glxcommandhandler.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -16,12 +16,21 @@
 */
 
 #include <glxcommandhandler.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxcommandhandlerTraces.h"
+#endif
+
 
 GlxCommandHandler::GlxCommandHandler()
 {
+OstTraceFunctionEntry0( GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY );
+OstTraceFunctionExit0( GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT );
 }
 
 GlxCommandHandler::~GlxCommandHandler()
 {
+OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY );
+OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT );
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commandhandlerbase/src/glxmodelcommandhandler.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include <glxmediamodel.h>
+#include <glxmodelcommandhandler.h>
+#include <glxmodelparm.h>
+
+GlxModelCommandHandler::GlxModelCommandHandler()
+    {
+    }
+
+GlxModelCommandHandler::~GlxModelCommandHandler()
+    {
+    }
+
+void GlxModelCommandHandler::executeCommand(int commandId, int collectionId,QList<QModelIndex> indexList)
+    {
+    GlxModelParm modelParm (collectionId, 0);
+    GlxMediaModel* mediaModel = new GlxMediaModel (modelParm);
+    doHandleUserAction(mediaModel,indexList);
+    delete mediaModel;
+    }
--- a/ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -24,52 +24,84 @@
 #include <mglxmedialist.h>
 #include <glxcommandfactory.h>
 #include <glxmpxcommandhandler.h>
-#include <QDebug>
+#include <glxfetchcontextremover.h>
+#include <glxmedialistiterator.h>
+#include <glxattributecontext.h>
+#include <glxattributeretriever.h>
+#include <glxuistd.h>
 
-GlxMpxCommandHandler::GlxMpxCommandHandler()
-{
+#include <textresolver.h>
+#include <hbmessagebox.h>
+#include <e32debug.h>
+#include <hbprogressdialog.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxmpxcommandhandlerTraces.h"
+#endif
+
+GlxMpxCommandHandler::GlxMpxCommandHandler() :
+    iProgressComplete(EFalse)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY );
     iMediaList = NULL;
-}
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT );
+    }
 
 GlxMpxCommandHandler::~GlxMpxCommandHandler()
-{
+    {
+    OstTraceFunctionEntry0( DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY );
     //close the existing instance of Media List
-    if ( iMediaList ) { 
+    if (iMediaList)
+        {
         iMediaList->Close();
         iMediaList = NULL;
+        }
+    OstTraceFunctionExit0( DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT );
     }
-}
 
-void GlxMpxCommandHandler::executeCommand(int commandId,int collectionId)
-{
-    qDebug("GlxMpxCommandHandler::executeCommand ");
-    int aHierarchyId = 0; 
+void GlxMpxCommandHandler::executeCommand(int commandId, int collectionId,QList<QModelIndex>  indexList)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_ENTRY );
+    int aHierarchyId = 0;
     TGlxFilterItemType aFilterType = EGlxFilterImage;
 
-	//CreateMediaListL(aCollectionId, aHierarchyId,aFilterType);
-	if(collectionId != KGlxAlbumsMediaId)
-		{
-        qDebug("GlxMpxCommandHandler::executeCommand ::CreateMediaListL");
-		CreateMediaListL(collectionId, aHierarchyId,aFilterType);
-		}
-	else
-		{
-        qDebug("GlxMpxCommandHandler::executeCommand ::CreateMediaListAlbumItemL");
-		//for creating Medial List for Albums Media path Items
-		CreateMediaListAlbumItemL(collectionId, aHierarchyId,aFilterType);
-		}
+    //CreateMediaListL(aCollectionId, aHierarchyId,aFilterType);
+    if (collectionId != KGlxAlbumsMediaId)
+        {
+        OstTrace0( TRACE_NORMAL, DUP2_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND, "GlxMpxCommandHandler::executeCommand::CreateMediaListL" );
+        CreateMediaListL(collectionId, aHierarchyId, aFilterType);
+        }
+    else
+        {
+        OstTrace0( TRACE_NORMAL, DUP3_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND, "GlxMpxCommandHandler::executeCommand::CreateMediaListAlbumItemL" );
+        //for creating Medial List for Albums Media path Items
+        CreateMediaListAlbumItemL(collectionId, aHierarchyId, aFilterType);
+        }
 
     TBool consume = ETrue;
-	//Execute Command 
-	DoExecuteCommandL(commandId,*iMediaList,consume);
-	//Create MPX command if any
-    CMPXCommand* command = CreateCommandL(commandId,*iMediaList,consume);
-    if(command){
-        command->SetTObjectValueL<TAny*>(KMPXCommandGeneralSessionId, static_cast<TAny*>(this));
-        iMediaList->AddMediaListObserverL(this);
-        iMediaList->CommandL(*command);
+    iProgressComplete = EFalse;
+    //Execute Command 
+    DoExecuteCommandL(commandId, *iMediaList, consume);
+    //Create MPX command if any
+    consume = ConfirmationNoteL(*iMediaList);
+    if(consume)
+        {
+        CMPXCommand* command = CreateCommandL(commandId, *iMediaList, consume);
+        if (command)
+            {
+            command->SetTObjectValueL<TAny*> (KMPXCommandGeneralSessionId,
+                    static_cast<TAny*> (this));
+            iMediaList->AddMediaListObserverL(this);
+            iMediaList->CommandL(*command);
+            ProgressNoteL(commandId);
+            }
+        }
+    else //command cancelled,so unmark all items
+        {
+        MGlxMediaList::UnmarkAllL(*iMediaList);
+        }
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_EXIT );
     }
-}
 
 // ---------------------------------------------------------------------------
 // CreateMediaListL()
@@ -77,65 +109,77 @@
 // Create a filter as requested filtertype
 // Creates the medialist
 // ---------------------------------------------------------------------------
-void GlxMpxCommandHandler::CreateMediaListL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType) 
-{
-   	Q_UNUSED(aHierarchyId);
-   	Q_UNUSED(aFilterType);	
-   	
-	//close the existing instance of Media List
-	if ( iMediaList ) { 
-	    iMediaList->Close();
-	    iMediaList = NULL;
-	}
+void GlxMpxCommandHandler::CreateMediaListL(int aCollectionId,
+        int aHierarchyId, TGlxFilterItemType aFilterType)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_ENTRY );
+    Q_UNUSED(aHierarchyId);
+    Q_UNUSED(aFilterType);
+
+    //close the existing instance of Media List
+    if (iMediaList)
+        {
+        iMediaList->Close();
+        iMediaList = NULL;
+        }
 
-	// Create path to the list of images and videos
-	CMPXCollectionPath* path = CMPXCollectionPath::NewL();
-	CleanupStack::PushL( path );
-	path->AppendL(aCollectionId);
-	// Create filter to filter out either images or videos
-	CMPXFilter* filter = TGlxFilterFactory::CreateItemTypeFilterL(EGlxFilterImage);   //todo take actual filter type
-	CleanupStack::PushL(filter);
-	
-	// Create the media list
-	iMediaList =  MGlxMediaList::InstanceL( *path, 
-	                  TGlxHierarchyId(0), filter );  //todo take actual hierarchy 
-	CleanupStack::PopAndDestroy( filter );
-	
-	CleanupStack::PopAndDestroy(path);
-}
+    // Create path to the list of images and videos
+    CMPXCollectionPath* path = CMPXCollectionPath::NewL();
+    CleanupStack::PushL(path);
+    path->AppendL(aCollectionId);
+    // Create filter to filter out either images or videos
+    CMPXFilter* filter = TGlxFilterFactory::CreateItemTypeFilterL(
+            EGlxFilterImage); //todo take actual filter type
+    CleanupStack::PushL(filter);
+
+    // Create the media list
+    iMediaList = MGlxMediaList::InstanceL(*path, TGlxHierarchyId(0), filter); //todo take actual hierarchy 
+    CleanupStack::PopAndDestroy(filter);
+
+    CleanupStack::PopAndDestroy(path);
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_EXIT );
+    }
     
+
 // ---------------------------------------------------------------------------
 // CreateMediaListAlbumItemL()
 // Creates the media list for the album Item 
 // ---------------------------------------------------------------------------
-void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType)
-	{
-	Q_UNUSED(aCollectionId);
-	Q_UNUSED(aHierarchyId);
-	//retrieve the instance of Media list for ALBUMS LIST which will be saved in iMediaList
-	CreateMediaListL(KGlxCollectionPluginAlbumsImplementationUid,0,EGlxFilterAlbum);
-	//retrieve the path of the focussed item of the MediaList
-	CMPXCollectionPath* path = iMediaList->PathLC(NGlxListDefs:: EPathFocusOrSelection);
-	//close the existing instance of Media List
-	iMediaList->Close();
-	iMediaList = NULL;
-	//create new media list with the derived path
-	CMPXFilter* filter = TGlxFilterFactory::CreateItemTypeFilterL(aFilterType);   //todo take actual filter type
-	CleanupStack::PushL(filter);
-	iMediaList = MGlxMediaList::InstanceL( *path, 
-	                  TGlxHierarchyId(0), filter );  //todo take actual hierarchy
-	CleanupStack::PopAndDestroy( filter );
-	
-	CleanupStack::PopAndDestroy(path);
-	}
+void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int aCollectionId,
+        int aHierarchyId, TGlxFilterItemType aFilterType)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_ENTRY );
+    Q_UNUSED(aCollectionId);
+    Q_UNUSED(aHierarchyId);
+    //retrieve the instance of Media list for ALBUMS LIST which will be saved in iMediaList
+    CreateMediaListL(KGlxCollectionPluginAlbumsImplementationUid, 0,
+            EGlxFilterAlbum);
+    //retrieve the path of the focussed item of the MediaList
+    CMPXCollectionPath* path = iMediaList->PathLC(
+            NGlxListDefs::EPathFocusOrSelection);
+    //close the existing instance of Media List
+    iMediaList->Close();
+    iMediaList = NULL;
+    //create new media list with the derived path
+    CMPXFilter* filter =
+            TGlxFilterFactory::CreateItemTypeFilterL(aFilterType);
+    CleanupStack::PushL(filter);
+    iMediaList = MGlxMediaList::InstanceL(*path, TGlxHierarchyId(0), filter); //todo take actual hierarchy
+    CleanupStack::PopAndDestroy(filter);
+
+    CleanupStack::PopAndDestroy(path);
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_EXIT );
+    }
 // -----------------------------------------------------------------------------
 // HandleItemAddedL
 // -----------------------------------------------------------------------------
 //  
-void GlxMpxCommandHandler::HandleItemAddedL(TInt /*aStartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
+void GlxMpxCommandHandler::HandleItemAddedL(TInt /*aStartIndex*/,
+        TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
     {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_ENTRY );
     // Do nothing
-    qDebug("New item added ");
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_EXIT );
     }
 
 // -----------------------------------------------------------------------------
@@ -143,18 +187,23 @@
 // -----------------------------------------------------------------------------
 //	
 void GlxMpxCommandHandler::HandleMediaL(TInt /*aListIndex*/, MGlxMediaList* /*aList*/)
-	{
-	// Do nothing
-	}
-	
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_ENTRY );
+    // Do nothing
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_EXIT );
+    }
+
 // -----------------------------------------------------------------------------
 // HandleItemRemovedL
 // -----------------------------------------------------------------------------
 //	
-void GlxMpxCommandHandler::HandleItemRemovedL(TInt /*aStartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
-	{
-	// Do nothing
-	}
+void GlxMpxCommandHandler::HandleItemRemovedL(TInt /*aStartIndex*/,
+        TInt /*aEndIndex*/, MGlxMediaList* /*aList*/)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_ENTRY );
+    // Do nothing
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_EXIT );
+    }
 	
 // -----------------------------------------------------------------------------
 // HandleItemModifiedL
@@ -163,7 +212,9 @@
 void GlxMpxCommandHandler::HandleItemModifiedL(const RArray<TInt>& /*aItemIndexes*/, 
         MGlxMediaList* /*aList*/)
 	{
+	OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_ENTRY );
 	// Do nothing
+	OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_EXIT );
 	}	
 
 // -----------------------------------------------------------------------------
@@ -173,7 +224,9 @@
 void GlxMpxCommandHandler::HandleAttributesAvailableL(TInt /*aItemIndex*/, 	
 	const RArray<TMPXAttribute>& /*aAttributes*/, MGlxMediaList* /*aList*/)
 	{
+	OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_ENTRY );
 	// Do nothing
+	OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_EXIT );
 	}
 		
 // -----------------------------------------------------------------------------
@@ -183,7 +236,9 @@
 void GlxMpxCommandHandler::HandleFocusChangedL(NGlxListDefs::TFocusChangeType /*aType*/, 
         TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/) 
 	{
+	OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_ENTRY );
 	// Do nothing
+	OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_EXIT );
 	}
 	
 // -----------------------------------------------------------------------------
@@ -193,39 +248,58 @@
 void GlxMpxCommandHandler::HandleItemSelectedL(TInt /*aIndex*/, 
         TBool /*aSelected*/, MGlxMediaList* /*aList*/)
 	{
+	OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_ENTRY );
 	// Do nothing
+	OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_EXIT );
 	}
 
 // -----------------------------------------------------------------------------
 // HandleMessageL
 // -----------------------------------------------------------------------------
 //	
-void GlxMpxCommandHandler::HandleMessageL(const CMPXMessage& aMessage, 
-        MGlxMediaList* aList)
-{
-    if ((aMessage.IsSupported(KMPXMessageGeneralId) && (aMessage.IsSupported(KMPXCommandGeneralSessionId))))
+void GlxMpxCommandHandler::HandleMessageL(const CMPXMessage& aMessage,
+        MGlxMediaList*/* aList*/)
     {
-        TInt msgId = aMessage.ValueTObjectL<TInt>(KMPXMessageGeneralId);
-        TAny* sessionId = aMessage.ValueTObjectL<TAny*>(KMPXCommandGeneralSessionId);
-
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_ENTRY );
+    if ((aMessage.IsSupported(KMPXMessageGeneralId) && (aMessage.IsSupported(
+            KMPXCommandGeneralSessionId))))
+        {
+        TInt msgId = aMessage.ValueTObjectL<TInt> (KMPXMessageGeneralId);
+        TAny* sessionId = aMessage.ValueTObjectL<TAny*> (
+                KMPXCommandGeneralSessionId);
+        TInt error = KErrNone;
         // Check if this is a progress message and intended for this object
+        TryExitL(error);
+        }
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_EXIT );
     }
-}
 
 // -----------------------------------------------------------------------------
 // HandleCommandCompleteL
 // -----------------------------------------------------------------------------
 //	
-void GlxMpxCommandHandler::HandleCommandCompleteL(TAny* aSessionId, CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList)
+void GlxMpxCommandHandler::HandleCommandCompleteL(TAny* aSessionId,
+        CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList)
     {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_ENTRY );
+    MGlxMediaList::UnmarkAllL(*iMediaList);
 
-    MGlxMediaList::UnmarkAllL(*iMediaList);
+    DoHandleCommandCompleteL(aSessionId, aCommandResult, aError, aList);
+    iProgressComplete = ETrue;
+    TryExitL(aError);
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// HandleError
+// -----------------------------------------------------------------------------
+//  
+void GlxMpxCommandHandler::HandleError(TInt /*aError*/)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEERROR_ENTRY );
     
-    DoHandleCommandCompleteL(aSessionId, aCommandResult, aError, aList);
-    
-    iMediaList->RemoveMediaListObserver(this);
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEERROR_EXIT );
     }
-    
 // -----------------------------------------------------------------------------
 // Default implementation of advanced command handling does nothing
 // -----------------------------------------------------------------------------
@@ -233,6 +307,9 @@
 void GlxMpxCommandHandler::DoHandleCommandCompleteL(TAny* /*aSessionId*/, 
         CMPXCommand* /*aCommandResult*/, TInt /*aError*/, MGlxMediaList* /*aList*/)
     {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_ENTRY );
+    
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_EXIT );
     }
  
 // -----------------------------------------------------------------------------
@@ -240,7 +317,203 @@
 // -----------------------------------------------------------------------------
 //
 
-void GlxMpxCommandHandler::DoExecuteCommandL(TInt /*aCommandId*/, MGlxMediaList& /*aMediaList*/, TBool& /*aConsume*/)
-{
+void GlxMpxCommandHandler::DoExecuteCommandL(TInt /*aCommandId*/,
+        MGlxMediaList& /*aMediaList*/, TBool& /*aConsume*/)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_ENTRY );
+
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// TryExitL
+// -----------------------------------------------------------------------------
+//  
+void GlxMpxCommandHandler::TryExitL(TInt aErrorCode)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_TRYEXITL_ENTRY );
+    if (KErrNone != aErrorCode)
+        {
+        // @todo error received. Close progress note 
+        DismissProgressNoteL();
+        iMediaList->RemoveMediaListObserver(this);
+
+        // handle error
+        HandleErrorL(aErrorCode);
+        }
+    else if (iProgressComplete)
+        {
+        DismissProgressNoteL();
+        iMediaList->RemoveMediaListObserver(this);
+        CompletionNoteL();
+        }
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_TRYEXITL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Default implementation shows an error note
+// -----------------------------------------------------------------------------
+//	
+void GlxMpxCommandHandler::HandleErrorL(TInt aErrorCode)
+    {
+    OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEERRORL_ENTRY );
+    // show error note
+    // TextResolver instance for error resolving.
+    CTextResolver* textresolver = CTextResolver::NewLC();
+    // Resolve the error text
+    const TDesC& text = textresolver->ResolveErrorString(aErrorCode);
+
+    QString qtText = QString::fromUtf16(text.Ptr(), text.Length());
+
+    HbMessageBox box(HbMessageBox::MessageTypeInformation);
+    box.setText(qtText);
+    box.exec();
+    CleanupStack::PopAndDestroy(textresolver);
+    OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEERRORL_EXIT );
+    }
+
+void GlxMpxCommandHandler::CompletionNoteL() const
+    {
+    QString displayText = CompletionTextL();
+    if (!displayText.isNull())
+        {
+        HbMessageBox::information(displayText);
+        }
+    }
+
+QString GlxMpxCommandHandler::CompletionTextL() const
+    {
+    return QString();
+    }
+
+QString GlxMpxCommandHandler::ProgressTextL() const
+    {
+    return QString("Progressing...");
+    }
+
+void GlxMpxCommandHandler::ProgressNoteL(TInt /*aCommandId*/)
+    {
+    mProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+    mProgressDialog->setText(ProgressTextL());
+    mProgressDialog->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
+    mProgressDialog->show();
+    }
+
+void GlxMpxCommandHandler::DismissProgressNoteL()
+    {
+    mProgressDialog->close();
+    delete mProgressDialog;
+    mProgressDialog = NULL;
+    }
+
+bool GlxMpxCommandHandler::ConfirmationNoteL(MGlxMediaList& aMediaList) const
+    {
+	TInt selectionCount = aMediaList.SelectionCount();
 
-}
+    // If media list is not empty, treat focused item as selected
+    // At this point can assume that the command was disabled 
+    // if static items were not supported	
+	if ( selectionCount == 0  )
+		{
+		selectionCount = 1;
+		}
+	
+    // Show confirmation note
+	bool confirmed = true;
+	if ( selectionCount == 1 )
+	    {
+		confirmed = ConfirmationNoteSingleL(aMediaList);
+	    }
+	else
+	    {
+		confirmed = ConfirmationNoteMultipleL(aMediaList);
+	    }
+		
+	return confirmed;
+    }
+
+bool GlxMpxCommandHandler::ConfirmationNoteSingleL(MGlxMediaList& aMediaList) const
+    {
+    bool confirmAction = true;
+
+    QString qtText = ConfirmationTextL();
+    
+    if(!qtText.isEmpty ())
+        {
+        // create fetch context
+        TGlxSelectionIterator iterator;
+        iterator.SetRange(1);
+        CGlxAttributeContext* attributeContext = new(ELeave) CGlxAttributeContext(&iterator);
+        CleanupStack::PushL(attributeContext);
+        attributeContext->AddAttributeL(KMPXMediaGeneralTitle);
+                        
+        // add context to media list
+        aMediaList.AddContextL(attributeContext, KGlxFetchContextPriorityLow);
+            
+        // TGlxContextRemover will remove the context when it goes out of scope
+        // Used here to avoid a trap and still have safe cleanup
+        TGlxFetchContextRemover contextRemover(attributeContext, aMediaList);
+        // put to cleanupstack as cleanupstack is emptied before stack objects
+        // are deleted
+        CleanupClosePushL( contextRemover);
+        // retrieve title attribute
+        TInt err = GlxAttributeRetriever::RetrieveL(*attributeContext, aMediaList, EFalse);
+        // context off the list
+        CleanupStack::PopAndDestroy( &contextRemover );
+    
+        if ( err == KErrNone )
+            {
+            // use iterator to get the index of the right item 
+            iterator.SetToFirst(&aMediaList);
+            const CGlxMedia* media = aMediaList.Item(iterator++).Properties();
+        
+            // noteText has a place for a title string in it
+            const TDesC& itemName = media->ValueText(KMPXMediaGeneralTitle);
+            QString qtItemName = QString::fromUtf16(itemName.Ptr(),itemName.Length());
+            qtText.append(QString("%1").arg(qtItemName));
+            }
+            // (else) If error, assume confirmed anyway
+            	
+            CleanupStack::PopAndDestroy(attributeContext);
+        
+        HbMessageBox box(HbMessageBox::MessageTypeQuestion);
+        box.setDismissPolicy(HbDialog::NoDismiss);
+
+        // Set timeout to zero to wait user to either click Ok or Cancel
+        box.setTimeout(HbDialog::NoTimeout);
+        
+        box.setText(qtText);
+        HbAction *action = box.exec();
+        if(action != box.primaryAction())
+            {
+            confirmAction = false;
+            }
+        }    
+    return confirmAction;
+    }
+    
+bool GlxMpxCommandHandler::ConfirmationNoteMultipleL(MGlxMediaList& /*aMediaList*/) const
+    {
+    bool confirmAction = true;
+
+    QString qtText = ConfirmationTextL(true);
+    if(!qtText.isEmpty ())
+        {
+        HbMessageBox box(HbMessageBox::MessageTypeQuestion);
+        box.setDismissPolicy(HbDialog::NoDismiss);
+        // Set timeout to zero to wait user to either click Ok or Cancel
+        box.setTimeout(HbDialog::NoTimeout);
+        box.setText(qtText);
+        HbAction *action = box.exec();
+        if(action != box.primaryAction())
+            {
+            confirmAction = false;
+            }
+        }    
+    return confirmAction;
+    }
+    
+QString GlxMpxCommandHandler::ConfirmationTextL(bool /*multiSelection */) const
+    {
+    return QString();
+    }
--- a/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro	Fri Apr 16 14:58:46 2010 +0300
@@ -27,8 +27,11 @@
             ../../uiengine/medialists/inc \
             ../../../inc \
             ../../inc \
+            ../../uiengine/model/mediamodel/inc \
             ../../uiengine/model/listmodel/inc \
-            ../../uiengine/medialistwrapper/inc 
+            ../../../commonui/inc \
+            ../../uiengine/medialistwrapper/inc \
+            ../../../traces
 
 DEFINES += BUILD_COMMONCOMMANDHANDLERS
 
@@ -45,20 +48,28 @@
         -lglxcommon.dll \
        	-lglxlistmodel.dll \
         -lglxmedialists.dll \
-	-lexiflib.dll \
-	-lfbscli.dll \
-	-lbafl.dll
+        -lglxcommonui.dll \
+        -lshareui.dll \
+		-lexiflib.dll \
+		-lfbscli.dll \
+		-lbafl.dll
 
 # Input
 HEADERS += inc/glxcommandhandlerdelete.h
 HEADERS += inc/glxcommandhandleraddtocontainer.h
 HEADERS += inc/glxcommandhandlernewmedia.h
 HEADERS += inc/glxcommandhandlerrotate.h
+HEADERS += inc/glxcommandhandlersend.h
+HEADERS += inc/glxcommandhandlerremovefrom.h
+
 
 SOURCES += src/glxcommandhandlerdelete.cpp
 SOURCES += src/glxcommandhandleraddtocontainer.cpp
 SOURCES += src/glxcommandhandlernewmedia.cpp
 SOURCES += src/glxcommandhandlerrotate.cpp
+SOURCES += src/glxcommandhandlersend.cpp
+SOURCES += src/glxcommandhandlerremovefrom.cpp
+
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
 
--- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h	Fri Apr 16 14:58:46 2010 +0300
@@ -44,6 +44,9 @@
     QModelIndexList GetSelectionList(GlxAlbumModel *model,bool *ok = 0) const;
 
 private:
+    QString CompletionTextL() const;
+    QString ProgressTextL() const; 
+private:
     static TInt iSelectionCount;
     mutable bool mNewMediaAdded ;
     mutable CMPXCollectionPath* mTargetContainers ;
--- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerdelete.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerdelete.h	Fri Apr 16 14:58:46 2010 +0300
@@ -33,6 +33,10 @@
     GlxCommandHandlerDelete();
     ~GlxCommandHandlerDelete();
     CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const ;
+private:
+    QString CompletionTextL() const;
+    QString ProgressTextL() const; 
+    QString ConfirmationTextL(bool multiSelection = false) const; 
 	};
 
 #endif // GLXCOMMANDHANDLERDELETE_H
--- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlernewmedia.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlernewmedia.h	Fri Apr 16 14:58:46 2010 +0300
@@ -27,6 +27,7 @@
 #define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT
 #endif
 
+class HbInputDialog;
 
 class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerNewMedia : public GlxMpxCommandHandler
 	{
@@ -37,10 +38,15 @@
 
     TInt ExecuteLD(TGlxMediaId& aNewMediaId);
 
+private:
+    QString CompletionTextL() const;
+    QString ProgressTextL() const; 
+
 protected: // From MGlxMediaListObserver    
     /// See @ref MGlxMediaListObserver::HandleItemAddedL
     void HandleItemAddedL(TInt aStartIndex, TInt aEndIndex, MGlxMediaList* aList);
-    
+    void HandleError(TInt aError);
+    void HandleErrorL(TInt aErrorCode);
 protected: // from GlxMpxCommandHandler
 
     CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const ;
@@ -48,7 +54,8 @@
 	void DoHandleCommandCompleteL(TAny* aSessionId, CMPXCommand* aCommandResult, 
             TInt aError, MGlxMediaList* aList);
 
-    
+private:
+    QString GenerateNewMediaItemTitleL(QString newMediaTilte,MGlxMediaList& aMediaList) const;
 public:
     /**
      *  Id of new media
@@ -66,9 +73,25 @@
     mutable TInt iNewMediaCreationError;
     
     mutable HBufC* iNewMediaItemTitle;
+private:
+    bool mShowConfirmation;
 
 	};
 
+class GlxTextInputDialog : public QObject
+{
+	Q_OBJECT    
+public:
+    GlxTextInputDialog();
+    ~GlxTextInputDialog();
+    QString getText(const QString &label,const QString &text = QString(),bool *ok = 0);
+
+public slots:
+    void textChanged(const QString &text);
+
+private:
+    HbInputDialog* mDialog;
+};
     
     
 #endif // GLXCOMMANDHANDLERNEWMEDIA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerremovefrom.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef GLXCOMMANDHANDLERREMOVEFROM_H
+#define GLXCOMMANDHANDLERREMOVEFROM_H
+
+#include <glxmpxcommandhandler.h>
+
+#ifdef BUILD_COMMONCOMMANDHANDLERS
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_EXPORT
+#else
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT
+#endif
+
+
+class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerRemoveFrom : public GlxMpxCommandHandler
+	{
+public:
+    GlxCommandHandlerRemoveFrom();
+    ~GlxCommandHandlerRemoveFrom();
+    CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const ;
+private:
+    QString CompletionTextL() const;
+    QString ProgressTextL() const; 
+	};
+
+#endif // GLXCOMMANDHANDLERREMOVEFROM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef GLXCOMMANDHANDLERSEND_H
+#define GLXCOMMANDHANDLERSEND_H
+
+#include "glxmodelcommandhandler.h"
+#include <QList>
+#include <QString>
+
+
+#ifdef BUILD_COMMONCOMMANDHANDLERS
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_EXPORT
+#else
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT
+#endif
+
+
+class  GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerSend : public GlxModelCommandHandler
+	{
+public:
+    GlxCommandHandlerSend();
+    ~GlxCommandHandlerSend();    
+    void doHandleUserAction(GlxMediaModel* model,QList<QModelIndex> indexList)const ;  
+	};
+#endif // GLXCOMMANDHANDLERSEND_H
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -28,125 +28,144 @@
 #include <glxalbummodel.h>
 #include <glxcollectionpluginalbums.hrh>
 #include <glxmodelparm.h>
-#include <QDebug>
 #include <glxfilterfactory.h>
 
-
 #include <hblistwidget.h>
 #include <hbview.h>
 #include <hbpushbutton.h>
 #include <QGraphicsGridLayout>
 #include <hbdialog.h>
+#include <hbmessagebox.h>
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxcommandhandleraddtocontainerTraces.h"
+#endif
+
 
 TInt GlxCommandHandlerAddToContainer::iSelectionCount = 0;
 
 const TInt KSelectionPopupListHierarchy = 5;
 
-GlxQueryContentWidget::GlxQueryContentWidget(QGraphicsItem* parent):QGraphicsWidget(parent),
-						mButton(0), mListView(0), mGrid(0)
-{
+GlxQueryContentWidget::GlxQueryContentWidget(QGraphicsItem* parent) :
+    QGraphicsWidget(parent), mButton(0), mListView(0), mGrid(0)
+    {
+    OstTraceFunctionEntry0( DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY );
     mGrid = new QGraphicsGridLayout;
-    mGrid->setContentsMargins(0,0,0,0);
-    
-    mButton = new HbPushButton("New Item");      
+    mGrid->setContentsMargins(0, 0, 0, 0);
+
+    mButton = new HbPushButton("New Item");
     mListView = new HbListView(this);
     mListView->setSelectionMode(HbAbstractItemView::MultiSelection);
-    mListView->setMinimumSize(QSize(360, 180));
-    mListView->setMaximumSize(QSize(360, 180));
 
-    mGrid->addItem(mButton, 0,0);
-    mGrid->addItem(mListView, 1,0);
+    mGrid->addItem(mButton, 0, 0);
+    mGrid->addItem(mListView, 1, 0);
     setLayout(mGrid); //ownership transfered
-    
-    setPreferredWidth(360);
-}
+
+    OstTraceFunctionExit0( DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT );
+    }
 
 GlxQueryContentWidget::~GlxQueryContentWidget()
-{
-    qDebug("GlxQueryContentWidget::~GlxQueryContentWidget() ");
+    {
+    OstTraceFunctionEntry0( GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY );
     delete mListView;
     delete mButton;
-    qDebug("GlxQueryContentWidget::~GlxQueryContentWidget() exit");
-}
+    OstTraceFunctionExit0( GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT );
+    }
 
-GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer():mNewMediaAdded(false)
-{
+GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer() :
+    mNewMediaAdded(false)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY );
     mTargetContainers = NULL;
-    qDebug("GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer() ");
-}
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT );
+    }
 
 GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer()
-{
+    {
+    OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY );
     delete mTargetContainers;
-    qDebug("GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer() ");
-}
+    OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT );
+    }
 
-CMPXCommand* GlxCommandHandlerAddToContainer::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const 
-{
-    qDebug("GlxCommandHandlerAddToContainer::CreateCommandL");
+CMPXCommand* GlxCommandHandlerAddToContainer::CreateCommandL(TInt /*aCommandId*/,
+        MGlxMediaList& aMediaList, TBool& /*aConsume*/) const
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_ENTRY );
     iSelectionCount = 0;
 
-    CMPXCollectionPath* sourceItems = aMediaList.PathLC( NGlxListDefs::EPathFocusOrSelection );
+    CMPXCollectionPath* sourceItems = aMediaList.PathLC(
+            NGlxListDefs::EPathFocusOrSelection);
     bool ok = false;
 
-
     //create target medialist
-   	CMPXCollectionPath* path = CMPXCollectionPath::NewL();
-    CleanupStack::PushL( path );
+    CMPXCollectionPath* path = CMPXCollectionPath::NewL();
+    CleanupStack::PushL(path);
     path->AppendL(KGlxCollectionPluginAlbumsImplementationUid);
 
-	CMPXFilter* filter = TGlxFilterFactory::CreateCameraAlbumExclusionFilterL();
+    CMPXFilter* filter =
+            TGlxFilterFactory::CreateCameraAlbumExclusionFilterL();
     CleanupStack::PushL(filter);
-	
+
     // Create the media list
-    MGlxMediaList* targetMediaList =  MGlxMediaList::InstanceL( *path, 
-	                  TGlxHierarchyId(KSelectionPopupListHierarchy), filter );  //todo take actual hierarchy 
-    CleanupStack::PopAndDestroy( filter );
+    MGlxMediaList* targetMediaList = MGlxMediaList::InstanceL(*path,
+            TGlxHierarchyId(KSelectionPopupListHierarchy), filter); //todo take actual hierarchy 
+    CleanupStack::PopAndDestroy(filter);
     CleanupStack::PopAndDestroy(path);
-    
+
     //create target model
-    GlxModelParm modelParm (KGlxCollectionPluginAlbumsImplementationUid, KSelectionPopupListHierarchy,EGlxFilterExcludeCamera);
-    GlxAlbumModel *albumMediaModel = new GlxAlbumModel (modelParm);
-    albumMediaModel->setData(QModelIndex(), (int)GlxContextSelectionList, GlxContextRole );
-    
-    //QModelIndexList selectedModelIndexes;
-    QModelIndexList modelList = GetSelectionList(albumMediaModel,&ok);
-    
+    GlxModelParm modelParm(KGlxCollectionPluginAlbumsImplementationUid,
+            KSelectionPopupListHierarchy, EGlxFilterExcludeCamera);
+    GlxAlbumModel *albumMediaModel = new GlxAlbumModel(modelParm);
+    albumMediaModel->setData(QModelIndex(), (int) GlxContextSelectionList,
+            GlxContextRole);
+
+    QModelIndexList modelList = GetSelectionList(albumMediaModel, &ok);
+
     CMPXCommand* command = NULL;
-    qDebug("GlxCommandHandlerAddToContainer::CreateCommandL OK %d new media added %d", ok, mNewMediaAdded);
-    
-    if (ok|| mNewMediaAdded) {        
+    OstTraceExt2( TRACE_NORMAL, GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL, "GlxCommandHandlerAddToContainer::CreateCommandL;ok=%d;newMedia=%d", ok, mNewMediaAdded );
+
+    if (ok || mNewMediaAdded)
+        {
         int count = modelList.count();
-        
-        for(int i = 0 ; i < count ; i++) {
-            albumMediaModel->setData( modelList[i], modelList[i].row(), GlxSelectedIndexRole );	
-        }
-        
-        if(!mNewMediaAdded) {
-            CMPXCollectionPath* targetContainers  = targetMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection );
+
+        for (int i = 0; i < count; i++)
+            {
+            albumMediaModel->setData(modelList[i], modelList[i].row(),
+                    GlxSelectedIndexRole);
+            }
+
+        if (!mNewMediaAdded)
+            {
+            CMPXCollectionPath* targetContainers = targetMediaList->PathLC(
+                    NGlxListDefs::EPathFocusOrSelection);
             CleanupStack::Pop(targetContainers);
             delete mTargetContainers;
             mTargetContainers = NULL;
             mTargetContainers = targetContainers;
+            }
+
+        command = TGlxCommandFactory::AddToContainerCommandLC(*sourceItems,
+                *mTargetContainers);
+        CleanupStack::Pop(command);
+        mNewMediaAdded = false;
         }
-        
-        command = TGlxCommandFactory::AddToContainerCommandLC(*sourceItems, *mTargetContainers);
-        CleanupStack::Pop(command); 
-        mNewMediaAdded = false;
-    }
 
     MGlxMediaList::UnmarkAllL(*targetMediaList);
     targetMediaList->Close();
     CleanupStack::PopAndDestroy(sourceItems);
     delete albumMediaModel;
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_EXIT );
     return command;
-}
+    }
 
-QModelIndexList GlxCommandHandlerAddToContainer::GetSelectionList(GlxAlbumModel *model,bool *ok) const
-{
+QModelIndexList GlxCommandHandlerAddToContainer::GetSelectionList(
+        GlxAlbumModel *model, bool *ok) const
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_ENTRY );
     // Create a popup
     HbDialog popup;
-
+    popup.setPreferredHeight(400);
     // Set dismiss policy that determines what tap events will cause the popup
     // to be dismissed
     popup.setDismissPolicy(HbDialog::NoDismiss);
@@ -157,58 +176,74 @@
 
     GlxQueryContentWidget* view = new GlxQueryContentWidget();
     view->mListView->setModel(model);
-    
-    qDebug("GlxCommandHandlerAddToContainer::GetSelectionList model setting done row count %d",model->rowCount() );
+
     connect(view->mButton, SIGNAL(released ()), &popup, SLOT(close()));
     connect(view->mButton, SIGNAL(released ()), this, SLOT(createNewMedia()));
 
-    HbAction *primary = new HbAction("OK"); 
+
+    HbAction *primary = new HbAction("OK");
     popup.setPrimaryAction(primary);
 
-    HbAction *secondary = new HbAction("Cancel"); 
+    HbAction *secondary = new HbAction("Cancel");
     popup.setSecondaryAction(secondary);
     
     popup.setContentWidget(view); //ownership transfer
-    qDebug("GlxCommandHandlerAddToContainer::GetSelectionList after popup.setContentWidget ");
     view->mListView->show();
-    QModelIndexList selectedIndexes;
     
-    do {
+    QModelIndexList selectedIndexes;
+
+    do
+        {
         HbAction* action = popup.exec();
-        if(action == popup.primaryAction()){
+        if (action == popup.primaryAction())
+            {
             *ok = true;
-        }
-        else {
+            }
+        else
+            {
             *ok = false;
+            }
+        OstTrace1( TRACE_NORMAL, GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST, "GlxCommandHandlerAddToContainer::GetSelectionList;ok=%d", *ok );
+
+
+        if (*ok)
+            {
+            GlxQueryContentWidget* cWidget = qobject_cast<
+                    GlxQueryContentWidget*> (popup.contentWidget());
+            QItemSelectionModel* selModel =
+                    cWidget->mListView->selectionModel();
+            selectedIndexes = selModel->selectedIndexes();
+            }
         }
-        
-        qDebug("GlxCommandHandlerAddToContainer::GetSelectionList after exec user action %d ", *ok);
-    
-        if( *ok ) {
-            GlxQueryContentWidget* cWidget = qobject_cast<GlxQueryContentWidget*>(popup.contentWidget());
-            QItemSelectionModel* selModel = cWidget->mListView->selectionModel();
-            qDebug("GlxCommandHandlerAddToContainer::GetSelectionList selection model %d", selModel);
-            selectedIndexes = selModel->selectedIndexes();
-        }
-    }  while ( *ok && selectedIndexes.count() == 0); //continue until user select one album list or new item
+    while (*ok && selectedIndexes.count() == 0); //continue until user select one album list or new item
 
     delete primary;
     delete secondary;
-    qDebug("GlxCommandHandlerAddToContainer::GetSelectionList exit ");  
-    
+
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_EXIT );
     return selectedIndexes;
-}
+    }
 
 void GlxCommandHandlerAddToContainer::createNewMedia()
-{
-    qDebug("GlxCommandHandlerAddToContainer::createNewMedia ");
-    GlxCommandHandlerNewMedia* commandHandlerNewMedia = new GlxCommandHandlerNewMedia();
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_ENTRY );
+    GlxCommandHandlerNewMedia* commandHandlerNewMedia =
+            new GlxCommandHandlerNewMedia();
     TGlxMediaId newMediaId;
-    TInt error  = commandHandlerNewMedia->ExecuteLD(newMediaId);
-    
-    if (error == KErrNone) {
+    TInt error = commandHandlerNewMedia->ExecuteLD(newMediaId);
+
+    while (error == KErrAlreadyExists)
+        {
+        HbMessageBox::warning("Name Already Exist!!!", new HbLabel(
+                "New Album"));
+        error = KErrNone;
+        error = commandHandlerNewMedia->ExecuteLD(newMediaId);
+        }
+
+    if (error == KErrNone)
+        {
         CMPXCollectionPath* path = CMPXCollectionPath::NewL();
-        CleanupStack::PushL( path );
+        CleanupStack::PushL(path);
         path->AppendL(KGlxCollectionPluginAlbumsImplementationUid);
         path->AppendL(newMediaId.Value());
         CleanupStack::Pop(path);
@@ -216,5 +251,16 @@
         mTargetContainers = NULL;
         mTargetContainers = path;
         mNewMediaAdded = true;
+        }
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_EXIT );
     }
-}
+
+QString GlxCommandHandlerAddToContainer::CompletionTextL() const
+    {
+    return QString("Item added!");
+    }
+
+QString GlxCommandHandlerAddToContainer::ProgressTextL() const
+    {
+    return QString("Adding album...");
+    }
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -19,26 +19,60 @@
 #include <mglxmedialist.h>
 #include <glxcommandfactory.h>
 #include <glxcommandhandlerdelete.h>
-#include <QDebug>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxcommandhandlerdeleteTraces.h"
+#endif
+
 
 GlxCommandHandlerDelete::GlxCommandHandlerDelete()
-{
-    qDebug("GlxCommandHandlerDelete::GlxCommandHandlerDelete() ");
-}
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY );
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT );
+    }
 
 GlxCommandHandlerDelete::~GlxCommandHandlerDelete()
-{
-    qDebug("GlxCommandHandlerDelete::~GlxCommandHandlerDelete() ");
-}
+    {
+    OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY );
+    OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT );
+    }
 
-CMPXCommand* GlxCommandHandlerDelete::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const 
-{
-	Q_UNUSED(aCommandId);
-	Q_UNUSED(aConsume);
-    qDebug("GlxCommandHandlerDelete::CreateCommandL");
-    CMPXCollectionPath* path = aMediaList.PathLC( NGlxListDefs::EPathFocusOrSelection );
+CMPXCommand* GlxCommandHandlerDelete::CreateCommandL(TInt aCommandId,
+        MGlxMediaList& aMediaList, TBool& aConsume) const
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_ENTRY );
+    Q_UNUSED(aCommandId);
+    Q_UNUSED(aConsume);
+    CMPXCollectionPath* path = aMediaList.PathLC(
+            NGlxListDefs::EPathFocusOrSelection);
     CMPXCommand* command = TGlxCommandFactory::DeleteCommandLC(*path);
     CleanupStack::Pop(command);
     CleanupStack::PopAndDestroy(path);
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_EXIT );
     return command;
-}
+    }
+
+QString GlxCommandHandlerDelete::CompletionTextL() const
+    {
+    return QString("Item deleted!");
+    }
+
+QString GlxCommandHandlerDelete::ProgressTextL() const
+    {
+    return QString("Deleting...");
+    }
+
+QString GlxCommandHandlerDelete::ConfirmationTextL(bool multiSelection ) const
+    {
+    QString retString;
+    if(multiSelection)
+        {
+        retString = QString("Delete selected images");
+        }
+    else
+        {
+        retString = QString("Delete ");
+        }
+    return  retString;   
+    }    
+    
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -20,118 +20,333 @@
 #include <glxcommandfactory.h>
 #include <glxcommandhandlernewmedia.h>
 #include <glxcommandhandlers.hrh>
+#include <glxattributecontext.h>
+#include <glxattributeretriever.h>
+#include <glxfetchcontextremover.h>
+#include <glxcollectionpluginalbums.hrh>
 
 #include <hbinputdialog.h>
+#include <hblabel.h>
+#include <hbmessagebox.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxcommandhandlernewmediaTraces.h"
+#endif
+#include <hbaction.h>
 
-GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia():iNewMediaCreationError(KErrNone) , iNewMediaItemTitle(0)
-{
-    qDebug("GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia() ");
+GlxTextInputDialog::GlxTextInputDialog()
+    {
+    }
+
+GlxTextInputDialog::~GlxTextInputDialog()
+    {
+    }
+
+QString GlxTextInputDialog::getText(const QString &label,
+        const QString &text, bool *ok)
+    {
+    mDialog = new HbInputDialog();
+    mDialog->setPromptText(label);
+    mDialog->setInputMode(HbInputDialog::TextInput);
+    mDialog->setValue(text);
+    connect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ),
+            this, SLOT( textChanged (const QString &)));
+    HbAction* action = mDialog->exec();
+    QString retText = NULL;
+    if (action == mDialog->secondaryAction())
+        { //Cancel was pressed
+        if (ok)
+            {
+            *ok = false;
+            }
+        }
+    else
+        { //OK was pressed
+        if (ok)
+            {
+            *ok = true;
+            }
+        retText = mDialog->value().toString().trimmed();
+        }
+    disconnect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ),
+            this, SLOT( textChanged (const QString &)));
+    delete mDialog;
+    mDialog = NULL;
+    return retText;
+    }
+
+void GlxTextInputDialog::textChanged(const QString &text)
+    {
+    if (text.trimmed().isEmpty())
+        {
+        mDialog->primaryAction()->setEnabled(false);
+        }
+    else
+        {
+        mDialog->primaryAction()->setEnabled(true);
+        }
+    }
+
+
+GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia() :
+    iNewMediaCreationError(KErrNone), iNewMediaItemTitle(0) , mShowConfirmation(false)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY );
     iSchedulerWait = new (ELeave) CActiveSchedulerWait();
-}
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT );
+    }
 
 GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia()
-{
-    qDebug("GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia() ");
+    {
+    OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY );
+    if (iSchedulerWait && iSchedulerWait->IsStarted())
+        {
+        iSchedulerWait->AsyncStop();
+        }
     delete iSchedulerWait;
     delete iNewMediaItemTitle;
-}
+    OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT );
+    }
 
-CMPXCommand* GlxCommandHandlerNewMedia::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const 
-{
-    qDebug("GlxCommandHandlerNewMedia::CreateCommandL");
-    CMPXCollectionPath* path = aMediaList.PathLC( NGlxListDefs::EPathParent );
+CMPXCommand* GlxCommandHandlerNewMedia::CreateCommandL(TInt /*aCommandId*/,
+        MGlxMediaList& aMediaList, TBool& /*aConsume*/) const
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_ENTRY );
+    CMPXCollectionPath* path = aMediaList.PathLC(NGlxListDefs::EPathParent);
     CMPXCommand* command = NULL;
-    
+   
+
     _LIT(KName, "TEST");
     HBufC* newMediaItemTitle = HBufC::NewL(40);
     TPtr newMediaItemTitleDes = newMediaItemTitle->Des();
     newMediaItemTitleDes.Append(KName);
-    
+
+
     delete iNewMediaItemTitle;
-    iNewMediaItemTitle= NULL;
+    iNewMediaItemTitle = NULL;
     iNewMediaItemTitle = newMediaItemTitle;
 
     QString title("NEW MEDIA");
-    QString mainPane = QString("Album %1").arg(qrand());
+    QString mainPane = GenerateNewMediaItemTitleL("Album",aMediaList);
     bool ok = false;
+	QString mediaTitle = NULL;
+    GlxTextInputDialog* dlg = new GlxTextInputDialog();
+    mediaTitle = dlg->getText(title, mainPane, &ok);
+    delete dlg;
+    iNewMediaCreationError = KErrNone;
+    if (ok == true)
+        {
+        
+        TPtrC16 newMediaItemTitleDes
+                = (reinterpret_cast<const TUint16*> (mediaTitle.utf16()));
+        
+        delete iNewMediaItemTitle;
+        iNewMediaItemTitle = NULL;        
+        iNewMediaItemTitle = newMediaItemTitleDes.Alloc();
+        
+        command = TGlxCommandFactory::AddContainerCommandLC(
+                *iNewMediaItemTitle, path->Id(0));
+        CleanupStack::Pop(command);
+        }
+    else
+        {
+        iNewMediaCreationError = KErrCancel;
+        }
 
-    QString mediaTitle = HbInputDialog::getText(title,  mainPane,  &ok);
-    qDebug("GlxCommandHandlerNewMedia::CreateCommandL %d", ok);
-    
-    if(ok == true) {
-        TPtr newMediaItemTitleDes = iNewMediaItemTitle->Des();
-        newMediaItemTitleDes = (reinterpret_cast<const TUint16*>(mediaTitle.utf16()));
-        command = TGlxCommandFactory::AddContainerCommandLC(*iNewMediaItemTitle, path->Id(0));
-        CleanupStack::Pop(command);
+    CleanupStack::PopAndDestroy(path);
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_EXIT );
+    return command;
     }
-    else {
-    	iNewMediaCreationError = KErrCancel;
-    }
-    	
-    CleanupStack::PopAndDestroy(path);
-    return command;
-}
 
 
 TInt GlxCommandHandlerNewMedia::ExecuteLD(TGlxMediaId& aNewMediaId)
-{
-    qDebug("GlxCommandHandlerNewMedia::ExecuteLD() ");
-    GlxMpxCommandHandler::executeCommand( EGlxCmdAddMedia,KGlxAlbumsMediaId);
-
-    if (iNewMediaCreationError == KErrNone) {
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_ENTRY );
+    GlxMpxCommandHandler::executeCommand(EGlxCmdAddMedia, KGlxCollectionPluginAlbumsImplementationUid);
+    mShowConfirmation = true;
+    if (iNewMediaCreationError == KErrNone)
+        {
         // The user pressed OK on the dialog. We need to wait for DoHandleCommandComplete()	
-       iSchedulerWait->Start();
-		
-       if (iNewMediaCreationError == KErrNone) {
+        iSchedulerWait->Start();
+
+        if (iNewMediaCreationError == KErrNone)
+            {
             aNewMediaId = iNewMediaId;
+            }
         }
-    }
-	
+
     TInt error = iNewMediaCreationError;
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_EXIT );
     return error;
-}
+    }
 
 // -----------------------------------------------------------------------------
 // CGlxCommandHandlerNewMedia::DoHandleCommandCompleteL
 // -----------------------------------------------------------------------------
 //	
-void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(TAny* /*aSessionId*/, CMPXCommand* aCommandResult, 
-            							TInt aError, MGlxMediaList* /*aList*/)
-{
-    qDebug("GlxCommandHandlerNewMedia::DoHandleCommandCompleteL() ");
-    if (aError == KErrNone && aCommandResult && aCommandResult->IsSupported(KMPXMediaGeneralId)) {	
-        iNewMediaId = TGlxMediaId(aCommandResult->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId));
-    }	
-
-    if (iSchedulerWait && aError != KErrAlreadyExists ) {
+void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(
+        TAny* /*aSessionId*/, CMPXCommand* aCommandResult, TInt aError,
+        MGlxMediaList* /*aList*/)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_ENTRY );
+    if (aError == KErrNone && aCommandResult && aCommandResult->IsSupported(
+            KMPXMediaGeneralId))
+        {
+        iNewMediaId = TGlxMediaId(aCommandResult->ValueTObjectL<TMPXItemId> (
+                KMPXMediaGeneralId));
+        }
+    if (iSchedulerWait && iSchedulerWait->IsStarted())
+        {
         // if iSchedulerWait exists then we know the command is being executed from
         // the ExecuteLD() method.
         iNewMediaCreationError = aError;
         iSchedulerWait->AsyncStop();
+        }
+    
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_EXIT );
     }
-}
 
 // -----------------------------------------------------------------------------
 // HandleItemAddedL
 // -----------------------------------------------------------------------------
 //  
-void GlxCommandHandlerNewMedia::HandleItemAddedL(TInt aStartIndex, TInt aEndIndex, MGlxMediaList* aList)
-{
-    qDebug("GlxCommandHandlerNewMedia::HandleItemAddedL() ");
-    if(/*aList == &MediaList() && */iNewMediaId != KGlxCollectionRootId) {
-         for (TInt i = aStartIndex; i <= aEndIndex; i++) {
-            if (aList->Item(i).Id() == iNewMediaId) {
-                qDebug("GlxCommandHandlerNewMedia::HandleItemAddedL()::SetFocusL index= %d ",i);
+void GlxCommandHandlerNewMedia::HandleItemAddedL(TInt aStartIndex,
+        TInt aEndIndex, MGlxMediaList* aList)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_ENTRY );
+    if (iNewMediaId != KGlxCollectionRootId)
+        {
+        for (TInt i = aStartIndex; i <= aEndIndex; i++)
+            {
+            if (aList->Item(i).Id() == iNewMediaId)
+                {
                 aList->SetFocusL(NGlxListDefs::EAbsolute, i); // calls CGlxCommandHandlerNewMedia::SetFocusL asynchronously
-                if (iSchedulerWait /*&& aError != KErrAlreadyExists*/ ) {
+                if (iSchedulerWait && iSchedulerWait->IsStarted() )
+                    {
                     // if iSchedulerWait exists then we know the command is being executed from
                     // the ExecuteLD() method.
                     iNewMediaCreationError = KErrNone;
                     iSchedulerWait->AsyncStop();
-                }
+                    }
 
                 break;
+                }
             }
         }
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_EXIT );
     }
+
+void GlxCommandHandlerNewMedia::HandleError(TInt /*aError*/)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_ENTRY );
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_EXIT );
+    }
+
+void GlxCommandHandlerNewMedia::HandleErrorL(TInt aErrorCode)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_ENTRY );
+    if (aErrorCode == KErrAlreadyExists && !mShowConfirmation)
+        {
+        HbMessageBox::warning("Album Already Exist!!!" );
+        }
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_EXIT );
+    }
+
+QString GlxCommandHandlerNewMedia::GenerateNewMediaItemTitleL(
+        QString newMediaTilte, MGlxMediaList& aMediaList) const
+    {
+    TGlxSequentialIterator iter;
+    CGlxAttributeContext* attributeContext =
+            new (ELeave) CGlxAttributeContext(&iter);
+    CleanupStack::PushL(attributeContext);
+    attributeContext->AddAttributeL(KMPXMediaGeneralTitle);
+    aMediaList.AddContextL(attributeContext, KGlxFetchContextPriorityBlocking);
+    TGlxFetchContextRemover contextRemover(attributeContext, aMediaList);
+    // put to cleanupstack as cleanupstack is emptied before stack objects
+    // are deleted
+    CleanupClosePushL(contextRemover);
+    User::LeaveIfError(GlxAttributeRetriever::RetrieveL(*attributeContext,
+            aMediaList, ETrue));
+    // context off the list
+    CleanupStack::PopAndDestroy(&contextRemover);
+    CleanupStack::PopAndDestroy(attributeContext);
+
+    RArray<TInt> numbers;
+    CleanupClosePushL(numbers);
+
+    TInt count = aMediaList.Count();
+    for (TInt i = 0; i < count; i++)
+        {
+        TGlxMedia item = aMediaList.Item(i);
+        const CGlxMedia* media = item.Properties();
+        if (media)
+            {
+            const TDesC& titleDesc = media->ValueText(KMPXMediaGeneralTitle);
+            QString title = QString::fromUtf16(titleDesc.Ptr(),
+                    titleDesc.Length());
+
+            TInt length = newMediaTilte.length();
+            if (title.startsWith(newMediaTilte, Qt::CaseSensitive))
+                {
+                if (length == title.length())
+                    {
+                    numbers.InsertInOrder(0); // special case
+                    }
+                else if (title.length() > length)
+                    {
+                    QString num = title.mid(length);
+                    bool ok = false;
+                    TInt dec = num.toInt(&ok);
+                    if (ok)
+                        {
+                        numbers.InsertInOrder(dec);
+                        }
+                    }
+                }
+            }
+        }
+
+    TInt nextNumber = 0;
+    count = numbers.Count();
+    for (TInt i = 0; i < count; i++)
+        {
+        if (numbers[i] == nextNumber)
+            {
+            nextNumber++;
+            }
+        else
+            {
+            break;
+            }
+        }
+
+    CleanupStack::PopAndDestroy(&numbers);
+
+    QString newMediaItemTitle = newMediaTilte;
+
+    if (nextNumber > 0)
+        {
+        newMediaItemTitle.append(QString("%1").arg(nextNumber));
+        }
+    return newMediaItemTitle;
+
 }
+
+QString GlxCommandHandlerNewMedia::CompletionTextL() const
+    {
+    if (!mShowConfirmation)
+        {
+        return QString("Album added");
+        }
+    return QString();
+    }
+
+QString GlxCommandHandlerNewMedia::ProgressTextL() const
+    {
+    if (!mShowConfirmation)
+        {
+        return QString("Adding album...");
+        }
+    return QString();
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerremovefrom.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include <mpxcollectionpath.h>
+#include <mglxmedialist.h>
+#include <glxcommandfactory.h>
+#include <glxcommandhandlerremovefrom.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxcommandhandlerremovefromTraces.h"
+#endif
+
+
+GlxCommandHandlerRemoveFrom::GlxCommandHandlerRemoveFrom()
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY );
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT );
+    }
+
+GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom()
+    {
+    OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY );
+    OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT );
+    }
+
+CMPXCommand* GlxCommandHandlerRemoveFrom::CreateCommandL(TInt aCommandId,
+        MGlxMediaList& aMediaList, TBool& aConsume) const
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_ENTRY );
+    Q_UNUSED(aCommandId);
+    Q_UNUSED(aConsume);
+    CMPXCollectionPath* path = aMediaList.PathLC(
+            NGlxListDefs::EPathFocusOrSelection);
+
+    CMPXCommand* command = TGlxCommandFactory::RemoveFromContainerCommandLC(
+            *path);
+    CleanupStack::Pop(command);
+    CleanupStack::PopAndDestroy(path);
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_EXIT );
+    return command;
+    }
+
+QString GlxCommandHandlerRemoveFrom::CompletionTextL() const
+    {
+    return QString("Item removed!");
+    }
+
+QString GlxCommandHandlerRemoveFrom::ProgressTextL() const
+    {
+    return QString("Removing...");
+    }
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotate.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotate.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -18,156 +18,185 @@
 #include <mpxcollectionpath.h>
 #include <mglxmedialist.h>
 #include <glxcommandfactory.h>
-#include <GlxCommandHandlerRotate.h>
-#include <QDebug>
+#include <glxcommandHandlerrotate.h>
 #include <ExifRead.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxcommandhandlerrotateTraces.h"
+#endif
+
 
 GlxCommandHandlerRotate::GlxCommandHandlerRotate()
-{
-    qDebug("GlxCommandHandlerRotate::GlxCommandHandlerRotate() ");
-}
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY );
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT );
+    }
 
 GlxCommandHandlerRotate::~GlxCommandHandlerRotate()
-{
-    qDebug("GlxCommandHandlerRotate::~GlxCommandHandlerRotate() ");
-}
+    {
+    OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY );
+    OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT );
+    }
 
-CMPXCommand* GlxCommandHandlerRotate::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const 
-{
-	Q_UNUSED(aCommandId);
-	Q_UNUSED(aConsume);
-    qDebug("GlxCommandHandlerRotate::CreateCommandL");
+CMPXCommand* GlxCommandHandlerRotate::CreateCommandL(TInt aCommandId,
+        MGlxMediaList& /*aMediaList*/, TBool& aConsume) const
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_ENTRY );
+    Q_UNUSED(aCommandId);
+    Q_UNUSED(aConsume);
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_EXIT );
     return NULL;
-}
+    }
 
-void GlxCommandHandlerRotate::DoExecuteCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume)
-{
-	Q_UNUSED(aCommandId);
-	Q_UNUSED(aConsume);
-    qDebug("GlxCommandHandlerRotate::DoExecuteCommandL");
-    const TGlxMedia& item = aMediaList.Item( aMediaList.FocusIndex() );
-	TFileName uri;
-	uri.Copy(item.Uri());
-	TRAPD(err,RotateImageL(uri));
-	if(err != KErrNone) {
-		qDebug("GlxCommandHandlerRotate::DoExecuteCommandL Exif Update failed");
+void GlxCommandHandlerRotate::DoExecuteCommandL(TInt aCommandId,
+        MGlxMediaList& aMediaList, TBool& aConsume)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_ENTRY );
+    Q_UNUSED(aCommandId);
+    Q_UNUSED(aConsume);
+    const TGlxMedia& item = aMediaList.Item(aMediaList.FocusIndex());
+    TFileName uri;
+    uri.Copy(item.Uri());
+    TRAPD(err,RotateImageL(uri));
+    if (err != KErrNone)
+        {
+        OstTrace0( TRACE_NORMAL, GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL, "GlxCommandHandlerRotate::DoExecuteCommandL Exif Update failed" );
+        }
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_EXIT );
+    }
 
-	}
-}
 void GlxCommandHandlerRotate::RotateImageL(TFileName aFileToBeRotated)
-{
-	//Start an IFS session
-	//File system 
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_ENTRY );
+    //Start an IFS session
+    //File system 
     User::LeaveIfError(iFs.Connect());
-	//first initialize the Exif Writer which is responsible for reading and writing the Exif Data
-	//Will leave here itself in cases where the Exif data is absent
-	InitializeExifWriterL(aFileToBeRotated);
-	//read the Orientation tag stored in  the Exif Data
-	TUint16 initialOrientation = ReadImageOrientationL();
-	//as the image is rotated to 90 degrees clockwise calculate the new orientation by adding that angle
-	TUint16 finalOrientation = CalculateFinalOrientationL(initialOrientation);
-	// Set the Final Orientation on the file
-	SetImageOrientationL(finalOrientation);
-	// Clear the sessions acquired
-	DestroyExifWriter();
-	//close the File Session
-	iFs.Close();
-}
+    //first initialize the Exif Writer which is responsible for reading and writing the Exif Data
+    //Will leave here itself in cases where the Exif data is absent
+    InitializeExifWriterL(aFileToBeRotated);
+    //read the Orientation tag stored in  the Exif Data
+    TUint16 initialOrientation = ReadImageOrientationL();
+    //as the image is rotated to 90 degrees clockwise calculate the new orientation by adding that angle
+    TUint16 finalOrientation = CalculateFinalOrientationL(initialOrientation);
+    // Set the Final Orientation on the file
+    SetImageOrientationL(finalOrientation);
+    // Clear the sessions acquired
+    DestroyExifWriter();
+    //close the File Session
+    iFs.Close();
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_EXIT );
+    }
 
-void GlxCommandHandlerRotate::InitializeExifWriterL(TFileName aFileToBeRotated)
-{
-	User::LeaveIfError(iFileHandle.Open(iFs,
-                    aFileToBeRotated, EFileWrite));
-	TInt filesize;
+void GlxCommandHandlerRotate::InitializeExifWriterL(
+        TFileName aFileToBeRotated)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_ENTRY );
+    User::LeaveIfError(iFileHandle.Open(iFs, aFileToBeRotated, EFileWrite));
+    TInt filesize;
     User::LeaveIfError(iFileHandle.Size(filesize));
-	iExifData = HBufC8::NewL(filesize);
-	TPtr8 ptr(iExifData->Des());
+    iExifData = HBufC8::NewL(filesize);
+    TPtr8 ptr(iExifData->Des());
     User::LeaveIfError(iFileHandle.Read(ptr));
-   	iExifWriter = CExifModify::NewL(*iExifData,CExifModify::EModify,CExifModify::ENoJpegParsing);
-}
+    iExifWriter = CExifModify::NewL(*iExifData, CExifModify::EModify,
+            CExifModify::ENoJpegParsing);
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_EXIT );
+    }
 
 TUint16 GlxCommandHandlerRotate::ReadImageOrientationL()
 {
+	OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_ENTRY );
 	TUint16 initialOrientation;
 	const CExifRead* exifReader = iExifWriter->Reader(); //not owned
     User::LeaveIfError(exifReader->GetOrientation(initialOrientation));
-	qDebug("GlxCommandHandlerRotate::ReadImageOrientationL initial orientation = %d", initialOrientation);
+	OstTrace1( TRACE_NORMAL, GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL, "GlxCommandHandlerRotate::ReadImageOrientationL;initial orientation=%d", initialOrientation );
+	OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_EXIT );
 	return (initialOrientation);
 }
 
-TUint16 GlxCommandHandlerRotate::CalculateFinalOrientationL(TUint16 aInitialOrientation)
-{
-	/*
+TUint16 GlxCommandHandlerRotate::CalculateFinalOrientationL(
+        TUint16 aInitialOrientation)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_ENTRY );
+    /*
      * possible orientation state with angles for rotation
      * Possible Angles 0 - 90 - 180 - 270
      * Possible states 1 - 8 - 3 - 6 without a Flip
      * Possible states 2 - 7 - 4 - 5 when Flip is on
      */
-	TUint16 finalOrientation = aInitialOrientation;
-	if(aInitialOrientation >8 ) {
-		//invalid orientation passed Leave
+    TUint16 finalOrientation = aInitialOrientation;
+    if (aInitialOrientation > 8)
+        {
+        //invalid orientation passed Leave
         User::Leave(KErrCorrupt);
-    }
-	TInt rotOffset = 1;
-	TInt isOrientationOdd = aInitialOrientation % 2;
-	TInt initStateIndex = 0;
+        }
+    TInt rotOffset = 1;
+    TInt isOrientationOdd = aInitialOrientation % 2;
+    TInt initStateIndex = 0;
     TInt finalStateIndex = 0;
     //Setting the orientation states for the initial unflipped orientation combinations
-    TInt orientationStateArray[] = {1,8,3,6};
+    TInt orientationStateArray[] =
+        {
+        1, 8, 3, 6
+        };
     //Seting the index for current orientation
-    if(aInitialOrientation < 3)
+    if (aInitialOrientation < 3)
         {
         initStateIndex = 0;
         }
-    else if(aInitialOrientation >= 3 && aInitialOrientation < 5)
+    else if (aInitialOrientation >= 3 && aInitialOrientation < 5)
         {
         initStateIndex = 2;
         }
-    else if(aInitialOrientation >= 5 && aInitialOrientation < 7)
+    else if (aInitialOrientation >= 5 && aInitialOrientation < 7)
         {
         initStateIndex = 3;
         }
-    else if(aInitialOrientation >= 7 && aInitialOrientation <= 8)
+    else if (aInitialOrientation >= 7 && aInitialOrientation <= 8)
         {
         initStateIndex = 1;
         }
     //Calculating the final orientation using the cyclic orientationStateArray. 
     //folding final index so that it behaves like a cyclic machine 
-    finalStateIndex = (initStateIndex+rotOffset)%4;
+    finalStateIndex = (initStateIndex + rotOffset) % 4;
     finalOrientation = orientationStateArray[finalStateIndex];
     //Checking if a Flip was present 
-    if(aInitialOrientation>4 && isOrientationOdd )
+    if (aInitialOrientation > 4 && isOrientationOdd)
         {
         finalOrientation -= 1;
         }
-    if(aInitialOrientation<5 && !isOrientationOdd)
+    if (aInitialOrientation < 5 && !isOrientationOdd)
         {
         finalOrientation += 1;
         }
-	qDebug("GlxCommandHandlerRotate::CalculateFinalOrientationL final orientation = %d", finalOrientation);
+    OstTrace1( TRACE_NORMAL, GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL, "GlxCommandHandlerRotate::CalculateFinalOrientationL;finalOrientation=%d", finalOrientation );
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_EXIT );
     return finalOrientation;
-}
+    }
 
 void GlxCommandHandlerRotate::SetImageOrientationL(TUint16 aFinalOrientation)
-{
-	iExifWriter->SetOrientationL(aFinalOrientation);
-	HBufC8* modifiedexifData=NULL;
-	modifiedexifData = iExifWriter->WriteDataL(iExifData->Des());
-	User::LeaveIfError(iFileHandle.Write(0,modifiedexifData->Des()));
-    delete modifiedexifData;	
-}
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_ENTRY );
+    iExifWriter->SetOrientationL(aFinalOrientation);
+    HBufC8* modifiedexifData = NULL;
+    modifiedexifData = iExifWriter->WriteDataL(iExifData->Des());
+    User::LeaveIfError(iFileHandle.Write(0, modifiedexifData->Des()));
+    delete modifiedexifData;
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_EXIT );
+    }
 
 void GlxCommandHandlerRotate::DestroyExifWriter()
-{
-	iFileHandle.Close();
-	if(iExifData != NULL)
+    {
+    OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_ENTRY );
+    iFileHandle.Close();
+    if (iExifData != NULL)
         {
         delete iExifData;
         iExifData = NULL;
         }
-    if(iExifWriter != NULL)
+    if (iExifWriter != NULL)
         {
         delete iExifWriter;
         iExifWriter = NULL;
-        } 
-}
+        }
+    OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_EXIT );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "glxcommandhandlersend.h"
+#include <QModelIndex>
+#include <shareuidialog.h>
+#include <glxmodelparm.h>
+#include <glxmediamodel.h>
+#include <QAbstractItemModel>
+
+GlxCommandHandlerSend::GlxCommandHandlerSend()
+    {
+
+    }
+
+
+GlxCommandHandlerSend::~GlxCommandHandlerSend()
+    {
+   
+    }
+
+void GlxCommandHandlerSend::doHandleUserAction(GlxMediaModel* model,QList<QModelIndex> indexList) const
+{
+   QList <QVariant> fileList;
+   QString imagePath ;
+   //The Index list is NULL, when the item is selected to be sent from contect menu 
+   // and fullscreen view,so that inturn is sending the focused item
+    if(indexList.count() == 0)
+        {
+        imagePath = (model->data(model->index(model->data(model->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
+        fileList.append(QVariant(imagePath));
+        }
+    else
+    {
+    for ( int i = 0; i < indexList.count(); i++)
+        {        
+        imagePath = (model->data(indexList[i],GlxUriRole)).value<QString>();
+        fileList.append(QVariant(imagePath));        
+        } 
+    }
+    ShareUi dialog;                               
+    dialog.init(fileList,true);
+}
+
--- a/ui/commandhandlers/eabi/glxcommandhandlerbaseu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/eabi/glxcommandhandlerbaseu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -3,35 +3,55 @@
 	_ZN17GlxCommandHandlerD0Ev @ 2 NONAME
 	_ZN17GlxCommandHandlerD1Ev @ 3 NONAME
 	_ZN17GlxCommandHandlerD2Ev @ 4 NONAME
-	_ZN20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 5 NONAME
-	_ZN20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 6 NONAME
-	_ZN20GlxMpxCommandHandler14executeCommandEii @ 7 NONAME
-	_ZN20GlxMpxCommandHandler16CreateMediaListLEii18TGlxFilterItemType @ 8 NONAME
-	_ZN20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 9 NONAME
-	_ZN20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 10 NONAME
-	_ZN20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 11 NONAME
-	_ZN20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 12 NONAME
-	_ZN20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 13 NONAME
-	_ZN20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 14 NONAME
-	_ZN20GlxMpxCommandHandler24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 15 NONAME
-	_ZN20GlxMpxCommandHandler25CreateMediaListAlbumItemLEii18TGlxFilterItemType @ 16 NONAME
-	_ZN20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 17 NONAME
-	_ZN20GlxMpxCommandHandlerC2Ev @ 18 NONAME
-	_ZN20GlxMpxCommandHandlerD0Ev @ 19 NONAME
-	_ZN20GlxMpxCommandHandlerD1Ev @ 20 NONAME
-	_ZN20GlxMpxCommandHandlerD2Ev @ 21 NONAME
-	_ZTI17GlxCommandHandler @ 22 NONAME
-	_ZTI20GlxMpxCommandHandler @ 23 NONAME
-	_ZTV17GlxCommandHandler @ 24 NONAME
-	_ZTV20GlxMpxCommandHandler @ 25 NONAME
-	_ZThn8_N20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 26 NONAME
-	_ZThn8_N20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 27 NONAME
-	_ZThn8_N20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 28 NONAME
-	_ZThn8_N20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 29 NONAME
-	_ZThn8_N20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 30 NONAME
-	_ZThn8_N20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 31 NONAME
-	_ZThn8_N20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 32 NONAME
-	_ZThn8_N20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 33 NONAME
-	_ZThn8_N20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 34 NONAME
-	_ZN20GlxMpxCommandHandler17DoExecuteCommandLEiR13MGlxMediaListRi @ 35 NONAME
+	_ZN20GlxMpxCommandHandler11HandleErrorEi @ 5 NONAME
+	_ZN20GlxMpxCommandHandler12HandleErrorLEi @ 6 NONAME
+	_ZN20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 7 NONAME
+	_ZN20GlxMpxCommandHandler13ProgressNoteLEi @ 8 NONAME
+	_ZN20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 9 NONAME
+	_ZN20GlxMpxCommandHandler14executeCommandEii5QListI11QModelIndexE @ 10 NONAME
+	_ZN20GlxMpxCommandHandler16CreateMediaListLEii18TGlxFilterItemType @ 11 NONAME
+	_ZN20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 12 NONAME
+	_ZN20GlxMpxCommandHandler17DoExecuteCommandLEiR13MGlxMediaListRi @ 13 NONAME
+	_ZN20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 14 NONAME
+	_ZN20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 15 NONAME
+	_ZN20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 16 NONAME
+	_ZN20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 17 NONAME
+	_ZN20GlxMpxCommandHandler20DismissProgressNoteLEv @ 18 NONAME
+	_ZN20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 19 NONAME
+	_ZN20GlxMpxCommandHandler24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 20 NONAME
+	_ZN20GlxMpxCommandHandler25CreateMediaListAlbumItemLEii18TGlxFilterItemType @ 21 NONAME
+	_ZN20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 22 NONAME
+	_ZN20GlxMpxCommandHandler8TryExitLEi @ 23 NONAME
+	_ZN20GlxMpxCommandHandlerC2Ev @ 24 NONAME
+	_ZN20GlxMpxCommandHandlerD0Ev @ 25 NONAME
+	_ZN20GlxMpxCommandHandlerD1Ev @ 26 NONAME
+	_ZN20GlxMpxCommandHandlerD2Ev @ 27 NONAME
+	_ZN22GlxModelCommandHandler14executeCommandEii5QListI11QModelIndexE @ 28 NONAME
+	_ZN22GlxModelCommandHandlerC2Ev @ 29 NONAME
+	_ZN22GlxModelCommandHandlerD0Ev @ 30 NONAME
+	_ZN22GlxModelCommandHandlerD1Ev @ 31 NONAME
+	_ZN22GlxModelCommandHandlerD2Ev @ 32 NONAME
+	_ZNK20GlxMpxCommandHandler13ProgressTextLEv @ 33 NONAME
+	_ZNK20GlxMpxCommandHandler15CompletionNoteLEv @ 34 NONAME
+	_ZNK20GlxMpxCommandHandler15CompletionTextLEv @ 35 NONAME
+	_ZNK20GlxMpxCommandHandler17ConfirmationNoteLER13MGlxMediaList @ 36 NONAME
+	_ZNK20GlxMpxCommandHandler17ConfirmationTextLEb @ 37 NONAME
+	_ZNK20GlxMpxCommandHandler23ConfirmationNoteSingleLER13MGlxMediaList @ 38 NONAME
+	_ZNK20GlxMpxCommandHandler25ConfirmationNoteMultipleLER13MGlxMediaList @ 39 NONAME
+	_ZTI17GlxCommandHandler @ 40 NONAME
+	_ZTI20GlxMpxCommandHandler @ 41 NONAME
+	_ZTI22GlxModelCommandHandler @ 42 NONAME
+	_ZTV17GlxCommandHandler @ 43 NONAME
+	_ZTV20GlxMpxCommandHandler @ 44 NONAME
+	_ZTV22GlxModelCommandHandler @ 45 NONAME
+	_ZThn8_N20GlxMpxCommandHandler11HandleErrorEi @ 46 NONAME
+	_ZThn8_N20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 47 NONAME
+	_ZThn8_N20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 48 NONAME
+	_ZThn8_N20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 49 NONAME
+	_ZThn8_N20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 50 NONAME
+	_ZThn8_N20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 51 NONAME
+	_ZThn8_N20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 52 NONAME
+	_ZThn8_N20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 53 NONAME
+	_ZThn8_N20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 54 NONAME
+	_ZThn8_N20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 55 NONAME
 
--- a/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -1,58 +1,87 @@
 EXPORTS
-	_ZN23GlxCommandHandlerDeleteC1Ev @ 1 NONAME
-	_ZN23GlxCommandHandlerDeleteC2Ev @ 2 NONAME
-	_ZN23GlxCommandHandlerDeleteD0Ev @ 3 NONAME
-	_ZN23GlxCommandHandlerDeleteD1Ev @ 4 NONAME
-	_ZN23GlxCommandHandlerDeleteD2Ev @ 5 NONAME
-	_ZN25GlxCommandHandlerNewMedia11qt_metacallEN11QMetaObject4CallEiPPv @ 6 NONAME
-	_ZN25GlxCommandHandlerNewMedia11qt_metacastEPKc @ 7 NONAME
-	_ZN25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 8 NONAME
-	_ZN25GlxCommandHandlerNewMedia16staticMetaObjectE @ 9 NONAME DATA 16
-	_ZN25GlxCommandHandlerNewMedia19getStaticMetaObjectEv @ 10 NONAME
-	_ZN25GlxCommandHandlerNewMedia24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 11 NONAME
-	_ZN25GlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 12 NONAME
-	_ZN25GlxCommandHandlerNewMediaC1Ev @ 13 NONAME
-	_ZN25GlxCommandHandlerNewMediaC2Ev @ 14 NONAME
-	_ZN25GlxCommandHandlerNewMediaD0Ev @ 15 NONAME
-	_ZN25GlxCommandHandlerNewMediaD1Ev @ 16 NONAME
-	_ZN25GlxCommandHandlerNewMediaD2Ev @ 17 NONAME
-	_ZN31GlxCommandHandlerAddToContainer11qt_metacallEN11QMetaObject4CallEiPPv @ 18 NONAME
-	_ZN31GlxCommandHandlerAddToContainer11qt_metacastEPKc @ 19 NONAME
-	_ZN31GlxCommandHandlerAddToContainer14createNewMediaEv @ 20 NONAME
-	_ZN31GlxCommandHandlerAddToContainer15iSelectionCountE @ 21 NONAME DATA 4
-	_ZN31GlxCommandHandlerAddToContainer16staticMetaObjectE @ 22 NONAME DATA 16
-	_ZN31GlxCommandHandlerAddToContainer19getStaticMetaObjectEv @ 23 NONAME
-	_ZN31GlxCommandHandlerAddToContainerC1Ev @ 24 NONAME
-	_ZN31GlxCommandHandlerAddToContainerC2Ev @ 25 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD0Ev @ 26 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD1Ev @ 27 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD2Ev @ 28 NONAME
-	_ZNK23GlxCommandHandlerDelete14CreateCommandLEiR13MGlxMediaListRi @ 29 NONAME
-	_ZNK25GlxCommandHandlerNewMedia10metaObjectEv @ 30 NONAME
-	_ZNK25GlxCommandHandlerNewMedia14CreateCommandLEiR13MGlxMediaListRi @ 31 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer10metaObjectEv @ 32 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer14CreateCommandLEiR13MGlxMediaListRi @ 33 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer16GetSelectionListEP13GlxAlbumModelPb @ 34 NONAME
-	_ZTI23GlxCommandHandlerDelete @ 35 NONAME
-	_ZTI25GlxCommandHandlerNewMedia @ 36 NONAME
-	_ZTI31GlxCommandHandlerAddToContainer @ 37 NONAME
-	_ZTV23GlxCommandHandlerDelete @ 38 NONAME
-	_ZTV25GlxCommandHandlerNewMedia @ 39 NONAME
-	_ZTV31GlxCommandHandlerAddToContainer @ 40 NONAME
-	_ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 41 NONAME
-	_ZN23GlxCommandHandlerRotate12RotateImageLE4TBufILi256EE @ 42 NONAME
-	_ZN23GlxCommandHandlerRotate17DestroyExifWriterEv @ 43 NONAME
-	_ZN23GlxCommandHandlerRotate17DoExecuteCommandLEiR13MGlxMediaListRi @ 44 NONAME
-	_ZN23GlxCommandHandlerRotate20SetImageOrientationLEt @ 45 NONAME
-	_ZN23GlxCommandHandlerRotate21InitializeExifWriterLE4TBufILi256EE @ 46 NONAME
-	_ZN23GlxCommandHandlerRotate21ReadImageOrientationLEv @ 47 NONAME
-	_ZN23GlxCommandHandlerRotate26CalculateFinalOrientationLEt @ 48 NONAME
-	_ZN23GlxCommandHandlerRotateC1Ev @ 49 NONAME
-	_ZN23GlxCommandHandlerRotateC2Ev @ 50 NONAME
-	_ZN23GlxCommandHandlerRotateD0Ev @ 51 NONAME
-	_ZN23GlxCommandHandlerRotateD1Ev @ 52 NONAME
-	_ZN23GlxCommandHandlerRotateD2Ev @ 53 NONAME
-	_ZNK23GlxCommandHandlerRotate14CreateCommandLEiR13MGlxMediaListRi @ 54 NONAME
-	_ZTI23GlxCommandHandlerRotate @ 55 NONAME
-	_ZTV23GlxCommandHandlerRotate @ 56 NONAME
+	_ZN21GlxCommandHandlerSendC1Ev @ 1 NONAME
+	_ZN21GlxCommandHandlerSendC2Ev @ 2 NONAME
+	_ZN21GlxCommandHandlerSendD0Ev @ 3 NONAME
+	_ZN21GlxCommandHandlerSendD1Ev @ 4 NONAME
+	_ZN21GlxCommandHandlerSendD2Ev @ 5 NONAME
+	_ZN23GlxCommandHandlerDeleteC1Ev @ 6 NONAME
+	_ZN23GlxCommandHandlerDeleteC2Ev @ 7 NONAME
+	_ZN23GlxCommandHandlerDeleteD0Ev @ 8 NONAME
+	_ZN23GlxCommandHandlerDeleteD1Ev @ 9 NONAME
+	_ZN23GlxCommandHandlerDeleteD2Ev @ 10 NONAME
+	_ZN23GlxCommandHandlerRotate12RotateImageLE4TBufILi256EE @ 11 NONAME
+	_ZN23GlxCommandHandlerRotate17DestroyExifWriterEv @ 12 NONAME
+	_ZN23GlxCommandHandlerRotate17DoExecuteCommandLEiR13MGlxMediaListRi @ 13 NONAME
+	_ZN23GlxCommandHandlerRotate20SetImageOrientationLEt @ 14 NONAME
+	_ZN23GlxCommandHandlerRotate21InitializeExifWriterLE4TBufILi256EE @ 15 NONAME
+	_ZN23GlxCommandHandlerRotate21ReadImageOrientationLEv @ 16 NONAME
+	_ZN23GlxCommandHandlerRotate26CalculateFinalOrientationLEt @ 17 NONAME
+	_ZN23GlxCommandHandlerRotateC1Ev @ 18 NONAME
+	_ZN23GlxCommandHandlerRotateC2Ev @ 19 NONAME
+	_ZN23GlxCommandHandlerRotateD0Ev @ 20 NONAME
+	_ZN23GlxCommandHandlerRotateD1Ev @ 21 NONAME
+	_ZN23GlxCommandHandlerRotateD2Ev @ 22 NONAME
+	_ZN25GlxCommandHandlerNewMedia11HandleErrorEi @ 23 NONAME
+	_ZN25GlxCommandHandlerNewMedia11qt_metacallEN11QMetaObject4CallEiPPv @ 24 NONAME
+	_ZN25GlxCommandHandlerNewMedia11qt_metacastEPKc @ 25 NONAME
+	_ZN25GlxCommandHandlerNewMedia12HandleErrorLEi @ 26 NONAME
+	_ZN25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 27 NONAME
+	_ZN25GlxCommandHandlerNewMedia16staticMetaObjectE @ 28 NONAME DATA 16
+	_ZN25GlxCommandHandlerNewMedia19getStaticMetaObjectEv @ 29 NONAME
+	_ZN25GlxCommandHandlerNewMedia24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 30 NONAME
+	_ZN25GlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 31 NONAME
+	_ZN25GlxCommandHandlerNewMediaC1Ev @ 32 NONAME
+	_ZN25GlxCommandHandlerNewMediaC2Ev @ 33 NONAME
+	_ZN25GlxCommandHandlerNewMediaD0Ev @ 34 NONAME
+	_ZN25GlxCommandHandlerNewMediaD1Ev @ 35 NONAME
+	_ZN25GlxCommandHandlerNewMediaD2Ev @ 36 NONAME
+	_ZN27GlxCommandHandlerRemoveFromC1Ev @ 37 NONAME
+	_ZN27GlxCommandHandlerRemoveFromC2Ev @ 38 NONAME
+	_ZN27GlxCommandHandlerRemoveFromD0Ev @ 39 NONAME
+	_ZN27GlxCommandHandlerRemoveFromD1Ev @ 40 NONAME
+	_ZN27GlxCommandHandlerRemoveFromD2Ev @ 41 NONAME
+	_ZN31GlxCommandHandlerAddToContainer11qt_metacallEN11QMetaObject4CallEiPPv @ 42 NONAME
+	_ZN31GlxCommandHandlerAddToContainer11qt_metacastEPKc @ 43 NONAME
+	_ZN31GlxCommandHandlerAddToContainer14createNewMediaEv @ 44 NONAME
+	_ZN31GlxCommandHandlerAddToContainer15iSelectionCountE @ 45 NONAME DATA 4
+	_ZN31GlxCommandHandlerAddToContainer16staticMetaObjectE @ 46 NONAME DATA 16
+	_ZN31GlxCommandHandlerAddToContainer19getStaticMetaObjectEv @ 47 NONAME
+	_ZN31GlxCommandHandlerAddToContainerC1Ev @ 48 NONAME
+	_ZN31GlxCommandHandlerAddToContainerC2Ev @ 49 NONAME
+	_ZN31GlxCommandHandlerAddToContainerD0Ev @ 50 NONAME
+	_ZN31GlxCommandHandlerAddToContainerD1Ev @ 51 NONAME
+	_ZN31GlxCommandHandlerAddToContainerD2Ev @ 52 NONAME
+	_ZNK21GlxCommandHandlerSend18doHandleUserActionEP13GlxMediaModel5QListI11QModelIndexE @ 53 NONAME
+	_ZNK23GlxCommandHandlerDelete13ProgressTextLEv @ 54 NONAME
+	_ZNK23GlxCommandHandlerDelete14CreateCommandLEiR13MGlxMediaListRi @ 55 NONAME
+	_ZNK23GlxCommandHandlerDelete15CompletionTextLEv @ 56 NONAME
+	_ZNK23GlxCommandHandlerDelete17ConfirmationTextLEb @ 57 NONAME
+	_ZNK23GlxCommandHandlerRotate14CreateCommandLEiR13MGlxMediaListRi @ 58 NONAME
+	_ZNK25GlxCommandHandlerNewMedia10metaObjectEv @ 59 NONAME
+	_ZNK25GlxCommandHandlerNewMedia13ProgressTextLEv @ 60 NONAME
+	_ZNK25GlxCommandHandlerNewMedia14CreateCommandLEiR13MGlxMediaListRi @ 61 NONAME
+	_ZNK25GlxCommandHandlerNewMedia15CompletionTextLEv @ 62 NONAME
+	_ZNK25GlxCommandHandlerNewMedia26GenerateNewMediaItemTitleLE7QStringR13MGlxMediaList @ 63 NONAME
+	_ZNK27GlxCommandHandlerRemoveFrom13ProgressTextLEv @ 64 NONAME
+	_ZNK27GlxCommandHandlerRemoveFrom14CreateCommandLEiR13MGlxMediaListRi @ 65 NONAME
+	_ZNK27GlxCommandHandlerRemoveFrom15CompletionTextLEv @ 66 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer10metaObjectEv @ 67 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer13ProgressTextLEv @ 68 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer14CreateCommandLEiR13MGlxMediaListRi @ 69 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer15CompletionTextLEv @ 70 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer16GetSelectionListEP13GlxAlbumModelPb @ 71 NONAME
+	_ZTI21GlxCommandHandlerSend @ 72 NONAME
+	_ZTI23GlxCommandHandlerDelete @ 73 NONAME
+	_ZTI23GlxCommandHandlerRotate @ 74 NONAME
+	_ZTI25GlxCommandHandlerNewMedia @ 75 NONAME
+	_ZTI27GlxCommandHandlerRemoveFrom @ 76 NONAME
+	_ZTI31GlxCommandHandlerAddToContainer @ 77 NONAME
+	_ZTV21GlxCommandHandlerSend @ 78 NONAME
+	_ZTV23GlxCommandHandlerDelete @ 79 NONAME
+	_ZTV23GlxCommandHandlerRotate @ 80 NONAME
+	_ZTV25GlxCommandHandlerNewMedia @ 81 NONAME
+	_ZTV27GlxCommandHandlerRemoveFrom @ 82 NONAME
+	_ZTV31GlxCommandHandlerAddToContainer @ 83 NONAME
+	_ZThn8_N25GlxCommandHandlerNewMedia11HandleErrorEi @ 84 NONAME
+	_ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 85 NONAME
 
--- a/ui/inc/glxcommandhandlers.hrh	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/inc/glxcommandhandlers.hrh	Fri Apr 16 14:58:46 2010 +0300
@@ -109,6 +109,7 @@
     EGlxCmdContextAddToAlbum,
     EGlxCmdContextDelete,
     EGlxCmdContextAlbumDelete,
+    EGlxCmdContextSend,
     EGlxCmdSetupItem,
     EGlxCmdAiwBase = 0x6000
     };
--- a/ui/inc/glxdocloaderdefs.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/inc/glxdocloaderdefs.h	Fri Apr 16 14:58:46 2010 +0300
@@ -23,8 +23,8 @@
 //FULLSCREEN VIEW
 #define GLXFULLSCREEN_VIEW     	  "mGlxFullscreenView"
 #define GLXFULLSCREEN_COVERFLOW	  "mCoverFlow"
-#define GLXFULLSCREEN_FLIP        "mFlip"
 #define GLXFULLSCREEN_FILMSTRIP   "mImageStrip"
+#define GLXFULLSCREEN_TOOLBAR     "toolBar"
 #define GLXFULLSCREENLSSECTION    "landscape"
 #define GLXFULLSCREENPTSECTION    "portrait"
 #define GLXFULLSCREENDOCMLPATH    ":/data/fullscreen.docml"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/inc/glxicondefs.h	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   ?Description
+ *
+ */
+
+
+
+#ifndef GLXICONDEFS_H
+#define GLXICONDEFS_H
+
+
+//FULLSCREEN TOOLBAR
+#define GLXICON_FLIP     "qtg_mono_info"
+#define GLXICON_SEND     "qtg_mono_send"
+#define GLXICON_DELETE   "qtg_mono_delete"
+
+//GRID TOOLBAR
+#define GLXICON_ALL     "qtg_mono_photos_all"
+#define GLXICON_ALBUMS  "qtg_mono_albums"
+#define GLXICON_CAMERA  "qtg_mono_camera"
+#define GLXICON_OVI     "qtg_small_ovi"
+
+//CORRUPT ICON
+#define GLXICON_CORRUPT "qtg_large_corrupted"
+
+//PLAY ICON
+#define GLXICON_PLAY    "qtg_mono_play"
+
+//DEFAULT ICON
+#define GLXICON_DEFAULT "qtg_mono_camera"
+
+#endif /* GLXICONDEFS_H */
--- a/ui/inc/glxmodelparm.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/inc/glxmodelparm.h	Fri Apr 16 14:58:46 2010 +0300
@@ -21,25 +21,31 @@
 #define GLXMODELPARM_H
 
 #include<glxfiltergeneraldefs.h>
+#include<glxuistd.h>
 
 enum
 {
-GlxFsImageRole = Qt::UserRole + 1,
-GlxContextRole,
-GlxFocusIndexRole,
-GlxVisualWindowIndex, 
-GlxUriRole,
-GlxDimensionsRole,
-GlxSelectedIndexRole,
-GlxDateRole,
-GlxFrameCount
+    GlxFsImageRole = Qt::UserRole + 1,  //to get the fullscreen image
+    GlxContextRole,                     //to get and set the context   
+    GlxFocusIndexRole,                  //to get and set the selected item index
+    GlxVisualWindowIndex,               //to set the visual window index in media list
+    GlxUriRole,                         //to get the URI of the image
+    GlxDimensionsRole,                  
+    GlxSelectedIndexRole,               //to get and set the seleceted item list
+    GlxDateRole,                        //to get the image created or modified date 
+    GlxFrameCount,                      //to get the number of frame in an image
+    GlxSubStateRole,                    //to publish the sub state of a SM states
 };
 
 
 class GlxModelParm
 {
 public:
-	GlxModelParm (qint32 collectionId = 0, qint32 depth = 0 , TGlxFilterItemType filterType = EGlxFilterItemAll ) : mCollectionId(collectionId) ,mDepth(depth) , mFilterType(filterType)
+	GlxModelParm (qint32 collectionId = 0, qint32 depth = 0 , TGlxFilterItemType filterType = EGlxFilterItemAll , GlxContextMode contextMode = GlxContextPtGrid ) 
+	    : mCollectionId(collectionId) ,
+	      mDepth(depth) , 
+	      mFilterType( filterType ),
+	      mContextMode( contextMode )
 	{
 	
 	}
@@ -49,10 +55,14 @@
 	void setDepth (qint32 depth = 0) { mDepth = depth ; }
 	qint32 depth() { return mDepth; }
 	TGlxFilterItemType filterType() { return mFilterType; }
+	void setContextMode( GlxContextMode contextMode ) { mContextMode = contextMode ; }
+	GlxContextMode contextMode() { return mContextMode ; }
+	
 private:
 	qint32 mCollectionId;
 	qint32 mDepth;
 	TGlxFilterItemType mFilterType;
+	GlxContextMode mContextMode;
 };
 
 
--- a/ui/inc/glxuistd.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/inc/glxuistd.h	Fri Apr 16 14:58:46 2010 +0300
@@ -34,7 +34,8 @@
 enum GlxContextMode
 {
     GlxContextInvalid = -1,
-	GlxContextGrid,
+	GlxContextLsGrid,
+	GlxContextPtGrid,
 	GlxContextLsFs,
 	GlxContextPtFs,  //TB context check would be applied here . Please do not add any context between GlxContextLsFs and GlxContextPtFs
 	GlxContextLsList,
--- a/ui/inc/glxviewids.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/inc/glxviewids.h	Fri Apr 16 14:58:46 2010 +0300
@@ -26,4 +26,26 @@
 #define GLX_SLIDESHOWVIEW_ID     0x12121215
 #define GLX_DETAILSVIEW_ID       0x12121216
 
+
+typedef enum 
+{
+    NO_GRID_S,
+    ALL_ITEM_S,
+    ALBUM_ITEM_S,
+} GridState;
+
+typedef enum 
+{
+    NO_FULLSCREEN_S,
+    EXTERNAL_S,
+    IMAGEVIEWER_S
+} FullScreenState;
+
+typedef enum 
+{
+    NO_SLIDESHOW_S,
+    SLIDESHOW_GRID_ITEM_S,
+    SLIDESHOW_ALBUM_ITEM_S,
+} SlideShowState;
+
 #endif /* GLXVIEWIDS_H */
--- a/ui/uiengine/medialists/bwins/glxmedialistsu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/bwins/glxmedialistsu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -13,109 +13,115 @@
 	?GetSize@TGlxMedia@@QBEHAAH@Z @ 12 NONAME ; int TGlxMedia::GetSize(int &) const
 	??ETGlxWindowIterator@@QAEHH@Z @ 13 NONAME ; int TGlxWindowIterator::operator++(int)
 	?__DbgTestInvariant@CGlxListWindow@@QBEXXZ @ 14 NONAME ; void CGlxListWindow::__DbgTestInvariant(void) const
-	?InstanceL@MGlxCache@@SAPAV1@XZ @ 15 NONAME ; class MGlxCache * MGlxCache::InstanceL(void)
-	?Reset@CGlxMedia@@QAEXXZ @ 16 NONAME ; void CGlxMedia::Reset(void)
-	?AddObjects@CGlxListWindow@@QAEXHHHH@Z @ 17 NONAME ; void CGlxListWindow::AddObjects(int, int, int, int)
-	??0CGlxThumbnailContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 18 NONAME ; CGlxThumbnailContext::CGlxThumbnailContext(class MGlxMediaListIterator *)
-	?SetRangeOffsetsL@CGlxListWindow@@QAEXHHHH@Z @ 19 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int, int, int)
-	??0TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 20 NONAME ; TGlxFromFocusOutwardBlockyIterator::TGlxFromFocusOutwardBlockyIterator(void)
-	?UnmarkAllL@MGlxMediaList@@SAXAAV1@@Z @ 21 NONAME ; void MGlxMediaList::UnmarkAllL(class MGlxMediaList &)
-	?IdSpaceId@TGlxMedia@@QBE?AV?$TGlxId@VTGlxIdSpaceIdBase@@@@XZ @ 22 NONAME ; class TGlxId<class TGlxIdSpaceIdBase> TGlxMedia::IdSpaceId(void) const
-	??1TGlxSelectionIterator@@QAE@XZ @ 23 NONAME ; TGlxSelectionIterator::~TGlxSelectionIterator(void)
-	?SetGranularity@CGlxAttributeContext@@QAEXI@Z @ 24 NONAME ; void CGlxAttributeContext::SetGranularity(unsigned int)
-	??0TGlxSelectionIterator@@QAE@XZ @ 25 NONAME ; TGlxSelectionIterator::TGlxSelectionIterator(void)
-	??0TGlxFromFocusOutwardIterator@@QAE@XZ @ 26 NONAME ; TGlxFromFocusOutwardIterator::TGlxFromFocusOutwardIterator(void)
-	?SubTitle@TGlxMedia@@QBEABVTDesC16@@XZ @ 27 NONAME ; class TDesC16 const & TGlxMedia::SubTitle(void) const
-	??1TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 28 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::~TGlxFromManualIndexOutwardBlockyIterator(void)
-	?GetFrameCount@TGlxMedia@@QBEHAAH@Z @ 29 NONAME ; int TGlxMedia::GetFrameCount(int &) const
-	??0TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 30 NONAME ; TGlxFromManualIndexBlockyIterator::TGlxFromManualIndexBlockyIterator(void)
-	?SetRangeOffsets@TGlxFromIndexOutwardBlockyIterator@@QAEXHH@Z @ 31 NONAME ; void TGlxFromIndexOutwardBlockyIterator::SetRangeOffsets(int, int)
-	?SetFocusIndex@CGlxListWindow@@QAEXH@Z @ 32 NONAME ; void CGlxListWindow::SetFocusIndex(int)
-	??1TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 33 NONAME ; TGlxFromFocusOutwardBlockyIterator::~TGlxFromFocusOutwardBlockyIterator(void)
-	??1CGlxDefaultThumbnailContext@@UAE@XZ @ 34 NONAME ; CGlxDefaultThumbnailContext::~CGlxDefaultThumbnailContext(void)
-	?IsFullThumbnail@GlxThumbnailUtility@@SAHABVTMPXAttribute@@@Z @ 35 NONAME ; int GlxThumbnailUtility::IsFullThumbnail(class TMPXAttribute const &)
-	??0TGlxFromIndexOutwardBlockyIterator@@QAE@ABVMGlxIndex@0@@Z @ 36 NONAME ; TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator(class TGlxFromIndexOutwardBlockyIterator::MGlxIndex const &)
-	?ConstructL@CGlxListWindow@@QAEXXZ @ 37 NONAME ; void CGlxListWindow::ConstructL(void)
-	?SetRange@TGlxSequentialIterator@@QAEXH@Z @ 38 NONAME ; void TGlxSequentialIterator::SetRange(int)
-	?GetStaticItemCommand@TGlxMedia@@QBEHAAH@Z @ 39 NONAME ; int TGlxMedia::GetStaticItemCommand(int &) const
-	?SetRangeOffsets@TGlxFromManualIndexBlockyIterator@@QAEXHH@Z @ 40 NONAME ; void TGlxFromManualIndexBlockyIterator::SetRangeOffsets(int, int)
-	?SetIndex@TGlxFromManualIndexOutwardBlockyIterator@@QAEXH@Z @ 41 NONAME ; void TGlxFromManualIndexOutwardBlockyIterator::SetIndex(int)
-	?HandleModified@CGlxMedia@@QAEXABV?$RArray@VTMPXAttribute@@@@@Z @ 42 NONAME ; void CGlxMedia::HandleModified(class RArray<class TMPXAttribute> const &)
-	?GetLastModifiedDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 43 NONAME ; int TGlxMedia::GetLastModifiedDate(class TTime &) const
-	?GetContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 44 NONAME ; int TGlxMedia::GetContainedItemCount(int &) const
-	?SetRange@TGlxSelectionIterator@@QAEXH@Z @ 45 NONAME ; void TGlxSelectionIterator::SetRange(int)
-	?GetDimensions@TGlxMedia@@QBEHAAVTSize@@@Z @ 46 NONAME ; int TGlxMedia::GetDimensions(class TSize &) const
-	?GetDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 47 NONAME ; int TGlxMedia::GetDate(class TTime &) const
-	?GetValueText@CGlxMedia@@QBEHAAVTPtrC16@@ABVTMPXAttribute@@@Z @ 48 NONAME ; int CGlxMedia::GetValueText(class TPtrC16 &, class TMPXAttribute const &) const
-	?SetTextValueL@CGlxMedia@@QAEXABVTMPXAttribute@@ABVTDesC16@@@Z @ 49 NONAME ; void CGlxMedia::SetTextValueL(class TMPXAttribute const &, class TDesC16 const &)
-	?SetDefaultSpec@CGlxAttributeContext@@QAEXHH@Z @ 50 NONAME ; void CGlxAttributeContext::SetDefaultSpec(int, int)
-	?IsStatic@TGlxMedia@@QBEHXZ @ 51 NONAME ; int TGlxMedia::IsStatic(void) const
-	??0CGlxListWindow@@QAE@AAVMGlxWindowObjectFactory@@@Z @ 52 NONAME ; CGlxListWindow::CGlxListWindow(class MGlxWindowObjectFactory &)
-	?AddSpecForItemL@CGlxThumbnailContext@@QAEXHHH@Z @ 53 NONAME ; void CGlxThumbnailContext::AddSpecForItemL(int, int, int)
-	??1CGlxDefaultAttributeContext@@UAE@XZ @ 54 NONAME ; CGlxDefaultAttributeContext::~CGlxDefaultAttributeContext(void)
-	?ThumbnailAttribute@TGlxMedia@@QBEPBVCGlxThumbnailAttribute@@AAVTMPXAttribute@@@Z @ 55 NONAME ; class CGlxThumbnailAttribute const * TGlxMedia::ThumbnailAttribute(class TMPXAttribute &) const
-	??1TGlxFirstThenLastIterator@@QAE@XZ @ 56 NONAME ; TGlxFirstThenLastIterator::~TGlxFirstThenLastIterator(void)
-	?Title@TGlxMedia@@QBEABVTDesC16@@XZ @ 57 NONAME ; class TDesC16 const & TGlxMedia::Title(void) const
-	??ETGlxSelectionIterator@@UAEHH@Z @ 58 NONAME ; int TGlxSelectionIterator::operator++(int)
-	?AddAttributeL@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 59 NONAME ; void CGlxAttributeContext::AddAttributeL(class TMPXAttribute const &)
-	?SetRangeOffsets@CGlxDefaultThumbnailContext@@QAEXHH@Z @ 60 NONAME ; void CGlxDefaultThumbnailContext::SetRangeOffsets(int, int)
-	?__DbgTestInvariant@CGlxStaticItemList@@QBEXXZ @ 61 NONAME ; void CGlxStaticItemList::__DbgTestInvariant(void) const
-	?GetDuration@TGlxMedia@@QBEHAAM@Z @ 62 NONAME ; int TGlxMedia::GetDuration(float &) const
-	?DeleteAttribute@CGlxMedia@@QAEXABVTMPXAttribute@@@Z @ 63 NONAME ; void CGlxMedia::DeleteAttribute(class TMPXAttribute const &)
-	?InstanceL@MGlxMediaList@@SAPAV1@ABVCMPXCollectionPath@@ABV?$TGlxId@VTGlxIdHierarchyBase@@@@PAVCMPXMedia@@@Z @ 64 NONAME ; class MGlxMediaList * MGlxMediaList::InstanceL(class CMPXCollectionPath const &, class TGlxId<class TGlxIdHierarchyBase> const &, class CMPXMedia *)
-	?SetCObjectValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAVCBase@@@Z @ 65 NONAME ; void CGlxMedia::SetCObjectValueL(class TMPXAttribute const &, class CBase *)
-	?RemoveObjects@CGlxListWindow@@QAEXHHHH@Z @ 66 NONAME ; void CGlxListWindow::RemoveObjects(int, int, int, int)
-	?Iterator@CGlxListWindow@@QBE?AVTGlxWindowIterator@@XZ @ 67 NONAME ; class TGlxWindowIterator CGlxListWindow::Iterator(void) const
-	?Category@TGlxMedia@@QBE?AW4TMPXGeneralCategory@@XZ @ 68 NONAME ; enum TMPXGeneralCategory TGlxMedia::Category(void) const
-	??0CGlxAttributeContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 69 NONAME ; CGlxAttributeContext::CGlxAttributeContext(class MGlxMediaListIterator *)
-	?GetIconInfo@TGlxMedia@@QBEHAAUTIconInfo@@@Z @ 70 NONAME ; int TGlxMedia::GetIconInfo(struct TIconInfo &) const
-	?__DbgTestInvariant@CGlxItemList@@QBEXXZ @ 71 NONAME ; void CGlxItemList::__DbgTestInvariant(void) const
-	?AddObjects@CGlxListWindow@@QAEXHH@Z @ 72 NONAME ; void CGlxListWindow::AddObjects(int, int)
-	?Comment@TGlxMedia@@QBEABVTDesC16@@XZ @ 73 NONAME ; class TDesC16 const & TGlxMedia::Comment(void) const
-	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@ABVTMPXAttribute@@@Z @ 74 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, class TMPXAttribute const &)
-	??0TGlxSequentialIterator@@QAE@XZ @ 75 NONAME ; TGlxSequentialIterator::TGlxSequentialIterator(void)
-	?AttributeCount@CGlxAttributeContext@@QAEHXZ @ 76 NONAME ; int CGlxAttributeContext::AttributeCount(void)
-	?GetDrmValidity@TGlxMedia@@QBEHAAW4TGlxMediaGeneralRightsValidity@@@Z @ 77 NONAME ; int TGlxMedia::GetDrmValidity(enum TGlxMediaGeneralRightsValidity &) const
-	?__DbgTestInvariant@CGlxNavigableList@@QBEXXZ @ 78 NONAME ; void CGlxNavigableList::__DbgTestInvariant(void) const
-	?SetFocusIndex@CGlxListWindow@@QAEXHH@Z @ 79 NONAME ; void CGlxListWindow::SetFocusIndex(int, int)
-	?SetValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAXW4TMPXAttributeType@@@Z @ 80 NONAME ; void CGlxMedia::SetValueL(class TMPXAttribute const &, void *, enum TMPXAttributeType)
-	?ValueText@CGlxMedia@@QBEABVTDesC16@@ABVTMPXAttribute@@@Z @ 81 NONAME ; class TDesC16 const & CGlxMedia::ValueText(class TMPXAttribute const &) const
-	??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 82 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &)
-	?DeleteLocationAttribute@TGlxMedia@@QAEXXZ @ 83 NONAME ; void TGlxMedia::DeleteLocationAttribute(void)
-	?GetClosestThumbnail@TGlxMedia@@QBEHAAVTMPXAttribute@@ABVTSize@@H@Z @ 84 NONAME ; int TGlxMedia::GetClosestThumbnail(class TMPXAttribute &, class TSize const &, int) const
-	??1CGlxMedia@@UAE@XZ @ 85 NONAME ; CGlxMedia::~CGlxMedia(void)
-	?__DbgTestInvariant@CGlxMedia@@QBEXXZ @ 86 NONAME ; void CGlxMedia::__DbgTestInvariant(void) const
-	?IsDrmProtected@TGlxMedia@@QBEHXZ @ 87 NONAME ; int TGlxMedia::IsDrmProtected(void) const
-	??1CGlxThumbnailContext@@UAE@XZ @ 88 NONAME ; CGlxThumbnailContext::~CGlxThumbnailContext(void)
-	?GetDrmProtected@TGlxMedia@@QBEHAAH@Z @ 89 NONAME ; int TGlxMedia::GetDrmProtected(int &) const
-	?GetSystemItem@TGlxMedia@@QBEHAAH@Z @ 90 NONAME ; int TGlxMedia::GetSystemItem(int &) const
-	?RemoveObjects@CGlxListWindow@@QAEXHH@Z @ 91 NONAME ; void CGlxListWindow::RemoveObjects(int, int)
-	?Close@TGlxFetchContextRemover@@QAEXXZ @ 92 NONAME ; void TGlxFetchContextRemover::Close(void)
-	?At@CGlxListWindow@@QBEPBVCBase@@H@Z @ 93 NONAME ; class CBase const * CGlxListWindow::At(int) const
-	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@H@Z @ 94 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, int)
-	?At@CGlxListWindow@@QAEPAVCBase@@H@Z @ 95 NONAME ; class CBase * CGlxListWindow::At(int)
-	??1TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 96 NONAME ; TGlxFromManualIndexBlockyIterator::~TGlxFromManualIndexBlockyIterator(void)
-	?RemoveAttribute@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 97 NONAME ; void CGlxAttributeContext::RemoveAttribute(class TMPXAttribute const &)
-	??1TGlxFromIndexOutwardBlockyIterator@@QAE@XZ @ 98 NONAME ; TGlxFromIndexOutwardBlockyIterator::~TGlxFromIndexOutwardBlockyIterator(void)
-	?ClosestThumbnail@GlxThumbnailUtility@@SAHABVTSize@@ABVCGlxMedia@@H@Z @ 99 NONAME ; int GlxThumbnailUtility::ClosestThumbnail(class TSize const &, class CGlxMedia const &, int)
-	??0TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 100 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::TGlxFromManualIndexOutwardBlockyIterator(void)
-	?Cleanup@CGlxListWindow@@QAEXXZ @ 101 NONAME ; void CGlxListWindow::Cleanup(void)
-	??1TGlxExclusionIterator@@QAE@XZ @ 102 NONAME ; TGlxExclusionIterator::~TGlxExclusionIterator(void)
-	??1TGlxFetchContextRemover@@QAE@XZ @ 103 NONAME ; TGlxFetchContextRemover::~TGlxFetchContextRemover(void)
-	?SetDefaultSpec@CGlxThumbnailContext@@QAEXHH@Z @ 104 NONAME ; void CGlxThumbnailContext::SetDefaultSpec(int, int)
-	??0TGlxSpecificIdIterator@@QAE@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@VTGlxMediaId@@@Z @ 105 NONAME ; TGlxSpecificIdIterator::TGlxSpecificIdIterator(class TGlxId<class TGlxIdSpaceIdBase> const &, class TGlxMediaId)
-	?GetSlideshowPlayableContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 106 NONAME ; int TGlxMedia::GetSlideshowPlayableContainedItemCount(int &) const
-	?MatchById@TGlxMedia@@SAHABV1@0@Z @ 107 NONAME ; int TGlxMedia::MatchById(class TGlxMedia const &, class TGlxMedia const &)
-	?SetRangeOffsetsL@CGlxListWindow@@QAEXHH@Z @ 108 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int)
-	?MimeType@TGlxMedia@@QBEABVTDesC16@@XZ @ 109 NONAME ; class TDesC16 const & TGlxMedia::MimeType(void) const
-	?Uri@TGlxMedia@@QBEABVTDesC16@@XZ @ 110 NONAME ; class TDesC16 const & TGlxMedia::Uri(void) const
-	??0TGlxFirstThenLastIterator@@QAE@XZ @ 111 NONAME ; TGlxFirstThenLastIterator::TGlxFirstThenLastIterator(void)
-	??1CGlxAttributeContext@@UAE@XZ @ 112 NONAME ; CGlxAttributeContext::~CGlxAttributeContext(void)
-	?SetRangeOffsets@CGlxDefaultAttributeContext@@QAEXHH@Z @ 113 NONAME ; void CGlxDefaultAttributeContext::SetRangeOffsets(int, int)
-	?ValueCObject@CGlxMedia@@QBEPBVCBase@@ABVTMPXAttribute@@@Z @ 114 NONAME ; class CBase const * CGlxMedia::ValueCObject(class TMPXAttribute const &) const
-	?GetCoordinate@TGlxMedia@@QBEHAAVTCoordinate@@@Z @ 115 NONAME ; int TGlxMedia::GetCoordinate(class TCoordinate &) const
-	?NewL@CGlxDefaultThumbnailContext@@SAPAV1@XZ @ 116 NONAME ; class CGlxDefaultThumbnailContext * CGlxDefaultThumbnailContext::NewL(void)
-	?IsSlideShowPlayableContent@TGlxMedia@@QBEHXZ @ 117 NONAME ; int TGlxMedia::IsSlideShowPlayableContent(void) const
-	??1TGlxFromFocusOutwardIterator@@QAE@XZ @ 118 NONAME ; TGlxFromFocusOutwardIterator::~TGlxFromFocusOutwardIterator(void)
-	?InRange@TGlxSelectionIterator@@UBEHH@Z @ 119 NONAME ; int TGlxSelectionIterator::InRange(int) const
+	?NewL@CGlxDefaultListAttributeContext@@SAPAV1@XZ @ 15 NONAME ; class CGlxDefaultListAttributeContext * CGlxDefaultListAttributeContext::NewL(void)
+	?InstanceL@MGlxCache@@SAPAV1@XZ @ 16 NONAME ; class MGlxCache * MGlxCache::InstanceL(void)
+	?Reset@CGlxMedia@@QAEXXZ @ 17 NONAME ; void CGlxMedia::Reset(void)
+	?AddObjects@CGlxListWindow@@QAEXHHHH@Z @ 18 NONAME ; void CGlxListWindow::AddObjects(int, int, int, int)
+	??0CGlxThumbnailContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 19 NONAME ; CGlxThumbnailContext::CGlxThumbnailContext(class MGlxMediaListIterator *)
+	?SetRangeOffsetsL@CGlxListWindow@@QAEXHHHH@Z @ 20 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int, int, int)
+	??0TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 21 NONAME ; TGlxFromFocusOutwardBlockyIterator::TGlxFromFocusOutwardBlockyIterator(void)
+	?UnmarkAllL@MGlxMediaList@@SAXAAV1@@Z @ 22 NONAME ; void MGlxMediaList::UnmarkAllL(class MGlxMediaList &)
+	?IdSpaceId@TGlxMedia@@QBE?AV?$TGlxId@VTGlxIdSpaceIdBase@@@@XZ @ 23 NONAME ; class TGlxId<class TGlxIdSpaceIdBase> TGlxMedia::IdSpaceId(void) const
+	??1TGlxSelectionIterator@@QAE@XZ @ 24 NONAME ; TGlxSelectionIterator::~TGlxSelectionIterator(void)
+	?SetGranularity@CGlxAttributeContext@@QAEXI@Z @ 25 NONAME ; void CGlxAttributeContext::SetGranularity(unsigned int)
+	??0TGlxSelectionIterator@@QAE@XZ @ 26 NONAME ; TGlxSelectionIterator::TGlxSelectionIterator(void)
+	??0TGlxFromFocusOutwardIterator@@QAE@XZ @ 27 NONAME ; TGlxFromFocusOutwardIterator::TGlxFromFocusOutwardIterator(void)
+	?SubTitle@TGlxMedia@@QBEABVTDesC16@@XZ @ 28 NONAME ; class TDesC16 const & TGlxMedia::SubTitle(void) const
+	??1TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 29 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::~TGlxFromManualIndexOutwardBlockyIterator(void)
+	?GetFrameCount@TGlxMedia@@QBEHAAH@Z @ 30 NONAME ; int TGlxMedia::GetFrameCount(int &) const
+	??0TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 31 NONAME ; TGlxFromManualIndexBlockyIterator::TGlxFromManualIndexBlockyIterator(void)
+	?SetRangeOffsets@TGlxFromIndexOutwardBlockyIterator@@QAEXHH@Z @ 32 NONAME ; void TGlxFromIndexOutwardBlockyIterator::SetRangeOffsets(int, int)
+	?SetFocusIndex@CGlxListWindow@@QAEXH@Z @ 33 NONAME ; void CGlxListWindow::SetFocusIndex(int)
+	??1TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 34 NONAME ; TGlxFromFocusOutwardBlockyIterator::~TGlxFromFocusOutwardBlockyIterator(void)
+	??1CGlxDefaultThumbnailContext@@UAE@XZ @ 35 NONAME ; CGlxDefaultThumbnailContext::~CGlxDefaultThumbnailContext(void)
+	?IsFullThumbnail@GlxThumbnailUtility@@SAHABVTMPXAttribute@@@Z @ 36 NONAME ; int GlxThumbnailUtility::IsFullThumbnail(class TMPXAttribute const &)
+	??0TGlxFromIndexOutwardBlockyIterator@@QAE@ABVMGlxIndex@0@@Z @ 37 NONAME ; TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator(class TGlxFromIndexOutwardBlockyIterator::MGlxIndex const &)
+	?ConstructL@CGlxListWindow@@QAEXXZ @ 38 NONAME ; void CGlxListWindow::ConstructL(void)
+	?SetRange@TGlxSequentialIterator@@QAEXH@Z @ 39 NONAME ; void TGlxSequentialIterator::SetRange(int)
+	??1TGlxFromVisibleIndexOutwardListIterator@@QAE@XZ @ 40 NONAME ; TGlxFromVisibleIndexOutwardListIterator::~TGlxFromVisibleIndexOutwardListIterator(void)
+	?GetStaticItemCommand@TGlxMedia@@QBEHAAH@Z @ 41 NONAME ; int TGlxMedia::GetStaticItemCommand(int &) const
+	?SetRangeOffsets@TGlxFromManualIndexBlockyIterator@@QAEXHH@Z @ 42 NONAME ; void TGlxFromManualIndexBlockyIterator::SetRangeOffsets(int, int)
+	?SetIndex@TGlxFromManualIndexOutwardBlockyIterator@@QAEXH@Z @ 43 NONAME ; void TGlxFromManualIndexOutwardBlockyIterator::SetIndex(int)
+	?HandleModified@CGlxMedia@@QAEXABV?$RArray@VTMPXAttribute@@@@@Z @ 44 NONAME ; void CGlxMedia::HandleModified(class RArray<class TMPXAttribute> const &)
+	?GetLastModifiedDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 45 NONAME ; int TGlxMedia::GetLastModifiedDate(class TTime &) const
+	?GetContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 46 NONAME ; int TGlxMedia::GetContainedItemCount(int &) const
+	?SetRange@TGlxSelectionIterator@@QAEXH@Z @ 47 NONAME ; void TGlxSelectionIterator::SetRange(int)
+	?GetDimensions@TGlxMedia@@QBEHAAVTSize@@@Z @ 48 NONAME ; int TGlxMedia::GetDimensions(class TSize &) const
+	?GetDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 49 NONAME ; int TGlxMedia::GetDate(class TTime &) const
+	?GetValueText@CGlxMedia@@QBEHAAVTPtrC16@@ABVTMPXAttribute@@@Z @ 50 NONAME ; int CGlxMedia::GetValueText(class TPtrC16 &, class TMPXAttribute const &) const
+	?SetTextValueL@CGlxMedia@@QAEXABVTMPXAttribute@@ABVTDesC16@@@Z @ 51 NONAME ; void CGlxMedia::SetTextValueL(class TMPXAttribute const &, class TDesC16 const &)
+	?SetDefaultSpec@CGlxAttributeContext@@QAEXHH@Z @ 52 NONAME ; void CGlxAttributeContext::SetDefaultSpec(int, int)
+	?IsStatic@TGlxMedia@@QBEHXZ @ 53 NONAME ; int TGlxMedia::IsStatic(void) const
+	??0CGlxListWindow@@QAE@AAVMGlxWindowObjectFactory@@@Z @ 54 NONAME ; CGlxListWindow::CGlxListWindow(class MGlxWindowObjectFactory &)
+	?AddSpecForItemL@CGlxThumbnailContext@@QAEXHHH@Z @ 55 NONAME ; void CGlxThumbnailContext::AddSpecForItemL(int, int, int)
+	??1CGlxDefaultAttributeContext@@UAE@XZ @ 56 NONAME ; CGlxDefaultAttributeContext::~CGlxDefaultAttributeContext(void)
+	?ThumbnailAttribute@TGlxMedia@@QBEPBVCGlxThumbnailAttribute@@AAVTMPXAttribute@@@Z @ 57 NONAME ; class CGlxThumbnailAttribute const * TGlxMedia::ThumbnailAttribute(class TMPXAttribute &) const
+	??1TGlxFirstThenLastIterator@@QAE@XZ @ 58 NONAME ; TGlxFirstThenLastIterator::~TGlxFirstThenLastIterator(void)
+	?Title@TGlxMedia@@QBEABVTDesC16@@XZ @ 59 NONAME ; class TDesC16 const & TGlxMedia::Title(void) const
+	??ETGlxSelectionIterator@@UAEHH@Z @ 60 NONAME ; int TGlxSelectionIterator::operator++(int)
+	?AddAttributeL@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 61 NONAME ; void CGlxAttributeContext::AddAttributeL(class TMPXAttribute const &)
+	?SetRangeOffsets@CGlxDefaultThumbnailContext@@QAEXHH@Z @ 62 NONAME ; void CGlxDefaultThumbnailContext::SetRangeOffsets(int, int)
+	?__DbgTestInvariant@CGlxStaticItemList@@QBEXXZ @ 63 NONAME ; void CGlxStaticItemList::__DbgTestInvariant(void) const
+	?GetDuration@TGlxMedia@@QBEHAAM@Z @ 64 NONAME ; int TGlxMedia::GetDuration(float &) const
+	?DeleteAttribute@CGlxMedia@@QAEXABVTMPXAttribute@@@Z @ 65 NONAME ; void CGlxMedia::DeleteAttribute(class TMPXAttribute const &)
+	?InstanceL@MGlxMediaList@@SAPAV1@ABVCMPXCollectionPath@@ABV?$TGlxId@VTGlxIdHierarchyBase@@@@PAVCMPXMedia@@@Z @ 66 NONAME ; class MGlxMediaList * MGlxMediaList::InstanceL(class CMPXCollectionPath const &, class TGlxId<class TGlxIdHierarchyBase> const &, class CMPXMedia *)
+	?SetCObjectValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAVCBase@@@Z @ 67 NONAME ; void CGlxMedia::SetCObjectValueL(class TMPXAttribute const &, class CBase *)
+	?RemoveObjects@CGlxListWindow@@QAEXHHHH@Z @ 68 NONAME ; void CGlxListWindow::RemoveObjects(int, int, int, int)
+	?Iterator@CGlxListWindow@@QBE?AVTGlxWindowIterator@@XZ @ 69 NONAME ; class TGlxWindowIterator CGlxListWindow::Iterator(void) const
+	?Category@TGlxMedia@@QBE?AW4TMPXGeneralCategory@@XZ @ 70 NONAME ; enum TMPXGeneralCategory TGlxMedia::Category(void) const
+	??0CGlxAttributeContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 71 NONAME ; CGlxAttributeContext::CGlxAttributeContext(class MGlxMediaListIterator *)
+	?GetIconInfo@TGlxMedia@@QBEHAAUTIconInfo@@@Z @ 72 NONAME ; int TGlxMedia::GetIconInfo(struct TIconInfo &) const
+	?__DbgTestInvariant@CGlxItemList@@QBEXXZ @ 73 NONAME ; void CGlxItemList::__DbgTestInvariant(void) const
+	?AddObjects@CGlxListWindow@@QAEXHH@Z @ 74 NONAME ; void CGlxListWindow::AddObjects(int, int)
+	?Comment@TGlxMedia@@QBEABVTDesC16@@XZ @ 75 NONAME ; class TDesC16 const & TGlxMedia::Comment(void) const
+	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@ABVTMPXAttribute@@@Z @ 76 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, class TMPXAttribute const &)
+	??0TGlxSequentialIterator@@QAE@XZ @ 77 NONAME ; TGlxSequentialIterator::TGlxSequentialIterator(void)
+	?AttributeCount@CGlxAttributeContext@@QAEHXZ @ 78 NONAME ; int CGlxAttributeContext::AttributeCount(void)
+	?GetDrmValidity@TGlxMedia@@QBEHAAW4TGlxMediaGeneralRightsValidity@@@Z @ 79 NONAME ; int TGlxMedia::GetDrmValidity(enum TGlxMediaGeneralRightsValidity &) const
+	?__DbgTestInvariant@CGlxNavigableList@@QBEXXZ @ 80 NONAME ; void CGlxNavigableList::__DbgTestInvariant(void) const
+	?SetFocusIndex@CGlxListWindow@@QAEXHH@Z @ 81 NONAME ; void CGlxListWindow::SetFocusIndex(int, int)
+	?SetValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAXW4TMPXAttributeType@@@Z @ 82 NONAME ; void CGlxMedia::SetValueL(class TMPXAttribute const &, void *, enum TMPXAttributeType)
+	?ValueText@CGlxMedia@@QBEABVTDesC16@@ABVTMPXAttribute@@@Z @ 83 NONAME ; class TDesC16 const & CGlxMedia::ValueText(class TMPXAttribute const &) const
+	??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 84 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &)
+	?DeleteLocationAttribute@TGlxMedia@@QAEXXZ @ 85 NONAME ; void TGlxMedia::DeleteLocationAttribute(void)
+	?GetClosestThumbnail@TGlxMedia@@QBEHAAVTMPXAttribute@@ABVTSize@@H@Z @ 86 NONAME ; int TGlxMedia::GetClosestThumbnail(class TMPXAttribute &, class TSize const &, int) const
+	??1CGlxMedia@@UAE@XZ @ 87 NONAME ; CGlxMedia::~CGlxMedia(void)
+	?__DbgTestInvariant@CGlxMedia@@QBEXXZ @ 88 NONAME ; void CGlxMedia::__DbgTestInvariant(void) const
+	?IsDrmProtected@TGlxMedia@@QBEHXZ @ 89 NONAME ; int TGlxMedia::IsDrmProtected(void) const
+	??1CGlxThumbnailContext@@UAE@XZ @ 90 NONAME ; CGlxThumbnailContext::~CGlxThumbnailContext(void)
+	?GetDrmProtected@TGlxMedia@@QBEHAAH@Z @ 91 NONAME ; int TGlxMedia::GetDrmProtected(int &) const
+	?GetSystemItem@TGlxMedia@@QBEHAAH@Z @ 92 NONAME ; int TGlxMedia::GetSystemItem(int &) const
+	?RemoveObjects@CGlxListWindow@@QAEXHH@Z @ 93 NONAME ; void CGlxListWindow::RemoveObjects(int, int)
+	?Close@TGlxFetchContextRemover@@QAEXXZ @ 94 NONAME ; void TGlxFetchContextRemover::Close(void)
+	?At@CGlxListWindow@@QBEPBVCBase@@H@Z @ 95 NONAME ; class CBase const * CGlxListWindow::At(int) const
+	?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@H@Z @ 96 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, int)
+	?At@CGlxListWindow@@QAEPAVCBase@@H@Z @ 97 NONAME ; class CBase * CGlxListWindow::At(int)
+	??1TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 98 NONAME ; TGlxFromManualIndexBlockyIterator::~TGlxFromManualIndexBlockyIterator(void)
+	?RemoveAttribute@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 99 NONAME ; void CGlxAttributeContext::RemoveAttribute(class TMPXAttribute const &)
+	??1TGlxFromIndexOutwardBlockyIterator@@QAE@XZ @ 100 NONAME ; TGlxFromIndexOutwardBlockyIterator::~TGlxFromIndexOutwardBlockyIterator(void)
+	?ClosestThumbnail@GlxThumbnailUtility@@SAHABVTSize@@ABVCGlxMedia@@H@Z @ 101 NONAME ; int GlxThumbnailUtility::ClosestThumbnail(class TSize const &, class CGlxMedia const &, int)
+	??0TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 102 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::TGlxFromManualIndexOutwardBlockyIterator(void)
+	?Cleanup@CGlxListWindow@@QAEXXZ @ 103 NONAME ; void CGlxListWindow::Cleanup(void)
+	??1TGlxExclusionIterator@@QAE@XZ @ 104 NONAME ; TGlxExclusionIterator::~TGlxExclusionIterator(void)
+	??1CGlxDefaultListAttributeContext@@UAE@XZ @ 105 NONAME ; CGlxDefaultListAttributeContext::~CGlxDefaultListAttributeContext(void)
+	??1TGlxFetchContextRemover@@QAE@XZ @ 106 NONAME ; TGlxFetchContextRemover::~TGlxFetchContextRemover(void)
+	?SetRangeOffsets@TGlxFromVisibleIndexOutwardListIterator@@QAEXHH@Z @ 107 NONAME ; void TGlxFromVisibleIndexOutwardListIterator::SetRangeOffsets(int, int)
+	?SetDefaultSpec@CGlxThumbnailContext@@QAEXHH@Z @ 108 NONAME ; void CGlxThumbnailContext::SetDefaultSpec(int, int)
+	??0TGlxFromVisibleIndexOutwardListIterator@@QAE@XZ @ 109 NONAME ; TGlxFromVisibleIndexOutwardListIterator::TGlxFromVisibleIndexOutwardListIterator(void)
+	??0TGlxSpecificIdIterator@@QAE@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@VTGlxMediaId@@@Z @ 110 NONAME ; TGlxSpecificIdIterator::TGlxSpecificIdIterator(class TGlxId<class TGlxIdSpaceIdBase> const &, class TGlxMediaId)
+	?GetSlideshowPlayableContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 111 NONAME ; int TGlxMedia::GetSlideshowPlayableContainedItemCount(int &) const
+	?MatchById@TGlxMedia@@SAHABV1@0@Z @ 112 NONAME ; int TGlxMedia::MatchById(class TGlxMedia const &, class TGlxMedia const &)
+	?SetRangeOffsetsL@CGlxListWindow@@QAEXHH@Z @ 113 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int)
+	?SetRangeOffsets@CGlxDefaultListAttributeContext@@QAEXHH@Z @ 114 NONAME ; void CGlxDefaultListAttributeContext::SetRangeOffsets(int, int)
+	?MimeType@TGlxMedia@@QBEABVTDesC16@@XZ @ 115 NONAME ; class TDesC16 const & TGlxMedia::MimeType(void) const
+	?Uri@TGlxMedia@@QBEABVTDesC16@@XZ @ 116 NONAME ; class TDesC16 const & TGlxMedia::Uri(void) const
+	??0TGlxFirstThenLastIterator@@QAE@XZ @ 117 NONAME ; TGlxFirstThenLastIterator::TGlxFirstThenLastIterator(void)
+	??1CGlxAttributeContext@@UAE@XZ @ 118 NONAME ; CGlxAttributeContext::~CGlxAttributeContext(void)
+	?SetRangeOffsets@CGlxDefaultAttributeContext@@QAEXHH@Z @ 119 NONAME ; void CGlxDefaultAttributeContext::SetRangeOffsets(int, int)
+	?ValueCObject@CGlxMedia@@QBEPBVCBase@@ABVTMPXAttribute@@@Z @ 120 NONAME ; class CBase const * CGlxMedia::ValueCObject(class TMPXAttribute const &) const
+	?GetCoordinate@TGlxMedia@@QBEHAAVTCoordinate@@@Z @ 121 NONAME ; int TGlxMedia::GetCoordinate(class TCoordinate &) const
+	?NewL@CGlxDefaultThumbnailContext@@SAPAV1@XZ @ 122 NONAME ; class CGlxDefaultThumbnailContext * CGlxDefaultThumbnailContext::NewL(void)
+	?IsSlideShowPlayableContent@TGlxMedia@@QBEHXZ @ 123 NONAME ; int TGlxMedia::IsSlideShowPlayableContent(void) const
+	??1TGlxFromFocusOutwardIterator@@QAE@XZ @ 124 NONAME ; TGlxFromFocusOutwardIterator::~TGlxFromFocusOutwardIterator(void)
+	?InRange@TGlxSelectionIterator@@UBEHH@Z @ 125 NONAME ; int TGlxSelectionIterator::InRange(int) const
 
--- a/ui/uiengine/medialists/eabi/glxmedialistsu.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/eabi/glxmedialistsu.def	Fri Apr 16 14:58:46 2010 +0300
@@ -85,107 +85,121 @@
 	_ZN28TGlxFromFocusOutwardIteratorC2Ev @ 84 NONAME
 	_ZN28TGlxFromFocusOutwardIteratorD1Ev @ 85 NONAME
 	_ZN28TGlxFromFocusOutwardIteratorD2Ev @ 86 NONAME
-	_ZN33TGlxFromManualIndexBlockyIterator15SetRangeOffsetsEii @ 87 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorC1Ev @ 88 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorC2Ev @ 89 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorD1Ev @ 90 NONAME
-	_ZN33TGlxFromManualIndexBlockyIteratorD2Ev @ 91 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorC1Ev @ 92 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorC2Ev @ 93 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorD1Ev @ 94 NONAME
-	_ZN34TGlxFromFocusOutwardBlockyIteratorD2Ev @ 95 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIterator15SetRangeOffsetsEii @ 96 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorC1ERKNS_9MGlxIndexE @ 97 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorC2ERKNS_9MGlxIndexE @ 98 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorD1Ev @ 99 NONAME
-	_ZN34TGlxFromIndexOutwardBlockyIteratorD2Ev @ 100 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIterator8SetIndexEi @ 101 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC1Ev @ 102 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC2Ev @ 103 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD1Ev @ 104 NONAME
-	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD2Ev @ 105 NONAME
-	_ZN9CGlxMedia13SetTextValueLERK13TMPXAttributeRK7TDesC16 @ 106 NONAME
-	_ZN9CGlxMedia14HandleModifiedERK6RArrayI13TMPXAttributeE @ 107 NONAME
-	_ZN9CGlxMedia15DeleteAttributeERK13TMPXAttribute @ 108 NONAME
-	_ZN9CGlxMedia16SetCObjectValueLERK13TMPXAttributeP5CBase @ 109 NONAME
-	_ZN9CGlxMedia5ResetEv @ 110 NONAME
-	_ZN9CGlxMedia9SetValueLERK13TMPXAttributePv17TMPXAttributeType @ 111 NONAME
-	_ZN9CGlxMediaC1ERK11TGlxMediaId @ 112 NONAME
-	_ZN9CGlxMediaC2ERK11TGlxMediaId @ 113 NONAME
-	_ZN9CGlxMediaD0Ev @ 114 NONAME
-	_ZN9CGlxMediaD1Ev @ 115 NONAME
-	_ZN9CGlxMediaD2Ev @ 116 NONAME
-	_ZN9MGlxCache9InstanceLEv @ 117 NONAME
-	_ZN9TGlxMedia23DeleteLocationAttributeEv @ 118 NONAME
-	_ZN9TGlxMedia9MatchByIdERKS_S1_ @ 119 NONAME
-	_ZNK14CGlxListWindow2AtEi @ 120 NONAME
-	_ZNK14CGlxListWindow8IteratorEv @ 121 NONAME
-	_ZNK21TGlxSelectionIterator7InRangeEi @ 122 NONAME
-	_ZNK9CGlxMedia12GetValueTextER7TPtrC16RK13TMPXAttribute @ 123 NONAME
-	_ZNK9CGlxMedia12ValueCObjectERK13TMPXAttribute @ 124 NONAME
-	_ZNK9CGlxMedia9ValueTextERK13TMPXAttribute @ 125 NONAME
-	_ZNK9TGlxMedia11GetDurationERf @ 126 NONAME
-	_ZNK9TGlxMedia11GetIconInfoER9TIconInfo @ 127 NONAME
-	_ZNK9TGlxMedia13GetCoordinateER11TCoordinate @ 128 NONAME
-	_ZNK9TGlxMedia13GetDimensionsER5TSize @ 129 NONAME
-	_ZNK9TGlxMedia13GetFrameCountERi @ 130 NONAME
-	_ZNK9TGlxMedia13GetSystemItemERi @ 131 NONAME
-	_ZNK9TGlxMedia14GetDrmValidityER30TGlxMediaGeneralRightsValidity @ 132 NONAME
-	_ZNK9TGlxMedia14IsDrmProtectedEv @ 133 NONAME
-	_ZNK9TGlxMedia15GetDrmProtectedERi @ 134 NONAME
-	_ZNK9TGlxMedia18ThumbnailAttributeER13TMPXAttribute @ 135 NONAME
-	_ZNK9TGlxMedia19GetClosestThumbnailER13TMPXAttributeRK5TSizei @ 136 NONAME
-	_ZNK9TGlxMedia19GetLastModifiedDateER5TTime @ 137 NONAME
-	_ZNK9TGlxMedia20GetStaticItemCommandERi @ 138 NONAME
-	_ZNK9TGlxMedia21GetContainedItemCountERi @ 139 NONAME
-	_ZNK9TGlxMedia26IsSlideShowPlayableContentEv @ 140 NONAME
-	_ZNK9TGlxMedia38GetSlideshowPlayableContainedItemCountERi @ 141 NONAME
-	_ZNK9TGlxMedia3UriEv @ 142 NONAME
-	_ZNK9TGlxMedia5TitleEv @ 143 NONAME
-	_ZNK9TGlxMedia7CommentEv @ 144 NONAME
-	_ZNK9TGlxMedia7GetDateER5TTime @ 145 NONAME
-	_ZNK9TGlxMedia7GetSizeERi @ 146 NONAME
-	_ZNK9TGlxMedia8CategoryEv @ 147 NONAME
-	_ZNK9TGlxMedia8IsStaticEv @ 148 NONAME
-	_ZNK9TGlxMedia8MimeTypeEv @ 149 NONAME
-	_ZNK9TGlxMedia8SubTitleEv @ 150 NONAME
-	_ZNK9TGlxMedia9IdSpaceIdEv @ 151 NONAME
-	_ZTI13CGlxMediaList @ 152 NONAME
-	_ZTI14CGlxListWindow @ 153 NONAME
-	_ZTI15CGlxImageReader @ 154 NONAME
-	_ZTI16CGlxCacheManager @ 155 NONAME
-	_ZTI20CGlxAttributeContext @ 156 NONAME
-	_ZTI20CGlxGarbageCollector @ 157 NONAME
-	_ZTI20CGlxThumbnailContext @ 158 NONAME
-	_ZTI21TGlxExclusionIterator @ 159 NONAME
-	_ZTI21TGlxSelectionIterator @ 160 NONAME
-	_ZTI22TGlxSequentialIterator @ 161 NONAME
-	_ZTI22TGlxSpecificIdIterator @ 162 NONAME
-	_ZTI25TGlxFirstThenLastIterator @ 163 NONAME
-	_ZTI27CGlxDefaultAttributeContext @ 164 NONAME
-	_ZTI27CGlxDefaultThumbnailContext @ 165 NONAME
-	_ZTI28TGlxFromFocusOutwardIterator @ 166 NONAME
-	_ZTI33TGlxFromManualIndexBlockyIterator @ 167 NONAME
-	_ZTI34TGlxFromFocusOutwardBlockyIterator @ 168 NONAME
-	_ZTI34TGlxFromIndexOutwardBlockyIterator @ 169 NONAME
-	_ZTI40TGlxFromManualIndexOutwardBlockyIterator @ 170 NONAME
-	_ZTV13CGlxMediaList @ 171 NONAME
-	_ZTV14CGlxListWindow @ 172 NONAME
-	_ZTV15CGlxImageReader @ 173 NONAME
-	_ZTV16CGlxCacheManager @ 174 NONAME
-	_ZTV20CGlxAttributeContext @ 175 NONAME
-	_ZTV20CGlxGarbageCollector @ 176 NONAME
-	_ZTV20CGlxThumbnailContext @ 177 NONAME
-	_ZTV21TGlxExclusionIterator @ 178 NONAME
-	_ZTV21TGlxSelectionIterator @ 179 NONAME
-	_ZTV22TGlxSequentialIterator @ 180 NONAME
-	_ZTV22TGlxSpecificIdIterator @ 181 NONAME
-	_ZTV25TGlxFirstThenLastIterator @ 182 NONAME
-	_ZTV27CGlxDefaultAttributeContext @ 183 NONAME
-	_ZTV27CGlxDefaultThumbnailContext @ 184 NONAME
-	_ZTV28TGlxFromFocusOutwardIterator @ 185 NONAME
-	_ZTV33TGlxFromManualIndexBlockyIterator @ 186 NONAME
-	_ZTV34TGlxFromFocusOutwardBlockyIterator @ 187 NONAME
-	_ZTV34TGlxFromIndexOutwardBlockyIterator @ 188 NONAME
-	_ZTV40TGlxFromManualIndexOutwardBlockyIterator @ 189 NONAME
+	_ZN31CGlxDefaultListAttributeContext15SetRangeOffsetsEii @ 87 NONAME
+	_ZN31CGlxDefaultListAttributeContext4NewLEv @ 88 NONAME
+	_ZN31CGlxDefaultListAttributeContextD0Ev @ 89 NONAME
+	_ZN31CGlxDefaultListAttributeContextD1Ev @ 90 NONAME
+	_ZN31CGlxDefaultListAttributeContextD2Ev @ 91 NONAME
+	_ZN33TGlxFromManualIndexBlockyIterator15SetRangeOffsetsEii @ 92 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorC1Ev @ 93 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorC2Ev @ 94 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorD1Ev @ 95 NONAME
+	_ZN33TGlxFromManualIndexBlockyIteratorD2Ev @ 96 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorC1Ev @ 97 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorC2Ev @ 98 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorD1Ev @ 99 NONAME
+	_ZN34TGlxFromFocusOutwardBlockyIteratorD2Ev @ 100 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIterator15SetRangeOffsetsEii @ 101 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorC1ERKNS_9MGlxIndexE @ 102 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorC2ERKNS_9MGlxIndexE @ 103 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorD1Ev @ 104 NONAME
+	_ZN34TGlxFromIndexOutwardBlockyIteratorD2Ev @ 105 NONAME
+	_ZN39TGlxFromVisibleIndexOutwardListIterator15SetRangeOffsetsEii @ 106 NONAME
+	_ZN39TGlxFromVisibleIndexOutwardListIteratorC1Ev @ 107 NONAME
+	_ZN39TGlxFromVisibleIndexOutwardListIteratorC2Ev @ 108 NONAME
+	_ZN39TGlxFromVisibleIndexOutwardListIteratorD1Ev @ 109 NONAME
+	_ZN39TGlxFromVisibleIndexOutwardListIteratorD2Ev @ 110 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIterator8SetIndexEi @ 111 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC1Ev @ 112 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorC2Ev @ 113 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD1Ev @ 114 NONAME
+	_ZN40TGlxFromManualIndexOutwardBlockyIteratorD2Ev @ 115 NONAME
+	_ZN9CGlxMedia13SetTextValueLERK13TMPXAttributeRK7TDesC16 @ 116 NONAME
+	_ZN9CGlxMedia14HandleModifiedERK6RArrayI13TMPXAttributeE @ 117 NONAME
+	_ZN9CGlxMedia15DeleteAttributeERK13TMPXAttribute @ 118 NONAME
+	_ZN9CGlxMedia16SetCObjectValueLERK13TMPXAttributeP5CBase @ 119 NONAME
+	_ZN9CGlxMedia5ResetEv @ 120 NONAME
+	_ZN9CGlxMedia9SetValueLERK13TMPXAttributePv17TMPXAttributeType @ 121 NONAME
+	_ZN9CGlxMediaC1ERK11TGlxMediaId @ 122 NONAME
+	_ZN9CGlxMediaC2ERK11TGlxMediaId @ 123 NONAME
+	_ZN9CGlxMediaD0Ev @ 124 NONAME
+	_ZN9CGlxMediaD1Ev @ 125 NONAME
+	_ZN9CGlxMediaD2Ev @ 126 NONAME
+	_ZN9MGlxCache9InstanceLEv @ 127 NONAME
+	_ZN9TGlxMedia23DeleteLocationAttributeEv @ 128 NONAME
+	_ZN9TGlxMedia9MatchByIdERKS_S1_ @ 129 NONAME
+	_ZNK14CGlxListWindow2AtEi @ 130 NONAME
+	_ZNK14CGlxListWindow8IteratorEv @ 131 NONAME
+	_ZNK21TGlxSelectionIterator7InRangeEi @ 132 NONAME
+	_ZNK9CGlxMedia12GetValueTextER7TPtrC16RK13TMPXAttribute @ 133 NONAME
+	_ZNK9CGlxMedia12ValueCObjectERK13TMPXAttribute @ 134 NONAME
+	_ZNK9CGlxMedia9ValueTextERK13TMPXAttribute @ 135 NONAME
+	_ZNK9TGlxMedia11GetDurationERf @ 136 NONAME
+	_ZNK9TGlxMedia11GetIconInfoER9TIconInfo @ 137 NONAME
+	_ZNK9TGlxMedia13GetCoordinateER11TCoordinate @ 138 NONAME
+	_ZNK9TGlxMedia13GetDimensionsER5TSize @ 139 NONAME
+	_ZNK9TGlxMedia13GetFrameCountERi @ 140 NONAME
+	_ZNK9TGlxMedia13GetSystemItemERi @ 141 NONAME
+	_ZNK9TGlxMedia14GetDrmValidityER30TGlxMediaGeneralRightsValidity @ 142 NONAME
+	_ZNK9TGlxMedia14IsDrmProtectedEv @ 143 NONAME
+	_ZNK9TGlxMedia15GetDrmProtectedERi @ 144 NONAME
+	_ZNK9TGlxMedia18ThumbnailAttributeER13TMPXAttribute @ 145 NONAME
+	_ZNK9TGlxMedia19GetClosestThumbnailER13TMPXAttributeRK5TSizei @ 146 NONAME
+	_ZNK9TGlxMedia19GetLastModifiedDateER5TTime @ 147 NONAME
+	_ZNK9TGlxMedia20GetStaticItemCommandERi @ 148 NONAME
+	_ZNK9TGlxMedia21GetContainedItemCountERi @ 149 NONAME
+	_ZNK9TGlxMedia26IsSlideShowPlayableContentEv @ 150 NONAME
+	_ZNK9TGlxMedia38GetSlideshowPlayableContainedItemCountERi @ 151 NONAME
+	_ZNK9TGlxMedia3UriEv @ 152 NONAME
+	_ZNK9TGlxMedia5TitleEv @ 153 NONAME
+	_ZNK9TGlxMedia7CommentEv @ 154 NONAME
+	_ZNK9TGlxMedia7GetDateER5TTime @ 155 NONAME
+	_ZNK9TGlxMedia7GetSizeERi @ 156 NONAME
+	_ZNK9TGlxMedia8CategoryEv @ 157 NONAME
+	_ZNK9TGlxMedia8IsStaticEv @ 158 NONAME
+	_ZNK9TGlxMedia8MimeTypeEv @ 159 NONAME
+	_ZNK9TGlxMedia8SubTitleEv @ 160 NONAME
+	_ZNK9TGlxMedia9IdSpaceIdEv @ 161 NONAME
+	_ZTI13CGlxMediaList @ 162 NONAME
+	_ZTI14CGlxListWindow @ 163 NONAME
+	_ZTI15CGlxImageReader @ 164 NONAME
+	_ZTI16CGlxCacheManager @ 165 NONAME
+	_ZTI20CGlxAttributeContext @ 166 NONAME
+	_ZTI20CGlxGarbageCollector @ 167 NONAME
+	_ZTI20CGlxThumbnailContext @ 168 NONAME
+	_ZTI21TGlxExclusionIterator @ 169 NONAME
+	_ZTI21TGlxSelectionIterator @ 170 NONAME
+	_ZTI22TGlxSequentialIterator @ 171 NONAME
+	_ZTI22TGlxSpecificIdIterator @ 172 NONAME
+	_ZTI25TGlxFirstThenLastIterator @ 173 NONAME
+	_ZTI27CGlxDefaultAttributeContext @ 174 NONAME
+	_ZTI27CGlxDefaultThumbnailContext @ 175 NONAME
+	_ZTI28TGlxFromFocusOutwardIterator @ 176 NONAME
+	_ZTI31CGlxDefaultListAttributeContext @ 177 NONAME
+	_ZTI33TGlxFromManualIndexBlockyIterator @ 178 NONAME
+	_ZTI34TGlxFromFocusOutwardBlockyIterator @ 179 NONAME
+	_ZTI34TGlxFromIndexOutwardBlockyIterator @ 180 NONAME
+	_ZTI39TGlxFromVisibleIndexOutwardListIterator @ 181 NONAME
+	_ZTI40TGlxFromManualIndexOutwardBlockyIterator @ 182 NONAME
+	_ZTV13CGlxMediaList @ 183 NONAME
+	_ZTV14CGlxListWindow @ 184 NONAME
+	_ZTV15CGlxImageReader @ 185 NONAME
+	_ZTV16CGlxCacheManager @ 186 NONAME
+	_ZTV20CGlxAttributeContext @ 187 NONAME
+	_ZTV20CGlxGarbageCollector @ 188 NONAME
+	_ZTV20CGlxThumbnailContext @ 189 NONAME
+	_ZTV21TGlxExclusionIterator @ 190 NONAME
+	_ZTV21TGlxSelectionIterator @ 191 NONAME
+	_ZTV22TGlxSequentialIterator @ 192 NONAME
+	_ZTV22TGlxSpecificIdIterator @ 193 NONAME
+	_ZTV25TGlxFirstThenLastIterator @ 194 NONAME
+	_ZTV27CGlxDefaultAttributeContext @ 195 NONAME
+	_ZTV27CGlxDefaultThumbnailContext @ 196 NONAME
+	_ZTV28TGlxFromFocusOutwardIterator @ 197 NONAME
+	_ZTV31CGlxDefaultListAttributeContext @ 198 NONAME
+	_ZTV33TGlxFromManualIndexBlockyIterator @ 199 NONAME
+	_ZTV34TGlxFromFocusOutwardBlockyIterator @ 200 NONAME
+	_ZTV34TGlxFromIndexOutwardBlockyIterator @ 201 NONAME
+	_ZTV39TGlxFromVisibleIndexOutwardListIterator @ 202 NONAME
+	_ZTV40TGlxFromManualIndexOutwardBlockyIterator @ 203 NONAME
 
--- a/ui/uiengine/medialists/inc/glxattributecontext.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/inc/glxattributecontext.h	Fri Apr 16 14:58:46 2010 +0300
@@ -157,5 +157,36 @@
 	TGlxFromFocusOutwardIterator iFromFocusIterator;	
 	};
 	
+/**
+ *  CGlxDefaultListAttributeContext
+ *
+ *  Fetch context to retrieve MPX attributes by using TGlxFromFocusOutwardListIterator
+ *  iterator specially designed for list in 10.1
+ *
+ *  @lib glxmedialists.lib
+ */
+class CGlxDefaultListAttributeContext : public CGlxAttributeContext
+    {
+public:
+    IMPORT_C static CGlxDefaultListAttributeContext* NewL();
+    IMPORT_C ~CGlxDefaultListAttributeContext();
+
+    /**
+     * Set the range offsets. These determine the outer limits
+     * of attributes to be retrieved, compared to current focus in
+     * the list.
+     * 
+     * NOTE : This works on Visible WindowIndex and not FocusIndex
+     * 
+     */
+    IMPORT_C void SetRangeOffsets(TInt aFrontOffset, TInt aRearOffset);
+
+private:
+    CGlxDefaultListAttributeContext();
+
+private:
+    TGlxFromVisibleIndexOutwardListIterator iFromVisibleIndexIterator;    
+    };
+
 #endif // C_GLXATTRIBUTECONTEXT_H
 
--- a/ui/uiengine/medialists/inc/glxmedialistiterator.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/inc/glxmedialistiterator.h	Fri Apr 16 14:58:46 2010 +0300
@@ -235,6 +235,66 @@
 	};
 
 /**
+ * TGlxFromVisibleIndexOutwardListIterator
+ * 
+ * Ordered that returns the index of the focused item first and 
+ * then the surrounding items evenly from both sides based on the rangeoffset
+ * This is mainly designed for 10.1 List View(album) and mapped with
+ * VisibleWindowIndex and not FocusIndex as for Direct UI.
+ * 
+ *  @lib glxmedialists.lib
+ */ 
+class TGlxFromVisibleIndexOutwardListIterator : public MGlxMediaListIterator
+    {
+public:
+    IMPORT_C TGlxFromVisibleIndexOutwardListIterator();
+    IMPORT_C ~TGlxFromVisibleIndexOutwardListIterator();
+    
+    /**
+     * Set the range offsets
+     */
+    IMPORT_C void SetRangeOffsets(TInt aRearOffset, TInt aFrontOffset);
+    
+// From MGlxMediaListIterator
+    virtual void SetToFirst(const MGlxMediaList* aList);
+    virtual TInt operator++(TInt);
+    virtual TBool InRange(TInt aIndex) const;
+
+private:
+    /** 
+     * The count or ordinal of the item that is currently "selected"
+     * This translates to how many times ++ has been called
+     */
+    TInt iCurrentItem;
+
+    /**
+     * Number of items within range after focus index
+     */
+    TInt iFrontOffset;
+
+    /**
+     * Number of items within range before focus index
+     */
+    TInt iRearOffset;
+    
+    /**
+     * List being traversed
+     */
+    const MGlxMediaList* iList;
+    
+    // For E-Unit
+    friend class T_CGlxFromFocusOutwardIterator;
+    
+    /**
+     * Number of items within range as configured by clients
+     * This shall be used to restore back 
+     * while coming out of low memory conditions
+     */
+    TInt iOriginalFrontOffset;
+    TInt iOriginalRearOffset;
+    };
+
+/**
  * TGlxFromIndexOutwardBlockyIterator
  * 
  * Ordered that returns the index of the focused item first and 
--- a/ui/uiengine/medialists/src/glxattributecontext.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/src/glxattributecontext.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -414,3 +414,53 @@
     iDefaultSpecSize = TSize(aWidth, aHeight);
     }
 
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+// CGlxDefaultListAttributeContext
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+
+// NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CGlxDefaultListAttributeContext* CGlxDefaultListAttributeContext::NewL()
+    {
+    TRACER("CGlxDefaultListAttributeContext::NewL");
+    
+    CGlxDefaultListAttributeContext* obj = new (ELeave) CGlxDefaultListAttributeContext();
+    return obj;
+    }
+    
+// -----------------------------------------------------------------------------
+// Constructor
+// Sets the iterator of base class to be TGlxFromFocusOutwardIterator
+// -----------------------------------------------------------------------------
+//
+CGlxDefaultListAttributeContext::CGlxDefaultListAttributeContext() :
+        CGlxAttributeContext(&iFromVisibleIndexIterator)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CGlxDefaultListAttributeContext::~CGlxDefaultListAttributeContext()
+    {
+    TRACER("CGlxDefaultListAttributeContext::Destructor");
+    
+    }
+
+// ----------------------------------------------------------------------------
+// Set range offsets
+// ----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxDefaultListAttributeContext::SetRangeOffsets(TInt aFrontOffset, TInt aRearOffset)
+    {
+    TRACER("CGlxDefaultListAttributeContext::SetRangeOffsets");
+    
+    iFromVisibleIndexIterator.SetRangeOffsets(aRearOffset, aFrontOffset);
+    }
+
--- a/ui/uiengine/medialists/src/glxcachemanager.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/src/glxcachemanager.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -593,7 +593,7 @@
 #ifdef MEDIA_ID_BASED_TN_FETCH_ENABLED
 	               	 	GLX_DEBUG2("CGlxCacheManager::MaintainCacheL() requesting TN attribute (Medialist) itemId %d", itemId.Value());
 						if (item.Uri().Find(KFileIdentifier) != KErrNotFound ||
-						    item.Uri().Length() && itemId.Value())
+						    item.Uri().Length() == 0 && itemId.Value())
 #else
 	               	 	GLX_DEBUG1("CGlxCacheManager::MaintainCacheL() requesting TN attribute (Medialist) Uri");
 						if (item.Uri().Find(KFileIdentifier) != KErrNotFound)
--- a/ui/uiengine/medialists/src/glxgarbagecollector.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/src/glxgarbagecollector.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -365,7 +365,7 @@
 // Delete all attributes from a media object except those specified
 // -----------------------------------------------------------------------------
 //
-void CGlxGarbageCollector::DeleteOtherAttributes( CGlxCache& aCache, CGlxMedia& aMedia, 
+void CGlxGarbageCollector::DeleteOtherAttributes( CGlxCache& /*aCache*/, CGlxMedia& aMedia, 
         const RArray<TMPXAttribute>& aAttributesToKeep ) const
     {
     TRACER("CGlxGarbageCollector::DeleteOtherAttributes");
@@ -374,17 +374,10 @@
     for ( TInt attrIndex = aMedia.Count() - 1; attrIndex >= 0; attrIndex-- )
         {
         // delete the attribute if it is not in use
-        const TMPXAttribute& attrib = aMedia.Attribute(attrIndex);
-        if ( KErrNotFound == aAttributesToKeep.Find( attrib, TMPXAttribute::Match ) )
+        if ( KErrNotFound == aAttributesToKeep.Find( aMedia.Attribute( attrIndex ), TMPXAttribute::Match ) )
             {
-            GLX_LOG_INFO( "CGlxGarbageCollector::DeleteOtherAttributes() - Deleted attribute" );
+            GLX_LOG_INFO( "CGlxGarbageCollector::CleanupMediaL - Deleted attribute" );
             aMedia.DeleteAttribute( attrIndex );
-            if (GlxThumbnailUtility::IsFullThumbnail(attrib))
-                {
-                GLX_DEBUG2("CGlxGarbageCollector::DeleteOtherAttributes(*** TN ***) aMediaId(%d)",
-                        aMedia.Id().Value());
-                aCache.CleanupMedia(aMedia.Id());
-                }
             }
         }
     }
--- a/ui/uiengine/medialists/src/glxmedialistiterator.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialists/src/glxmedialistiterator.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -36,6 +36,10 @@
 const TInt KMaxLowMemOffsetValue = 3;
 const TInt KMinLowMemOffsetValue = 1;
 
+const TInt KMaxLowMemOffsetValueList = 10;
+const TInt KMinLowMemOffsetValueList = 6;
+const TInt KRearOffsetListValue = 2;
+
 EXPORT_C TGlxSequentialIterator::TGlxSequentialIterator()
     {
     TRACER("TGlxSequentialIterator::TGlxSequentialIterator");
@@ -65,7 +69,7 @@
 TInt TGlxSequentialIterator::operator++(TInt) 
     {
     TRACER("TGlxSequentialIterator::operator++");
-    
+
     iCurrentItem++;
     if (iCurrentItem < iList->Count() && iCurrentItem < iRange )
         {
@@ -411,6 +415,145 @@
 // Constructor
 // -----------------------------------------------------------------------------
 //
+EXPORT_C TGlxFromVisibleIndexOutwardListIterator::TGlxFromVisibleIndexOutwardListIterator()
+    {
+    TRACER("TGlxFromVisibleIndexOutwardListIterator::TGlxFromVisibleIndexOutwardListIterator");
+    iCurrentItem = 0;
+    iFrontOffset = 0;
+    iRearOffset = 0;
+    iList = NULL;
+  }
+    
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TGlxFromVisibleIndexOutwardListIterator::~TGlxFromVisibleIndexOutwardListIterator()
+    {
+    TRACER("TGlxFromVisibleIndexOutwardListIterator::~TGlxFromVisibleIndexOutwardListIterator");
+    } 
+
+// ----------------------------------------------------------------------------
+// Set range offsets
+// ----------------------------------------------------------------------------
+//
+EXPORT_C void TGlxFromVisibleIndexOutwardListIterator::SetRangeOffsets(TInt aRearOffset,
+    TInt aFrontOffset)
+    { 
+    TRACER("TGlxFromVisibleIndexOutwardListIterator::SetRangeOffsets");
+    __ASSERT_DEBUG(aRearOffset >= 0 && aFrontOffset >= 0, Panic(EGlxPanicIllegalArgument)); 
+    iFrontOffset = aFrontOffset;
+    iRearOffset = aRearOffset;
+    iOriginalFrontOffset = iFrontOffset;
+    iOriginalRearOffset = iRearOffset;    
+    }
+
+// -----------------------------------------------------------------------------
+// Set to first item
+// -----------------------------------------------------------------------------
+//
+void TGlxFromVisibleIndexOutwardListIterator::SetToFirst(const MGlxMediaList* aList) 
+    {
+    TRACER("TGlxFromVisibleIndexOutwardListIterator::SetToFirst");
+    __ASSERT_DEBUG(aList != NULL, Panic(EGlxPanicNullPointer));
+
+    iList = aList;
+    iCurrentItem = 0;
+    }
+
+// -----------------------------------------------------------------------------
+// Return the item index or KErrNotFound, and goes to next
+// -----------------------------------------------------------------------------
+//
+TInt TGlxFromVisibleIndexOutwardListIterator::operator++(TInt) 
+    {
+    TRACER("TGlxFromVisibleIndexOutwardListIterator::operator++");
+    __ASSERT_DEBUG(iList != NULL, Panic(EGlxPanicNullPointer));
+
+    TInt count = iList->Count();
+    if (count <= 0)
+        {
+        return KErrNotFound;
+        }
+
+    if (iOriginalFrontOffset > KMaxLowMemOffsetValue && 
+            iOriginalRearOffset > KMaxLowMemOffsetValue)
+        {
+        TInt freeMemory = 0;
+        HAL::Get( HALData::EMemoryRAMFree, freeMemory );    
+        if ( freeMemory < KGlxUpperMemoryLimitForCacheSize &&
+                freeMemory > KGlxLowerMemoryLimitForCacheSize )
+            {
+            iFrontOffset = KMaxLowMemOffsetValueList;
+            iRearOffset = KRearOffsetListValue;
+            }
+        else if ( freeMemory < KGlxLowerMemoryLimitForCacheSize )
+            {
+            iFrontOffset = KMinLowMemOffsetValueList;
+            iRearOffset = KRearOffsetListValue;
+            }
+        else if (iFrontOffset != iOriginalFrontOffset 
+                && iRearOffset!= iOriginalRearOffset)
+            {
+            iFrontOffset = Max(iFrontOffset, iOriginalFrontOffset );
+            iRearOffset = Max(iRearOffset, iOriginalRearOffset );
+            }
+        }
+
+    // Check if out of bounds
+    if (iFrontOffset + iRearOffset < iCurrentItem || count <= iCurrentItem)
+        {
+        return KErrNotFound;
+        }
+
+    TInt index = iList->VisibleWindowIndex() + iCurrentItem ;
+    iCurrentItem++;
+
+    // The index may be below 0 or above count. Normalise back to list indexes.
+    return GlxListUtils::NormalizedIndex(index, count); 
+    } 
+  
+// -----------------------------------------------------------------------------
+// Return ETrue if index is within range, EFalse otherwise
+// -----------------------------------------------------------------------------
+//
+TBool TGlxFromVisibleIndexOutwardListIterator::InRange(TInt aIndex) const
+    {
+    TRACER("TGlxFromVisibleIndexOutwardListIterator::InRange");
+    TInt count = iList->Count();
+  
+    // Handle the case where range is longer than count separately, because looping will
+    // confuse otherwise
+    if (count <= iRearOffset + iFrontOffset) 
+        {
+        // Range is longer than count, must be in range
+        return ETrue;
+        }
+    TInt focusIndex;
+    if (!iList->VisibleWindowIndex())
+        focusIndex = 0;
+    else
+        focusIndex = iList->VisibleWindowIndex();
+    
+    TInt firstInRange = GlxListUtils::NormalizedIndex(focusIndex - iRearOffset, count);
+    TInt lastInRange = GlxListUtils::NormalizedIndex(focusIndex + iFrontOffset, count);
+  
+    if (firstInRange <= lastInRange)
+        {
+        // Normal case:  |    F-------L   |
+        return aIndex >= firstInRange && aIndex <= lastInRange;
+        }
+    else 
+        {
+        // Looping case: |----L      F----|
+        return aIndex <= lastInRange || aIndex >= firstInRange;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
 EXPORT_C TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator(
     const MGlxIndex& aIndexFunctor ) 
         : iIndexFunctor( aIndexFunctor )
--- a/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h	Fri Apr 16 14:58:46 2010 +0300
@@ -32,6 +32,8 @@
 class CGlxThumbnailContext;
 class HbIcon;
 class CGlxDefaultAttributeContext;
+class CGlxDefaultThumbnailContext;
+class CGlxDefaultListAttributeContext;
 
 //to use first call GlxMLWrapperPrivate::Instance then set the mode by calling GlxMLWrapperPrivate::SetContextMode()
 //CLASS Declaration
@@ -92,6 +94,7 @@
   //todo remove comment  void HandleCommandCompleteL( CMPXCommand* aCommandResult, TInt aError,MGlxMediaList* aList );
     void HandleMediaL( TInt aListIndex, MGlxMediaList* aList );
     void HandleItemModifiedL( const RArray<TInt>& aItemIndexes, MGlxMediaList* aList );
+
 public:
 	/**
 	* RetrieveItemIcon()
@@ -139,9 +142,14 @@
 	void CheckPtFsTBAttribute(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
 	void CheckLsFsTBAttribute(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
 	void CheckListAttributes(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
+	/*
+	 * convert the CFbsbitmap to HbIcon
+	 */
 	HbIcon *convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap);
-
-
+	/*
+	 * convert the CFbsbitmap to HbIcon and scale down upto itemWidth and itemHeight
+	 */
+	HbIcon * convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap, TInt itemWidth, TInt itemHeight);
 
 private:
     // Instance of Media List
@@ -156,27 +164,25 @@
 	CGlxThumbnailContext* iGridThumbnailContext;
 
 	// FS related thumbnail contexts
-	CGlxThumbnailContext* iPtFsThumbnailContext;
-    CGlxThumbnailContext* iLsFsThumbnailContext; 
-    CGlxThumbnailContext* iFocusFsThumbnailContext;
+	CGlxDefaultThumbnailContext* iPtFsThumbnailContext;
+	CGlxDefaultThumbnailContext* iLsFsThumbnailContext; 
+	CGlxDefaultThumbnailContext* iFocusFsThumbnailContext;
     CGlxThumbnailContext* iFocusGridThumbnailContext;
 
 	//List related contexts
 	// Fetch context for retrieving title attribute
-    CGlxDefaultAttributeContext* iTitleAttributeContext;
+    CGlxDefaultListAttributeContext* iTitleAttributeContext;
 
     // Fetch context for retrieving subtitle
-    CGlxDefaultAttributeContext* iSubtitleAttributeContext;
+    CGlxDefaultListAttributeContext* iSubtitleAttributeContext;
 	
     CGlxThumbnailContext* iListThumbnailContext;
     // for thumbnail context
-	TGlxSequentialIterator iThumbnailIterator;
+    TGlxFromVisibleIndexOutwardListIterator iThumbnailIterator;
 
 	// Iterators for Grid and FS
     TGlxFromManualIndexBlockyIterator iBlockyIterator;
     TGlxFromManualIndexBlockyIterator iBlockyIteratorForFocus;
-    TGlxFromFocusOutwardIterator iFsFromFocusOutwardIterator;
-    TGlxFromFocusOutwardIterator iFsFromFocusOutwardIteratorForFocus;
 
 	//Variables for checking the active contexts
 	//todo merge all these variables into 1 and have bitwise operation on them
--- a/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -42,18 +42,20 @@
 #include "glxmlwrapper_p.h"
 #include "glxmlgenericobserver.h"
 #include "glxattributeretriever.h"
+#include "glxicondefs.h" //Contains the icon names/Ids
 
 //#define GLXPERFORMANCE_LOG  
 #include <glxperformancemacro.h>
 
 //constant declaration
-const TInt KItemsPerPage(18);
 const TInt KTBAttributeAvailable(1);
 const TInt KTBAttributeUnavailable(0);
 const TInt KTBAttributeCorrupt(-1);
 const TInt KListDataWindowSize(10);
-const TInt KGridTNWIdth (128);
-const TInt KGridTNHeight (128);
+const TInt KGridTNWIdth (127);
+const TInt KGridTNHeight (110);
+const TInt KGridTNPTWIdth (119);
+const TInt KGridTNPTHeight (103);
 const TInt KFullScreenTNLSWidth (640);
 const TInt KFullScreenTNLSHeight (360);
 const TInt KFullScreenTNPTWidth (360);
@@ -119,8 +121,6 @@
 		CreateMediaListAlbumItemL(aCollectionId, aHierarchyId,aFilterType);
 		}
 	iMLGenericObserver = CGlxMLGenericObserver::NewL(*iMediaList,this);
-	iFsFromFocusOutwardIterator.SetRangeOffsets(2,2);
-	iFsFromFocusOutwardIteratorForFocus.SetRangeOffsets(0,0);
 	iBlockyIteratorForFocus.SetRangeOffsets(0,0);
     }
 
@@ -174,7 +174,7 @@
 			{
 			if(NULL == iTitleAttributeContext)
 				{
-				iTitleAttributeContext = CGlxDefaultAttributeContext::NewL();
+				iTitleAttributeContext = CGlxDefaultListAttributeContext::NewL();
 			    iTitleAttributeContext->SetRangeOffsets( KListDataWindowSize, 
 						KListDataWindowSize );
 			    iTitleAttributeContext->AddAttributeL( KMPXMediaGeneralTitle );
@@ -182,7 +182,7 @@
 				}
 			if(NULL == iSubtitleAttributeContext)
 				{
-			    iSubtitleAttributeContext = CGlxDefaultAttributeContext::NewL();
+			    iSubtitleAttributeContext = CGlxDefaultListAttributeContext::NewL();
 				iSubtitleAttributeContext->SetRangeOffsets( KListDataWindowSize, 
 						 KListDataWindowSize );
 				iSubtitleAttributeContext->AddAttributeL( 
@@ -192,10 +192,10 @@
 				}
             if(NULL == iListThumbnailContext)
 	            {
-	        	iListThumbnailContext = CGlxThumbnailContext::NewL( &iThumbnailIterator ); // set the thumbnail context
-	        	iThumbnailIterator.SetRange( 10 ); 
-	        	iListThumbnailContext->SetDefaultSpec( KGridTNWIdth,KGridTNHeight );
-	        	iMediaList->AddContextL(iListThumbnailContext ,KGlxFetchContextPriorityNormal );
+                iThumbnailIterator.SetRangeOffsets(KListDataWindowSize,2);
+	            iListThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator);
+	            iListThumbnailContext->SetDefaultSpec(KGridTNWIdth,KGridTNHeight );
+	            iMediaList->AddContextL(iListThumbnailContext ,KGlxFetchContextPriorityNormal );   
 	            }
 			iPtListContextActivated = ETrue;
 			}
@@ -204,7 +204,7 @@
         {
             if(NULL == iTitleAttributeContext)
             {
-                iTitleAttributeContext = CGlxDefaultAttributeContext::NewL();
+                iTitleAttributeContext = CGlxDefaultListAttributeContext::NewL();
                 iTitleAttributeContext->SetRangeOffsets( KListDataWindowSize, KListDataWindowSize );
                 iTitleAttributeContext->AddAttributeL( KMPXMediaGeneralTitle );
                 iMediaList->AddContextL( iTitleAttributeContext, KMaxTInt );
@@ -220,46 +220,40 @@
 //
 void GlxMLWrapperPrivate::SetThumbnailContextL(GlxContextMode aContextMode)
 {
-	TRACER("GlxMLWrapperPrivate::SetThumbnailContext()");
-	if(aContextMode == GlxContextGrid) {
+    TRACER("GlxMLWrapperPrivate::SetThumbnailContext()");
+    if( aContextMode == GlxContextLsGrid || aContextMode == GlxContextPtGrid) {
+        if(!iGridContextActivated) {
+            CreateGridContextL();
+        }
+    
+        if(iPtFsContextActivated) {
+            RemovePtFsContext();
+        }
+        
+        if(iLsFsContextActivated) {
+            RemoveLsFsContext();
+        }
+    }
+	
+	if(aContextMode == GlxContextLsFs && !iLsFsContextActivated) {
 		if(!iGridContextActivated) {
 			CreateGridContextL();
 		}
-
-		if(iPtFsContextActivated)
-			{
+		if(iPtFsContextActivated) {
 			RemovePtFsContext();
-			}
-
-		if(iLsFsContextActivated)
-			{
-			RemoveLsFsContext();
-			}
 		}
-	if(aContextMode == GlxContextLsFs && !iLsFsContextActivated)
-		{
-		if(!iGridContextActivated)
-			{
+		CreateLsFsContextL();
+	}
+	
+	if(aContextMode == GlxContextPtFs && !iPtFsContextActivated) {
+		if(!iGridContextActivated) {
 			CreateGridContextL();
-			}
-		if(iPtFsContextActivated)
-			{
-			RemovePtFsContext();
-			}
-		CreateLsFsContextL();
 		}
-	if(aContextMode == GlxContextPtFs && !iPtFsContextActivated)
-		{
-		if(!iGridContextActivated)
-			{
-			CreateGridContextL();
-			}
-		if(iLsFsContextActivated)
-			{
+		if(iLsFsContextActivated) {
 			RemoveLsFsContext();
-			}
+		}
 		CreatePtFsContextL();
-		}
+	}
 }
 
 // ---------------------------------------------------------------------------
@@ -292,20 +286,22 @@
 //
 void GlxMLWrapperPrivate::CreateLsFsContextL()
     {
-	TRACER("GlxMLWrapperPrivate::CreateGridContextL()");
-	if(iLsFsThumbnailContext && !iLsFsContextActivated)
-		{
-		delete iLsFsThumbnailContext;
-		iLsFsThumbnailContext = NULL;
-		}
-	if(!iLsFsContextActivated)
-		{
-		iLsFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIterator ); // set the thumbnail context
-	    iLsFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight );  //todo get these image sizes from  the layout.
-	    
+    TRACER("GlxMLWrapperPrivate::CreateGridContextL()");
+    if(iLsFsThumbnailContext && !iLsFsContextActivated)
+        {
+        delete iLsFsThumbnailContext;
+        iLsFsThumbnailContext = NULL;
+        }
+    if(!iLsFsContextActivated)
+        {
+        iLsFsThumbnailContext = CGlxDefaultThumbnailContext::NewL();
+        iLsFsThumbnailContext->SetRangeOffsets(2,2);
+        iLsFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight );  //todo get these image sizes from  the layout.
+
         if(!iFocusFsThumbnailContext)
             {
-            iFocusFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIteratorForFocus ); // set Focus FS thumbthe thumbnail context
+            iFocusFsThumbnailContext = CGlxDefaultThumbnailContext::NewL();
+            iFocusFsThumbnailContext->SetRangeOffsets(0,0);
             iFocusFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight );  //todo get these image sizes from  the layout.
             }
         if(!iFocusGridThumbnailContext)
@@ -313,16 +309,15 @@
             iFocusGridThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFocus ); // set the thumbnail context for Focus Grid
             iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight );  //todo get these image sizes from  the layout.
             }
-	    
+
         // show static items if required
         iMediaList->SetStaticItemsEnabled(EFalse);
         iMediaList->AddContextL(iFocusFsThumbnailContext, 7 );      // Temp will change this number  
         iMediaList->AddContextL(iFocusGridThumbnailContext, 8 );    // Temp will change this number  
-	    iMediaList->AddContextL(iLsFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail );
-		iLsFsContextActivated = ETrue;
-		}
-    
-	}
+        iMediaList->AddContextL(iLsFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail );
+        iLsFsContextActivated = ETrue;
+        }
+    }
 
 // ---------------------------------------------------------------------------
 // CreatePtFsContextL
@@ -330,37 +325,38 @@
 //
 void GlxMLWrapperPrivate::CreatePtFsContextL()
     {
-	TRACER("GlxMLWrapperPrivate::CreateGridContextL()");
-	if(iPtFsThumbnailContext && !iPtFsContextActivated)
-		{
-		delete iPtFsThumbnailContext;
-		iPtFsThumbnailContext = NULL;
-		}
-	if(!iPtFsContextActivated)
-		{
-		iPtFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIterator ); // set the thumbnail context
-	    iPtFsThumbnailContext->SetDefaultSpec( KFullScreenTNPTWidth, KFullScreenTNPTHeight );  //todo get these image sizes from  the layout.
-	    
-	    if(!iFocusFsThumbnailContext)
-	        {
-	        iFocusFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIteratorForFocus ); // set Focus FS thumbthe thumbnail context
-	        iFocusFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight );  //todo get these image sizes from  the layout.
-	        }
-	    if(!iFocusGridThumbnailContext)
-	        {
-	        iFocusGridThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFocus ); // set the thumbnail context for Focus Grid
-	        iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight );  //todo get these image sizes from  the layout.
-	        }
-	    
-		// show static items if required
+    TRACER("GlxMLWrapperPrivate::CreateGridContextL()");
+    if(iPtFsThumbnailContext && !iPtFsContextActivated)
+        {
+        delete iPtFsThumbnailContext;
+        iPtFsThumbnailContext = NULL;
+        }
+    if(!iPtFsContextActivated)
+        {
+        iPtFsThumbnailContext = CGlxDefaultThumbnailContext::NewL(); // set the thumbnail context
+        iPtFsThumbnailContext->SetRangeOffsets(2,2);
+        iPtFsThumbnailContext->SetDefaultSpec( KFullScreenTNPTWidth, KFullScreenTNPTHeight );  //todo get these image sizes from  the layout.
+
+        if(!iFocusFsThumbnailContext)
+            {
+            iFocusFsThumbnailContext = CGlxDefaultThumbnailContext::NewL(); 
+            iFocusFsThumbnailContext->SetRangeOffsets(0,0);
+            iFocusFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight );  //todo get these image sizes from  the layout.
+            }
+        if(!iFocusGridThumbnailContext)
+            {
+            iFocusGridThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFocus ); // set the thumbnail context for Focus Grid
+            iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight );  //todo get these image sizes from  the layout.
+            }
+
+        // show static items if required
         iMediaList->SetStaticItemsEnabled(EFalse);
         iMediaList->AddContextL(iFocusFsThumbnailContext, 7 );      // Temp will change this number  
         iMediaList->AddContextL(iFocusGridThumbnailContext, 8 );    // Temp will change this number  
-	    iMediaList->AddContextL(iPtFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail );
-	    iPtFsContextActivated = ETrue;
-		}
-	    
-	}
+        iMediaList->AddContextL(iPtFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail );
+        iPtFsContextActivated = ETrue;
+        }
+    }
 
 // ---------------------------------------------------------------------------
 // RemoveGridContext
@@ -543,67 +539,71 @@
 	CleanupStack::PopAndDestroy(path);
 	}
 
-// ---------------------------------------------------------------------------
-//  retrieveItemIcon
-// ---------------------------------------------------------------------------
-//
+/*
+ * retrieveItemIcon
+ */
 HbIcon* GlxMLWrapperPrivate::RetrieveItemIcon(int aItemIndex, GlxTBContextType aTBContextType)
-	{
-	TInt itemHeight = 0;
-	TInt itemWidth = 0;
-	switch (aTBContextType)
-		{
-		case GlxTBContextGrid: 
-			{
-			itemHeight = KGridTNHeight;
-			itemWidth = KGridTNWIdth;
-			}
-			break;
-		case GlxTBContextPtFs: 
-			{
-			itemHeight = KFullScreenTNPTHeight;
-			itemWidth = KFullScreenTNPTWidth;
-			}
-			break;
-		case GlxTBContextLsFs: 
-			{
-			itemHeight = KFullScreenTNLSHeight;
-			itemWidth = KFullScreenTNLSWidth;
-			}
-			break;
-		}
-	const TGlxMedia& item = iMediaList->Item( aItemIndex );
-    TMPXAttribute thumbnailAttribute(KGlxMediaIdThumbnail, 
-            GlxFullThumbnailAttributeId( ETrue,itemWidth,itemHeight ) ); //todo map icon size with actual mode        
-    const CGlxThumbnailAttribute* value = item.ThumbnailAttribute(
-            thumbnailAttribute );
-    TInt tnError = GlxErrorManager::HasAttributeErrorL(
-                      item.Properties(), KGlxMediaIdThumbnail );
-	TSize iconSize(itemWidth, itemHeight);
-
-    if (value)
-        {
-		if(value->iBitmap != NULL)
-			{
-			GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d",aItemIndex);
-			return (convertFBSBitmapToHbIcon(value->iBitmap));
-			}
-		}
-   /*else if (item.GetIconInfo(icon))   //todo will be required if we are planning to have static item else remove
-                {  
-                GLX_LOG_INFO1("### GlxMLWrapperPrivate::HandleAttributesAvailableL GetIconInfo-Index is %d",aItemIndex);
-                }*/
-	else if( tnError == KErrCANoRights)	
-		{
-		//handle DRM case
-		}
-	else if( tnError )
-		{
-		return (new HbIcon(":/data/corrupt.svg"));
-		}
-	 GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d and have returned empty icon",aItemIndex);
-	 return NULL;
-	}
+{
+    TInt itemHeight = 0;
+    TInt itemWidth = 0;
+    switch (aTBContextType) {
+        case GlxTBContextGrid: {
+            itemHeight = KGridTNHeight;
+            itemWidth = KGridTNWIdth;
+        }
+        break;
+        
+        case GlxTBContextPtFs:  {
+            itemHeight = KFullScreenTNPTHeight;
+            itemWidth = KFullScreenTNPTWidth;
+        }
+        break;
+        
+        case GlxTBContextLsFs: {
+            itemHeight = KFullScreenTNLSHeight;
+            itemWidth = KFullScreenTNLSWidth;
+        }
+        break;
+        
+        default :
+        break;
+    }
+    
+    const TGlxMedia& item = iMediaList->Item( aItemIndex );
+    TMPXAttribute thumbnailAttribute( KGlxMediaIdThumbnail, 
+                       GlxFullThumbnailAttributeId( ETrue, itemWidth, itemHeight ) ); //todo map icon size with actual mode        
+    const CGlxThumbnailAttribute* value = item.ThumbnailAttribute( thumbnailAttribute );
+    TInt tnError = GlxErrorManager::HasAttributeErrorL( item.Properties(), KGlxMediaIdThumbnail );
+	
+    if ( value && value->iBitmap != NULL ) {
+        if( aTBContextType == GlxTBContextGrid ) {
+            GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d",aItemIndex);
+            
+            if (  iContextMode == GlxContextPtGrid ) {
+                return convertFBSBitmapToHbIcon( value->iBitmap , KGridTNPTWIdth, KGridTNPTHeight);
+            }
+            else {
+                return convertFBSBitmapToHbIcon( value->iBitmap );
+            }
+        }
+        else {
+            return convertFBSBitmapToHbIcon( value->iBitmap, itemWidth, itemHeight ) ;
+        }
+    }
+    /*else if (item.GetIconInfo(icon))   //todo will be required if we are planning to have static item else remove
+    {  
+        GLX_LOG_INFO1("### GlxMLWrapperPrivate::HandleAttributesAvailableL GetIconInfo-Index is %d",aItemIndex);
+    }*/
+    else if( tnError == KErrCANoRights)	{
+        //handle DRM case
+    }
+    else if( tnError ) {
+        return (new HbIcon(GLXICON_CORRUPT));
+    }
+    
+    GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d and have returned empty icon",aItemIndex);
+    return NULL;
+}
 // ---------------------------------------------------------------------------
 //  RetrieveListTitle
 // ---------------------------------------------------------------------------
@@ -940,7 +940,7 @@
 // GetItemCount
 // ---------------------------------------------------------------------------
 //
- HbIcon * GlxMLWrapperPrivate::convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap)
+HbIcon * GlxMLWrapperPrivate::convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap)
 {
 	GLX_LOG_INFO1("### GlxMLWrapperPrivate::convertFBSBitmapToHbIcon %d", 0);
 	aBitmap->LockHeap();
@@ -950,10 +950,31 @@
 	//QImage share the memory occupied by data
 	QImage image(data, aBitmap->SizeInPixels().iWidth, aBitmap->SizeInPixels().iHeight, bytesPerLine, QImage::Format_RGB16);
 	aBitmap->UnlockHeap();
-	HbIcon* targetIcon = new HbIcon(QIcon(QPixmap::fromImage(image)));
+	HbIcon* targetIcon = new HbIcon( QIcon( QPixmap::fromImage(image) ) );
 	return targetIcon;
 }
 
+HbIcon * GlxMLWrapperPrivate::convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap, TInt itemWidth, TInt itemHeight)
+{
+    GLX_LOG_INFO1("### GlxMLWrapperPrivate::convertFBSBitmapToHbIcon 1 %d", 0);
+    
+    aBitmap->LockHeap();
+    TUint32 *tempData = aBitmap->DataAddress();
+    uchar *data = (uchar *)(tempData);  
+    int bytesPerLine = aBitmap->ScanLineLength(aBitmap->SizeInPixels().iWidth , aBitmap->DisplayMode());
+    //QImage share the memory occupied by data
+    QImage image(data, aBitmap->SizeInPixels().iWidth, aBitmap->SizeInPixels().iHeight, bytesPerLine, QImage::Format_RGB16);
+        
+    QPixmap pixmap = QPixmap::fromImage(image);
+    if ( aBitmap->SizeInPixels().iWidth > itemWidth || aBitmap->SizeInPixels().iHeight ) {
+        pixmap = pixmap.scaled( itemWidth, itemHeight, Qt::KeepAspectRatio );
+    }
+    
+    aBitmap->UnlockHeap();
+    HbIcon* targetIcon = new HbIcon( QIcon( pixmap ) );
+    return targetIcon;
+}
+
  // ---------------------------------------------------------------------------
  // GetFocusIndex
  // ---------------------------------------------------------------------------
--- a/ui/uiengine/model/listmodel/src/glxalbummodel.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/model/listmodel/src/glxalbummodel.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -20,6 +20,13 @@
 #include <QDebug>
 #include <hbicon.h>
 #include <QStringList>
+#include <QBrush>
+
+#include "glxicondefs.h" //Contains the icon names/Ids
+
+const QColor KListOddRowColor(211, 211, 211, 127);
+const QColor KListEvenRowColor(255, 250, 250, 127);
+
 
 GlxAlbumModel::GlxAlbumModel(GlxModelParm & modelParm):mContextMode(GlxContextInvalid)
 {
@@ -32,7 +39,7 @@
     mContextMode = GlxContextSelectionList;
     
     //todo get this Default icon from some generic path and not directly.
-    mDefaultIcon = new HbIcon(":/data/All_default.png");
+     mDefaultIcon = new HbIcon(GLXICON_DEFAULT);
 
 	int err = connect(mMLWrapper, SIGNAL(updateItem(int, GlxTBContextType)), this, SLOT(itemUpdated1(int, GlxTBContextType)));
 	qDebug("updateItem() connection status %d", err);
@@ -120,7 +127,18 @@
                 return *itemIcon;
             }
         }
-		
+    case Qt::BackgroundRole:
+        {
+            if (rowIndex % 2 == 0)
+            {
+                return QBrush(KListEvenRowColor);
+            }
+            else
+            {
+                return QBrush(KListOddRowColor);
+            }
+        }
+
     case GlxFocusIndexRole :
         idx = getFocusIndex();
         return idx.row();
@@ -147,7 +165,14 @@
             return TRUE;
         }
     }
-    
+
+    if ( GlxVisualWindowIndex == role ) {
+        if ( value.isValid() &&  value.canConvert <int> () ) {
+            mMLWrapper->setVisibleWindowIndex(  value.value <int> () );
+            return TRUE;
+        }
+    }
+
     if ( GlxSelectedIndexRole == role ) {
         if ( value.isValid() &&  value.canConvert <int> () ) {
             setSelectedIndex( index( value.value <int> (), 0) );
--- a/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Fri Apr 16 14:58:46 2010 +0300
@@ -100,6 +100,7 @@
 	QCache<int, HbIcon> itemExternalIconCache;
 	int externalDataCount;
 	int mFocusIndex;
+	int mSubState;
 };
 
 
--- a/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -30,12 +30,16 @@
 //#define GLXPERFORMANCE_LOG  
 #include <glxperformancemacro.h>
 
+#include "glxicondefs.h" //Contains the icon names/Ids
+
 GlxMediaModel::GlxMediaModel(GlxModelParm & modelParm)
 {
 	qDebug("GlxMediaModel::GlxMediaModel");
+	
 	mMLWrapper = new GlxMLWrapper(modelParm.collection(),0,EGlxFilterImage);
-	mMLWrapper->setContextMode(GlxContextGrid);
-	mContextMode = GlxContextGrid;
+	mMLWrapper->setContextMode( modelParm.contextMode() );
+	mContextMode = modelParm.contextMode( ) ; 
+	
 	int err = connect(mMLWrapper, SIGNAL(updateItem(int, GlxTBContextType)), this, SLOT(itemUpdated1(int, GlxTBContextType)));
 	qDebug("updateItem() connection status %d", err);
 	err = connect(mMLWrapper, SIGNAL(itemCorrupted(int)), this, SLOT(itemCorrupted(int)));
@@ -47,14 +51,17 @@
 	err = connect(this, SIGNAL(iconAvailable(int, HbIcon*, GlxTBContextType)), this, SLOT(updateItemIcon(int, HbIcon*, GlxTBContextType)));
 	qDebug("iconAvailable() connection status %d", err);
 	//itemadded.resize(mMLWrapper->getItemCount());
+	
 	itemIconCache.setMaxCost(50);
 	itemFsIconCache.setMaxCost(5);
 	itemExternalIconCache.setMaxCost(0);
+	
 	//todo get this Default icon from some generic path and not directly.
-	m_DefaultIcon = new HbIcon(":/data/All_default.png");
+	m_DefaultIcon = new HbIcon(GLXICON_DEFAULT);
 	mExternalItems = NULL;
 	externalDataCount = 0;
 	mFocusIndex = -1;
+	mSubState = -1;
 }
 
 GlxMediaModel::~GlxMediaModel()
@@ -86,6 +93,10 @@
 		itemFsIconCache.clear();
 		mMLWrapper->setContextMode(contextMode);
 		mContextMode = contextMode;
+		if ( mContextMode == GlxContextLsGrid || mContextMode == GlxContextPtGrid ) {
+            itemIconCache.clear();
+            emit dataChanged( index( 0, 0), index( rowCount() - 1, 0) );
+        }
 	}
 }
 
@@ -162,11 +173,6 @@
     
 //retrieve Data from Media List		
     if (role == Qt::DecorationRole) {
-        // char temp[100];
-        // sprintf(temp, "Thumbnail %d requiest time ", index.row());
-        // WRITE_TIMESTAMP(temp)
-        // sprintf(temp, "Response time of Thumbnail Request %d", index.row());
-        // PERFORMANCE_ADV( d1, temp) {
         itemIcon = GetGridIconItem(itemIndex,GlxTBContextGrid);
         if(itemIcon == NULL || itemIcon->isNull() ){
             itemIcon = m_DefaultIcon;
@@ -225,6 +231,10 @@
     qDebug("GlxMediaModel:: GlxFrameCount ");
     return (mMLWrapper->retrieveItemFrameCount(itemIndex));
     }
+    
+    if ( role == GlxSubStateRole ) {
+        return mSubState;
+    }
 	    
     return QVariant();
 }
@@ -413,6 +423,11 @@
             return TRUE;
         }
     }
+    
+    if ( role == GlxSubStateRole && value.isValid() &&  value.canConvert <int> ()) {
+        mSubState = value.value <int> () ;
+        return TRUE;
+    }
 
     return FALSE;
 }
--- a/ui/viewmanagement/bwins/glxstatehandleru.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/bwins/glxstatehandleru.def	Fri Apr 16 14:58:46 2010 +0300
@@ -31,4 +31,5 @@
 	?exitMarkingMode@GlxStateManager@@QAEXXZ @ 30 NONAME ; void GlxStateManager::exitMarkingMode(void)
 	?removeCurrentModel@GlxStateManager@@QAEXXZ @ 31 NONAME ; void GlxStateManager::removeCurrentModel(void)
 	?createModel@GlxStateManager@@AAEXHW4NavigationDir@@@Z @ 32 NONAME ; void GlxStateManager::createModel(int, enum NavigationDir)
+	?setFullScreenContext@GlxStateManager@@AAEXXZ @ 33 NONAME ; void GlxStateManager::setFullScreenContext(void)
 
--- a/ui/viewmanagement/eabi/glxstatehandleru.def	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/eabi/glxstatehandleru.def	Fri Apr 16 14:58:46 2010 +0300
@@ -31,4 +31,5 @@
 	_ZNK15GlxStateManager10metaObjectEv @ 30 NONAME
 	_ZTI15GlxStateManager @ 31 NONAME
 	_ZTV15GlxStateManager @ 32 NONAME
+	_ZN15GlxStateManager20setFullScreenContextEv @ 33 NONAME
 
--- a/ui/viewmanagement/statehandler/inc/glxactionhandler.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/inc/glxactionhandler.h	Fri Apr 16 14:58:46 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 
-
+ 
 #ifndef GLXACTIONHANDLER_H
 #define GLXACTIONHANDLER_H
 
@@ -24,6 +24,7 @@
 #include <QHash>
 
 class GlxCommandHandler;
+class QModelIndex;
 
 class GlxActionHandler : public QObject
 {
@@ -36,12 +37,8 @@
 	    
 signals :
 
-public slots:
-    void handleAction(qint32 commandId,int collectionId);
-
-protected:
-	
-private slots:
+public :
+    void handleAction(qint32 commandId,int collectionId,QList<QModelIndex> indexList = QList<QModelIndex>());
 
 private://functions
 
--- a/ui/viewmanagement/statehandler/inc/glxfullscreenstate.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/inc/glxfullscreenstate.h	Fri Apr 16 14:58:46 2010 +0300
@@ -22,13 +22,6 @@
 
 #include <glxbasestate.h>
 
-typedef enum 
-{
-    NO_FULLSCREEN_S,
-    EXTERNAL_S,
-    IMAGEVIEWER_S //don't add any state before this
-} FullScreenState;
-
 class GlxFullScreenState : public GlxState
 {
 public :
--- a/ui/viewmanagement/statehandler/inc/glxgridstate.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/inc/glxgridstate.h	Fri Apr 16 14:58:46 2010 +0300
@@ -24,13 +24,6 @@
 
 class GlxStateManager;
 
-typedef enum 
-{
-    NO_GRID_S,
-    ALL_ITEM_S,
-    ALBUM_ITEM_S,
-} GridState;
-
 class GlxGridState : public GlxState
 {
 public :
--- a/ui/viewmanagement/statehandler/inc/glxslideshowstate.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/inc/glxslideshowstate.h	Fri Apr 16 14:58:46 2010 +0300
@@ -20,13 +20,6 @@
 
 #include <glxbasestate.h>
 
-typedef enum 
-{
-    NO_SLIDESHOW_S,
-    SLIDESHOW_GRID_ITEM_S,
-    SLIDESHOW_ALBUM_ITEM_S,
-} SlideShowState;
-
 class GlxStateManager;
 
 class GlxSlideShowState : public GlxState
--- a/ui/viewmanagement/statehandler/inc/glxstatemanager.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/inc/glxstatemanager.h	Fri Apr 16 14:58:46 2010 +0300
@@ -107,6 +107,10 @@
  * Factory function to create the grid model.
  */  	
     void createGridModel(int internalState, NavigationDir dir = NO_DIR);
+/*
+ * To set the fullscreen context based on the currrent orientation
+ */    
+    void setFullScreenContext();
     void eventHandler(qint32 &id);
 /*
  * A function to care the exit for application, in the case when application launch from internal and external
--- a/ui/viewmanagement/statehandler/inc/processhandler.h	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-
-#ifndef PROCESSHANDLER_H
-#define PROCESSHANDLER_H
-
-// INCLUDES
-#include <QObject>
-#include <QProcess>
-
-// FORWARD DECLARATIONS
-
-// CLASS DECLARATION
-class ProcessHandler : public QObject
-    {
-    Q_OBJECT
-    
-    public:
-        ProcessHandler(QObject *parent = 0);
-        ~ProcessHandler();
-    
-    public:
-        void StartCameraApp();
-        
-    public Q_SLOTS:
-        void stateChanged(QProcess::ProcessState state);
-        void error(QProcess::ProcessError error);
-        
-    private: // Data
-        QProcess*   process;
-
-    }; 
-
-#endif //PROCESSHANDLER_H
--- a/ui/viewmanagement/statehandler/src/glxactionhandler.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/src/glxactionhandler.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -20,6 +20,7 @@
 #include <glxcommandhandler.h>
 #include<glxcommandhandlerfactory.h>
 #include "glxmediaid.h"
+#include <QModelIndexList>
 
 GlxActionHandler::GlxActionHandler()
 {
@@ -32,20 +33,26 @@
     mCommandHandlerList.clear();
 }
 
-void GlxActionHandler::handleAction(qint32 commandId,int collectionId)
+void GlxActionHandler::handleAction(qint32 commandId,int collectionId,QModelIndexList indexList)
 {
     GlxCommandHandler* cmdHandler = NULL;
 	switch ( commandId ) {
 	    case EGlxCmdContextAddToAlbum:
 	        commandId = EGlxCmdAddToAlbum;
 	        break;
+	        
 	    case EGlxCmdContextDelete:
 	        commandId = EGlxCmdDelete;
 	        break;
+	        
 	    case EGlxCmdContextAlbumDelete:
 	        commandId = EGlxCmdDelete;
-			collectionId = KGlxAlbumsMediaId;
 	        break;
+	        
+	    case EGlxCmdContextSend:
+	         commandId = EGlxCmdSend;
+	         break;
+	         
 		default : break;	
 		}
 		
@@ -57,7 +64,7 @@
         addCommandHandler(commandId,cmdHandler);
     }
     if ( cmdHandler ) {
-        cmdHandler->executeCommand(commandId,collectionId);
+        cmdHandler->executeCommand(commandId,collectionId,indexList);
     }
 }
 
--- a/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -21,6 +21,9 @@
 #include<glxcommandhandlerdelete.h>
 #include <glxcommandhandleraddtocontainer.h>
 #include <glxcommandhandlerrotate.h>
+#include <glxcommandhandlerremovefrom.h>
+#include <glxcommandhandlernewmedia.h>
+#include <glxcommandhandlersend.h>
 
 GlxCommandHandler* GlxCommandHandlerFactory::CreateCommandHandler(int commandId)
 {
@@ -33,6 +36,13 @@
            break;
 		case EGlxCmdRotate: cmdHandler = new GlxCommandHandlerRotate();
            break;
+        case EGlxCmdRemoveFrom:  cmdHandler = new GlxCommandHandlerRemoveFrom();  
+           break;
+        case EGlxCmdAddMedia:  cmdHandler = new GlxCommandHandlerNewMedia();
+            break;
+		
+		case EGlxCmdSend : cmdHandler = new GlxCommandHandlerSend();  
+	         break;
         default:
            break;
         }
--- a/ui/viewmanagement/statehandler/src/glxgridstate.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/src/glxgridstate.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -67,6 +67,8 @@
         
    case EGlxCmdAddToAlbum :
    case EGlxCmdDelete :
+   case EGlxCmdRemoveFrom :
+   case EGlxCmdSend :       
        mStateManager->enterMarkingMode();
        mIsMarkingMode = TRUE;
        mCommandId = id;
@@ -142,13 +144,14 @@
 void GlxGridState::setTranstionParameter(NavigationDir dir, GlxEffect &effect, GlxViewEffect &viewEffect)
 {
     qDebug("GlxListState::setTranstionParameter dir = %d", dir);
-    if ( dir == NO_DIR) {
+    if ( dir == NO_DIR || dir == FORWARD_DIR) {
         effect = ALBUMLIST_TO_GRID ;
         viewEffect = BOTH_VIEW ;
     }
-    else {
-        effect = NO_EFFECT ;
-        viewEffect = NO_VIEW ;    
+    
+    if ( dir == BACKWARD_DIR){
+        effect = GRID_TO_ALBUMLIST ;
+        viewEffect = BOTH_VIEW ;    
     }
 }
 
--- a/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -33,7 +33,6 @@
 #include <glxalbummodel.h>
 #include <glxloggerenabler.h>
 #include <glxmediaid.h>
-#include "processhandler.h"
 #include <glxactionhandler.h>
 #include <glxcommandhandlers.hrh>
 #include <QApplication>
@@ -41,6 +40,7 @@
 #include <QDebug>
 #include <QItemSelectionModel>
 #include <hbmessagebox.h>
+#include <QProcess>
 
 GlxStateManager::GlxStateManager() : mAllMediaModel(NULL), mAlbumGridMediaModel(NULL),
             mAlbumMediaModel(NULL),mImageviewerMediaModel(NULL), mCurrentModel (NULL), mCurrentState (NULL), mActionHandler (NULL)
@@ -50,7 +50,7 @@
         mViewManager = new GlxViewManager();
     }
     connect ( this, SIGNAL( setupItemsSignal() ), this, SLOT( setupItems() ), Qt::QueuedConnection );
-    connect ( mViewManager, SIGNAL(actionTriggered(qint32 )), this, SLOT(actionTriggered(qint32 )) );
+    connect ( mViewManager, SIGNAL(actionTriggered(qint32 )), this, SLOT(actionTriggered(qint32 )), Qt::QueuedConnection );
 	//TO:DO TBD through exception when it is null
 }
 
@@ -80,7 +80,7 @@
         qDebug( "GlxGridView::doneAction() : index %d", indexList[i].row());            
         mCurrentModel->setData( indexList[i], indexList[i].row(), GlxSelectedIndexRole );
     }
-    mActionHandler->handleAction(commandId, mCollectionId);
+    mActionHandler->handleAction(commandId, mCollectionId,indexList);
     return TRUE;
 }
 
@@ -287,7 +287,6 @@
     switch( stateId ) {
     case GLX_GRIDVIEW_ID :
         createGridModel( mCurrentState->state(), dir );
-        mCurrentModel->setData(QModelIndex(), (int)GlxContextGrid, GlxContextRole );
         break;
 
     case GLX_LISTVIEW_ID :
@@ -297,14 +296,15 @@
             mAlbumMediaModel = new GlxAlbumModel (modelParm);
         }
         mCurrentModel = mAlbumMediaModel;
+        mCollectionId = KGlxCollectionPluginAlbumsImplementationUid;
         mCurrentModel->setData(QModelIndex(), (int)GlxContextPtList, GlxContextRole );
         mViewManager->updateToolBarIcon(GLX_ALBUM_ACTION_ID);
         break;
         
     case GLX_FULLSCREENVIEW_ID :
 		if ( mCurrentState->state() == IMAGEVIEWER_S) {
-                GlxModelParm modelParm (KGlxCollectionPluginImageViewerImplementationUid, 0);
-                mCurrentModel = mImageviewerMediaModel = new GlxMediaModel (modelParm);
+            GlxModelParm modelParm (KGlxCollectionPluginImageViewerImplementationUid, 0);
+            mCurrentModel = mImageviewerMediaModel = new GlxMediaModel (modelParm);
 		}
         else if ( mCurrentState->state() == EXTERNAL_S) {
             if(!mAllMediaModel) {
@@ -314,23 +314,13 @@
             else {
                 mCurrentModel = mAllMediaModel;
             }
-        mCollectionId = KGlxCollectionPluginAllImplementationUid;
+            mCollectionId = KGlxCollectionPluginAllImplementationUid;
         }
-        if ( mViewManager->orientation() == Qt::Horizontal ) {
-            mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
-        }
-        else {
-            mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
-        }
+		setFullScreenContext();
         break;
         
     case GLX_DETAILSVIEW_ID :
-        if ( mViewManager->orientation() == Qt::Horizontal ) {
-            mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
-        }
-        else {
-            mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
-        }
+        setFullScreenContext();
         break;
         
     case GLX_SLIDESHOWVIEW_ID :
@@ -338,28 +328,33 @@
             GlxModelParm modelParm ( KGlxAlbumsMediaId , 0);
             mCurrentModel = mAlbumGridMediaModel = new GlxMediaModel( modelParm );
         }
-        if ( mViewManager->orientation() == Qt::Horizontal ) {
-            mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
-        }
-        else {
-            mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
-        }
+        setFullScreenContext();
         break;
     	    	
     default :
         break;
     }
+    mCurrentModel->setData( QModelIndex(), mCurrentState->state(), GlxSubStateRole );
 }
 
 void GlxStateManager::createGridModel(int internalState, NavigationDir dir)
 {
     GlxModelParm modelParm;
+    GlxContextMode mode;
+    
+    if ( mViewManager->orientation() == Qt::Horizontal ) {
+        mode = GlxContextLsGrid ;
+    }
+    else {
+        mode = GlxContextPtGrid ;
+    }
     
     switch( internalState) {
     case ALL_ITEM_S :
         if ( mAllMediaModel == NULL ) {
             modelParm.setCollection( KGlxCollectionPluginAllImplementationUid );
             modelParm.setDepth(0);
+            modelParm.setContextMode( mode ) ;
             mAllMediaModel = new GlxMediaModel( modelParm );
         }
         mCollectionId = KGlxCollectionPluginAllImplementationUid;
@@ -370,7 +365,8 @@
     case ALBUM_ITEM_S :
         if ( dir != BACKWARD_DIR ) { 
             modelParm.setCollection( KGlxAlbumsMediaId );
-            modelParm.setDepth(0); 
+            modelParm.setDepth(0);
+            modelParm.setContextMode( mode ) ;
             mAlbumGridMediaModel = new GlxMediaModel( modelParm );
         }               
         mCollectionId = KGlxAlbumsMediaId;
@@ -381,6 +377,18 @@
     default :
         break;
     }
+    
+    mCurrentModel->setData(QModelIndex(), (int)mode, GlxContextRole );
+}
+
+void GlxStateManager::setFullScreenContext()
+{
+    if ( mViewManager->orientation() == Qt::Horizontal ) {
+        mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
+    }
+    else {
+        mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
+    }    
 }
 
 void GlxStateManager::eventHandler(qint32 &id)
@@ -437,13 +445,13 @@
     	id = EGlxCmdHandled;
     	break;
     	
-    /*case EGlxCmdCameraOpen:
+    case EGlxCmdCameraOpen:
 		{
-        ProcessHandler*  processHandler = new ProcessHandler(this);
-        processHandler->StartCameraApp();
-        id = EGlxCmdHandled;
+		QProcess::startDetached(QString("cxui.exe"));
+		id = EGlxCmdHandled;
 		}
-        break;	*/
+        break;	
+        
     case EGlxCmdOviOpen:
 		{
 		HbMessageBox box(HbMessageBox::MessageTypeInformation);
@@ -485,12 +493,7 @@
        id = EGlxCmdHandled;
        break;    
        
-   case EGlxCmdSend:
-       {
-       mViewManager->handleUserAction(mCurrentState->id(), id);
-       id = EGlxCmdHandled;
-       }
-       break;
+
        
    case EGlxCmdSetupItem :
        emit setupItemsSignal();
@@ -543,5 +546,7 @@
     qDebug("GlxStateManager::cleanupExternal");
     mViewManager->deactivateCurrentView();
     GlxMediaModel *glxModel = dynamic_cast<GlxMediaModel *>(mCurrentModel);
-    glxModel->clearExternalItems();  
+    if(glxModel) {
+		glxModel->clearExternalItems();  
+	}
 }
--- a/ui/viewmanagement/statehandler/src/processhandler.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-
-#include "processhandler.h"
-#include <QDebug>
-#include <QtDebug>
-
-ProcessHandler::ProcessHandler(QObject *parent)
-: QObject(parent)
-    {
-    qDebug() << "ProcessHandler::ProcessHandler";
-    process = new QProcess(this);
-    // Start listening process state changes
-    QObject::connect(process, SIGNAL(stateChanged(QProcess::ProcessState)),
-                     this, SLOT(stateChanged(QProcess::ProcessState)));
-    }
-
-ProcessHandler::~ProcessHandler()
-    {
-    qDebug() << "ProcessHandler::~ProcessHandler";
-    if (process->state() != QProcess::NotRunning)
-        {
-        // Close process if it is running
-        process->close();
-        }
-    }
-
-void ProcessHandler::StartCameraApp()
-    {
-    qDebug() << "ProcessHandler::StartCameraApp";
-    QString program = "cxui.exe";
-    process->start(program);    
-    }
-
-void ProcessHandler::error(QProcess::ProcessError error)
-    {
-    switch (error)
-        {
-        case QProcess::FailedToStart:
-            {
-            qDebug() << "FailedToStart";
-            break;
-            }
-        case QProcess::Crashed:
-            {
-            qDebug() << "Crashed";
-            break;
-            }
-        case QProcess::Timedout:
-            {
-            qDebug() << "Timedout";
-            break;
-            }
-        case QProcess::ReadError:
-            {
-            qDebug() << "ReadError";
-            break;
-            }
-        case QProcess::WriteError:
-            {
-            qDebug() << "WriteError";
-            break;
-            }
-        case QProcess::UnknownError:
-            {
-            qDebug() << "UnknownError";
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        };
-    }
-
-void ProcessHandler::stateChanged(QProcess::ProcessState state)
-    {
-    switch (state)
-        {
-        case QProcess::NotRunning:
-            {
-            qDebug() << "NotRunning";
-            break;
-            }
-        case QProcess::Starting:
-            {
-            qDebug() << "Starting";
-            break;
-            }
-        case QProcess::Running:
-            {
-            qDebug() << "Running";
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        };
-    }
--- a/ui/viewmanagement/statehandler/statehandler.pro	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/statehandler/statehandler.pro	Fri Apr 16 14:58:46 2010 +0300
@@ -31,6 +31,7 @@
             ../viewmanager/inc \
             ../../commandhandlers\commandhandlerbase\inc \
             ../../commandhandlers\commoncommandhandlers\inc
+            
 DEFINES += BUILD_STATEMANAGER
 
 symbian: { 
@@ -45,7 +46,8 @@
         -lglxlistmodel.dll \
         -lglxexternalutility.dll \
         -lglxloggerqt.dll \
-        -lglxcommoncommandhandlers.dll 
+        -lglxcommoncommandhandlers.dll \
+        -lglxlogging.dll
 
 # Input
 HEADERS += inc/glxbasestate.h \
@@ -55,7 +57,6 @@
            inc/glxliststate.h \
            inc/glxstatemanager.h \
            inc/glxslideshowstate.h \
-           inc/processhandler.h \
            inc/glxactionhandler.h \
            inc/glxcommandhandlerfactory.h
 
@@ -66,7 +67,6 @@
            src/glxliststate.cpp \
            src/glxstatemanager.cpp \
            src/glxslideshowstate.cpp \
-           src/processhandler.cpp \
            src/glxactionhandler.cpp \
            src/glxcommandhandlerfactory.cpp
 
--- a/ui/viewmanagement/viewmanager/inc/glxmenumanager.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/viewmanager/inc/glxmenumanager.h	Fri Apr 16 14:58:46 2010 +0300
@@ -16,31 +16,50 @@
 */
 #include <QObject>
 #include <QPointF>
+
 class HbMenu;
+class QAbstractItemModel;
+class QAction;
+class HbMainWindow;
+
+//Grid view option menu
+enum {
+   GlxGridViewSend,
+   GlxGridViewSlideShow,
+   GlxGridViewAddToAlbum,
+   GlxGridViewRemoveFromAlbum,
+   GlxGridViewDelete
+};
+
 class GlxMenuManager : public QObject
 {
 Q_OBJECT
 
 public :
-	GlxMenuManager();
+	GlxMenuManager(HbMainWindow* mainWindow);
 	~GlxMenuManager();
-    void CreateViewMenu(qint32 viewId,HbMenu* menu,bool empty = false , int subState = -1);
     void createMarkingModeMenu(HbMenu* menu);
     void ShowItemSpecificMenu(qint32 viewId,QPointF pos);
+    void setModel(QAbstractItemModel *model) { mModel = model ; }
+    void addMenu(qint32 viewId, HbMenu* menu);
+    void removeMenu(qint32 viewId, HbMenu* menu);
+    
 signals :
     void commandTriggered(qint32 commandId);
-public slots:
-
-protected:
-	
-private slots:
-    void menuItemSelected();
     
 private:
     void CreateGridMenu(HbMenu* menu);
     void CreateListMenu(HbMenu* menu);
     void CreateFullscreenMenu(HbMenu* menu);
-    void CreateImageViewerMenu(HbMenu* menu);
+    void setAllActionVisibility( QList<QAction*> actionList, bool visible );
+    int  viewSubState();
+
+private slots:
+    void menuItemSelected();
+    void updateGridMenu();
+    void updateFullscreenMenu();
+    
 private:
-
+    QAbstractItemModel *mModel; //It should point to current view model
+	HbMainWindow* mMainWindow;
 };
--- a/ui/viewmanagement/viewmanager/inc/glxviewmanager.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/viewmanager/inc/glxviewmanager.h	Fri Apr 16 14:58:46 2010 +0300
@@ -193,8 +193,6 @@
     QList<HbAction *>  mMarkingActionList; //marking mode tool bar action list
     HbToolBar          *mViewToolBar; //view tool bar
     HbToolBar          *mMarkingToolBar; //marking mode tool bar
-    QList<QString >    mSelIconPathList; //enable tool bar button icon path list
-    QList<QString >    mDefaultIconPathList; //disalbe tool bar button icon path list
     HbMenu *mMenu; 
     GlxView *mView;
     QAbstractItemModel *mModel; //no ownership
--- a/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -14,60 +14,25 @@
 * Description: 
 *
 */
-#include <glxviewids.h>
-#include <glxmenumanager.h>
+
+//include
 #include <QDebug>
 #include <hbaction.h>
-#include "hbmenu.h"
-#include <glxcommandhandlers.hrh>
-#include <QDebug>
+#include <hbmenu.h>
+#include <hbmainwindow.h>
 
-GlxMenuManager::GlxMenuManager()
-{
-}
-GlxMenuManager::~GlxMenuManager()
+//user include
+#include "glxviewids.h"
+#include "glxmenumanager.h"
+#include "glxcommandhandlers.hrh"
+#include "glxmodelparm.h"
+
+GlxMenuManager::GlxMenuManager(HbMainWindow* mainWindow):mMainWindow(mainWindow)
 {
 }
-void GlxMenuManager::CreateViewMenu(qint32 viewId,HbMenu* menu,bool empty, int subState)
+
+GlxMenuManager::~GlxMenuManager()
 {
-	Q_UNUSED(empty);
-    switch(viewId)
-    {
-    case GLX_GRIDVIEW_ID:   {
-                            qDebug()<<"GRIDVIEW MENU CREATED";
-                            CreateGridMenu(menu);
-                            }
-                            break;
-
-    case GLX_LISTVIEW_ID:   {
-                            qDebug()<<"LISTVIEW MENU CREATED";
-                            CreateListMenu(menu);
-                            }
-                            break;
-    case GLX_FULLSCREENVIEW_ID:{
-								//image viewer state 
-                                if(2 == subState){
-                                    CreateImageViewerMenu(menu);
-                                }
-                                else{
-                                    qDebug()<<"FULLSCREENVIEW MENU CREATED";
-                                    CreateFullscreenMenu(menu);
-                                }
-                               }
-                            break;
-							
-    case GLX_DETAILSVIEW_ID: {
-	//will create details specific menu later
-                            qDebug()<<"DETAILS VIEW MENU CREATE";
-                             }  
-	                          
-    case GLX_SLIDESHOWVIEW_ID :
-        break;                            
-                            
-    default:                
-                            break;
-
-    }
 }
 
 void GlxMenuManager::createMarkingModeMenu(HbMenu* menu)
@@ -87,103 +52,178 @@
     action->setData(EGlxCmdUnMarkAll);
     action->setVisible(FALSE);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    menu->setVisible(FALSE);
     
     action = menu->addAction("Exit");
     action->setData(EGlxCmdUnMarkAll);
     action->setVisible(FALSE);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    menu->setVisible(FALSE);
+}
+
+void GlxMenuManager::addMenu(qint32 viewId, HbMenu* menu)
+{
+    switch(viewId) {
+    case GLX_GRIDVIEW_ID:
+        connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateGridMenu() ) );
+        CreateGridMenu( menu );
+        break;                            
+
+    case GLX_LISTVIEW_ID: 
+        CreateListMenu ( menu );
+        break;
+        
+    case GLX_FULLSCREENVIEW_ID:
+        connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateFullscreenMenu() ) );
+        CreateFullscreenMenu( menu );
+        break;
+                
+    default:
+        break;
+    }  
+}
+
+void GlxMenuManager::removeMenu(qint32 viewId, HbMenu* menu)
+{
+    switch(viewId) {
+    case GLX_GRIDVIEW_ID:
+        disconnect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateGridMenu() ) );
+        break;                            
+        
+    case GLX_FULLSCREENVIEW_ID:
+        disconnect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateFullscreenMenu() ) );
+        break;
+                
+    default:
+        break;
+    }  
 }
 
 void GlxMenuManager::CreateGridMenu(HbMenu* menu)
 {
     qDebug()<<"GlxMenuManager::CreateGridMenu";
     HbAction *action = NULL;
+    
     action = menu->addAction("Send");
     action->setData(EGlxCmdSend);
-    // action->setVisible(EFalse);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
    
-    /*action = menu->addAction("Upload to web");
-    action->setData(EGlxCmdUpload);
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/
     action = menu->addAction("Slide Show");
     action->setData(EGlxCmdFirstSlideshow);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
+    
     action = menu->addAction("Add to album");
     action->setData(EGlxCmdAddToAlbum);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    /*action = menu->addAction("Sort by");
-    //action->setData();
+    
+    action = menu->addAction("Remove From Album");
+    action->setData(EGlxCmdRemoveFrom);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Setting");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/
+
     action = menu->addAction("Delete");
     action->setData(EGlxCmdDelete);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    /*action = menu->addAction("Help");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Exit");*/
 }
 
 void GlxMenuManager::CreateListMenu(HbMenu* menu)
 {
     qDebug()<<"GlxMenuManager::CreateListMenu";
-    /*HbAction *action = menu->addAction("Setting");
-    //action->setData();
+    HbAction *action = NULL;
+    
+    action = menu->addAction("New album");
+    action->setData(EGlxCmdAddMedia);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Help");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Exit");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/
 }
 
 void GlxMenuManager::CreateFullscreenMenu(HbMenu* menu)
 {
     qDebug()<<"GlxMenuManager::CreateFullscreenMenu";
     HbAction *action = NULL;
+    
     action = menu->addAction("Send");
     action->setData(EGlxCmdSend);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
+    
     action = menu->addAction("Slide Show");
     action->setData(EGlxCmdSelectSlideshow);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
+    
     action = menu->addAction("Add to album");
     action->setData(EGlxCmdAddToAlbum);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-	action = menu->addAction("Rotate");
+	
+    action = menu->addAction("Rotate");
     action->setData(EGlxCmdRotate);
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    /*action = menu->addAction("Upload to web");
-    action->setData(EGlxCmdUpload);
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Use Image");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Print");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Edit");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Details");
-    action->setData(EGlxCmdDetailsOption);
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Help");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
-    action = menu->addAction("Exit");
-    //action->setData();
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/
+}
+
+void GlxMenuManager::setAllActionVisibility( QList<QAction*> actionList, bool visible )
+{
+    qDebug() << "GlxMenuManager::setAllActionVisibility count " << actionList.count() << " visible" << visible;
+    for ( int i = 0 ; i < actionList.count(); i++) {
+        actionList.at(i)->setVisible(visible);
+    }
+}
+
+int GlxMenuManager::viewSubState()
+{
+    QVariant variant = mModel->data( mModel->index(0,0), GlxSubStateRole );    
+    if ( variant.isValid() &&  variant.canConvert<int> () ) {
+        return variant.value<int>() ;
+    }
+    return -1;
 }
 
-void GlxMenuManager::CreateImageViewerMenu(HbMenu* menu)
+void GlxMenuManager::updateGridMenu()
 {
+    qDebug() << "GlxMenuManager::updateGridMenu";
+
+    HbMenu *menu = qobject_cast<HbMenu*>( sender() );
+    static bool isAllActionDisable = FALSE;
+    int rowCount = mModel->rowCount();    
+    QList<QAction*> actionList = menu->actions();
+    
+    if ( rowCount == 0 && isAllActionDisable == FALSE) {
+        qDebug() << "GlxMenuManager::updateGridMenu set all visible FALSE";
+        setAllActionVisibility( actionList, FALSE );
+        isAllActionDisable = TRUE;
+    }    
+    
+    if ( rowCount && isAllActionDisable == TRUE ) {
+        setAllActionVisibility( actionList, TRUE );
+        isAllActionDisable = FALSE;
+        qDebug() << "GlxMenuManager::updateGridMenu set all visible TRUE" ;
+    }
+    
+    if ( rowCount ) {
+        int state =  viewSubState();
+        
+        switch ( state ) {
+        case ALBUM_ITEM_S :
+            actionList.at(GlxGridViewRemoveFromAlbum)->setVisible( TRUE );
+            break ;
+            
+        default :    
+            actionList.at(GlxGridViewRemoveFromAlbum)->setVisible( FALSE );
+            break ;
+        }       
+    }    
+}
+
+void GlxMenuManager::updateFullscreenMenu()
+{
+    HbMenu *menu = qobject_cast<HbMenu*>( sender() );
+    QList<QAction*> actionList = menu->actions();
+    static bool isAllActionDisable = FALSE;
+    int state = viewSubState() ;
+    
+    if ( state == IMAGEVIEWER_S &&  isAllActionDisable == FALSE ) {        
+        setAllActionVisibility( actionList, FALSE );
+        isAllActionDisable = TRUE;
+    }
+  
+    if ( state != IMAGEVIEWER_S &&  isAllActionDisable == TRUE ) {
+        setAllActionVisibility( actionList, TRUE );
+        isAllActionDisable = FALSE;
+    }    
 }
 
 void GlxMenuManager::menuItemSelected()
@@ -202,7 +242,7 @@
 	switch ( viewId ) {
 	    case GLX_GRIDVIEW_ID :
 	        action = mainMenu->addAction("Send");
-	        action->setData(EGlxCmdSend);
+	        action->setData(EGlxCmdContextSend);
 	        connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 	        
 	        action = mainMenu->addAction("Slide Show");
@@ -223,16 +263,17 @@
 	        action->setData(EGlxCmdAlbumSlideShow);
 	        connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 	                    
-		    /*action = mainMenu->addAction("Delete");
+		    action = mainMenu->addAction("Delete");
 		    action->setData(EGlxCmdContextAlbumDelete);
-		    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/
+		    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 			break;
 		default:
 		    break;	
 		}
 
+	connect(mMainWindow, SIGNAL(aboutToChangeOrientation ()), mainMenu, SLOT(close()));
     mainMenu->exec(pos);
-
+    disconnect(mMainWindow, SIGNAL(aboutToChangeOrientation ()), mainMenu, SLOT(close()));
     delete mainMenu;
 
 }
--- a/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -19,6 +19,7 @@
 
 #include <glxviewmanager.h>
 #include <glxview.h>
+#include "glxicondefs.h" //Contains the icon names/Ids
 #include <glxviewsfactory.h>
 #include <glxeffectengine.h>
 #include <hbmainwindow.h>
@@ -32,10 +33,16 @@
 #include <hbtoolbar.h>
 #include <hbmenu.h>
 #include <QDebug>
+#include <hbstyleloader.h>
 
 
-GlxViewManager::GlxViewManager() : mBackAction( NULL ), mMenuManager( NULL ), mEffectEngine( NULL ), 
-            mViewToolBar( NULL ), mMarkingToolBar( NULL ), mMenu( NULL )
+GlxViewManager::GlxViewManager() 
+    : mBackAction( NULL ), 
+      mMenuManager( NULL ), 
+      mEffectEngine( NULL ), 
+      mViewToolBar( NULL ), 
+      mMarkingToolBar( NULL ), 
+      mMenu( NULL )
 {
     qDebug("GlxViewManager::GlxViewManager() ");
     PERFORMANCE_ADV ( viewMgrD1, "main window creation time" ) {
@@ -44,19 +51,21 @@
         if(mMainWindow == NULL)	{
             mMainWindow = new HbMainWindow();
         }
-    } //end PERFORMANCE_ADV
-    
-    //mMainWindow->setOptimizationFlag(QGraphicsView::DontSavePainterState);
+		//Without this Zoom Does not work
+		mMainWindow->viewport()->grabGesture(Qt::PinchGesture);
+    }
+    HbStyleLoader::registerFilePath(":/data/photos.css");
 }
 
 void GlxViewManager::setupItems(int subState)
 {
-    mMenuManager = new GlxMenuManager();
+    mMenuManager = new GlxMenuManager(mMainWindow);
     addBackSoftKeyAction(); 
     createToolBar();
     addConnection();
     mView->addToolBar(mViewToolBar);
-    mMenuManager->CreateViewMenu( mView->viewId(), mView->menu(), ( 0 == mModel->rowCount() ),subState);
+    mMenuManager->addMenu( mView->viewId(), mView->menu() );
+    mMenuManager->setModel( mModel );
 }
 
 void GlxViewManager::launchApplication(qint32 id, QAbstractItemModel *model)
@@ -66,7 +75,6 @@
         mView = resolveView(id);
     }
     mView->activate();
-    //mView->show();
     
     PERFORMANCE_ADV ( viewMgrD3, "Set Model time")  
         mView->setModel(mModel);
@@ -93,13 +101,9 @@
 {
     qDebug("GlxViewManager::addBackSoftKeyAction ");
     //create the back soft key action and set the data
-    mBackAction = new HbAction(Hb::BackAction, this);
+    mBackAction = new HbAction(Hb::BackNaviAction, this);
     mBackAction->setData(EGlxCmdBack);
-    
-    //remove the current secondary soft key for main window and set the new created one
-    HbAction *action = mMainWindow->softKeyAction(Hb::SecondarySoftKey);
-    mMainWindow->removeSoftKeyAction(Hb::SecondarySoftKey,action);
-    mMainWindow->addSoftKeyAction(Hb::SecondarySoftKey, mBackAction);
+    mView->setNavigationAction(mBackAction);
 }
 
 Qt::Orientation GlxViewManager::orientation() const
@@ -107,7 +111,6 @@
     return mMainWindow->orientation();
 }
 
-
 void GlxViewManager::launchView(qint32 id, QAbstractItemModel *model)
 {
     qDebug("GlxViewManager::launchView Id = %d ", id);
@@ -197,20 +200,22 @@
     
     qDebug("GlxViewManager::updateToolBarIcon() action ID list %d count %d", id, count);
     
-    for ( int i = 0; i < count ; i++ ) {
+    for ( int i = 0; i < count ; i++ )
+        {
         qDebug("GlxViewManager::updateToolBarIcon() toolBarActionId %d value %d", toolBarActionId, ( id & toolBarActionId ) );
         //check and get the icon path
-        if ( ( id & toolBarActionId ) == toolBarActionId ) {
-            path = mSelIconPathList.at(i);
-        }
-        else {
-            path = mDefaultIconPathList.at(i);
-        }
+        if ( ( id & toolBarActionId ) == toolBarActionId )
+            {
+            mActionList[i]->setCheckable(TRUE);
+            mActionList[i]->setChecked(TRUE);                        
+            }
+        else 
+            {
+            mActionList[i]->setChecked(FALSE);
+            }
         //to get it the next action id to verify it is selecter or not
         toolBarActionId = toolBarActionId << 1; 
-        HbIcon icon(path);
-        mActionList[i]->setIcon(icon) ;
-    }
+        }
 }
 
 void GlxViewManager::enterMarkingMode(qint32 viewId)
@@ -244,7 +249,6 @@
     GlxView *view = findView ( viewId );
     qDebug("GlxViewManager::exitMarkingMode view ID %d", viewId);
     if ( view ) { 
-        //createToolBar(); //Marking mode tool bar is different from normal mode tool bar
         view->disableMarking(); 
         HbMenu *menu = view->takeMenu(); //Take the owner ship of current menu
         view->setMenu(mMenu); //Set the view menu option
@@ -283,11 +287,14 @@
     
     view = GlxViewsFactory::createView(id, mMainWindow);
     if ( view ) {
-        //view->addToolBar(mViewToolBar);
         connect ( view, SIGNAL(actionTriggered(qint32 )), this, SLOT(actionProcess(qint32 )), Qt::QueuedConnection );
-        connect ( view, SIGNAL(itemSpecificMenuTriggered(qint32,QPointF ) ), this, SLOT( itemSpecificMenuTriggered(qint32,QPointF ) ));
+        connect ( view, SIGNAL(itemSpecificMenuTriggered(qint32,QPointF ) ), this, SLOT( itemSpecificMenuTriggered(qint32,QPointF ) ), Qt::QueuedConnection );
         mViewList.append(view);
         mMainWindow->addView(view);
+        if ( mMenuManager ) {
+            mMenuManager->addMenu( id, view->menu());
+        }
+        view->setNavigationAction(mBackAction);
     }
     return view;
 }
@@ -320,7 +327,6 @@
             return mViewList.at(i);
         }
     }
-    //qDebug("GlxViewManager::findView view = %u ", view);
     return NULL;
 }
 
@@ -331,7 +337,6 @@
     GlxView *view = (GlxView *) mMainWindow->currentView();
     if ( view ){
         view->deActivate() ;
-        //view->hide(); //To:do is it required
     }
     if (mView && view) {
         mView->setZValue(view->zValue());
@@ -346,10 +351,7 @@
         mView->addToolBar(mViewToolBar);
         mView->activate();
         mView->show();
-        //check and create the view menu
-        if ( mView->menu()->isEmpty() ) {
-            mMenuManager->CreateViewMenu( mView->viewId(), mView->menu(), ( 0 == mModel->rowCount() ));
-        }
+        mMenuManager->setModel( mModel ); //set the model to get the item type info and row count info
     }        
       
     PERFORMANCE_ADV ( viewMgrD3, "Set Model time")  
@@ -364,37 +366,33 @@
 void GlxViewManager::createActions()
 {
     qDebug("GlxViewManager::createActions() " );
-    mActionList.clear();
-    mSelIconPathList.clear();
-    mDefaultIconPathList.clear();    
+    mActionList.clear();  
     
     //create the All tool bar button action
     HbAction* allAction = new HbAction(this);
     allAction->setData(EGlxCmdAllGridOpen);
-    mActionList.append(allAction);
-    mSelIconPathList.append(QString(":/data/All_selected.png"));
-    mDefaultIconPathList.append(QString(":/data/All_default.png"));
-
+    mActionList.append(allAction);    
+    allAction->setIcon(HbIcon(GLXICON_ALL)) ;
+       
     //create the Album tool bar button action
     HbAction* albumAction = new HbAction(this);
     albumAction->setData(EGlxCmdAlbumListOpen);
     mActionList.append(albumAction);
-    mSelIconPathList.append(QString(":/data/Albums_selected.png"));
-    mDefaultIconPathList.append(QString(":/data/Albums_default.png"));
-    
+    albumAction->setIcon(HbIcon(GLXICON_ALBUMS)) ;
+   
     //create the album tool bar button action
     HbAction* cameraAction = new HbAction(this);
     cameraAction->setData(EGlxCmdCameraOpen);
-    mActionList.append(cameraAction);
-    mSelIconPathList.append(QString(":/data/camera_selected.png"));
-    mDefaultIconPathList.append(QString(":/data/camera_default.png"));
+    mActionList.append(cameraAction);  
+    cameraAction->setIcon(HbIcon(GLXICON_CAMERA)) ;
+    
     
     //create the ovi tool bar button action
     HbAction* oviAction = new HbAction(this);
     oviAction->setData(EGlxCmdOviOpen);
     mActionList.append(oviAction);
-    mSelIconPathList.append(QString(":/data/ovi_selected.png"));
-    mDefaultIconPathList.append(QString(":/data/ovi_default.png"));
+    oviAction->setIcon(HbIcon(GLXICON_OVI)) ;
+
 }
 
 void GlxViewManager::createMarkingModeActions()
@@ -443,8 +441,7 @@
     mMarkingToolBar = new HbToolBar();
     mMarkingToolBar->setOrientation( Qt::Horizontal );
     mMarkingToolBar->setVisible(true);            
-    mMarkingToolBar->clearActions();
-    
+    mMarkingToolBar->clearActions();    
     createMarkingModeActions();
 }
 
@@ -476,10 +473,12 @@
     for ( int i = 0; i < count; i++ ) {
         disconnect ( mViewList.at(i), SIGNAL(actionTriggered(qint32 )), this, SLOT(actionProcess(qint32 )) );
         disconnect ( mViewList.at(i), SIGNAL(itemSpecificMenuTriggered(qint32, QPointF ) ), this, SLOT( itemSpecificMenuTriggered(qint32, QPointF ) ));
+        mMenuManager->removeMenu( mViewList.at(i)->viewId(), mViewList.at(i)->menu() ) ;
     }
 	   
     if ( mMenuManager )
         disconnect(mMenuManager, SIGNAL( commandTriggered(qint32 ) ), this, SLOT( handleMenuAction(qint32 ) ));
+    
     if ( mBackAction )
         disconnect(mBackAction, SIGNAL( triggered() ), this, SLOT( handleAction() ));
         
@@ -505,6 +504,7 @@
 GlxViewManager::~GlxViewManager()
 {
     qDebug("GlxViewManager::~GlxViewManager");
+    HbStyleLoader::unregisterFilePath(":/data/photos.css");
 	
     removeConnection();
     delete mMenuManager;
@@ -515,25 +515,12 @@
     }
     qDebug("GlxViewManager::~GlxViewManager view deleted");
     
-    while( mActionList.isEmpty() == FALSE) {
-        delete mActionList.takeLast();
-    }  
-	
-    while ( mMarkingActionList.isEmpty() == FALSE ) {
-        delete mMarkingActionList.takeLast();
-    }
-    qDebug("GlxViewManager::~GlxViewManager delete action list");
-    
+        
     delete mBackAction;
     delete mViewToolBar;
     delete mMarkingToolBar;
     delete mMenu;
-    qDebug("GlxViewManager::~GlxViewManager delete toolbar");
-    
-    mSelIconPathList.clear();
-    mDefaultIconPathList.clear();
-    qDebug("GlxViewManager::~GlxViewManager clear path list");
-    
+             
     if ( mEffectEngine ) {
         mEffectEngine->deregistertransitionEffect();
         delete mEffectEngine;
--- a/ui/views/detailsview/inc/glxdetailscustomwidgets.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/detailsview/inc/glxdetailscustomwidgets.h	Fri Apr 16 14:58:46 2010 +0300
@@ -44,8 +44,8 @@
 public:
     GlxDetailsCustomWidgets(QGraphicsItem *parent);
     ~GlxDetailsCustomWidgets();
-     virtual HbAbstractViewItem* createItem();
-     void SetImageName(const QString &label);
+     virtual HbAbstractViewItem* createItem();     
+     bool canSetModelIndex(const QModelIndex &index) const;
 
 protected:
     virtual HbWidget* createCustomWidget();
--- a/ui/views/detailsview/inc/glxdetailsview.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/detailsview/inc/glxdetailsview.h	Fri Apr 16 14:58:46 2010 +0300
@@ -111,10 +111,7 @@
 
 
 private:
-    QGraphicsPixmapItem *mDetailsPixmap;
-
-    //The Black Background for the thumbnail to be shown
-    HbIconItem *mBlackBackgroundItem;
+    HbIconItem *mDetailsIcon;
 
     //The media Model to acess the attributes not owned
     QAbstractItemModel *mModel; 
--- a/ui/views/detailsview/src/glxdetailscustomwidgets.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/detailsview/src/glxdetailscustomwidgets.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -98,11 +98,18 @@
         }
     }
 
+bool GlxDetailsCustomWidgets::canSetModelIndex(const QModelIndex &index) const
+{
+    HbDataFormModelItem::DataItemType itemType =
+    static_cast<HbDataFormModelItem::DataItemType>(
+            index.data(HbDataFormModelItem::ItemTypeRole).toInt());
 
-void  GlxDetailsCustomWidgets::SetImageName(const QString &label)
-    {
-    qDebug("GlxDetailsCustomWidgets::SetImageName:mLabel ");
-    mLabel->setPlainText(label);
-    }
+    if(itemType >= ImageNameItem && 
+            itemType <= CommentsItem )
+        {
+        return true;
+        }
+    return false;
+}
 
 //EOF
--- a/ui/views/detailsview/src/glxdetailsview.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/detailsview/src/glxdetailsview.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -18,7 +18,6 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 
 #include <QModelIndex>
-#include <QtDebug>
 #include <qdatetime.h>
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -41,143 +40,127 @@
 #include "glxviewids.h"
 #include <glxcommandhandlers.hrh>
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxdetailsviewTraces.h"
+#endif
 
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //GlxDetailsView
 //--------------------------------------------------------------------------------------------------------------------------------------------
 GlxDetailsView::GlxDetailsView(HbMainWindow *window) :  GlxView ( GLX_DETAILSVIEW_ID),
-    mDetailsPixmap(NULL), 
-    mBlackBackgroundItem(NULL), 
+    mDetailsIcon(NULL), 
     mModel(NULL), 
     mWindow(window), 
     mDataForm(NULL), 
     mDetailModel(NULL),
     mCustomPrototype(NULL),
     mSelIndex (0)
-{
-    qDebug("@@@GlxDetailsView::GlxDetailsView constructor Enter");
+    {
+    OstTraceFunctionEntry0( GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY );
+    
     setContentFullScreen( true );//for smooth transtion between grid to full screen and vice versa
-}
+    OstTraceFunctionExit0( GLXDETAILSVIEW_GLXDETAILSVIEW_EXIT );
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //~GlxDetailsView
 //--------------------------------------------------------------------------------------------------------------------------------------------
 GlxDetailsView::~GlxDetailsView()
-{
-    qDebug("@@@GlxDetailsView::~GlxDetailsView Enter");
+    {
+    OstTrace0( TRACE_IMPORTANT, GLXDETAILSVIEW_GLXDETAILSVIEW, "GlxDetailsView::~GlxDetailsView" );
 
-    if(mDetailsPixmap) {
-        delete mDetailsPixmap;
-        mDetailsPixmap = NULL;
+    if(mDetailsIcon) {
+    delete mDetailsIcon;
+    mDetailsIcon = NULL;
     }
 
     if(mDataForm && mDataForm->model()) {
-        delete mDataForm->model();
-        mDataForm->setModel(0);
+    delete mDataForm->model();
+    mDataForm->setModel(0);
     }
 
     if(mDataForm) {
-        delete mDataForm;
-        mDataForm = NULL;
+    delete mDataForm;
+    mDataForm = NULL;
     }
 
 
-    if(mBlackBackgroundItem) {
-        delete mBlackBackgroundItem;
-        mBlackBackgroundItem = NULL;
-    }
-    
+
     clearCurrentModel();
     disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation)));
-}
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //activate
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::activate()
-{
-    qDebug("@@@GlxDetailsView::activate Enter");
+    {
+    OstTraceFunctionEntry0( GLXDETAILSVIEW_ACTIVATE_ENTRY );
+    
     setFormData();
     connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation)));
-}
+    OstTraceFunctionExit0( GLXDETAILSVIEW_ACTIVATE_EXIT );
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //initializeView
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::initializeView(QAbstractItemModel *model)
 {   
-    qDebug("@@@GlxDetailsView::initializeView Enter");
-    
-    mBlackBackgroundItem = new HbIconItem(this);
-    mBlackBackgroundItem->setBrush(QBrush(Qt::black));
-    mBlackBackgroundItem->hide();
+    OstTraceFunctionEntry0( GLXDETAILSVIEW_INITIALIZEVIEW_ENTRY );
 
     //To show the thumbnail 
-    mDetailsPixmap = new QGraphicsPixmapItem(this);
+    if ( mDataForm == NULL) {
+        mDetailsIcon = new HbIconItem(this);
+
+        //Create the form and the model for the data form
+        mDataForm = new HbDataForm(this);
+        mDetailModel = new HbDataFormModel();
 
-    //Create the form and the model for the data form
-    mDataForm = new HbDataForm(this);
-    mDetailModel = new HbDataFormModel();
-
-    //custom prototype
-    mCustomPrototype = new GlxDetailsCustomWidgets(mDataForm);
-    mDataForm->setItemPrototype(mCustomPrototype);
+        //custom prototype
+        mCustomPrototype = new GlxDetailsCustomWidgets(mDataForm);           
+        QList <HbAbstractViewItem*> protos = mDataForm->itemPrototypes();
+        protos.append(mCustomPrototype);
+        mDataForm->setItemPrototypes(protos);
+    
+        //Add the Widgets according to the mime type
+        addWidgets();
+    }   
 
     //Set the Model
     mModel = model;
     initializeNewModel();
-    
-    //Add the Widgets according to the mime type
-    addWidgets();
-    
+
     //Set the Layout Correspondingly.
     updateLayout(mWindow->orientation());
-    
+
     //Shows the Image 
     showImage();
-        
+
+    OstTraceFunctionExit0( GLXDETAILSVIEW_INITIALIZEVIEW_EXIT );
 }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //resetView
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::resetView()
-{
- //Do Nothing here
-}
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_RESETVIEW, "GlxDetailsView::resetView" );
+    
+    //Do Nothing here
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //deActivate
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::deActivate()
 { 
-    qDebug("@@@GlxDetailsView::deActivate Enter");
-
-    //mWindow->setItemVisible(Hb::AllItems, FALSE) ;
-
-    if(mDetailsPixmap) {
-        delete mDetailsPixmap;
-        mDetailsPixmap = NULL;
-    }
-
-    if(mDataForm && mDataForm->model()) {
-        delete mDataForm->model();
-        mDataForm->setModel(0);
-    }
-
-    if(mDataForm) {
-        delete mDataForm;
-        mDataForm = NULL;
-    }
-
-    if(mBlackBackgroundItem) {
-        delete mBlackBackgroundItem;
-        mBlackBackgroundItem = NULL;
-    }
-    
+    OstTraceFunctionEntry0( GLXDETAILSVIEW_DEACTIVATE_ENTRY );
     clearCurrentModel();
     disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation)));
+    OstTraceFunctionExit0( GLXDETAILSVIEW_DEACTIVATE_EXIT );
 }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -185,36 +168,28 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::addWidgets()
     {
-    qDebug("@@@GlxDetailsView::addWidgets create the form");
-
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets create Form" );
+    
     //----------------------------START OF CREATION OF WIDGETS---------------------------------//
     // To add new widgets in the details view, add it here.
 
     //---------------------------IMAGE NAME LABEL --------------------------------------------//
-    qDebug("@@@GlxDetailsView::addWidgets create Image name Label"); 
+    OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets create Image Label" );
     HbDataFormModelItem *imageLabelitem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(ImageNameItem), QString("Name"), mDetailModel->invisibleRootItem());
     imageLabelitem->setData(HbDataFormModelItem::KeyRole,QString(""));
 
     //---------------------------DATE LABEL --------------------------------------------//
-    qDebug("@@@GlxDetailsView::addWidgets create Image name Label"); 
+    OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets date label" );
     HbDataFormModelItem *dateLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(DateLabelItem), QString("Date"), mDetailModel->invisibleRootItem());
     dateLabelItem->setData(HbDataFormModelItem::KeyRole,QString(""));
 
     //---------------------------LOCATION LABEL--------------------------------------------//
-    qDebug("@@@GlxDetailsView::addWidgets create Location Label");
+    OstTrace0( TRACE_NORMAL, DUP3_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets location label" );
     HbDataFormModelItem *locationLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(LocationTagItem), QString("Location Tag"), mDetailModel->invisibleRootItem());
     locationLabelItem->setData(HbDataFormModelItem::KeyRole, QString(""));
 
-    //---------------------------DURATION LABEL--------------------------------------------//
-    /*
-     Need to Add a check here for the type of the item, if it is video or image
-     qDebug("@@@GlxDetailsView::addWidgets create Duration Label");
-     HbDataFormModelItem *DurationLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(DurationItem), QString("Duration"), mDetailModel->invisibleRootItem());
-     DurationLabelItem->setData(HbDataFormModelItem::KeyRole, QString("")); 
-    */
-
     //----------------------------COMMENTS TEXT ITEM---------------------------------------------//
-    qDebug("@@@GlxDetailsView::addWidgets create Comment text edit");
+    OstTrace0( TRACE_NORMAL, DUP5_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets comment text" );
     HbDataFormModelItem *commentsLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(CommentsItem), QString("Comments"), mDetailModel->invisibleRootItem());
     commentsLabelItem->setData(HbDataFormModelItem::KeyRole, QString(""));
 
@@ -229,88 +204,75 @@
 //setModel
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::setModel(QAbstractItemModel *model)
-{
-    qDebug("@@@GlxDetailsView::setModel");
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETMODEL, "GlxDetailsView::setModel" );
     if ( mModel == model ) {
-        return ;
+    return ;
     }
     clearCurrentModel();
     mModel = model;
     initializeNewModel();
-}
+    }
 
 QGraphicsItem * GlxDetailsView::getAnimationItem(GlxEffect transtionEffect)
-{
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_GETANIMATIONITEM, "GlxDetailsView::getAnimationItem" );
     if ( transtionEffect == FULLSCREEN_TO_DETAIL
             || transtionEffect == DETAIL_TO_FULLSCREEN ) {
-        return this;
+            return this;
     }
-    
+
     return NULL;    
-}
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //updateLayout
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::updateLayout(Qt::Orientation orient)
     {
-    qDebug("GlxDetailsView::updateLayout() %d", orient );
-
+    OstTrace1( TRACE_NORMAL, GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout;orient=%d", orient );
+    
     QRect screen_rect = mWindow->geometry(); 
     setGeometry(screen_rect);
 
     if(orient == Qt::Horizontal)
         {
-        qDebug("GlxDetailsView::updateLayout HORIZONTAL");
-
-        mBlackBackgroundItem->setSize(QSize(280,280));
-        mBlackBackgroundItem->setPos(11,71);
-
-        mDetailsPixmap->setPos(15,75);
-        mDetailsPixmap->setZValue(mBlackBackgroundItem->zValue() + 1);
-
-       // mDataForm->setPos(301,5);
+        OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout HORIZONTAL" );
+        mDetailsIcon->setPos(15,75);
         mDataForm->setGeometry(301,60,335,300);
 
         }
     else
         {
-        qDebug("GlxDetailsView::updateLayout VERTICAL");
-
-        mBlackBackgroundItem->setSize(QSize(310,260));
-        mBlackBackgroundItem->setPos(25,75);
-
-        mDetailsPixmap->setPos(25,75);
-        mDetailsPixmap->setZValue(mBlackBackgroundItem->zValue() + 1);
-
-//        mDataForm->setPos(5,291);
+        OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout VERTICAL" );
+        mDetailsIcon->setPos(25,75);
         mDataForm->setGeometry(5,351,335,300);
         mDataForm->setMaximumWidth(340);
         }
     }
 
 void GlxDetailsView::rowsRemoved(const QModelIndex &parent, int start, int end)
-{
+    {
     Q_UNUSED(parent);
     Q_UNUSED(start);
     Q_UNUSED(end);
-    qDebug("GlxDetailsView::rowsRemoved");
-    
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_ROWSREMOVED, "GlxDetailsView::rowsRemoved" );
+
     if ( mModel->rowCount() <= 0 ) {
-        return emit actionTriggered( EGlxCmdEmptyData );
+    return emit actionTriggered( EGlxCmdEmptyData );
     }
-    
+
     if ( start <= mSelIndex && end >= mSelIndex ) {
-        return emit actionTriggered( EGlxCmdBack );
+    return emit actionTriggered( EGlxCmdBack );
     }
-}
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //showImage
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::showImage()
     {
-    qDebug("GlxDetailsView::showImage() Enter" );
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage" );
     
     QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
     if ( variant.isValid() &&  variant.canConvert<int> () ) {
@@ -320,40 +282,18 @@
     variant = mModel->data( mModel->index( mSelIndex ,0), GlxFsImageRole);
     if ( variant.isValid() &&  variant.canConvert<HbIcon> () )
         {
-        QIcon itemIcon = variant.value<HbIcon>().qicon();
         if(mWindow->orientation() == Qt::Horizontal)
             {
-            qDebug("GlxDetailsView::showImage HORIZONTAL");
-            QPixmap itemPixmap = itemIcon.pixmap(128,128);
-            QSize sz( 270, 270);
-            itemPixmap = itemPixmap.scaled(sz, Qt::IgnoreAspectRatio );
-            if(itemPixmap.isNull())
-                {
-                qDebug("@@@GlxDetailsView::showImage Null Pixmap");
-                }
-            else
-                {
-                qDebug("@@@GlxDetailsView::showImage NOT --Null Pixmap");
-                mDetailsPixmap->setPixmap(itemPixmap);
-                }
+            OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage HORIZONTAL" );
+            
+            mDetailsIcon->resize(QSize(270, 270));
+            mDetailsIcon->setIcon(variant.value<HbIcon>());
             }
         else
             {
-            qDebug("GlxDetailsView::showImage VERTICAL");
-
-            QPixmap itemPixmap = itemIcon.pixmap(128,128);
-            QSize sz( 310, 260);
-            itemPixmap = itemPixmap.scaled(sz, Qt::IgnoreAspectRatio );
-
-            if(itemPixmap.isNull())
-                {
-                qDebug("@@@GlxDetailsView::showImage Null Pixmap");
-                }
-            else
-                {
-                qDebug("@@@GlxDetailsView::showImage NOT --Null Pixmap");
-                mDetailsPixmap->setPixmap(itemPixmap);
-                }
+            OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage VERTICAL" );
+            mDetailsIcon->resize(QSize(310, 260));
+            mDetailsIcon->setIcon(variant.value<HbIcon>());
             }
         }
     }
@@ -363,7 +303,8 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::setFormData()
     {
-    qDebug("GlxDetailsView::FillData Enter");
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETFORMDATA, "GlxDetailsView::setFormData" );
+    
     //Call to set the Image Name
     setImageName();
     //Call to set the date in the from
@@ -375,7 +316,7 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::setImageName()
     {
-    qDebug("GlxDetailsView::setImageName Enter");
+    OstTraceFunctionEntry0( GLXDETAILSVIEW_SETIMAGENAME_ENTRY );
 
     QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
     QString imageName = imagePath.section('\\',-1);
@@ -385,31 +326,32 @@
 
     if(imageLabel)
         {
-        qDebug("GlxDetailsView::setImageName  imageLabel!=NULL");
+        OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETIMAGENAME, "GlxDetailsView::setImageName ImageLabel !=NULL" );
         HbLineEdit* label = static_cast<HbLineEdit*>(imageLabel->dataItemContentWidget());
 
         if(label) 
             {
-            qDebug("GlxDetailsView::setImageName,setText");
+            OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_SETIMAGENAME, "GlxDetailsView::setImageName SetText" );
             label->setText(imageName);
             }
         }
-}
+    OstTraceFunctionExit0( GLXDETAILSVIEW_SETIMAGENAME_EXIT );
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //setDate
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::setDate()
     {
-    qDebug("GlxDetailsView::setDate Enter");
-
+    OstTraceFunctionEntry0( GLXDETAILSVIEW_SETDATE_ENTRY );
+    
     QString datestring;
     QString str("dd.MM.yyyy");
     QDate date = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxDateRole)).value<QDate>();
 
     if(date.isNull() == FALSE )
         {
-        qDebug("GlxDetailsView::setDate date is not Null");
+        OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate is not NULL" );
         datestring = date.toString(str);
         }
 
@@ -418,28 +360,34 @@
 
     if(dateLabel) 
         {
-        qDebug("GlxDetailsView::setDate  dateLabel!=NULL");
+        OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate Datelabel is not NULL" );
+        
         HbLabel* label = static_cast<HbLabel*>(dateLabel->dataItemContentWidget());
 
         if(label) 
             {
-            qDebug("GlxDetailsView::setDate,setText");
+            OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate SetText" );
             label->setPlainText(datestring);
             }
         }    
+    OstTraceFunctionExit0( GLXDETAILSVIEW_SETDATE_EXIT );
     }
 
 void GlxDetailsView::initializeNewModel()
-{
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_INITIALIZENEWMODEL, "GlxDetailsView::initializeNewModel" );
+    
     if ( mModel ) {
-        connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
+    connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
     }
-}
+    }
 
 void GlxDetailsView::clearCurrentModel()
-{
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_CLEARCURRENTMODEL, "GlxDetailsView::clearCurrentModel" );
+    
     if ( mModel ) {
-        disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
-        mModel = NULL ;
+    disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
+    mModel = NULL ;
     }    
-}
+    }
--- a/ui/views/effectengine/src/glxeffectengine.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/effectengine/src/glxeffectengine.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -203,7 +203,7 @@
     
     GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect );
     
-    if ( effectSetting == NULL && items.count() != effectSetting->count() ) {
+    if ( effectSetting == NULL || items.count() != effectSetting->count() ) {
          return;
     }
     
@@ -213,6 +213,7 @@
         if ( ( i == effectSetting->count() -1) && effectSetting->isTransitionLater() )
         {
             effectSetting->setAnimationItem( items.at(i) );
+            items.at(i)->hide();
         }
         else {
             HbEffect::start(items.at(i), effectSetting->itemType().at(i), effectSetting->eventType().at(i), this, "transitionEffectFinished");
@@ -240,7 +241,7 @@
 {
     GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect );
     
-    if ( effectSetting == NULL && items.count() != effectSetting->count() ) {
+    if ( effectSetting == NULL || items.count() != effectSetting->count() ) {
          return;
     }
     
@@ -291,7 +292,8 @@
     --mNbrEffectRunning;
     if ( mNbrEffectRunning == 1 ) {
         GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( mTransitionEffect );
-        if (  effectSetting->isTransitionLater() ){        
+        if (  effectSetting->isTransitionLater() ){ 
+            effectSetting->animationItem()->show();
             HbEffect::start( effectSetting->animationItem(), effectSetting->itemType().at(1), effectSetting->eventType().at(1), this, "transitionEffectFinished");
             mTransitionEffect = NO_EFFECT;
         }    
--- a/ui/views/fullscreenview/inc/glxfullscreenview.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/fullscreenview/inc/glxfullscreenview.h	Fri Apr 16 14:58:46 2010 +0300
@@ -28,11 +28,13 @@
 #include <glxcoverflow.h>
 //Orbit/Qt forward declartion
 class QTimer;
+class HbAction;
 class HbGridView;
 class HbMainWindow;
 class HbPushButton;
 class HbDocumentLoader;
 class QAbstractItemModel;
+class HbIconItem;
 
 //User Defined forward declartion
 class GlxZoomSlider;
@@ -78,13 +80,12 @@
     void scrollingEnded();
     void pressed(const QModelIndex &index );
     void released(const QModelIndex &index );
-	void showdetailsview();
-    void setVisvalWindowIndex();
+	void setVisvalWindowIndex();
     void coverFlowEventHandle( GlxCoverFlowEvent e);
+    void effectFinished( const HbEffect::EffectStatus  );
+    void imageSelectionEffectFinished( const HbEffect::EffectStatus  );
+    void handleToolBarAction();
  
-signals :
-    void cancelTimer();
-
 private:
     
     /*
@@ -107,7 +108,10 @@
     /*
      * Called when an item is highlighted.
      */
-    void SetImageToHdmiL();
+    void SetImageToHdmiL();    
+    void loadFullScreenToolBar();
+    void imageSelectionAnimation(const QModelIndex &index);
+    
 private:
     QAbstractItemModel  *mModel;   //no ownership
     HbMainWindow        *mWindow;  //no ownership
@@ -115,16 +119,17 @@
     HbGridView          *mImageStrip;
     bool                mUiOff;        // to check the current status of ui on / off
     QTimer              *mUiOffTimer;  //use for ui off after 30 sec
+    HbIconItem          *mIconItem ;   //temporary item for play the image strip select animation
 	  //for Zoom
     HbPushButton        *mZmPushButton;
     GlxZoomSlider       *mZoomSlider;
     GlxZoomControl      *mZoomControl;
-    bool                mSendUserActivityEvent;
-	//for the  FLIP CASE
-    HbPushButton        *mFlipPushButton;
-    int nbrCol; //to store the number of column in the image strip
     HbDocumentLoader    *mDocLoader;
     CGlxHdmiController* iHdmiController;
+    HbToolBar *mFullScreenToolBar; //Fullscreen Toolbar
+    HbAction *mFlipAction; //Action : it starts activates the details view
+    HbAction *mSendAction;
+    HbAction *mDeleteAction;
 };
 
 #endif /* GLXFULLSCREENVIEW_H_ */
--- a/ui/views/fullscreenview/src/glxcoverflow.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/fullscreenview/src/glxcoverflow.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -35,25 +35,24 @@
 {
 //TO:DO through exception
    qDebug("GlxCoverFlow::GlxCoverFlow");
+   HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" ));
+   HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" ));
+   HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" ));
+   HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" ));
+   connect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ), Qt::QueuedConnection );
+   connect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ), Qt::QueuedConnection );   
 }
 
 void GlxCoverFlow::setCoverFlow()
 {
-
     qDebug("GlxCoverFlow::setCoverFlow");
     for ( qint8 i = 0; i < NBR_ICON_ITEM ; i++ ) {
-    mIconItem[i] = new HbIconItem(this);
-    mIconItem[i]->setBrush(QBrush(Qt::black));
-    mIconItem[i]->setSize(QSize(0,0));
+        mIconItem[i] = new HbIconItem(this);
+        mIconItem[i]->setBrush(QBrush(Qt::black));
+        mIconItem[i]->setSize(QSize(0,0));
     }
     mUiOn = FALSE;
     mBounceBackDeltaX = 10;
-    connect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ), Qt::QueuedConnection );
-    connect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ), Qt::QueuedConnection );
-	HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" ));
-	HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" ));
-	HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" ));
-	HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" ));
 }
 
 void GlxCoverFlow::setItemSize(QSize &size)
@@ -69,7 +68,7 @@
 {
     qDebug("GlxCoverFlow::setModel model change = %d", model  );
     
-     if ( model == mModel) {
+    if ( model == mModel) {
         return ;
     }
     
@@ -85,11 +84,11 @@
     if ( index != mSelIndex && mModel) {
         loadIconItems();
 		if(rotAngle) {
-				rotAngle = 0;
-				//HbEffect::start(mIconItem[mSelItemIndex], QString("HbIconItem"), QString("RotateImage270"), this, "rotationEffectFinished" );
-				mIconItem[mSelItemIndex]->resetTransform();
-				mIconItem[mSelItemIndex]->resize(mItemSize);
-			}
+            rotAngle = 0;
+            //HbEffect::start(mIconItem[mSelItemIndex], QString("HbIconItem"), QString("RotateImage270"), this, "rotationEffectFinished" );
+            mIconItem[mSelItemIndex]->resetTransform();
+            mIconItem[mSelItemIndex]->resize(mItemSize);
+        }
     }
 }
 
@@ -111,11 +110,9 @@
 	if(rotAngle == 270)
 	{
 		HbEffect::start(mIconItem[mSelItemIndex], QString("HbIconItem"), QString("RotateImage270"), this, "rotationEffectFinished" );
-	}
-	
+	}	
 	rotAngle += 90;
-	rotAngle %= 360;
-	
+	rotAngle %= 360;	
 }
 
 void GlxCoverFlow::rotationEffectFinished (const HbEffect::EffectStatus &status)  
@@ -207,7 +204,6 @@
             else {
                 mIconItem[index]->setIcon( HbIcon() );
             }
-            //break;
         }
     }
 }
@@ -551,21 +547,23 @@
 GlxCoverFlow::~GlxCoverFlow()
 {
     qDebug("GlxCoverFlow::~GlxCoverFlow model " );
+    disconnect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ) );
+    disconnect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ) );
+    HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" ));
+    HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" ));
+    HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" ));
+    HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" ));
 }
 
 
 void GlxCoverFlow::ClearCoverFlow()
 {
     qDebug("GlxCoverFlow::ClearCoverFlow  " );
-    disconnect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ) );
-    disconnect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ) );
     clearCurrentModel();    
     for ( qint8 i = 0; i < NBR_ICON_ITEM ; i++ ) {
-      if(mIconItem[i] != NULL )
-        delete mIconItem[i] ;
+        if(mIconItem[i] != NULL ) {
+            delete mIconItem[i] ;
+            mIconItem[i] = NULL;
+        }
     }	
-	HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" ));
-	HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" ));
-	HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" ));
-	HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" ));
 }
--- a/ui/views/fullscreenview/src/glxfullscreenview.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/fullscreenview/src/glxfullscreenview.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -17,9 +17,10 @@
 
 
 //Includes
-#include <QDebug>
 #include <QTimer>
 #include <hbmenu.h>
+#include <HbAction>
+#include <HbToolBar>
 #include <hbgridview.h>
 #include <hbpushbutton.h>
 #include <hbmainwindow.h>
@@ -27,40 +28,58 @@
 #include <hbdocumentloader.h>
 #include <QAbstractItemModel>
 #include <hbabstractviewitem.h>
-
+#include <hbiconitem.h>
 
 //User Includes
+#include "glxlog.h"
+#include "glxtracer.h"
 #include "glxviewids.h"  //contains the view ids of all the views in photos app.
+#include "glxicondefs.h" //Contains the icon names/Ids
 #include "glxmodelparm.h"
 #include "glxcoverflow.h"
-#include "glxzoomslider.h"
-#include "glxzoomcontrol.h"
 #include "glxdocloaderdefs.h" //contains the definations of path, widget names and view names in docml
 #include "glxloggerenabler.h"
+#include "glxhdmicontroller.h"
 #include "glxfullscreenview.h" 
 #include "glxcommandhandlers.hrh"
-#include <glxhdmicontroller.h>
-#include <glxlog.h>
-#include <glxtracer.h>
+//#include "glxzoomwidget.h"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxfullscreenviewTraces.h"
+#endif
+ 
 
 const int KUiOffTime = 3000;
 
-GlxFullScreenView::GlxFullScreenView(HbMainWindow *window,HbDocumentLoader *DocLoader) : GlxView ( GLX_FULLSCREENVIEW_ID),
-                   mModel(NULL), mWindow( window), mCoverFlow(NULL) , mImageStrip (NULL), mUiOffTimer(NULL),
-                   mZmPushButton(NULL), mZoomSlider(NULL), mZoomControl(NULL),mSendUserActivityEvent(false),
-                   mFlipPushButton(NULL), nbrCol(0),iHdmiController(NULL)
+GlxFullScreenView::GlxFullScreenView(HbMainWindow *window,HbDocumentLoader *DocLoader) : 
+    GlxView ( GLX_FULLSCREENVIEW_ID), 
+    mModel(NULL), 
+    mWindow( window), 
+    mCoverFlow(NULL) , 
+    mImageStrip (NULL), 
+    mUiOffTimer(NULL),
+    iHdmiController(NULL),
+    mFullScreenToolBar(NULL),
+	mFlipAction(NULL),
+	mSendAction(NULL),
+	mDeleteAction(NULL)
 {
-    TRACER("GlxFullScreenView::GlxFullScreenView()" );
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY );
+    
     mDocLoader = DocLoader;
     setContentFullScreen( true );
     HbEffect::add( QString("HbGridView"), QString(":/data/transitionup.fxml"), QString( "TapShow" ));
     HbEffect::add( QString("HbGridView"), QString(":/data/transitiondown.fxml"), QString( "TapHide" ));
+    HbEffect::add( QString("HbGridViewItem"), QString(":/data/gridtofullscreenhide.fxml"), QString( "Select" ));
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT );
 }
 
 void GlxFullScreenView::initializeView(QAbstractItemModel *model)
 {
-    TRACER("GlxFullScreenView::initializeView()" );
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_INITIALIZEVIEW_ENTRY );
+    
 
     //Load/Retrieve the Widgets
     loadWidgets();
@@ -68,103 +87,139 @@
     //Initialize the coverflow and partially creates the coverflow with one image
     // to make the widget light weight in order to make
     // transition smooth 
-    QRect screen_rect = mWindow->geometry(); 
-    QSize sz(screen_rect.width(), screen_rect.height());
-    mCoverFlow->partiallyCreate( model, sz);     
+    mCoverFlow->partiallyCreate( model, screenSize());
+    setItemVisible(Hb::AllItems, FALSE) ;
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_INITIALIZEVIEW_EXIT );
 }
 
 void GlxFullScreenView::loadWidgets()
-    {
-    TRACER("GlxFullScreenView::loadWidgets()");
-    //Load the View and Widget   
-    GlxFullScreenView *view  =   static_cast<GlxFullScreenView*> (mDocLoader->findWidget(GLXFULLSCREEN_VIEW));
-    mCoverFlow               =   static_cast<GlxCoverFlow*> (mDocLoader->findWidget(GLXFULLSCREEN_COVERFLOW));
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADWIDGETS_ENTRY );
+    
+    //Load the Coverflow and image strip widget    
+    mCoverFlow = qobject_cast<GlxCoverFlow*> (mDocLoader->findWidget(GLXFULLSCREEN_COVERFLOW));
 
     //initialise the cover flow for basic connections and the rest
     mCoverFlow->setCoverFlow();
 
-    //Load the IMAGE STRIP & FULLSCREEN TOOLBAR[PUSH BUTTON]
-    mImageStrip              =   static_cast<HbGridView*> (mDocLoader->findWidget(GLXFULLSCREEN_FILMSTRIP));
-    mFlipPushButton          =   static_cast<HbPushButton*> (mDocLoader->findWidget(GLXFULLSCREEN_FLIP));
-
+   //Load the IMAGE STRIP & FULLSCREEN TOOLBAR[PUSH BUTTON]
+    mImageStrip              =   qobject_cast<HbGridView*> (mDocLoader->findWidget(GLXFULLSCREEN_FILMSTRIP));
+     
     //When the widget is loaded/retreived the widgets are shown by default.
     //@to do : hide the widgets by default in docml
-    mImageStrip->hide();
-    mFlipPushButton->hide();        
-    }
+    mImageStrip->hide();      
+	mImageStrip->setLayoutName( QString( "ImageStrip" ) );
+	
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADWIDGETS_EXIT );
+}
+
+void GlxFullScreenView::loadFullScreenToolBar()
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_ENTRY );
+    
+    //The fullscreen tool bar is delted when ever the view is deactivated
+    //so load the docml once again and retreive the object
+    bool loaded =true;      
+    mDocLoader->load(GLXFULLSCREENDOCMLPATH,&loaded);
+    loadViewSection();
+
+    mFullScreenToolBar = qobject_cast<HbToolBar *> (mDocLoader->findObject(QString("toolBar")));
+    mFullScreenToolBar->clearActions();
+
+    //create  Flip tool bar button action
+    mFlipAction = new HbAction(this);
+    mFlipAction->setData(EGlxCmdDetailsOpen);
+    mFlipAction->setIcon(HbIcon(GLXICON_FLIP));
+    mFullScreenToolBar->addAction( mFlipAction);
+
+    //create  Send tool bar button action
+    mSendAction = new HbAction(this);
+    mSendAction->setData(EGlxCmdSend);
+    mSendAction->setIcon(HbIcon(GLXICON_SEND));
+    mFullScreenToolBar->addAction( mSendAction);
+
+    //create  Delete tool bar button action
+    mDeleteAction = new HbAction(this);
+    mDeleteAction->setData(EGlxCmdDelete);        
+    mDeleteAction->setIcon(HbIcon(GLXICON_DELETE));   
+    mFullScreenToolBar->addAction( mDeleteAction); 
+
+    connect(mFlipAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); 
+    connect(mSendAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); 
+    connect(mDeleteAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_EXIT );
+}
 
 void GlxFullScreenView::activate()
-    {
-    TRACER("GlxFullScreenView::activate()" );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ACTIVATE_ENTRY );    
 
-    mWindow->setItemVisible(Hb::AllItems, FALSE) ;
+    setItemVisible(Hb::AllItems, FALSE) ;
 
-    if(!mCoverFlow)
-        {
-        //retrives the widgets
-        loadWidgets();
-        }
-
-    loadViewSection();
-
-    if(mZmPushButton == NULL) {
-    mZmPushButton = new HbPushButton("ZM",this);
-    }
-
-    if(NULL == mZoomSlider) {
-    mZoomSlider = new GlxZoomSlider(this);
+//for zoom might not be required after wk15 release
+	mWindow->viewport()->setAttribute(Qt::WA_AcceptTouchEvents,true); 
+	mWindow->viewport()->grabGesture(Qt::PinchGesture);
+	
+    if(!mCoverFlow){
+        loadWidgets();  //retrives the widgets
     }
 
-    if(NULL == mZoomControl) {
-    mZoomControl = new GlxZoomControl(this);
-    }
+    //Loads the widgets corresponding to the orientation.
+    loadViewSection();   
+        
+    mUiOffTimer = new QTimer();
+    mUiOff = true;
+    mUiOffTimer->stop();        
+    mCoverFlow->setUiOn(FALSE);    
 
     addConnection(); 
-    hideUi();
     setLayout();
-    mSendUserActivityEvent = true;  
-    if (!iHdmiController)    
-        {
-        GLX_LOG_INFO("GlxFullScreenView::activate() - CGlxHdmi" );
+     
+    if (!iHdmiController) {
+        OstTrace0( TRACE_NORMAL, GLXFULLSCREENVIEW_ACTIVATE, "GlxFullScreenView::activate - CGlxHdmi" );
         iHdmiController = CGlxHdmiController::NewL();
-        }   
     }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_ACTIVATE_EXIT );
+}
 
 void GlxFullScreenView::loadViewSection()
-    {
-    TRACER("GlxFullScreenView::loadViewSection()" );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADVIEWSECTION_ENTRY );    
+
     bool loaded =true;
-    if( mWindow->orientation() == Qt::Horizontal )
-        {
+    if( mWindow->orientation() == Qt::Horizontal ) {
         //Load the Landscape section for Horizontal
         mDocLoader->load(GLXFULLSCREENDOCMLPATH,GLXFULLSCREENLSSECTION,&loaded);
-        }
-    else
-        {
+    }
+    else{
         //Load the Portrait section for Horizontal
         mDocLoader->load(GLXFULLSCREENDOCMLPATH,GLXFULLSCREENPTSECTION,&loaded);    
-        }
     }
-
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADVIEWSECTION_EXIT );
+}
 
 void GlxFullScreenView::resetView()
-    {
-    TRACER("GlxFullScreenView::resetView()" );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_RESETVIEW_ENTRY );    
 
     //Clear the 4 icons present in the Coverflow,so that the transition between the views are smooth
     mCoverFlow->partiallyClean();
 
     //Clean up the rest of the resources allocated
-    cleanUp();    
-    }
+    cleanUp(); 
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_RESETVIEW_EXIT );
+}
 
 void GlxFullScreenView::deActivate()
-    { 
-    TRACER("GlxFullScreenView::deActivate()" );
-
-    mWindow->setItemVisible(Hb::AllItems , TRUE);
-
-    //Clean up the rest of the resources allocated
+{ 
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_DEACTIVATE_ENTRY );    
+    
+	//Clean up the rest of the resources allocated
     cleanUp();
 
     //deletes the iconitems in the coverflow   
@@ -174,51 +229,41 @@
     //the coverflow is initialised to null 
     //to just reset to the initial state
     mCoverFlow = NULL;
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_DEACTIVATE_EXIT );
+}
 
 void GlxFullScreenView::cleanUp()
-    { 
-    TRACER("GlxFullScreenView::cleanUp()" );
+{ 
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_CLEANUP_ENTRY );
 
     removeConnection();
 
     if ( mUiOffTimer ) {
-    GLX_LOG_INFO("GlxFullScreenView::cleanUp() mUiOffTimer" );
-    mUiOffTimer->stop();
-    delete mUiOffTimer;
-    mUiOffTimer = NULL;
-    }
-
-    mSendUserActivityEvent = false;
-
-    if(mZmPushButton) {
-    GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mZmPushButton " );
-    delete mZmPushButton;
-    mZmPushButton = NULL;
+        OstTrace0( TRACE_NORMAL, GLXFULLSCREENVIEW_CLEANUP, "GlxFullScreenView::cleanUp() mUiOffTimer" );
+        mUiOffTimer->stop();
+        delete mUiOffTimer;
+        mUiOffTimer = NULL;
     }
 
-    if(mZoomSlider) {
-    GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mZoomSlider " );
-    delete mZoomSlider;        
-    mZoomSlider = NULL;
+    if(mFullScreenToolBar) {
+       mFullScreenToolBar->clearActions();
+       delete mFullScreenToolBar;
+       mFullScreenToolBar = NULL;
     }
-
-    if(mZoomControl) {
-    GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mZoomControl " );
-    delete mZoomControl;
-    mZoomControl = NULL;
-    }
+    
+    
     if (iHdmiController) {
-    GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete iHdmiController " );
-    delete iHdmiController;
-    iHdmiController = NULL;
+        OstTrace0( TRACE_NORMAL, DUP2_GLXFULLSCREENVIEW_CLEANUP, "GlxFullScreenView::cleanUp() delete iHdmiController" );
+        delete iHdmiController;
+        iHdmiController = NULL;
     }
-
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_CLEANUP_EXIT );
+}
 
 QGraphicsItem * GlxFullScreenView::getAnimationItem(GlxEffect transitionEffect)
-    {
-    TRACER("GlxFullScreenView::getAnimationItem(GlxEffect transitionEffect)");
+{
     if ( transitionEffect == GRID_TO_FULLSCREEN 
             || transitionEffect == FULLSCREEN_TO_DETAIL
             || transitionEffect == DETAIL_TO_FULLSCREEN ) {
@@ -226,212 +271,214 @@
     }
 
     return NULL;    
-    }
+}
 
 void GlxFullScreenView::setModel( QAbstractItemModel *model )
-    {
-    TRACER("GlxFullScreenView::setModel( QAbstractItemModel *model )");
-    GLX_LOG_INFO2("GlxFullScreenView::setModel() model %u  mModel %u", model, mModel );
-
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETMODEL_ENTRY );
+    OstTraceExt2( TRACE_NORMAL, GLXFULLSCREENVIEW_SETMODEL, "GlxFullScreenView::setModel; model=%x; mModel=%u", ( TUint )( model ), ( TUint ) mModel );
+    
     mModel = model;     
-    mCoverFlow->setModel(mModel);
-    mZoomSlider->setModel(mModel);
-    mZoomControl->setModel(mModel);    
-    setImageStripModel();
+	mCoverFlow->setModel(mModel);
+   setImageStripModel();
     SetImageToHdmiL(); // for the first image on screen
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETMODEL_EXIT );
+}
 
 void GlxFullScreenView::setModelContext()
-    {
-    TRACER("GlxFullScreenView::setModelContext()");
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETMODELCONTEXT_ENTRY );
+    
     if ( mModel && mWindow ) {
-    GLX_LOG_INFO1("GlxFullScreenView::setModelContext %d", mWindow->orientation() );
-
-    if ( mWindow->orientation() == Qt::Horizontal ) {
-    WRITE_TIMESTAMP("set the fullscreen landscape context")
-    mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
+        if ( mWindow->orientation() == Qt::Horizontal ) {
+            WRITE_TIMESTAMP("set the fullscreen landscape context")
+            mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
+        }
+        else {
+            WRITE_TIMESTAMP("set the fullscreen portrait context")
+            mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
+        }
     }
-    else {
-    WRITE_TIMESTAMP("set the fullscreen portrait context")
-    mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
-    }
-    }
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETMODELCONTEXT_EXIT );
+}
 
 void GlxFullScreenView::orientationChanged(Qt::Orientation orient)
-    {
-    TRACER("GlxFullScreenView::orientationChanged()");
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ORIENTATIONCHANGED_ENTRY );
+    Q_UNUSED(orient)
+    
     // fullscreen thumnail size is depends on orientation of phone so change the model context before changing the layout
-    GLX_LOG_INFO1("GlxFullScreenView::orientationChanged() %d", orient );
+    if ( mUiOff == FALSE ) {
+        mUiOffTimer->start(KUiOffTime);
+    }
     setModelContext();
     loadViewSection();
     setLayout();
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_ORIENTATIONCHANGED_EXIT );
+}
 
 void GlxFullScreenView::activateUI()
-    {
-    TRACER("GlxFullScreenView::activateUI()");
-    GLX_LOG_INFO1("GlxFullScreenView::activateUI() %d", mUiOff );
-    if(mSendUserActivityEvent){
-    mSendUserActivityEvent = false;
-    emit cancelTimer();
-    }
-    if ( mUiOff ){
-
-    if ( mUiOffTimer == NULL ) {
-    mUiOffTimer = new QTimer();
-    connect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi()));
-    }
-
-    //set and scrool the current index to the center
-    QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
-    if ( variant.isValid() &&  variant.canConvert<int> ()  ) {
-    mImageStrip->setCurrentIndex ( mModel->index( variant.value<int>(), 0) );    
-    mImageStrip->scrollTo( mModel->index( variant.value<int>(), 0), HbGridView::PositionAtCenter ); 
-    } 
-    mImageStrip->show();
-
-    //mZmPushButton->show();
-    mFlipPushButton->setZValue( 6 + mCoverFlow->zValue() ); 
-    mFlipPushButton->show();
-    mZmPushButton->hide();
-    mUiOff = FALSE;
-    mUiOffTimer->start(KUiOffTime);
-    mCoverFlow->setUiOn(TRUE);
-    mWindow->setItemVisible(Hb::AllItems, TRUE) ;
-    HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapShow"), this, "effectFinished" );        
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ACTIVATEUI_ENTRY );
+    
+    if ( mUiOff ){      
+        if(!mFullScreenToolBar) {
+            loadFullScreenToolBar();
+        }
+        mUiOff = FALSE;
+        
+        QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
+        if ( variant.isValid() &&  variant.canConvert<int> ()  ) {
+            mImageStrip->setCurrentIndex ( mModel->index( variant.value<int>(), 0) );    
+            mImageStrip->scrollTo( mModel->index( variant.value<int>(), 0), HbGridView::PositionAtTop ); 
+        }
+        
+        mImageStrip->show(); 
+        mFullScreenToolBar->show();
+        setItemVisible(Hb::AllItems, TRUE) ;
+        HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapShow"), this, "effectFinished" );
     }
     else {
-    hideUi();
-    }	
+        hideUi();
     }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_ACTIVATEUI_EXIT );
+}
 
 void GlxFullScreenView::hideUi()
-    {
-    TRACER("GlxFullScreenView::hideUi()");
-    GLX_LOG_INFO1("GlxFullScreenView::hideUi() %d", mUiOff );
-    if(mSendUserActivityEvent){
-    mSendUserActivityEvent = false;
-    emit cancelTimer();
-    }
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_HIDEUI_ENTRY );
+ 
+    //if option menu is open then no need to hide the status bar and image strip
     HbMenu *menuWidget = menu();
-
-    //if option menu is open then no need to hide the status bar and image strip
     if ( menuWidget->isVisible() ) { 
-    return ;
+        OstTraceFunctionExit0( GLXFULLSCREENVIEW_HIDEUI_EXIT );
+        return ;
     }
-
-    mWindow->setItemVisible(Hb::AllItems, FALSE) ;
+    
+    mUiOff = TRUE;
+    setItemVisible(Hb::AllItems, FALSE) ;
     if ( mImageStrip ) {
-    HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapHide"), this, "effectFinished" );
-    //mImageStrip->hide();
-    }
-    mZmPushButton->hide();  
-
-    if(mFlipPushButton){
-    mFlipPushButton->hide();
+        HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapHide"), this, "effectFinished" );
     }
 
-    if ( mUiOffTimer ) {
-    mUiOffTimer->stop();
+    if(mFullScreenToolBar) {
+       mFullScreenToolBar->hide();
     }
-    mUiOff = TRUE;
-    mCoverFlow->setUiOn(FALSE);
-    }
+    
+    OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_HIDEUI_EXIT );
+}
 
 void GlxFullScreenView::changeSelectedIndex(const QModelIndex &index)
-    {
-    TRACER("GlxFullScreenView::changeSelectedIndex()");
-    GLX_LOG_INFO1("GlxFullScreenView::changeSelectedIndex() %d", index.row() );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_ENTRY );
+    
     QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
     if ( variant.isValid() &&  variant.canConvert<int> () && ( index.row() == variant.value<int>() ) ) {
-    return;
+       OstTraceFunctionExit0( GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT );
+       return;
     }         
     mModel->setData( index, index.row(), GlxFocusIndexRole );    
-    mZoomSlider->indexChanged(index.row());
-    // mZoomControl->indexChanged(index.row());
-    SetImageToHdmiL(); // for the image changed on swipe
-    }
+	SetImageToHdmiL(); // for the image changed on swipe
+    
+    OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT );
+}
 
 void GlxFullScreenView::indexChanged(const QModelIndex &index)
-    {
-    TRACER("GlxFullScreenView::indexChanged()");
-    GLX_LOG_INFO1("GlxFullScreenView::indexChanged() %d", index.row() );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_INDEXCHANGED_ENTRY );    
+    
     QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
     if ( variant.isValid() &&  variant.canConvert<int> () && ( index.row() == variant.value<int>() ) ) {
-    return;
+       OstTraceFunctionExit0( GLXFULLSCREENVIEW_INDEXCHANGED_EXIT );
+       return;
     }         
     mModel->setData( index, index.row(), GlxFocusIndexRole );
     mCoverFlow->indexChanged(index.row());
-    mZoomSlider->indexChanged(index.row());
-    mImageStrip->scrollTo(index, HbGridView::PositionAtCenter );
-    //mZoomControl->indexChanged(index.row());
-    SetImageToHdmiL();  // for the indexchnaged through filmstrip
-    }
+    mImageStrip->scrollTo(index, HbGridView::EnsureVisible );
+    SetImageToHdmiL();  // for the indexchnaged through filmstrip  
+        //disable the animation for the time being
+    //imageSelectionAnimation( index );
+    
+    OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_INDEXCHANGED_EXIT );
+}
 
 void GlxFullScreenView::scrollingStarted()
-    {
-    TRACER("GlxFullScreenView::scrollingStarted() ");
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SCROLLINGSTARTED_ENTRY );
+    
     //no need to hide the ui during image strip scrolling
     if ( mUiOffTimer ) {
-    mUiOffTimer->stop();
+        mUiOffTimer->stop();
     }
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_SCROLLINGSTARTED_EXIT );
+}
 
 void GlxFullScreenView::scrollingEnded()
-    {
-    TRACER("GlxFullScreenView::scrollingEnded() ");
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SCROLLINGENDED_ENTRY );
+    
     if ( mUiOffTimer ) {
-    mUiOffTimer->start(KUiOffTime);
+        mUiOffTimer->start(KUiOffTime);
     }
     setVisvalWindowIndex();
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_SCROLLINGENDED_EXIT );
+}
 
 void GlxFullScreenView::pressed(const QModelIndex &index)
-    {
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_PRESSED_ENTRY );
+    
     Q_UNUSED(index)
     TRACER("GlxFullScreenView::pressed() ");
     if ( mUiOffTimer ) {
-    mUiOffTimer->stop();
+        mUiOffTimer->stop();
     }
-    }
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_PRESSED_EXIT );
+}
 
 void GlxFullScreenView::released(const QModelIndex &index)
-    {
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_RELEASED_ENTRY );
+    
     Q_UNUSED(index)
-    TRACER("GlxFullScreenView::released() ");
-
+    
     if ( mUiOffTimer && mImageStrip->isScrolling() == false ) {
-    mUiOffTimer->start(KUiOffTime);
+        mUiOffTimer->start(KUiOffTime);
     }
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_RELEASED_EXIT );
+}
 
 void GlxFullScreenView::setVisvalWindowIndex()
-    {
-    TRACER("GlxFullScreenView::setVisvalWindowIndex()");
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_ENTRY );
+    
     QList< HbAbstractViewItem * >  visibleItemList =  mImageStrip->visibleItems();
-
-    GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex() %d", visibleItemList.count());    
     if ( visibleItemList.count() <= 0 )
         return ;
 
     HbAbstractViewItem *item = visibleItemList.at(0);
-    GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex()1 item %u", item);
     if ( item == NULL ) 
         return ;
 
-    GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex() item %u", item);
-
-    GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex() visual index %d", item->modelIndex().row() );    
     if (  item->modelIndex().row() < 0 || item->modelIndex().row() >= mModel->rowCount() )
         return ;
 
     mModel->setData( item->modelIndex (), item->modelIndex().row(), GlxVisualWindowIndex);
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_EXIT );
+}
 
 void GlxFullScreenView::coverFlowEventHandle( GlxCoverFlowEvent e )
-    {
-    TRACER("GlxFullScreenView::coverFlowEventHandle()");
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_ENTRY );
+    
     switch( e ){
     case TAP_EVENT :
         activateUI();
@@ -447,216 +494,245 @@
         
     default :
         break ;
-    }    
+    } 
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_EXIT );
+}
+
+void GlxFullScreenView::effectFinished( const HbEffect::EffectStatus  )
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_EFFECTFINISHED_ENTRY );
+    
+    if ( mUiOff ) {
+        mUiOffTimer->stop();        
+        mCoverFlow->setUiOn(FALSE);
+        mImageStrip->hide();
+    }
+    else {
+        mUiOffTimer->start(KUiOffTime);
+        mCoverFlow->setUiOn(TRUE);               
+    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_EFFECTFINISHED_EXIT );
+}
+
+void GlxFullScreenView::imageSelectionEffectFinished( const HbEffect::EffectStatus  )
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_ENTRY );
+    
+    mIconItem->resetTransform();
+    mIconItem->setVisible( false );
+    
+    QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
+    if ( variant.isValid() &&  variant.canConvert<int> ()  ) {
+        mCoverFlow->indexChanged( variant.value<int>() ) ;         
+    }
+
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_EXIT );
 }
 
 void GlxFullScreenView::setLayout()
-    {
-    TRACER("GlxFullScreenView::setLayout()");
-    //TO:DO read form layout doc
-    GLX_LOG_INFO1("GlxFullScreenView::setLayout() %d", mWindow->orientation() ); 
-
-    QRect screen_rect = mWindow->geometry(); 
-    QSize sz(screen_rect.width(), screen_rect.height());
-
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETLAYOUT_ENTRY );
+    
+    QSize sz = screenSize();
 
     mCoverFlow->setItemSize(sz);
-    mZoomControl->setGeometry(screen_rect);
-    mZoomControl->setWindowSize(sz);
-
-    mZmPushButton->setZValue(6);
-    mZmPushButton->setGeometry(QRectF(0,50,50,50));    
-    }
+ 	OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETLAYOUT_EXIT );
+}
 
 void GlxFullScreenView::addConnection()
-    {
-    TRACER("GlxFullScreenView::addConnection() " );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ADDCONNECTION_ENTRY );
+    
     if ( mCoverFlow ) {    
         connect( mCoverFlow, SIGNAL( coverFlowEvent( GlxCoverFlowEvent ) ), this, SLOT( coverFlowEventHandle( GlxCoverFlowEvent ) ) );
-    connect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & )));
-
+        connect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & )));
     }
 
     if ( mImageStrip ) {
-    connect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) ));
-    connect(mImageStrip, SIGNAL( scrollingStarted()),  this, SLOT( scrollingStarted()));
-    connect(mImageStrip, SIGNAL( scrollingEnded()),    this, SLOT( scrollingEnded()));
-    connect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ),      this, SLOT( pressed(const QModelIndex &) ));
-    connect(mImageStrip, SIGNAL( released(const QModelIndex &) ),     this, SLOT( released(const QModelIndex &) ));
+        connect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) ));
+        connect(mImageStrip, SIGNAL( scrollingStarted()),  this, SLOT( scrollingStarted()));
+        connect(mImageStrip, SIGNAL( scrollingEnded()),    this, SLOT( scrollingEnded()));
+        connect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ),      this, SLOT( pressed(const QModelIndex &) ));
+        connect(mImageStrip, SIGNAL( released(const QModelIndex &) ),     this, SLOT( released(const QModelIndex &) ));
     }
 
     if ( mUiOffTimer ) {
-    connect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi()));
+        connect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi()));
     }
-    //for Zoom
-    if(mZmPushButton &&mZoomSlider) {
-    connect(mZmPushButton, SIGNAL(clicked()), mZoomSlider, SLOT(toggleSliderVisibility()));
-    }
+    
+    connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
 
-    if(mFlipPushButton)
-        {
-        connect(mFlipPushButton, SIGNAL(clicked()), this, SLOT(showdetailsview()), Qt::QueuedConnection);
-        }
-
-
-    if(mZoomControl && mZoomSlider) {
-    connect(mZoomSlider, SIGNAL(initialZoomFactor(int)), mZoomControl, SLOT(initialZoomFactor(int)));
-    connect(mZoomSlider, SIGNAL(valueChanged(int)), mZoomControl, SLOT(zoomImage(int)));
-    connect(mZoomControl, SIGNAL(hideFullScreenUi()), this, SLOT(hideUi()));
-    }
-
-    connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
-    }
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_ADDCONNECTION_EXIT );
+}
 
 void GlxFullScreenView::removeConnection()
-    {
-    TRACER("GlxFullScreenView::removeConnection() " );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_REMOVECONNECTION_ENTRY );    
 
     if ( mCoverFlow ) {    
-    GLX_LOG_INFO("GlxFullScreenView::removeConnection() mCoverFlow " );
+        GLX_LOG_INFO("GlxFullScreenView::removeConnection() mCoverFlow " );
         disconnect( mCoverFlow, SIGNAL( coverFlowEvent( GlxCoverFlowEvent ) ), this, SLOT( coverFlowEventHandle( GlxCoverFlowEvent ) ) );
-    disconnect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & )));
-
+        disconnect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & )));
     }
 
     //For Image Strip
     if ( mImageStrip ) {
-    GLX_LOG_INFO("GlxFullScreenView::removeConnection() mImageStrip " );
-    disconnect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) ));
-    disconnect(mImageStrip, SIGNAL( scrollingStarted()), this, SLOT( scrollingStarted()));
-    disconnect(mImageStrip, SIGNAL( scrollingEnded()), this, SLOT( scrollingEnded()));
-    disconnect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ), this, SLOT( pressed(const QModelIndex &) ));
-    disconnect(mImageStrip, SIGNAL( released(const QModelIndex &) ), this, SLOT( released(const QModelIndex &) ));
+        GLX_LOG_INFO("GlxFullScreenView::removeConnection() mImageStrip " );
+        disconnect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) ));
+        disconnect(mImageStrip, SIGNAL( scrollingStarted()), this, SLOT( scrollingStarted()));
+        disconnect(mImageStrip, SIGNAL( scrollingEnded()), this, SLOT( scrollingEnded()));
+        disconnect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ), this, SLOT( pressed(const QModelIndex &) ));
+        disconnect(mImageStrip, SIGNAL( released(const QModelIndex &) ), this, SLOT( released(const QModelIndex &) ));
     }
 
     if ( mUiOffTimer ) {
-    GLX_LOG_INFO("GlxFullScreenView::removeConnection() mUiOffTimer  " );
-    disconnect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi()));
+        GLX_LOG_INFO("GlxFullScreenView::removeConnection() mUiOffTimer  " );
+        disconnect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi()));
     }
 
-    //for Zoom
-    if(mZmPushButton &&mZoomSlider) {
-    GLX_LOG_INFO("GlxFullScreenView::removeConnection() mZoomSlider " );
-    disconnect(mZmPushButton, SIGNAL(clicked()), mZoomSlider, SLOT(toggleSliderVisibility()));
+            
+    if(mFlipAction) {
+        disconnect(mFlipAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
+    }
+
+    if(mSendAction) {
+        disconnect(mSendAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
     }
 
-    if(mZoomControl &&mZoomSlider) {
-    GLX_LOG_INFO("GlxFullScreenView::removeConnection() mZoomSlider  " );
-    disconnect(mZoomSlider, SIGNAL(initialZoomFactor(int)), mZoomControl, SLOT(initialZoomFactor(int)));
-    disconnect(mZoomSlider, SIGNAL(valueChanged(int)), mZoomControl, SLOT(zoomImage(int)));
-    disconnect(mZoomControl, SIGNAL(hideFullScreenUi()), this, SLOT(hideUi()));
+    if(mDeleteAction) {
+        disconnect(mDeleteAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
     }
 
-    //for Details view launching
-    if(mFlipPushButton) {
-    GLX_LOG_INFO("GlxFullScreenView::removeConnection() mFlipPushButton  " );
-    disconnect(mFlipPushButton, SIGNAL(clicked()), this, SLOT(showdetailsview()));
-    }
+	disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
 
-    disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
-    }
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_REMOVECONNECTION_EXIT );
+}
 
 void GlxFullScreenView::setImageStripModel()
-    {
-    TRACER("GlxFullScreenView::setImageStripModel()" );
-    if ( mModel && mImageStrip ) {
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_ENTRY );
+    
     mImageStrip->setModel( mModel );
     QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
     if ( variant.isValid() &&  variant.canConvert<int> () ) {
-    mImageStrip->setCurrentIndex  ( mModel->index( variant.value<int>(), 0) );  
-    } 
+        mImageStrip->setCurrentIndex  ( mModel->index( variant.value<int>(), 0) );  
     }
-    }
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_EXIT );
+}
 
 GlxFullScreenView::~GlxFullScreenView()
-    {
-    TRACER("GlxFullScreenView::~GlxFullScreenView()" );
+{
+    OstTraceFunctionEntry0( DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY );
+    
 	cleanUp();
+	
+	delete mIconItem ;
+	mIconItem = NULL;
     
 	if(mImageStrip) {
-    GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mImageStrip " );
-    delete mImageStrip;
-    mImageStrip = NULL;
+        delete mImageStrip;
+        mImageStrip = NULL;
     }
 
-    if(mFlipPushButton) {
-    GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mFlipPushButton " );
-    delete mFlipPushButton;
-    mFlipPushButton = NULL;
+    if(mFullScreenToolBar) {
+        delete mFullScreenToolBar;
+        mFullScreenToolBar = NULL;
     }
 
     if(mCoverFlow) {
-    GLX_LOG_INFO("GlxFullScreenView::~GlxFullScreenView() delete mCoverFlow " );
-    delete mCoverFlow;
-    mCoverFlow = NULL;
+        delete mCoverFlow;
+        mCoverFlow = NULL;
     }
 
-    if(mDocLoader != NULL)
-        {
+    if(mDocLoader != NULL) {
         mDocLoader->reset();
         delete mDocLoader;    
-        }
+    }
+    
     HbEffect::remove( QString("HbGridView"), QString(":/data/transitionup.fxml"), QString( "TapShow" ));
-    HbEffect::remove( QString("HbGridView"), QString(":/data/transitiondown.fxml"), QString( "TapHide" ));  
-    }
+    HbEffect::remove( QString("HbGridView"), QString(":/data/transitiondown.fxml"), QString( "TapHide" ));
+    HbEffect::remove( QString("HbGridViewItem"), QString(":/data/gridtofullscreenhide.fxml"), QString( "Select" ));
 
-void GlxFullScreenView::showdetailsview()
-    {
-    TRACER("GlxFullScreenView::showdetailsview()" );
-    //trigger the details view to be shown
-    emit actionTriggered( EGlxCmdDetailsOpen );
-    }
+    OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT );
+}
 
 void GlxFullScreenView::handleUserAction(qint32 commandId)
-    {
-    TRACER("GlxFullScreenView::handleUserAction()" );
-    switch( commandId )
-        {
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_HANDLEUSERACTION_ENTRY );
+    
+    switch( commandId ) {
         case EGlxCmdRotate :
             //trigger the rotate Effect in CoverFlow
             mCoverFlow->rotateImage();
             break;
-        case EGlxCmdSend:
-            {
-            QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
-            if(imagePath.isNull())
-                {
-                GLX_LOG_INFO("GlxFullScreenView::SendUi() path is null" );
-                }
-            qDebug() << "GlxFullScreenView::SendUi() imagePath= " << imagePath;
+            
 
-            ShareUi dialog;
-            QList <QVariant> fileList;
-            fileList.append(QVariant(imagePath));
-            dialog.init(fileList,true);
-            }
-            break;
+            
         default :
             break;
-        }
     }
 
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_HANDLEUSERACTION_EXIT );
+}
+
 void GlxFullScreenView::SetImageToHdmiL()
-    {
-    TRACER("GlxFullScreenView::SetImageToHdmiL() - CGlxHdmi 1" );
-    if (iHdmiController)
-        {
-        GLX_LOG_INFO("GlxFullScreenView::SetImageToHdmiL() - CGlxHdmi 2" );
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETIMAGETOHDMIL_ENTRY );
+    
+    if (iHdmiController) {
+        OstTrace0( TRACE_NORMAL, GLXFULLSCREENVIEW_SETIMAGETOHDMIL, "GlxFullScreenView::SetImageToHdmiL() - CGlxHdmi 2" );
+        
         // Get the image uri
         QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
-        if(imagePath.isNull())
-            {
-            GLX_LOG_INFO("GlxFullScreenView::SetImageToHdmiL() path is null" );
-            }
-        qDebug() << "GlxFullScreenView::SetImageToHdmiL() imagePath= " << imagePath;
+        if(imagePath.isNull()) {
+            OstTrace0( TRACE_NORMAL, DUP1_GLXFULLSCREENVIEW_SETIMAGETOHDMIL, "GlxFullScreenView::SetImageToHdmiL() path is null" );
+        }
+       
         TPtrC aPtr = reinterpret_cast<const TUint16*>(imagePath.utf16());
 
-        // Get the image Dimensions
-        QSize imageDimension = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxDimensionsRole)).value<QSize>();
-        TSize imageSize(imageDimension.width(),imageDimension.height());
-        
-        // Get the framecount
-        int frameCount = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxFrameCount)).value<int>();
-        iHdmiController->SetImageL(aPtr,imageSize, frameCount);
-        }
+        iHdmiController->SetImageL(aPtr);
+    }
+
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETIMAGETOHDMIL_EXIT );
+}
+
+void GlxFullScreenView::imageSelectionAnimation(const QModelIndex &index)
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_ENTRY );
+
+    if ( mIconItem == NULL ) {
+        mIconItem = new HbIconItem( mCoverFlow );
+        mIconItem->setBrush( QBrush( Qt::black ) );
+        mIconItem->setZValue( mCoverFlow->zValue() );
     }
+    
+    HbAbstractViewItem *mItem = mImageStrip->itemByIndex( index );    
+    mIconItem->setSize( mItem->size() );    
+    mIconItem->setPos( mItem->sceneTransform().map( QPoint(0,0)).x() , screenSize().height() - 2 * mItem->size().height() ); 
+    mIconItem->setVisible( true );
+    
+    QVariant variant = mModel->data( index, Qt::DecorationRole );
+    if ( variant.isValid() &&  variant.canConvert<HbIcon> () ) {
+        mIconItem->setIcon ( variant.value<HbIcon>() ) ; 
+    }
+    else {
+        mIconItem->setIcon( HbIcon() );
+    }    
+    HbEffect::start( mIconItem, QString("HbGridViewItem"), QString("Select"), this, "imageSelectionEffectFinished" ); 
+
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_EXIT );
+}
+	
+void GlxFullScreenView::handleToolBarAction()
+{
+    OstTraceFunctionEntry0( GLXFULLSCREENVIEW_HANDLETOOLBARACTION_ENTRY );
+    
+    HbAction *action = qobject_cast<HbAction*>(sender());
+    qint32 commandId = action->data().toInt();
+    emit actionTriggered( commandId );
+    
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_HANDLETOOLBARACTION_EXIT );
+}
--- a/ui/views/gridview/inc/glxgridview.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/gridview/inc/glxgridview.h	Fri Apr 16 14:58:46 2010 +0300
@@ -43,6 +43,7 @@
     ~GlxGridView();
     void activate() ;
     void deActivate();
+    void initializeView(QAbstractItemModel *model);
     void setModel(QAbstractItemModel *model);
     void addToolBar( HbToolBar *toolBar );
     void enableMarking() ;
@@ -54,7 +55,6 @@
 public slots:
     void itemSelected(const QModelIndex &  index);
     void setVisvalWindowIndex();
-    void scrollPositionChange (QPointF newPosition, Qt::Orientations importantDimensions);
     /*
      * This loads the docml and retrives the widgets from the 
      * docml corresponding to the present orentation 
@@ -71,6 +71,7 @@
 private:
     void addViewConnection();
     void removeViewConnection();
+    void resetItemTransform();
   
 private:
 	HbGridView          *mGridView; 
@@ -79,7 +80,7 @@
 	QAbstractItemModel  *mModel ;
 	int mVisualIndex;             //first item index of the page //To:Do remove later
 	HbAbstractViewItem   *mItem;
-    HbDocumentLoader     *mDocLoader; //Docml loader to load the widgets from docml    
+    HbDocumentLoader     *mDocLoader; //Docml loader to load the widgets from docml 
 };
 
 #endif /* GLXGRIDVIEW_H_ */
--- a/ui/views/gridview/src/glxgridview.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/gridview/src/glxgridview.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -43,95 +43,84 @@
 #include "glxgridviewTraces.h"
 #endif
 
-GlxGridView::GlxGridView(HbMainWindow *window) : GlxView ( GLX_GRIDVIEW_ID ), 
-             mGridView(NULL), mView(NULL), mWindow(window), mModel ( NULL), mVisualIndex(0),
-             mItem(NULL)
-    {
+GlxGridView::GlxGridView(HbMainWindow *window) 
+    : GlxView ( GLX_GRIDVIEW_ID ), 
+      mGridView(NULL), 
+      mView(NULL), 
+      mWindow(window), 
+      mModel ( NULL), 
+      mVisualIndex(0),
+      mItem(NULL)
+{
     OstTraceFunctionEntry0( GLXGRIDVIEW_GLXGRIDVIEW_ENTRY );
     mDocLoader = new HbDocumentLoader();
     OstTraceFunctionExit0( GLXGRIDVIEW_GLXGRIDVIEW_EXIT );
 	setContentFullScreen( true );
-    }
+}
 
 void GlxGridView::activate()
-    {
+{
     OstTraceFunctionEntry0( GLXGRIDVIEW_ACTIVATE_ENTRY );
-
     loadGridView(mWindow->orientation());
-    addViewConnection();
-    //   mVisualIndex = 0; //To:Do remove later once we get visual index change notification from grid view
-
-
-
+    addViewConnection();           
     mGridView->resetTransform(); //to reset the transition effect (reset transform matrix)
     mGridView->setOpacity( 1);
-
-    if ( mItem ) {
-    mItem->resetTransform(); //to reset the transition effect (reset transform matrix)
-    mItem->setOpacity( 1);
-    mItem->setZValue( mItem->zValue() - 20);
-    disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) );
-    mItem = NULL;
-    }
+    resetItemTransform();
     OstTraceFunctionExit0( GLXGRIDVIEW_ACTIVATE_EXIT );
-    }
+}
 
 void GlxGridView::deActivate()
-    {
+{
     OstTraceFunctionEntry0( GLXGRIDVIEW_DEACTIVATE_ENTRY );
     removeViewConnection();
-
+    OstTraceFunctionExit0( GLXGRIDVIEW_DEACTIVATE_EXIT );
+}
 
-    /*if ( mItem ) {
-        mItem->resetTransform(); //to reset the transition effect
-        mItem->setOpacity( 1);
-        disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) );
-        mItem = NULL; 
-    }*/
-    takeToolBar(); //To:Do improved later
-    emit toolBarChanged();
-    OstTraceFunctionExit0( GLXGRIDVIEW_DEACTIVATE_EXIT );
+void GlxGridView::initializeView(QAbstractItemModel *model)
+{
+    resetItemTransform();
+    mGridView->setModel(model);
+    mModel = model;
+    loadGridView(mWindow->orientation());
+    QVariant variant = model->data( model->index(0,0), GlxFocusIndexRole );    
+    if ( variant.isValid() &&  variant.canConvert<int> () ) {
+        mGridView->scrollTo( model->index( variant.value<int>(),0), HbGridView::EnsureVisible );
     }
+}
 
 void GlxGridView::setModel(QAbstractItemModel *model) 
-    {
+{
     OstTraceFunctionEntry0( GLXGRIDVIEW_SETMODEL_ENTRY );
-
     mModel =  model ;
     mGridView->setModel(mModel);
     QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
     if ( variant.isValid() &&  variant.canConvert<int> () ) {
-    mGridView->scrollTo( mModel->index( variant.value<int>(),0), HbGridView::PositionAtCenter );
-    }  
-    
+        mGridView->scrollTo( mModel->index( variant.value<int>(),0), HbGridView::EnsureVisible );
+    }
     OstTraceFunctionExit0( GLXGRIDVIEW_SETMODEL_EXIT );
-    }
+}
 
 void GlxGridView::addToolBar( HbToolBar *toolBar ) 
-    {
-    OstTraceFunctionEntry0( GLXGRIDVIEW_ADDTOOLBAR_ENTRY );
-    //toolBar->setParent(this); 
-    if ( mGridView ) {
-        toolBar->setZValue(mGridView->zValue());
-    }
+{
+    OstTraceFunctionEntry0( GLXGRIDVIEW_ADDTOOLBAR_ENTRY );     
     setToolBar(toolBar) ;
     OstTraceFunctionExit0( GLXGRIDVIEW_ADDTOOLBAR_EXIT );
-    }
+}
 
 void GlxGridView::enableMarking()
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ENABLEMARKING, "GlxGridView::enableMarking" );
     mGridView->setSelectionMode(HbGridView::MultiSelection);
-    }
+}
 
 void GlxGridView::disableMarking() 
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_DISABLEMARKING, "GlxGridView::disableMarking" );
     mGridView->setSelectionMode(HbGridView::NoSelection);
-    }
+}
 
 void GlxGridView::handleUserAction(qint32 commandId)
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::handleUserAction" );
     switch( commandId ){
         case EGlxCmdMarkAll :
@@ -142,102 +131,89 @@
             mGridView->clearSelection();
             break;
 
-        case EGlxCmdSend:
-            {
-            OstTrace0( TRACE_NORMAL, DUP1_GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::handleUserAction-SendUI" );
-            
-            QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>()
-                    ,0),GlxUriRole)).value<QString>();
-
-            if(imagePath.isNull())
-                {
-                OstTrace0( TRACE_NORMAL, DUP2_GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::SendUi path is NULL" );
-                }
-            qDebug() << "GlxGridView::SendUi() imagePath= " << imagePath;
-
-            ShareUi dialog;
-            QList <QVariant> fileList;
-            fileList.append(QVariant(imagePath));
-            dialog.init(fileList,true);
-            }
-            break;
+        
 
         default :
             break;
     }    
-    }
+}
 
 QItemSelectionModel * GlxGridView::getSelectionModel()
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_GETSELECTIONMODEL, "GlxGridView::getSelectionModel" );
     return mGridView->selectionModel();    
-    }
+}
 
 QGraphicsItem * GlxGridView::getAnimationItem(GlxEffect transitionEffect)
-    {
+{
     OstTraceFunctionEntry0( GLXGRIDVIEW_GETANIMATIONITEM_ENTRY );
     int selIndex = -1;
 
     if ( transitionEffect == FULLSCREEN_TO_GRID ) {
-    return mGridView;
+        return mGridView;
     }
 
     if ( transitionEffect == GRID_TO_FULLSCREEN ) {
-    QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
-    if ( variant.isValid() &&  variant.canConvert<int> () ) {
-    selIndex = variant.value<int>();  
-    }  
-
-    mItem = mGridView->itemByIndex( mModel->index(selIndex,0) );
-    connect(mItem, SIGNAL(destroyed()), this, SLOT( itemDestroyed()));
-    mItem->setZValue( mItem->zValue() + 20); 
-    return mItem;
+        QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
+        if ( variant.isValid() &&  variant.canConvert<int> () ) {
+            selIndex = variant.value<int>();  
+        }  
+    
+        mItem = mGridView->itemByIndex( mModel->index(selIndex,0) );
+        connect(mItem, SIGNAL(destroyed()), this, SLOT( itemDestroyed()));
+        mItem->setZValue( mItem->zValue() + 20); 
+        return mItem;
     }
 
     if ( transitionEffect == GRID_TO_ALBUMLIST  || transitionEffect == ALBUMLIST_TO_GRID ){
-    return mGridView;
+        return mGridView;
     }
-    return NULL;
     OstTraceFunctionExit0( GLXGRIDVIEW_GETANIMATIONITEM_EXIT );
-    }
+    return NULL;    
+}
 
 void GlxGridView::loadGridView(Qt::Orientation orient)
-    {
+{
     OstTraceFunctionEntry0( GLXGRIDVIEW_LOADGRIDVIEW_ENTRY );
     bool loaded = true;
     QString section;
+    GlxContextMode mode ;
+    
     //Load the widgets accroding to the current Orientation
-    if(orient == Qt::Horizontal)
-        {
+    if(orient == Qt::Horizontal) {
         section = GLX_GRIDVIEW_LSSECTION ;
-        }
-    else
-        {
+        mode = GlxContextLsGrid ;
+    }
+    else {
         section = GLX_GRIDVIEW_PTSECTION ;
-        }
+        mode = GlxContextPtGrid ;
+    }
 
-    if (mGridView == NULL )
-        {       
+    if (mGridView == NULL ) {       
         mDocLoader->load(GLX_GRIDVIEW_DOCMLPATH,&loaded);
-        if(loaded)
-            {
+        if(loaded) {
             //retrieve the widgets            
             mView = static_cast<HbView*>(mDocLoader->findWidget(QString(GLX_GRIDVIEW_VIEW)));
             mGridView = static_cast<HbGridView*>(mDocLoader->findWidget(GLX_GRIDVIEW_GRID)); 
             setWidget( mView );
-            }
+            mGridView->setLayoutName( QString( "GridView" ) );
         }
+    }
     //Load the Sections
     mDocLoader->load(GLX_GRIDVIEW_DOCMLPATH,section,&loaded); 
+    
+    if ( mModel ) {        
+        mModel->setData(QModelIndex(), (int)mode, GlxContextRole );
+    }
     OstTraceFunctionExit0( GLXGRIDVIEW_LOADGRIDVIEW_EXIT );
-    }
+}
 
 void GlxGridView::itemDestroyed()
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ITEMDESTROYED, "GlxGridView::itemDestroyed" );
     disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) );
     mItem = NULL;    
-    }
+}
 
 QVariant  GlxGridView::itemChange (GraphicsItemChange change, const QVariant &value) 
     {
@@ -253,30 +229,40 @@
     }
 
 void GlxGridView::addViewConnection ()
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ADDVIEWCONNECTION, "GlxGridView::addViewConnection" );
     connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(loadGridView(Qt::Orientation)));
     connect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &)));
     connect( mGridView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) );
     if(XQServiceUtil::isService()){
-    connect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SIGNAL( gridItemSelected(const QModelIndex &)));
+        connect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SIGNAL( gridItemSelected(const QModelIndex &)));
     }
-    //    connect(mGridView, SIGNAL(scrollPositionChange(QPointF , Qt::Orientations)), this, SLOT( scrollPositionChange(QPointF, Qt::Orientations)));
     connect(mGridView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) );
-    }
+}
 
 void GlxGridView::removeViewConnection ()
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_REMOVEVIEWCONNECTION, "GlxGridView::removeViewConnection" );
-    disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
+    disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(loadGridView(Qt::Orientation)));
     disconnect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &)));
     disconnect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SIGNAL( gridItemSelected(const QModelIndex &)));
     disconnect( mGridView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) );
     disconnect(mGridView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) );
+}
+
+void GlxGridView::resetItemTransform()
+{
+    if ( mItem ) {
+        mItem->resetTransform(); //to reset the transition effect (reset transform matrix)
+        mItem->setOpacity( 1);
+        mItem->setZValue( mItem->zValue() - 20);
+        disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) );
+        mItem = NULL;
     }
+}
 
 void GlxGridView::itemSelected(const QModelIndex &  index)
-    {
+{
     OstTrace1( TRACE_NORMAL, GLXGRIDVIEW_ITEMSELECTED, "GlxGridView::itemSelected;index=%d", index.row() );
 
     if ( mGridView->selectionMode() == HbGridView::MultiSelection ){ //in multi selection mode no need to open the full screen
@@ -290,10 +276,10 @@
         }
     emit actionTriggered( EGlxCmdFullScreenOpen );
     OstTraceEventStop( EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP, "Fullscreen Launch Time", EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START );
-    }
+}
 
 void GlxGridView::setVisvalWindowIndex()
-    {
+{
     OstTrace0( TRACE_IMPORTANT, GLXGRIDVIEW_SETVISVALWINDOWINDEX, "GlxGridView::setVisvalWindowIndex" );
     QList< HbAbstractViewItem * >  visibleItemList =  mGridView->visibleItems();
     qDebug("GlxGridView::setVisvalWindowIndex() %d", visibleItemList.count());    
@@ -315,42 +301,10 @@
         return ;
     
     mModel->setData( item->modelIndex (), item->modelIndex().row(), GlxVisualWindowIndex);
-    }
-
-//To:Do remove later once we get visual index change notification from grid view
-void GlxGridView::scrollPositionChange (QPointF newPosition, Qt::Orientations importantDimensions)
-    {
-    OstTrace0( TRACE_IMPORTANT, DUP1_GLXGRIDVIEW_SCROLLPOSITIONCHANGE, "GlxGridView::scrollPositionChange" );
-    Q_UNUSED(importantDimensions);
-    qreal x = newPosition.x();
-    qreal y = newPosition.y();  
-    int index = 0;
-    OstTraceExt2( TRACE_IMPORTANT, GLXGRIDVIEW_SCROLLPOSITIONCHANGE, "GlxGridView::scrollPositionChange;x=%f;y=%f", x, y );
-
-    if( mWindow->orientation() == Qt::Vertical ) {
-    index = y / 100;
-    index = index * NBR_COL;
-    }
-    else {
-    index = y / 98;
-    index = index * NBR_ROW;
-    }
-
-    OstTraceExt2( TRACE_IMPORTANT, DUP2_GLXGRIDVIEW_SCROLLPOSITIONCHANGE, 
-            "GlxGridView::scrollPositionChange;index=%d;visualindex=%d", index, mVisualIndex );
-
-    if ( qAbs (index - mVisualIndex) >= NBR_PAGE &&  index >=0 && index < mModel->rowCount() ) {
-    mVisualIndex = index;
-    OstTrace0( TRACE_IMPORTANT, DUP3_GLXGRIDVIEW_SCROLLPOSITIONCHANGE, 
-            "GlxGridView::scrollPositionChange visual index changed" );
-    //To:Do call back of model for visual index change
-    //mModel->setVisibleWindowIndex( mModel->index(mVisualIndex, 0 ));
-    }    
-    }
-
+}
 
 GlxGridView::~GlxGridView()
-    {
+{
     OstTraceFunctionEntry0( DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY );
     removeViewConnection();
     delete mGridView;
@@ -360,20 +314,20 @@
     mDocLoader = NULL;
 
     OstTraceFunctionExit0( DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT );
-    }
+}
 
 void GlxGridView::indicateLongPress(HbAbstractViewItem *item, QPointF coords)
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_INDICATELONGPRESS, "GlxGridView::indicateLongPress" );
     qDebug() << "GlxGridView:indicateLongPress Item " << item->modelIndex() << "long pressed at "
     << coords;
 
     if ( mGridView->selectionMode() == HbGridView::MultiSelection ){ //in multi selection mode no need to open the context menu
-    return ;
+    	return ;
     }
 
     if ( mModel ) {
-    mModel->setData( item->modelIndex(), item->modelIndex().row(), GlxFocusIndexRole );
+    	mModel->setData( item->modelIndex(), item->modelIndex().row(), GlxFocusIndexRole );
     }
     emit itemSpecificMenuTriggered(viewId(),coords);
-    }
+}
--- a/ui/views/listview/inc/glxlistview.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/listview/inc/glxlistview.h	Fri Apr 16 14:58:46 2010 +0300
@@ -46,7 +46,8 @@
     
 private slots:
 	void indicateLongPress( HbAbstractViewItem *item, QPointF coords );
-
+	void setVisvalWindowIndex();
+	
 private:
 	void addViewConnection();
 	void removeViewConnection();
--- a/ui/views/listview/src/glxlistview.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/listview/src/glxlistview.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -24,7 +24,7 @@
 #include <hbmainwindow.h>
 #include <hbdocumentloader.h>
 #include <hbabstractviewitem.h>
-
+#include <HbListViewItem.h>
 //User Includes
 #include "glxviewids.h"
 #include "glxlistview.h"
@@ -54,8 +54,6 @@
 {
     qDebug("GlxListView::deActivate()");
     disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
-    takeToolBar(); //To:Do improved later
-    emit toolBarChanged();
 }
 
 void GlxListView::setModel(QAbstractItemModel *model) 
@@ -67,10 +65,6 @@
 
 void GlxListView::addToolBar( HbToolBar *toolBar ) 
 {
-    //toolBar->setParent(this);
-    if ( mListView ) {
-        toolBar->setZValue(mListView->zValue());
-    }
     setToolBar(toolBar) ;
 }
 
@@ -97,6 +91,7 @@
     qDebug("GlxListView::addViewConnection()");
     connect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &)));
     connect(mListView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) );
+    connect( mListView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) );
 }
 
 void GlxListView::removeViewConnection()
@@ -104,8 +99,27 @@
     qDebug("GlxListView::removeViewConnection()");
     disconnect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &)));
     disconnect(mListView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) );
+    disconnect( mListView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) );
 }
 
+void GlxListView::setVisvalWindowIndex()
+    {
+    QList< HbAbstractViewItem * >  visibleItemList =  mListView->visibleItems();
+    qDebug("GlxListView::setVisvalWindowIndex() %d", visibleItemList.count());    
+    
+    if ( visibleItemList.count() <= 0 )
+        return ;
+
+    HbAbstractViewItem *item = visibleItemList.at(0);    
+    if ( item == NULL ) 
+        return ;
+        
+    if (  item->modelIndex().row() < 0 || item->modelIndex().row() >= mModel->rowCount() )
+        return ;
+    
+    mModel->setData( item->modelIndex (), item->modelIndex().row(), GlxVisualWindowIndex);
+    }
+
 void GlxListView::loadListView()
 {
     qDebug("GlxListView::loadListView()");
@@ -125,7 +139,9 @@
                 //sets the widget
                 setWidget((QGraphicsWidget*) mView);
                 }
-            }   
+            }  
+        HbListViewItem *prototype = mListView->listItemPrototype();
+        prototype->setStretchingStyle(HbListViewItem::StretchLandscape);
         }
 }
 
--- a/ui/views/slideshowview/src/glxslideshowview.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/slideshowview/src/glxslideshowview.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -38,49 +38,50 @@
 
 GlxSlideShowView::GlxSlideShowView(HbMainWindow *window,HbDocumentLoader *DocLoader) : GlxView(GLX_SLIDESHOWVIEW_ID), mModel(NULL),
                   mWindow(window), mSlideShowWidget(NULL),iHdmiController(NULL)
-    {
+{
     TRACER("GlxSlideShowView::GlxSlideShowView()");
     mDocLoader = DocLoader;
-    }
+}
 
 GlxSlideShowView::~GlxSlideShowView()
-    {
+{
     TRACER("GlxSlideShowView::~GlxSlideShowView()");
     if(mSlideShowWidget){
         disconnect( mSlideShowWidget, SIGNAL( slideShowEvent( GlxSlideShowEvent ) ), this, SLOT( slideShowEventHandler( GlxSlideShowEvent ) ) );
         delete mSlideShowWidget;
         mSlideShowWidget = NULL;
-        }
+    }
 
     if(mDocLoader) {
         mDocLoader->reset();
         delete mDocLoader;
         mDocLoader = NULL;
-        }
     }
+}
 
 void GlxSlideShowView::activate()
-    {
+{
     //To:Do error handling
     TRACER("GlxSlideShowView::activate()");
+    mWindow->setOrientation(Qt::Horizontal, false);
 
     //finds the widgets from the docml
     loadObjects();
-    mWindow->setItemVisible(Hb::AllItems, false) ;
-    connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
+    setItemVisible(Hb::AllItems, false) ;
     connect( mSlideShowWidget, SIGNAL( slideShowEvent( GlxSlideShowEvent ) ), this, SLOT( slideShowEventHandler( GlxSlideShowEvent ) ) ); 
     connect( mSlideShowWidget, SIGNAL( indexchanged() ), this, SLOT( indexchanged() ) );
+    
     if (!iHdmiController) {
         GLX_LOG_INFO("GlxSlideShowView::activate() - CGlxHdmi" );
         iHdmiController = CGlxHdmiController::NewL();
-        }   
-    }
+    } 
+}
 
 void GlxSlideShowView::deActivate()
-    {
+{
     TRACER("GlxSlideShowView::deActivate()");
-    mWindow->setItemVisible(Hb::AllItems , TRUE);
-    disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
+    mWindow->unsetOrientation(false);
+    setItemVisible(Hb::AllItems , TRUE);
     disconnect( mSlideShowWidget, SIGNAL( slideShowEvent( GlxSlideShowEvent ) ), this, SLOT( slideShowEventHandler( GlxSlideShowEvent ) ) );
     disconnect( mSlideShowWidget, SIGNAL( indexchanged() ), this, SLOT( indexchanged() ) );
     //Delete the Items in the slide show widget
@@ -90,55 +91,54 @@
         GLX_LOG_INFO("GlxSlideShowView() deActivate delete iHdmiController " );
         delete iHdmiController;
         iHdmiController = NULL;
-        }
     }
+}
 
 void GlxSlideShowView::setModel(QAbstractItemModel *model)
-    {
+{
     TRACER("GlxSlideShowView::setModel()");
     GLX_LOG_INFO2("GlxSlideShowView::setModel() model %u mModel %u", model, mModel);
     if ( mModel == model ) {
-    return ;
+        return ;
     }
     mModel = model;
     mSlideShowWidget->setModel(mModel);
     SetImageToHdmiL();
-    }
+}
 
 void GlxSlideShowView::setModelContext()
-    {
+{
     TRACER("GlxSlideShowView::setModelContext()");
     if ( mModel && mWindow ) {
-    GLX_LOG_INFO1("GlxSlideShowView::setModelContext %d", mWindow->orientation() );
-
-    if ( mWindow->orientation() == Qt::Horizontal ) {
-    mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
+        GLX_LOG_INFO1("GlxSlideShowView::setModelContext %d", mWindow->orientation() );
+    
+        if ( mWindow->orientation() == Qt::Horizontal ) {
+            mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole );
+        }
+        else {
+            mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
+        }
     }
-    else {
-    mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
-    }
-    }
-    }
+}
 
 void GlxSlideShowView::orientationChanged(Qt::Orientation)
-    {
+{
     TRACER("GlxSlideShowView::orientationChanged()");
-    QRect screenRect = mWindow->geometry(); 
     setModelContext();
-    mSlideShowWidget->orientationChanged(screenRect);
-    }
+    mSlideShowWidget->orientationChanged( screenGeometry() );
+}
 
 void GlxSlideShowView::slideShowEventHandler( GlxSlideShowEvent e) 
-    {
+{
     TRACER("GlxSlideShowView::slideShowEventHandler()");
     GLX_LOG_INFO1("GlxSlideShowView::slideShowEventHandler() event %d", e);
     switch ( e ) {
         case UI_ON_EVENT :
-            mWindow->setItemVisible(Hb::AllItems, TRUE) ;
+            setItemVisible(Hb::AllItems, TRUE) ;
             break;
 
         case UI_OFF_EVENT :
-            mWindow->setItemVisible(Hb::AllItems, false) ;
+            setItemVisible(Hb::AllItems, false) ;
             break;
 
         case EMPTY_DATA_EVENT :
@@ -148,30 +148,30 @@
         default :
             break;        
     }
-    }
+}
 
 void GlxSlideShowView::indexchanged()
-    {
+{
     TRACER("GlxSlideShowView::indexchanged()");
     SetImageToHdmiL();
-    }
+}
 
 bool GlxSlideShowView::event(QEvent *event)
-    {
+{
     TRACER("GlxSlideShowView::event()");
     GLX_LOG_INFO1("GlxSlideShowView::event() %d event type", event->type());
     if ( event->type() ==  QEvent::WindowActivate && mSlideShowWidget) {
-    mSlideShowWidget->startSlideShow();
+        mSlideShowWidget->startSlideShow();
     }
 
     if ( event->type() ==  QEvent::WindowDeactivate && mSlideShowWidget) {
-    mSlideShowWidget->stopSlideShow();
+       mSlideShowWidget->stopSlideShow();
     }
     return HbView::event(event);
-    }
+}
 
 void GlxSlideShowView::loadObjects()
-    {
+{
     TRACER("GlxSlideShowView::loadObjects");    
     //Load/Retrieve the widgets
     HbView *view     = static_cast<GlxSlideShowView*>(mDocLoader->findWidget(GLXSLIDESHOW_VIEW));
@@ -179,28 +179,22 @@
     
     //Initialise the Slideshow widget
     mSlideShowWidget->setSlideShowWidget(mDocLoader);
-    mSlideShowWidget->setItemGeometry(mWindow->geometry());  
-    }
+    mSlideShowWidget->setItemGeometry( screenGeometry() );  
+}
 
 void GlxSlideShowView::SetImageToHdmiL()
-    {
+{
     TRACER("GlxSlideShowView::SetImageToHdmiL() - CGlxHdmi 1" );
-    if (iHdmiController)
-        {
+    if (iHdmiController) {
         GLX_LOG_INFO("GlxSlideShowView::SetImageToHdmiL() - CGlxHdmi 2" );
         // Get the image uri
         QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
-        if(imagePath.isNull())
-            {
+        if(imagePath.isNull()) {
             GLX_LOG_INFO("GlxSlideShowView::SetImageToHdmiL() path is null" );
-            }
+        }
         qDebug() << "GlxSlideShowView::SetImageToHdmiL() imagePath= " << imagePath;
         TPtrC aPtr = reinterpret_cast<const TUint16*>(imagePath.utf16());
 
-        // Get the image Dimensions
-        QSize imageDimension = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxDimensionsRole)).value<QSize>();
-        TSize imageSize(imageDimension.width(),imageDimension.height());
-        
-        iHdmiController->SetImageL(aPtr,imageSize );
-        }
+        iHdmiController->SetImageL(aPtr);
     }
+}
--- a/ui/views/slideshowview/src/glxslideshowwidget.cpp	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/slideshowview/src/glxslideshowwidget.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -29,6 +29,7 @@
 
 
 //User Includes
+#include "glxicondefs.h" //Contains the icon names/Ids
 #include "glxmodelparm.h"
 #include "glxeffectengine.h"
 #include "glxdocloaderdefs.h"
@@ -46,18 +47,19 @@
 
 void GlxSlideShowWidget::setSlideShowWidget(HbDocumentLoader *DocLoader)
     {
-
     //To:Do error handling
-    TRACER("GlxSlideShowWidget::setSlideShowWidget()");                                   
+    TRACER("GlxSlideShowWidget::setSlideShowWidget()");   
+    
     //create the effect engine
     mEffectEngine = new GlxSlideShowEffectEngine();
 
     // Now load the view and the contents.
+    // and then set the play icon to the button
     mContinueButton = static_cast<HbPushButton*>(DocLoader->findWidget(GLXSLIDESHOW_PB));
+    mContinueButton->setIcon(HbIcon(GLXICON_PLAY));
     mContinueButton->hide();
     mIsPause = false;
 
-
     for ( int i = 0; i < NBR_ITEM ; i++) {
     mIconItems[i] = new HbIconItem(this);
     mIconItems[i]->setBrush(QBrush(Qt::black));
@@ -105,7 +107,8 @@
         delete mEffectEngine;
         mEffectEngine = NULL;
         }
-
+     
+    
     for ( int i = 0; i < NBR_ITEM ; i++) 
         {
         delete mIconItems[i] ;
@@ -405,6 +408,9 @@
 void GlxSlideShowWidget::resetSlideShow()
     {
     TRACER("GlxSlideShowWidget::resetSlideShow()" );
+	if(! mModel) {
+		return;
+	}
     QVariant variant = mModel->data( mModel->index( mSelIndex, 0 ), GlxFocusIndexRole );
     if ( variant.isValid() &&  variant.canConvert<int> () ) {
     mSelIndex = variant.value<int>() ;
--- a/ui/views/viewbase/inc/glxview.h	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/viewbase/inc/glxview.h	Fri Apr 16 14:58:46 2010 +0300
@@ -37,18 +37,12 @@
 Q_OBJECT
     
 public :
-    GlxView(qint32 id, QGraphicsItem *parent = 0 ) : HbView(parent), mId(id)
-    { 
-    
-    }
-	
+    GlxView(qint32 id, QGraphicsItem *parent = 0 );
     virtual void activate() = 0;
     virtual void deActivate() = 0;
     virtual void setModel(QAbstractItemModel *model) = 0;
-    virtual bool compare (qint32 id)
-    { 
-        return mId == id;
-    }
+
+    virtual bool compare (qint32 id);
     virtual void addToolBar( HbToolBar *toolBar ) { Q_UNUSED(toolBar) }
     virtual void enableMarking() { }
     virtual void disableMarking() { }
@@ -57,26 +51,18 @@
     virtual void resetView() {}
     virtual void initializeView(QAbstractItemModel *model) {Q_UNUSED(model)}
     inline qint32 viewId() { return mId;}
-    virtual QGraphicsItem * getAnimationItem( GlxEffect transtionEffect ) 
-    {
-        Q_UNUSED(transtionEffect)
-        return NULL; 
-    }
-    
-    virtual ~GlxView()
-    {
-    	
-    }
+    QSize screenSize();
+    QRect screenGeometry(); 
+    virtual QGraphicsItem * getAnimationItem( GlxEffect transtionEffect ); 
+    virtual ~GlxView() {   }   
 	
 signals:
     void actionTriggered(qint32 id);
-    void itemSpecificMenuTriggered(qint32,QPointF );	
-
+    void itemSpecificMenuTriggered(qint32,QPointF );
     void gridItemSelected(const QModelIndex &);
     
 private :
-	qint32 mId;
-	
+	qint32 mId;	
 };
 
 #endif /* GLXVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/views/viewbase/src/glxview.cpp	Fri Apr 16 14:58:46 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   ?Description
+*
+*/
+
+//include
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+
+//User Includes
+#include "glxview.h"
+
+
+GlxView::GlxView(qint32 id, QGraphicsItem *parent ) : HbView(parent), mId(id)
+{ 
+    
+}
+
+bool GlxView::compare (qint32 id)
+{ 
+    return mId == id;
+}
+
+QSize GlxView::screenSize()
+{
+    HbMainWindow *window = hbInstance->allMainWindows().first();
+    QSize deviceSize = HbDeviceProfile::current().logicalSize();
+    QSize screenSize = ( window->orientation() == Qt::Vertical ) ? QSize( deviceSize.width(), deviceSize.height() ) 
+                                                                   : QSize( deviceSize.height(), deviceSize.width() )  ;
+    return screenSize;
+}
+
+QRect GlxView::screenGeometry()
+{
+    HbMainWindow *window = hbInstance->allMainWindows().first();
+    QSize size = screenSize();
+    QRect rect ( window->geometry().x(), window->geometry().y(), size.width(), size.height()  );
+    return rect;
+}
+
+QGraphicsItem * GlxView::getAnimationItem( GlxEffect transtionEffect ) 
+{
+    Q_UNUSED(transtionEffect)
+    return NULL; 
+}
--- a/ui/views/views.pro	Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/views/views.pro	Fri Apr 16 14:58:46 2010 +0300
@@ -38,7 +38,9 @@
           ../uiengine/medialistwrapper/inc \
           ../viewbase/inc \
           ../../commonutilities/imagedecoderwrapper/inc \
-          ../../loggers/loggerqt/inc
+          ../../loggers/loggerqt/inc \
+          ../../traces
+
 symbian: { 
 TARGET.UID3 = 0x200009EF
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
@@ -63,12 +65,12 @@
            effectengine/effectplugin/inc/glxbackwardtransitionplugin.h \
            effectengine/effectplugin/inc/glxforwardtransitionplugin.h \
            effectengine/effectplugin/inc/glxfadeplugin.h \
-	   docloaders/inc/glxviewdocloader.h \
+	   	   docloaders/inc/glxviewdocloader.h \
            viewsfactory/inc/glxviewsfactory.h \
            ../../tvout/inc/glxhdmicontroller.h \
-           ../../traces
            
-SOURCES += fullscreenview/src/glxcoverflow.cpp \
+SOURCES += viewbase/src/glxview.cpp \
+           fullscreenview/src/glxcoverflow.cpp \
            fullscreenview/src/glxfullscreenview.cpp \
            fullscreenview/src/glxzoomslider.cpp \
            fullscreenview/src/glxzoomcontrol.cpp \