Revision: 201025
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 14:16:16 +0300
changeset 49 f291796e213d
parent 48 d0b4e67b3a60
child 51 525c140ec8db
child 55 fb37077c270f
Revision: 201025 Kit: 2010127
commonui/group/glxcommonui.mmp
commonui/test/group/t_glxresolutionutilitiy.mmp
commonui/test/group/t_glxzoomstatepublisher.mmp
commonutilities/common/bwins/glxcommonu.def
commonutilities/common/cenrep/20007193.txt
commonutilities/common/cenrep/20007194.txt
commonutilities/common/eabi/glxcommonu.def
commonutilities/common/group/bld.inf
commonutilities/common/group/glxcommon.mmp
commonutilities/common/inc/glxfilterfactory.h
commonutilities/common/src/glxfilterfactory.cpp
commonutilities/common/test/group/T_CGlxSettingsModel.mmp
commonutilities/common/test/group/t_tcommandfactory.mmp
commonutilities/common/test/group/t_tcommandparser.mmp
commonutilities/common/test/group/ut_cglxsingletonstore.mmp
commonutilities/externalutility/externalutility.pro
commonutilities/imagedecoderwrapper/imagedecoderwrapper.pro
commonutilities/imageviewer/group/glximageviewermanager.mmp
conf/ci_photos.confml
conf/ci_photos_20007193.crml
conf/photos.confml
conf/photos_20007194.crml
conf/slideshowsettings.confml
conf/slideshowsettings_20007194.crml
data/downshow.fxml
data/fadein.fxml
data/fullscreen.docml
data/helix.fxml
data/photos.docml
data/slideshow.docml
data/uphide.fxml
data/zoomin.fxml
data/zoomout.fxml
engine/collectionframework/datasource/manager/group/glxdatasourcemanager.mmp
engine/collectionframework/datasource/manager/test/group/t_cglxcommandrequest.mmp
engine/collectionframework/datasource/manager/test/group/t_cglxgetrequest.mmp
engine/collectionframework/datasource/manager/test/group/t_cglxidlistrequest.mmp
engine/collectionframework/datasource/manager/test/group/t_cglxthumbnailrequest.mmp
engine/collectionframework/datasource/plugins/glxdatasourcemde/group/glxdatasourcemde.mmp
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/group/glxdatasourcemde.mmp
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmds.cpp
engine/collectionframework/plugins/Test/albumcollectionplugin/group/glxalbumcollectionplugin.mmp
engine/collectionframework/plugins/Test/glxmedialiststestcollectionplugin/group/glxmedialiststestcollectionplugin.mmp
engine/collectionframework/plugins/Test/glxtestcollectionplugin/group/glxtestcollectionplugin.mmp
engine/collectionframework/plugins/Test/testtagcollectionplugin/group/glxtagcollectionplugin.mmp
engine/collectionframework/plugins/glxcollectionpluginalbums/group/glxcollectionpluginalbums.mmp
engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp
engine/collectionframework/plugins/glxcollectionpluginall/group/glxcollectionpluginall.mmp
engine/collectionframework/plugins/glxcollectionplugincamera/group/glxcollectionplugincamera.mmp
engine/collectionframework/plugins/glxcollectionplugindownloads/group/glxcollectionplugindownloads.mmp
engine/collectionframework/plugins/glxcollectionpluginimageviewer/group/glxcollectionpluginimageviewer.mmp
engine/collectionframework/plugins/glxcollectionpluginmonths/group/glxcollectionpluginmonths.mmp
engine/collectionframework/plugins/tagcollectionplugin/group/glxcollectionplugintags.mmp
engine/collectionframework/plugins/tagcollectionplugin/test/ut_cglxcollectionplugintags.mmp
engine/collectionframework/thumbnailcreator/group/glxthumbnailcreator.mmp
engine/collectionframework/thumbnailcreator/test/group/ut_cglxtndeletethumbnailstask.mmp
engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnfilteravailabletask.mmp
engine/collectionframework/thumbnailcreator/test/group/ut_cglxtngeneratethumbnailtask.mmp
engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnquickthumbnailtask.mmp
engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnzoomedimagetask.mmp
engine/collectionframework/thumbnailcreator/thumbnailcomposerplugin/glxthumbnailcomposerplugin.mmp
gallery/sis/photos.pkg
gallery/sis/photos_stub.pkg
gallery/sis/photos_stub.sis
inc/glxlocalisationstrings.h
inc/glxsymbianlocalisationstrings.h
loggers/loggerqt/loggerqt.pro
loggers/logging/app/group/glxloggingapp.mmp
loggers/logging/client/group/glxlogging.mmp
loggers/logging/client/test/group/t_glxlogging.mmp
main/glxaiwservicehandler.cpp
main/main.cpp
main/main.pro
photos.qrc
rom/photos.iby
tsrc/unittest/unittest_imagedecoderwrapper/unittest_imagedecoderwrapper.pro
tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.pro
tsrc/unittest/unittest_statehandler/unittest_statehandler.pro
tvout/tvoutengine/group/glxtvout.mmp
tvout/tvoutengine/src/glxhdmisurfaceupdater.cpp
tvout/tvoutwrapper/tvoutwrapper.pro
ui/commandhandlers/bwins/glxcommoncommandhandlersu.def
ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro
ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp
ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlercomment.h
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlercropimage.h
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerrotateimage.h
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercropimage.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrename.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotateimage.cpp
ui/commandhandlers/eabi/glxcommoncommandhandlersu.def
ui/detailscustomwidget/detailsdescriptionedit/detailsdescriptionedit.pro
ui/detailscustomwidget/detailsdescriptioneditplugin/detailsdescriptioneditplugin.pro
ui/detailscustomwidget/detailsnamelabel/detailsnamelabel.pro
ui/detailscustomwidget/detailsnamelabelplugin/detailsnamelabelplugin.pro
ui/inc/glxcommandhandlers.hrh
ui/inc/glxmodelroles.h
ui/inc/glxuistd.h
ui/inc/glxviewids.h
ui/uiengine/bwins/glxdrmutilitywrapperu.def
ui/uiengine/bwins/glxmedialistwrapperu.def
ui/uiengine/drmutility/bwins/glxdrmutilityu.def
ui/uiengine/drmutility/eabi/glxdrmutilityu.def
ui/uiengine/drmutility/group/glxdrmutility.mmp
ui/uiengine/drmutility/inc/glxdrmutility.h
ui/uiengine/drmutility/src/glxdrmutility.cpp
ui/uiengine/drmutilitywrapper/drmutilitywrapper.pro
ui/uiengine/drmutilitywrapper/inc/glxdrmutilitywrapper.h
ui/uiengine/drmutilitywrapper/inc/glxdrmutilitywrapper_p.h
ui/uiengine/drmutilitywrapper/src/glxdrmutilitywrapper.cpp
ui/uiengine/drmutilitywrapper/src/glxdrmutilitywrapper_p.cpp
ui/uiengine/eabi/glxdrmutilitywrapperu.def
ui/uiengine/eabi/glxmedialistwrapperu.def
ui/uiengine/medialists/group/glxmedialists.mmp
ui/uiengine/medialists/src/glxmedia.cpp
ui/uiengine/medialists/src/glxthumbnailcontext.cpp
ui/uiengine/medialists/test/group/t_cglxcache.mmp
ui/uiengine/medialists/test/group/t_cglxfetcherrorarray.mmp
ui/uiengine/medialists/test/group/t_cglxgarbagecollector.mmp
ui/uiengine/medialists/test/group/t_cglxmedia.mmp
ui/uiengine/medialists/test/group/t_glxfromfocusoutwarditerator.mmp
ui/uiengine/medialists/test/group/t_glxlistwindow.mmp
ui/uiengine/medialists/test/group/t_tglxexclusioniterator.mmp
ui/uiengine/medialists/test/group/ut_cglxattributecontext.mmp
ui/uiengine/medialists/test/group/ut_cglxitemlist.mmp
ui/uiengine/medialists/test/group/ut_cglxmedialist.mmp
ui/uiengine/medialists/test/group/ut_cglxnavigablelist.mmp
ui/uiengine/medialists/test/group/ut_cglxstaticitemlist.mmp
ui/uiengine/medialists/test/group/ut_glxerrormanager.mmp
ui/uiengine/medialists/test/group/ut_tglxselectioniterator.mmp
ui/uiengine/medialists/test/ut_cglxattributecontext/ut_cglxattributecontext.cpp
ui/uiengine/medialists/test/ut_cglxmedialist/ut_cglxmedialist.cpp
ui/uiengine/medialists/test/ut_glxerrormanager/ut_glxerrormanager.cpp
ui/uiengine/medialistwrapper/inc/glxmlwrapper.h
ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h
ui/uiengine/medialistwrapper/medialistwrapper.pro
ui/uiengine/medialistwrapper/src/glxmlwrapper.cpp
ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp
ui/uiengine/medialistwrapper/src/glxtitlefetcher.cpp
ui/uiengine/model/bwins/glxlistmodelu.def
ui/uiengine/model/eabi/glxlistmodelu.def
ui/uiengine/model/favmediamodel/favmediamodel.pro
ui/uiengine/model/listmodel/inc/glxalbummodel.h
ui/uiengine/model/listmodel/listmodel.pro
ui/uiengine/model/listmodel/src/glxalbummodel.cpp
ui/uiengine/model/mediamodel/inc/glxmediamodel.h
ui/uiengine/model/mediamodel/mediamodel.pro
ui/uiengine/model/mediamodel/src/glxmediamodel.cpp
ui/uiengine/model/modelwrapper/modelwrapper.pro
ui/uiengine/uiengine.pro
ui/viewmanagement/bwins/glxstatehandleru.def
ui/viewmanagement/bwins/glxviewmanageru.def
ui/viewmanagement/eabi/glxstatehandleru.def
ui/viewmanagement/eabi/glxviewmanageru.def
ui/viewmanagement/statehandler/inc/glxstatemanager.h
ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp
ui/viewmanagement/statehandler/src/glxstatemanager.cpp
ui/viewmanagement/statehandler/statehandler.pro
ui/viewmanagement/viewmanager/inc/glxviewmanager.h
ui/viewmanagement/viewmanager/src/glxmenumanager.cpp
ui/viewmanagement/viewmanager/src/glxviewmanager.cpp
ui/viewmanagement/viewmanager/viewmanager.pro
ui/viewplugins/externalviewplugin/externalviewplugin.pro
ui/views/detailsview/inc/glxdetailscustomwidgets.h
ui/views/detailsview/src/glxdetailsview.cpp
ui/views/fullscreenview/inc/glxcoverflow.h
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/slideshowsettingsview/src/glxslideshowsettingsview.cpp
ui/views/slideshowview/src/glxslideshowview.cpp
ui/views/slideshowview/src/glxslideshowwidget.cpp
ui/views/viewbase/inc/glxview.h
ui/views/views.pro
ui/viewutilities/effectplugin/inc/glxflipeffectplugin.h
ui/viewutilities/effectplugin/inc/glxhelixeffectplugin.h
ui/viewutilities/effectplugin/src/glxeffectpluginresolver.cpp
ui/viewutilities/effectplugin/src/glxflipeffectplugin.cpp
ui/viewutilities/effectplugin/src/glxhelixeffectplugin.cpp
ui/viewutilities/settingutility/inc/glxsetting.h
ui/viewutilities/settingutility/src/glxsetting.cpp
ui/viewutilities/viewutilities.pro
ui/widgets/bwins/glxzoomwidgetu.def
ui/widgets/eabi/glxzoomwidgetu.def
ui/widgets/glxzoomwidget/glxzoomwidget.pro
ui/widgets/glxzoomwidget/inc/glxzoomwidget.h
ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp
--- a/commonui/group/glxcommonui.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonui/group/glxcommonui.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -64,6 +64,7 @@
 LIBRARY			cfservices.lib // for CCFContextObject
 #endif
 
+SMPSAFE
 //EXPORTUNFROZEN
 
 // End of file
--- a/commonui/test/group/t_glxresolutionutilitiy.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonui/test/group/t_glxresolutionutilitiy.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -65,5 +65,5 @@
 #ifndef WINSCW
 EPOCALLOWDLLDATA
 #endif
-
+SMPSAFE
 // End of file
--- a/commonui/test/group/t_glxzoomstatepublisher.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonui/test/group/t_glxzoomstatepublisher.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -61,4 +61,5 @@
 LIBRARY                 cfservices.lib // for CCFContextObject
 
 EXPORTUNFROZEN
+SMPSAFE
 // End of file
--- a/commonutilities/common/bwins/glxcommonu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/bwins/glxcommonu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -45,4 +45,5 @@
 	?CreatePreviewFilterL@TGlxFilterFactory@@SAPAVCMPXMedia@@XZ @ 44 NONAME ; class CMPXMedia * TGlxFilterFactory::CreatePreviewFilterL(void)
 	?CreateCameraAlbumExclusionFilterL@TGlxFilterFactory@@SAPAVCMPXMedia@@XZ @ 45 NONAME ; class CMPXMedia * TGlxFilterFactory::CreateCameraAlbumExclusionFilterL(void)
 	?NewL@CGlxTNMonitor@@SAPAV1@PAVMGlxTNObserver@@@Z @ 46 NONAME ; class CGlxTNMonitor * CGlxTNMonitor::NewL(class MGlxTNObserver *)
+	?CreateExcludeDrmImageTypeFilterL@TGlxFilterFactory@@SAPAVCMPXMedia@@W4TGlxFilterItemType@@@Z @ 47 NONAME ; class CMPXMedia * TGlxFilterFactory::CreateExcludeDrmImageTypeFilterL(enum TGlxFilterItemType)
 
Binary file commonutilities/common/cenrep/20007193.txt has changed
Binary file commonutilities/common/cenrep/20007194.txt has changed
--- a/commonutilities/common/eabi/glxcommonu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/eabi/glxcommonu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -48,4 +48,5 @@
 	_ZN13CGlxTNMonitor4NewLEP14MGlxTNObserver @ 47 NONAME
 	_ZTI13CGlxTNMonitor @ 48 NONAME
 	_ZTV13CGlxTNMonitor @ 49 NONAME
+	_ZN17TGlxFilterFactory32CreateExcludeDrmImageTypeFilterLE18TGlxFilterItemType @ 50 NONAME
 
--- a/commonutilities/common/group/bld.inf	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/group/bld.inf	Tue Jul 06 14:16:16 2010 +0300
@@ -45,8 +45,9 @@
 	../cenrep/200009EE_orientation_portrait_landscape.txt   /epoc32/data/z/private/10202be9/200009EE.txt
 	// for emulator
 	../cenrep/200009EE_orientation_portrait_landscape.txt   /epoc32/release/winscw/udeb/z/private/10202be9/200009EE.txt
-	//slideshow settings cenrep initialisation file
+	//photos & ci_photos cenrep initialisation file
 	../cenrep/20007194.txt   z:/private/10202be9/20007194.txt
+	../cenrep/20007193.txt   z:/private/10202be9/20007193.txt
 	
 	
 #endif
@@ -55,8 +56,12 @@
 ../../../conf/gallery.confml                        CONFML_EXPORT_PATH(gallery.confml,customsw)
 ../../../conf/gallery_200009EE.crml	        CRML_EXPORT_PATH(gallery_200009EE.crml,customsw)
 
-../../../conf/slideshowsettings.confml                        CONFML_EXPORT_PATH(slideshowsettings.confml,customsw)
-../../../conf/slideshowsettings_20007194.crml	        CRML_EXPORT_PATH(slideshowsettings_20007194.crml,customsw)
+../../../conf/photos.confml                        CONFML_EXPORT_PATH(photos.confml,customsw)
+../../../conf/photos_20007194.crml	        CRML_EXPORT_PATH(photos_20007194.crml,customsw)
+
+../../../conf/ci_photos.confml                        CONFML_EXPORT_PATH(ci_photos.confml,customsw)
+../../../conf/ci_photos_20007193.crml	        CRML_EXPORT_PATH(ci_photos_20007193.crml,customsw)
+
 ../../../data/photos.docml		z:/resource/hb/splashml/photos.docml
 ../../../data/photos.splashml	z:/resource/hb/splashml/photos.splashml
 PRJ_MMPFILES
--- a/commonutilities/common/group/glxcommon.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/group/glxcommon.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -60,4 +60,5 @@
 LIBRARY         mpxcommon.lib
 LIBRARY         flogger.lib
 
+SMPSAFE
 // End of file
--- a/commonutilities/common/inc/glxfilterfactory.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/inc/glxfilterfactory.h	Tue Jul 06 14:16:16 2010 +0300
@@ -54,7 +54,14 @@
     * @return a filter object with array elements set specifying the filter type (Images or Video)
     */
     IMPORT_C static CMPXFilter* CreateItemTypeFilterL(TGlxFilterItemType aItemType);
-
+    /**
+    * Creates a URI filter, Used to specify 1 particular item (no wild cards allowed).
+    *
+    * @param TGlxMediaGeneralCategory ( EMPXImage )
+    * @return a filter object with array non drm images
+    */
+	IMPORT_C static CMPXFilter* TGlxFilterFactory::CreateExcludeDrmImageTypeFilterL(TGlxFilterItemType aFilterType);
+	
     /**
     * Creates a URI filter, Used to specify 1 particular item (no wild cards allowed).
     *
--- a/commonutilities/common/src/glxfilterfactory.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/src/glxfilterfactory.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -29,7 +29,19 @@
     filterProperties.iItemType = aItemType;
     return CreateCombinedFilterL(filterProperties);
     }
-    
+
+// ---------------------------------------------------------------------------
+// Creates a eclude drm image filter object
+// ---------------------------------------------------------------------------
+//   
+EXPORT_C CMPXFilter* TGlxFilterFactory::CreateExcludeDrmImageTypeFilterL(TGlxFilterItemType aFilterType)
+    {
+    TGlxFilterProperties filterProperties;
+	filterProperties.iItemType = EGlxFilterImage;
+	filterProperties.iNoDRM = ETrue;
+    return CreateCombinedFilterL(filterProperties);
+    }
+
 // ---------------------------------------------------------------------------
 // Creates a URI filter object
 // ---------------------------------------------------------------------------
--- a/commonutilities/common/test/group/T_CGlxSettingsModel.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/test/group/T_CGlxSettingsModel.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -43,5 +43,5 @@
 LIBRARY                 centralrepository.lib       // For central repository
 LIBRARY                 eunit.lib
 LIBRARY                 euser.lib
-
+SMPSAFE
 // End of file
--- a/commonutilities/common/test/group/t_tcommandfactory.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/test/group/t_tcommandfactory.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -58,5 +58,5 @@
 LIBRARY                 ecom.lib
 LIBRARY                 lbs.lib
 LIBRARY                 mpxcommon.lib
-
+SMPSAFE
 // End of file
--- a/commonutilities/common/test/group/t_tcommandparser.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/test/group/t_tcommandparser.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -57,5 +57,5 @@
 LIBRARY                 ecom.lib
 LIBRARY                 lbs.lib
 LIBRARY                 mpxcommon.lib
-
+SMPSAFE
 // End of file
--- a/commonutilities/common/test/group/ut_cglxsingletonstore.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/common/test/group/ut_cglxsingletonstore.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -48,5 +48,5 @@
 LIBRARY                 euser.lib
 LIBRARY                 lbs.lib
 LIBRARY                 mpxcommon.lib
-
+SMPSAFE
 // End of file
--- a/commonutilities/externalutility/externalutility.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/externalutility/externalutility.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -26,7 +26,8 @@
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 TARGET.UID3 = 0x20007192
 TARGET.EPOCALLOWDLLDATA = 1
-TARGET.CAPABILITY = ALL -TCB 
+TARGET.CAPABILITY = ALL -TCB
+MMP_RULES += SMPSAFE  
 }
 exportfile = "inc/glxexternalutility.h APP_LAYER_PLATFORM_EXPORT_PATH(glxexternalutility.h)"
 BLD_INF_RULES.prj_exports += exportfile
--- a/commonutilities/imagedecoderwrapper/imagedecoderwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/imagedecoderwrapper/imagedecoderwrapper.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -34,6 +34,7 @@
 TARGET.UID3 = 0x2000718D 
 TARGET.CAPABILITY = ALL -TCB
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE 
 }
 
 
--- a/commonutilities/imageviewer/group/glximageviewermanager.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/commonutilities/imageviewer/group/glximageviewermanager.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -43,4 +43,6 @@
 LIBRARY                 flogger.lib         // For Logging Tracer
 LIBRARY                 glxcommon.lib       // CGlxSingetonStore
 
+SMPSAFE
+
 //EXPORTUNFROZEN
\ No newline at end of file
Binary file conf/ci_photos.confml has changed
Binary file conf/ci_photos_20007193.crml has changed
Binary file conf/photos.confml has changed
Binary file conf/photos_20007194.crml has changed
Binary file conf/slideshowsettings.confml has changed
Binary file conf/slideshowsettings_20007194.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/downshow.fxml	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+	<comment>Created using carbide.fx 1.5.0;  FxML revision 0.84; Platform 10.1 </comment>
+	<visual src="Item">
+		<param name="rotation_angle" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">45.0</keyframe>
+			<keyframe at="1.0">0.0</keyframe>
+		</param>
+		<param name="rotation_origin_x" ref="visual.width">1.0</param>
+		<param name="rotation_origin_y" ref="visual.height">1.0</param>
+		<param name="opacity" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">0.0</keyframe>
+			<keyframe at="1.0">1.0</keyframe>
+		</param>
+		<param name="rotation_axis_z">1</param>
+	</visual>
+</layers>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/fadein.fxml	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+	<comment>Created using carbide.fx 1.5.0;  FxML revision 0.84; Platform 10.1 </comment>
+	<visual src="Item">
+		<param name="opacity" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">0.0</keyframe>
+			<keyframe at="1.0">1.0</keyframe>
+		</param>
+	</visual>
+</layers>
\ No newline at end of file
--- a/data/fullscreen.docml	Wed Jun 23 18:12:48 2010 +0300
+++ b/data/fullscreen.docml	Tue Jul 06 14:16:16 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
     <widget name="mGlxFullscreenView" type="HbView">
         <widget name="mcontent" role="HbView:widget" type="HbWidget">
             <widget name="mCoverFlow" type="HbWidget">
@@ -22,17 +22,16 @@
             <widget name="toolBar" type="HbToolBar">
                 <enums name="layoutDirection" value="RightToLeft"/>
                 <real name="z" value="7"/>
+                <real name="opacity" value="0.5"/>
                 <sizehint height="60.44776un" type="PREFERRED" width="9.40299un"/>
                 <enums name="orientation" value="Vertical"/>
-                <real name="opacity" value="0.5"/>
             </widget>
-	    <widget name="glxZoomWidget" type="HbWidget">
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <enums name="scrollDirections" value="Horizontal|Vertical"/>
+            <widget name="glxZoomWidget" type="HbWidget">
+                <string name="alignment" value="AlignVCenter|AlignHCenter"/>
+                <string name="scrollDirections" value="Horizontal|Vertical"/>
                 <bool name="frictionEnabled" value="TRUE"/>
             </widget>
-
-            <string name="toolTipText" value=""/>
+            <string name="toolTipText"/>
             <bool name="visible" value="TRUE"/>
             <layout type="anchor">
                 <anchoritem dst="mCoverFlow" dstEdge="LEFT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="LEFT"/>
@@ -49,20 +48,20 @@
                 <anchoritem dst="glxZoomWidget" dstEdge="TOP" spacing="var(hb-param-margin-view-top)" src="" srcEdge="TOP"/>
                 <anchoritem dst="glxZoomWidget" dstEdge="RIGHT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="RIGHT"/>
                 <anchoritem dst="glxZoomWidget" dstEdge="BOTTOM" spacing="var(hb-param-margin-view-bottom)" src="" srcEdge="BOTTOM"/>
-         </layout>
+            </layout>
         </widget>
-        <string name="title" value="Photos"/>
+        <string locid="txt_photos_title_photos" name="title" value="Photos"/>
         <bool name="contentFullScreen" value="TRUE"/>
-        <enums name="titleBarFlags" value="TitleBarHidden|TitleBarTransparent"/>
+        <string name="titleBarFlags" value="TitleBarHidden|TitleBarTransparent"/>
     </widget>
     <section name="portrait">
-        <widget name="toolBar" type="HbToolBar">
-            <sizehint height="58.50746un" type="PREFERRED" width="9.40299un"/>
-        </widget>
         <widget name="mImageStrip" type="HbGridView">
             <integer name="columnCount" value="4"/>
             <integer name="rowCount" value="1"/>
         </widget>
+        <widget name="toolBar" type="HbToolBar">
+            <sizehint height="58.50746un" type="PREFERRED" width="9.40299un"/>
+        </widget>
         <widget name="mcontent" role="HbView:widget" type="HbWidget">
             <layout type="anchor">
                 <anchoritem dst="mCoverFlow" dstEdge="LEFT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="LEFT"/>
@@ -75,7 +74,7 @@
                 <anchoritem dst="mImageStrip" dstEdge="BOTTOM" spacing="var(hb-param-margin-view-bottom)" src="" srcEdge="BOTTOM"/>
                 <anchoritem dst="toolBar" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
                 <anchoritem dst="toolBar" dstEdge="TOP" spacing="18.13433un" src="" srcEdge="TOP"/>
-		<anchoritem dst="glxZoomWidget" dstEdge="LEFT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="LEFT"/>
+                <anchoritem dst="glxZoomWidget" dstEdge="LEFT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="LEFT"/>
                 <anchoritem dst="glxZoomWidget" dstEdge="TOP" spacing="var(hb-param-margin-view-top)" src="" srcEdge="TOP"/>
                 <anchoritem dst="glxZoomWidget" dstEdge="RIGHT" spacing="var(hb-param-margin-view-right)" src="" srcEdge="RIGHT"/>
                 <anchoritem dst="glxZoomWidget" dstEdge="BOTTOM" spacing="var(hb-param-margin-view-bottom)" src="" srcEdge="BOTTOM"/>
@@ -85,15 +84,15 @@
     <section name="landscape">
         <widget name="mGlxFullscreenView" type="HbView">
             <real name="z" value="0"/>
-            <string name="HbVkbHost" value=""/>
-        </widget>
-        <widget name="toolBar" type="HbToolBar">
-            <sizehint height="46.71642un" type="PREFERRED" width="9.4427un"/>
+            <string name="HbVkbHost"/>
         </widget>
         <widget name="mImageStrip" type="HbGridView">
             <integer name="columnCount" value="6"/>
             <integer name="rowCount" value="1"/>
         </widget>
+        <widget name="toolBar" type="HbToolBar">
+            <sizehint height="46.71642un" type="PREFERRED" width="9.4427un"/>
+        </widget>
         <widget name="mcontent" role="HbView:widget" type="HbWidget">
             <layout type="anchor">
                 <anchoritem dst="mCoverFlow" dstEdge="LEFT" spacing="var(hb-param-margin-view-left)" src="" srcEdge="LEFT"/>
@@ -115,7 +114,7 @@
             </layout>
         </widget>
     </section>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
         <uistate name="portrait" sections="#common portrait"/>
         <uistate name="landscape" sections="#common landscape"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/helix.fxml	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+	<comment>Created using carbide.fx 1.5.0;  FxML revision 0.84; Platform 10.1 </comment>
+	<visual src="Item">
+		<param name="rotation_angle" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">0.0</keyframe>
+			<keyframe at="0.25">90.0</keyframe>
+			<keyframe at="0.50">180.0</keyframe>
+			<keyframe at="1.0">270.0</keyframe>
+		</param>
+		<param name="rotation_origin_x" ref="visual.width">0.5</param>
+		<param name="rotation_origin_y" ref="visual.height">0.5</param>
+		<param name="rotation_axis_z">1</param>
+		<param name="scale_x" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">1.0</keyframe>
+			<keyframe at="1.0">0.0</keyframe>
+		</param>
+		<param name="scale_origin_x" ref="visual.width">0.5</param>
+		<param name="scale_origin_y" ref="visual.height">0.5</param>
+		<param name="scale_y" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">1.0</keyframe>
+			<keyframe at="1.0">0.0</keyframe>
+		</param>
+	</visual>
+</layers>
\ No newline at end of file
--- a/data/photos.docml	Wed Jun 23 18:12:48 2010 +0300
+++ b/data/photos.docml	Tue Jul 06 14:16:16 2010 +0300
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <hbdocument version="1.1">
     <object name="action" type="HbAction">
-        <bool name="checkable" value="TRUE"/>
-        <bool name="enabled" value="FALSE"/>
+        <bool name="checkable" value="FALSE"/>
+        <bool name="enabled" value="TRUE"/>
         <icon iconName="qtg_mono_photos" name="icon"/>
         <string name="text"/>
         <bool name="visible" value="TRUE"/>
     </object>
     <object name="action_1" type="HbAction">
-        <bool name="checkable" value="TRUE"/>
+        <bool name="checkable" value="FALSE"/>
         <bool name="enabled" value="TRUE"/>
         <icon iconName="qtg_mono_photo_albums" name="icon"/>
         <string name="text"/>
@@ -25,23 +25,29 @@
         <widget name="content" role="HbView:widget" type="HbWidget">
             <layout type="anchor"/>
         </widget>
-        <widget name="viewToolbar" role="HbView:toolBar" type="HbToolBar">
-            <ref object="action" role="HbWidget:addAction"/>
-            <ref object="action_1" role="HbWidget:addAction"/>
-            <ref object="action_2" role="HbWidget:addAction"/>
-            <ref object="action_3" role="HbWidget:addAction"/>
-        </widget>
         <string locid="txt_photos_title_photos" name="title" value="Photos"/>
     </widget>
-    <section name="portrait"/>
+    <section name="portrait">
+        <widget name="mainView" type="HbView">
+            <widget name="viewToolbar" role="HbView:toolBar" type="HbToolBar">
+                <ref object="action" role="HbWidget:addAction"/>
+                <ref object="action_1" role="HbWidget:addAction"/>
+                <ref object="action_2" role="HbWidget:addAction"/>
+                <ref object="action_3" role="HbWidget:addAction"/>
+            </widget>
+            <string name="titleBarFlags"/>
+            <bool name="enabled" value="TRUE"/>
+            <bool name="visible" value="TRUE"/>
+        </widget>
+    </section>
     <section name="landscape">
         <widget name="content" role="HbView:widget" type="HbWidget">
             <widget name="pushButton" type="HbPushButton">
                 <icon iconName="qtg_mono_back" name="icon"/>
                 <real name="z" value="1"/>
                 <sizehint type="PREFERRED" width="10.59702un"/>
+                <sizehint height="5.5un" type="MINIMUM" width="5un"/>
                 <string name="text"/>
-                <sizehint height="5.5un" type="MINIMUM" width="5un"/>
             </widget>
             <layout type="anchor">
                 <anchoritem dst="pushButton" dstEdge="TOP" spacing="0.14925un" src="" srcEdge="TOP"/>
@@ -49,10 +55,8 @@
             </layout>
         </widget>
         <widget name="mainView" type="HbView">
-            <enums name="titleBarFlags" value="TitleBarHidden"/>
-        </widget>
-        <widget name="viewToolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="FALSE"/>
+            <string name="titleBarFlags" value="TitleBarHidden"/>
+            <bool name="contentFullScreen" value="FALSE"/>
         </widget>
     </section>
     <metadata activeUIState="landscape" display="NHD-3.2-inch_landscape" unit="un">
--- a/data/slideshow.docml	Wed Jun 23 18:12:48 2010 +0300
+++ b/data/slideshow.docml	Tue Jul 06 14:16:16 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
     <widget name="mglxslideshow" type="HbView">
         <widget name="content" role="HbView:widget" type="HbWidget">
             <widget name="mslideshowwidget" type="HbWidget">
@@ -10,9 +10,9 @@
             </widget>
             <widget name="mContinueButton" type="HbPushButton">
                 <real name="z" value="10"/>
-                <real name="opacity" value="0.5"/>
+                <real name="opacity" value="0.7"/>
                 <sizehint height="expr(var(hb-param-margin-gene-top)+var(hb-param-margin-gene-bottom)+var(hb-param-graphic-size-function))" type="PREFERRED" width="expr(var(hb-param-margin-gene-top)+var(hb-param-margin-gene-bottom)+var(hb-param-graphic-size-function))"/>
-                <string name="text" value=""/>
+                <string name="text"/>
                 <bool name="visible" value="FALSE"/>
                 <string name="state" value="normal"/>
             </widget>
@@ -26,12 +26,12 @@
                 <anchoritem dst="mContinueButton" dstEdge="CENTERH" spacing="0un" src="" srcEdge="CENTERH"/>
             </layout>
         </widget>
-        <string name="title" value="Photos"/>
+        <string locid="txt_photos_title_photos" name="title" value="Photos"/>
         <bool name="contentFullScreen" value="TRUE"/>
         <real name="z" value="10"/>
-        <enums name="titleBarFlags" value="TitleBarHidden|TitleBarTransparent"/>
+        <string name="titleBarFlags" value="TitleBarHidden|TitleBarTransparent"/>
     </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
     </metadata>
 </hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/uphide.fxml	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+	<comment>Created using carbide.fx 1.5.0;  FxML revision 0.84; Platform 10.1 </comment>
+	<visual src="Item">
+		<param name="opacity" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">1.0</keyframe>
+			<keyframe at="1.0">0.0</keyframe>
+		</param>
+		<param name="rotation_angle" type="anim">
+			<style>linear</style>
+			<duration>0.8</duration>
+			<keyframe at="0.0">0.0</keyframe>
+			<keyframe at="1.0">-45.0</keyframe>
+		</param>
+		<param name="rotation_origin_x" ref="visual.width">0.0</param>
+		<param name="rotation_origin_y" ref="visual.height">1.0</param>
+	</visual>
+</layers>
\ No newline at end of file
--- a/data/zoomin.fxml	Wed Jun 23 18:12:48 2010 +0300
+++ b/data/zoomin.fxml	Tue Jul 06 14:16:16 2010 +0300
@@ -5,7 +5,7 @@
 	<visual src="Item">
 		<param name="scale_y" type="anim">
 			<style>linear</style>
-			<duration>0.6</duration>
+			<duration>0.8</duration>
 			<keyframe at="0.0">1.0</keyframe>
 			<keyframe at="1.0">0.1</keyframe>
 		</param>
@@ -13,13 +13,13 @@
 		<param name="scale_origin_y" ref="visual.height">0.5</param>
 		<param name="scale_x" type="anim">
 			<style>linear</style>
-			<duration>0.6</duration>
+			<duration>0.8</duration>
 			<keyframe at="0.0">1.0</keyframe>
 			<keyframe at="1.0">0.1</keyframe>
 		</param>
 		<param name="opacity" type="anim">
 			<style>linear</style>
-			<duration>0.6</duration>
+			<duration>0.8</duration>
 			<keyframe at="0.0">1.0</keyframe>
 			<keyframe at="1.0">0.0</keyframe>
 		</param>
--- a/data/zoomout.fxml	Wed Jun 23 18:12:48 2010 +0300
+++ b/data/zoomout.fxml	Tue Jul 06 14:16:16 2010 +0300
@@ -5,7 +5,7 @@
 	<visual src="Item">
 		<param name="scale_x" type="anim">
 			<style>linear</style>
-			<duration>0.6</duration>
+			<duration>0.8</duration>
 			<keyframe at="0.0">0.1</keyframe>
 			<keyframe at="1.0">1.0</keyframe>
 		</param>
@@ -13,13 +13,13 @@
 		<param name="scale_origin_y" ref="visual.height">0.5</param>
 		<param name="scale_y" type="anim">
 			<style>linear</style>
-			<duration>0.6</duration>
+			<duration>0.8</duration>
 			<keyframe at="0.0">0.1</keyframe>
 			<keyframe at="1.0">1.0</keyframe>
 		</param>
 		<param name="opacity" type="anim">
 			<style>linear</style>
-			<duration>0.6</duration>
+			<duration>0.8</duration>
 			<keyframe at="0.0">0.0</keyframe>
 			<keyframe at="1.0">1.0</keyframe>
 		</param>
--- a/engine/collectionframework/datasource/manager/group/glxdatasourcemanager.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/manager/group/glxdatasourcemanager.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -66,5 +66,6 @@
 LIBRARY         flogger.lib
 LIBRARY		    HbCore.lib
 
+SMPSAFE
 // End of File
 
--- a/engine/collectionframework/datasource/manager/test/group/t_cglxcommandrequest.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/manager/test/group/t_cglxcommandrequest.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -56,6 +56,6 @@
 // Libraries required by the tested code
 LIBRARY                 ecom.lib
 LIBRARY                 mpxcommon.lib
-
+SMPSAFE
 //deffile ../bwins/t_cglxcommandrequest.def
 // End of file
--- a/engine/collectionframework/datasource/manager/test/group/t_cglxgetrequest.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/manager/test/group/t_cglxgetrequest.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -56,6 +56,6 @@
 // Libraries required by the tested code
 LIBRARY                 ecom.lib
 LIBRARY                 mpxcommon.lib
-
+SMPSAFE
 //deffile ../bwins/t_cglxgetrequest.def
 // End of file
--- a/engine/collectionframework/datasource/manager/test/group/t_cglxidlistrequest.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/manager/test/group/t_cglxidlistrequest.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -58,6 +58,6 @@
 LIBRARY                 ecom.lib
 LIBRARY                 mpxcommon.lib
 
-
+SMPSAFE
 //deffile ../bwins/t_cglxidlistrequest.def
 // End of file
--- a/engine/collectionframework/datasource/manager/test/group/t_cglxthumbnailrequest.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/manager/test/group/t_cglxthumbnailrequest.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -58,6 +58,6 @@
 // Libraries required by the tested code
 LIBRARY                 ecom.lib
 LIBRARY                 mpxcommon.lib
-
+SMPSAFE
 deffile ../bwins/t_cglxthumbnailrequest.def
 // End of file
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde/group/glxdatasourcemde.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde/group/glxdatasourcemde.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -82,4 +82,5 @@
 LIBRARY         iclextjpegapi.lib
 LIBRARY         imageconversion.lib
 
+SMPSAFE
 // End of File
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/group/glxdatasourcemde.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/group/glxdatasourcemde.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -96,4 +96,5 @@
 LIBRARY         imageconversion.lib
 LIBRARY	   	harvesterclient.lib
 
+SMPSAFE
 // End of File
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmds.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmds.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -375,6 +375,10 @@
         {
         __ASSERT_DEBUG((EGlxFilterImage == aFilterProperties.iItemType), Panic(
                 EGlxPanicIllegalArgument));
+
+        CMdEPropertyDef& drmProperty = DataSource()->ImageDef().GetPropertyDefL(MdeConstants::MediaObject::KDRMProperty);
+        CMdEPropertyCondition& drmPropertyCondition = aLogicCondition.AddPropertyConditionL(drmProperty);
+        drmPropertyCondition.SetNegate(ETrue);
         }
         
     if( aFilterProperties.iPath )          // If this is set. Then we need to filter on the Ids it supplies
--- a/engine/collectionframework/plugins/Test/albumcollectionplugin/group/glxalbumcollectionplugin.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/Test/albumcollectionplugin/group/glxalbumcollectionplugin.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -59,5 +59,5 @@
 LIBRARY         mpxcommon.lib
 
 LIBRARY         glxthumbnailcreator.lib
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/Test/glxmedialiststestcollectionplugin/group/glxmedialiststestcollectionplugin.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/Test/glxmedialiststestcollectionplugin/group/glxmedialiststestcollectionplugin.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -59,4 +59,5 @@
 
 LIBRARY         glxthumbnailcreator.lib
 
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/Test/glxtestcollectionplugin/group/glxtestcollectionplugin.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/Test/glxtestcollectionplugin/group/glxtestcollectionplugin.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -63,5 +63,5 @@
 
 LIBRARY         glxthumbnailcreator.lib
 
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/Test/testtagcollectionplugin/group/glxtagcollectionplugin.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/Test/testtagcollectionplugin/group/glxtagcollectionplugin.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -66,5 +66,5 @@
 
 LIBRARY         glxthumbnailcreator.lib
 
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/glxcollectionpluginalbums/group/glxcollectionpluginalbums.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/glxcollectionpluginalbums/group/glxcollectionpluginalbums.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -69,5 +69,5 @@
 LIBRARY         glxdatasourcemanager.lib
 LIBRARY         mpxcommon.lib
 LIBRARY         flogger.lib
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -45,6 +45,8 @@
 #include <glxfilterfactory.h>
 #include <glxlog.h>
 
+#include "glxsymbianlocalisationstrings.h"
+
 // CONSTANTS
 const TInt KFavoriteAlbumId = 1 ;
 const TInt KCapturedAlbumId = 2 ;
@@ -214,7 +216,8 @@
             	{
             	if(0 == usageCount)
             		{
-                	tempTitle = LoadLocalizedStringLC(KResourceFile, R_ALBUM_ITEM_SUB_TITLE_EMPTY);
+                	tempTitle = LoadLocalizedStringLC(KNoImages); 
+         
                 	
                 	// Set the title in the response.
             		aResponse->SetTextValueL(attr, *tempTitle);  
@@ -276,14 +279,12 @@
 					{
 					if( TGlxMediaId(KCapturedAlbumId) == aMediaId )
 						{
-					     _LIT(KCameraText,"txt_photos_dblist_my_camera");
 						 HBufC* title = LoadLocalizedStringLC(KCameraText);
 						 aResponse->SetTextValueL(attr, *title);  
 						 CleanupStack::PopAndDestroy(title);						
 						}
 					else if (TGlxMediaId(KFavoriteAlbumId) == aMediaId  )
 						{
-					    _LIT(KMyFavText,"txt_photos_dblist_my_favorites");				                                    					                  
 						HBufC* title = LoadLocalizedStringLC(KMyFavText);
 						aResponse->SetTextValueL(attr, *title);  
 						CleanupStack::PopAndDestroy(title);						
--- a/engine/collectionframework/plugins/glxcollectionpluginall/group/glxcollectionpluginall.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/glxcollectionpluginall/group/glxcollectionpluginall.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -72,5 +72,5 @@
 LIBRARY         mpxcommon.lib
 LIBRARY         glxcommon.lib
 LIBRARY         flogger.lib
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/glxcollectionplugincamera/group/glxcollectionplugincamera.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/glxcollectionplugincamera/group/glxcollectionplugincamera.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -74,5 +74,5 @@
 LIBRARY         mpxcommon.lib
 LIBRARY         glxcommon.lib
 LIBRARY         flogger.lib
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/glxcollectionplugindownloads/group/glxcollectionplugindownloads.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/glxcollectionplugindownloads/group/glxcollectionplugindownloads.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -75,5 +75,5 @@
 LIBRARY         mpxcommon.lib
 LIBRARY         glxcommon.lib
 LIBRARY         flogger.lib
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/glxcollectionpluginimageviewer/group/glxcollectionpluginimageviewer.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/glxcollectionpluginimageviewer/group/glxcollectionpluginimageviewer.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -68,5 +68,5 @@
 LIBRARY         glxdatasourcemanager.lib
 LIBRARY         mpxcommon.lib
 LIBRARY         flogger.lib
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/glxcollectionpluginmonths/group/glxcollectionpluginmonths.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/glxcollectionpluginmonths/group/glxcollectionpluginmonths.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -73,5 +73,5 @@
 LIBRARY         glxcommon.lib
 LIBRARY         flogger.lib
 
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/tagcollectionplugin/group/glxcollectionplugintags.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/tagcollectionplugin/group/glxcollectionplugintags.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -74,5 +74,5 @@
 LIBRARY         glxdatasourcemanager.lib				//DataSource Request
 LIBRARY         glxcommon.lib							//Filters
 LIBRARY         flogger.lib
-
+SMPSAFE
 // End of File
--- a/engine/collectionframework/plugins/tagcollectionplugin/test/ut_cglxcollectionplugintags.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/plugins/tagcollectionplugin/test/ut_cglxcollectionplugintags.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -62,5 +62,5 @@
 
 LIBRARY                 glxdatasourcemanager.lib				//DataSource Request
 LIBRARY                 glxcommon.lib							//Filters
-
+SMPSAFE
 // End of file
--- a/engine/collectionframework/thumbnailcreator/group/glxthumbnailcreator.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/thumbnailcreator/group/glxthumbnailcreator.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -89,4 +89,5 @@
 LIBRARY         tneengine.lib
 #endif
 
+SMPSAFE
 // End of File
--- a/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtndeletethumbnailstask.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtndeletethumbnailstask.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -48,5 +48,5 @@
 LIBRARY                 EUnit.lib
 LIBRARY                 EUnitUtil.lib
 LIBRARY                 euser.lib
-
+SMPSAFE
 // End of file
--- a/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnfilteravailabletask.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnfilteravailabletask.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -49,5 +49,5 @@
 LIBRARY                 EUnitUtil.lib
 LIBRARY                 euser.lib
 
-
+SMPSAFE
 // End of file
--- a/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtngeneratethumbnailtask.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtngeneratethumbnailtask.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -72,5 +72,5 @@
 #else
 LIBRARY                 tneengine.lib
 #endif
-
+SMPSAFE
 // End of file
--- a/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnquickthumbnailtask.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnquickthumbnailtask.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -73,5 +73,5 @@
 #else
 LIBRARY                 tneengine.lib
 #endif
-
+SMPSAFE
 // End of file
--- a/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnzoomedimagetask.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/thumbnailcreator/test/group/ut_cglxtnzoomedimagetask.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -63,5 +63,5 @@
 LIBRARY                 ecom.lib
 
 LIBRARY		flogger.lib	// for logging to file
-
+SMPSAFE
 // End of file
--- a/engine/collectionframework/thumbnailcreator/thumbnailcomposerplugin/glxthumbnailcomposerplugin.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/engine/collectionframework/thumbnailcreator/thumbnailcomposerplugin/glxthumbnailcomposerplugin.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -59,3 +59,4 @@
 LIBRARY       MdEClient.lib
 LIBRARY         flogger.lib						// For Logging Tracer
 
+SMPSAFE
--- a/gallery/sis/photos.pkg	Wed Jun 23 18:12:48 2010 +0300
+++ b/gallery/sis/photos.pkg	Tue Jul 06 14:16:16 2010 +0300
@@ -99,6 +99,7 @@
 "\epoc32\release\armv5\urel\glxviewmanager.dll"        		-"!:\sys\bin\glxviewmanager.dll"
 
 ;qt dlls
+"\epoc32\release\armv5\urel\glxdrmutilitywrapper.dll"	   -"!:\sys\bin\glxdrmutilitywrapper.dll"
 "\epoc32\release\armv5\urel\glxexternalutility.dll"        -"!:\sys\bin\glxexternalutility.dll"
 "\epoc32\release\armv5\urel\glximagedecoderwrapper.dll"    -"!:\sys\bin\glximagedecoderwrapper.dll"
 "\epoc32\release\armv5\urel\glxtvoutwrapper.dll"           -"!:\sys\bin\glxtvoutwrapper.dll"
@@ -110,13 +111,18 @@
 "\epoc32\release\armv5\urel\glxloggerqt.dll"               -"!:\sys\bin\glxloggerqt.dll"
 "\epoc32\release\armv5\urel\glxviews.dll"                  -"!:\sys\bin\glxviews.dll"
 "\epoc32\release\armv5\urel\glxviewutilities.dll"          -"!:\sys\bin\glxviewutilities.dll"
-"\epoc32\release\armv5\urel\glxzoomwidget.dll"          -"!:\sys\bin\glxzoomwidget.dll"
+"\epoc32\release\armv5\urel\glxzoomwidget.dll"             -"!:\sys\bin\glxzoomwidget.dll"
+"\epoc32\release\armv5\urel\detailsnamelabel.dll"          -"!:\sys\bin\detailsnamelabel.dll"
+"\epoc32\release\armv5\urel\detailsnamelabelplugin.dll"    -"!:\sys\bin\detailsnamelabelplugin.dll"
+"\epoc32\release\armv5\urel\detailsdescriptionedit.dll"    -"!:\sys\bin\detailsdescriptionedit.dll"
+"\epoc32\release\armv5\urel\detailsdescriptioneditplugin.dll" -"!:\sys\bin\detailsdescriptioneditplugin.dll"
 
 ;translations
 "\epoc32\data\z\resource\qt\translations\photos_en.qm"     -"!:\resource\qt\translations\photos.qm"
 
 ;cenrep
 "\epoc32\data\Z\private\10202BE9\20007194.txt"			   -"!:\private\10202BE9\20007194.txt"		
+"\epoc32\data\Z\private\10202BE9\20007193.txt"			   -"!:\private\10202BE9\20007193.txt"		
 
 ;splash screen
 "\epoc32\data\z\resource\hb\splashml\photos.splashml"  				-"!:\resource\hb\splashml\photos.splashml"
--- a/gallery/sis/photos_stub.pkg	Wed Jun 23 18:12:48 2010 +0300
+++ b/gallery/sis/photos_stub.pkg	Tue Jul 06 14:16:16 2010 +0300
@@ -88,6 +88,7 @@
 "" - "z:\sys\bin\glxviewmanager.dll"
 
 ; qt dlls
+"" - "z:\sys\bin\glxdrmutilitywrapper.dll"
 "" - "z:\sys\bin\glxexternalutility.dll"
 "" - "z:\sys\bin\glximagedecoderwrapper.dll"
 "" - "z:\sys\bin\glxloggerqt.dll"
@@ -100,8 +101,13 @@
 "" - "z:\sys\bin\glxviews.dll"
 "" - "z:\sys\bin\glxviewutilities.dll"
 "" - "z:\sys\bin\glxzoomwidget.dll"
+"" - "z:\sys\bin\detailsnamelabel.dll"
+"" - "z:\sys\bin\detailsnamelabelplugin.dll"
+"" - "z:\sys\bin\detailsdescriptionedit.dll"
+"" - "z:\sys\bin\detailsdescriptioneditplugin.dll"
 
 "" - "z:\private\10202BE9\20007194.txt"
+"" - "z:\private\10202BE9\20007193.txt"
 
 "" - "z:\resource\qt\translations\photos.qm"
 
Binary file gallery/sis/photos_stub.sis has changed
--- a/inc/glxlocalisationstrings.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/inc/glxlocalisationstrings.h	Tue Jul 06 14:16:16 2010 +0300
@@ -75,13 +75,14 @@
 //
 #define GLX_MENU_RENAME                hbTrId("txt_common_menu_rename_item")
 
+#define GLX_DIALOG_NAME_PROMPT                hbTrId("txt_photos_title_enter_name")
 
+#define GLX_DIALOG_ALBUM_NAME_DEFAULT         hbTrId("txt_photos_dialog_enter_name_entry_album")
+#define GLX_DIALOG_DELETE_ONE_ITEM            hbTrId("txt_photos_info_deleting_1")
 //TITLE RELATED and DEFAULT STRINGS
 
 #define GLX_CAPTION                    hbTrId("txt_short_caption_photos")
 #define GLX_TITLE                      hbTrId("txt_photos_title_photos")
-#define GLX_CAMERA                     "txt_photos_dblist_my_camera"
-#define GLX_MYFAV                      "txt_photos_dblist_my_favorites"
 #define GLX_PLACES                     "txt_photos_dblist_places_ln"
 #define GLX_ITEMS_CAMERA               "txt_photos_dblist_val_ln_items"
 #define GLX_ITEMS_MYFAV                "txt_photos_subtitle_ln_items"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/glxsymbianlocalisationstrings.h	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Localisation strings
+*
+*/
+
+#ifndef GLXSYMBIANLOCALISATIONSTRINGS_H_
+#define GLXSYMBIANLOCALISATIONSTRINGS_H_
+
+//SYMBIAN RELATED LOCALISATION STRINGS
+_LIT(KNoImages,"txt_photos_grid_no_images"); 
+_LIT(KCameraText,"txt_photos_dblist_my_camera");
+_LIT(KMyFavText,"txt_photos_dblist_my_favorites");	
+
+#endif /* GLXSYMBIANLOCALISATIONSTRINGS_H_*/
\ No newline at end of file
--- a/loggers/loggerqt/loggerqt.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/loggers/loggerqt/loggerqt.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -30,7 +30,8 @@
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 TARGET.UID3 = 0x20000A15
 TARGET.EPOCALLOWDLLDATA = 1
-TARGET.CAPABILITY = ALL -TCB \
+TARGET.CAPABILITY = ALL -TCB
+MMP_RULES += SMPSAFE 
 }
 
 
--- a/loggers/logging/app/group/glxloggingapp.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/loggers/logging/app/group/glxloggingapp.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -70,3 +70,5 @@
 TARGETPATH /resource/apps
 LANGUAGE_IDS
 END
+
+SMPSAFE
\ No newline at end of file
--- a/loggers/logging/client/group/glxlogging.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/loggers/logging/client/group/glxlogging.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -44,3 +44,5 @@
 #ifndef WINSCW
 EPOCALLOWDLLDATA
 #endif
+
+SMPSAFE
\ No newline at end of file
--- a/loggers/logging/client/test/group/t_glxlogging.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/loggers/logging/client/test/group/t_glxlogging.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -55,5 +55,5 @@
 #ifndef WINSCW
 EPOCALLOWDLLDATA
 #endif
-
+SMPSAFE
 // End of file
--- a/main/glxaiwservicehandler.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/main/glxaiwservicehandler.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -21,6 +21,7 @@
 #include <hbaction.h>
 #include <hbtoolbar.h>
 #include <hbstyleloader.h>
+#include <hbnotificationdialog.h>
 
 #include <QtDebug>
 #include <Qt>
@@ -42,6 +43,7 @@
 #include <glxexternalutility.h>
 #include "glxlocalisationstrings.h"
 #include <xqaiwdeclplat.h>
+#include <xqappmgr.h>
 
 #define IMAGE_FETCHER_SERVICE_NAME QLatin1String("photos.com.nokia.symbian.IImageFetch")
 #define IMAGE_FETCHER_SERVICE_DEPINTERFACE_NAME QLatin1String("photos.Image")
@@ -77,6 +79,8 @@
         }
     else if( 0 == currentInterfaceName.compare(QLatin1String("com.nokia.symbian.IFileView")))
         {
+		viewport()->setAttribute(Qt::WA_AcceptTouchEvents);
+		viewport()->grabGesture(Qt::PinchGesture);
         mImageViewerService = new GlxImageViewerService(this);
         }
 
@@ -194,15 +198,16 @@
     }
 
 void GlxAiwServiceHandler::itemSpecificMenuTriggered(qint32 viewId,QPointF pos)
-	{
+{
     mFetcherContextMenu = new HbMenu();
 	HbAction *action = mFetcherContextMenu->addAction(GLX_MENU_OPEN);
+	action->setObjectName( "Menu Open" );
 	connect(action, SIGNAL(triggered()), this, SLOT(openFSView()));
 	connect(this, SIGNAL(aboutToChangeOrientation ()), mFetcherContextMenu, SLOT(close()));
 	connect( mFetcherContextMenu, SIGNAL( aboutToClose () ), this, SLOT( closeContextMenu() ) );
 	mFetcherContextMenu->setPreferredPos( pos );
 	mFetcherContextMenu->show();
- 	}
+}
 
 void GlxAiwServiceHandler::closeContextMenu()
     {
@@ -221,6 +226,8 @@
         mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole );
     }    
     HbAction* selectAction = new HbAction(GLX_BUTTON_SELECT);
+    selectAction->setObjectName( "FS Select" );
+    
 	connect(selectAction, SIGNAL(triggered()), this, SLOT(handleFSSelect()));
     HbToolBar* toolBar = new HbToolBar();
     toolBar->setOrientation( Qt::Horizontal );
@@ -546,6 +553,20 @@
 
 bool GlxImageViewerService::view(QString file)
     {
+    XQApplicationManager appmgr;
+    QFile tempfile(file);
+    QVariantList attrValues;
+	QList<int> attrNames;
+	attrNames.append(XQApplicationManager::IsProtected);
+    bool ok = appmgr.getDrmAttributes(tempfile, attrNames, attrValues);
+    if(attrValues.at(0).toBool()){
+		HbNotificationDialog::launchDialog("NOT SUPPORTED");
+        connect(this, SIGNAL(returnValueDelivered()), mServiceApp,
+                SLOT(handleAnswerDelivered()));
+		complete(true);
+		return false;
+    }
+	
     XQRequestInfo info = requestInfo();
     mAsyncRequest = !info.isSynchronous();
     if (!mImageViewerInstance)
--- a/main/main.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/main/main.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -27,7 +27,8 @@
 #include "glxstatemanager.h"
 #include "glxaiwservicehandler.h"
 #include "glxapplication.h"
-
+#include "glxlocalisationstrings.h"
+#include "hbsplashscreen.h"
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "mainTraces.h"
@@ -42,7 +43,7 @@
     OstTraceExt3( TRACE_NORMAL, DUP1__MAIN, "::main Time at Launch HHMMSS =%d::%d::%d",
             localTime.hour(), localTime.minute(), localTime.second() );
 
-    GlxApplication app(argc, argv);	
+    GlxApplication app(argc, argv, Hb::NoSplash);	
     bool loaded(false);	
     QTranslator translator;
     QString path = "Z:/resource/qt/translations/";
@@ -58,8 +59,9 @@
     OstTraceEventStart0( EVENT_DUP1__MAIN_START, "launch" );
 
     if(!XQServiceUtil::isService()){
+        HbSplashScreen::start();
         stateMgr = new GlxStateManager();
-        app.setApplicationName("Photos");          
+        app.setApplicationName(GLX_TITLE);          
         stateMgr->launchApplication();  
     }
     else {
--- a/main/main.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/main/main.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -46,6 +46,7 @@
         41943040
     TARGET.CAPABILITY = ALL \
         -TCB
+    MMP_RULES += SMPSAFE     
 }
 
 LIBS += -lglxstatehandler.dll \
--- a/photos.qrc	Wed Jun 23 18:12:48 2010 +0300
+++ b/photos.qrc	Tue Jul 06 14:16:16 2010 +0300
@@ -10,7 +10,11 @@
         <file>data/zoomin.fxml</file>
         <file>data/zoomout.fxml</file>
         <file>data/view_flip_hide.fxml</file>
-        <file>data/view_flip_show.fxml</file>
+        <file>data/view_flip_show.fxml</file>        
+        <file>data/helix.fxml</file>
+        <file>data/fadein.fxml</file>  
+        <file>data/uphide.fxml</file>
+        <file>data/downshow.fxml</file> 
         <file>data/fullscreentogrid.fxml</file>
         <file>data/gridtofullscreenhide.fxml</file>
         <file>data/gridtofullscreenshow.fxml</file>
--- a/rom/photos.iby	Wed Jun 23 18:12:48 2010 +0300
+++ b/rom/photos.iby	Tue Jul 06 14:16:16 2010 +0300
@@ -66,6 +66,7 @@
 file=ABI_DIR/BUILD_DIR/glxviewmanager.dll              		SHARED_LIB_DIR/glxviewmanager.dll
 
 //qt 
+file=ABI_DIR/BUILD_DIR/glxdrmutilitywrapper.dll             SHARED_LIB_DIR/glxdrmutilitywrapper.dll
 file=ABI_DIR/BUILD_DIR/glxexternalutility.dll              	SHARED_LIB_DIR/glxexternalutility.dll
 file=ABI_DIR/BUILD_DIR/glximagedecoderwrapper.dll          	SHARED_LIB_DIR/glximagedecoderwrapper.dll
 file=ABI_DIR/BUILD_DIR/glxloggerqt.dll              	   	SHARED_LIB_DIR/glxloggerqt.dll
@@ -88,6 +89,7 @@
 data=/epoc32/data/z/private/10003a3f/import/apps/photos_reg.rsc         private/10003a3f/import/apps/photos_reg.rsc
 data=DATAZ_/APP_RESOURCE_DIR/photos.mif                     			APP_RESOURCE_DIR/photos.mif  
 data=/epoc32/data/Z/private/10202BE9/20007194.txt						private/10202BE9/20007194.txt
+data=/epoc32/data/Z/private/10202BE9/20007193.txt						private/10202BE9/20007193.txt
 data=/epoc32/data/z/system/install/photos_stub.sis        				/system/install/photos_stub.sis
 
 data=ZRESOURCE/hb/splashml/photos.splashml  RESOURCE_FILES_DIR/hb/splashml/photos.splashml
--- a/tsrc/unittest/unittest_imagedecoderwrapper/unittest_imagedecoderwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/tsrc/unittest/unittest_imagedecoderwrapper/unittest_imagedecoderwrapper.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -38,6 +38,7 @@
     TARGET.CAPABILITY = ALL -TCB
     TARGET.EPOCHEAPSIZE = 0x20000 0x1600000
     TARGET.UID3 = 0x20000A05
+    MMP_RULES += SMPSAFE 
 }
 #BLD_INF_RULES.prj_exports += "../../../gallery/data/Battle.jpg  c:/data/images/Battle.jpg"
 
--- a/tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -43,4 +43,5 @@
     TARGET.CAPABILITY = ALL -TCB
     TARGET.EPOCHEAPSIZE = 0x20000 0x1600000
     TARGET.UID3 = 0x20000A0E
+    MMP_RULES += SMPSAFE 
 }
\ No newline at end of file
--- a/tsrc/unittest/unittest_statehandler/unittest_statehandler.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/tsrc/unittest/unittest_statehandler/unittest_statehandler.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -35,6 +35,7 @@
     TARGET.CAPABILITY = ALL -TCB
     TARGET.EPOCHEAPSIZE = 0x20000 0x1600000
     TARGET.UID3 = 0x2000A773
+    MMP_RULES += SMPSAFE 
 }
 
 LIBS += -lflogger.dll 
--- a/tvout/tvoutengine/group/glxtvout.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/tvout/tvoutengine/group/glxtvout.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -70,4 +70,6 @@
 #ifdef __MARM
 LIBRARY 		GSServerEngine.lib  // FOr AspectRatio
 #endif
+
+SMPSAFE
 // End of File
--- a/tvout/tvoutengine/src/glxhdmisurfaceupdater.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/tvout/tvoutengine/src/glxhdmisurfaceupdater.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -886,7 +886,7 @@
         iSurfBufferAO->iStatus = KRequestPending;
         iSurfBufferAO->SetActive();
         iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus);
-        TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL);
+        TInt err = iSurfUpdateSession.SubmitUpdate(KAllScreens, iSurfId, 0, NULL);
         GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ProcessTvImage() Surfaceupdatesession error %d",err);
         }
     }
--- a/tvout/tvoutwrapper/tvoutwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/tvout/tvoutwrapper/tvoutwrapper.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -33,6 +33,7 @@
 TARGET.UID3 = 0x2000A772
 TARGET.CAPABILITY = ALL -TCB 
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE 
 }	
 # Input
 HEADERS += inc/glxtvoutwrapper.h \
--- a/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -1,73 +1,81 @@
 EXPORTS
-	??_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
-	??0GlxCommandHandlerRename@@QAE@XZ @ 6 NONAME ; GlxCommandHandlerRename::GlxCommandHandlerRename(void)
-	??1GlxCommandHandlerAddToContainer@@UAE@XZ @ 7 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(void)
-	?getStaticMetaObject@GlxCommandHandlerNewMedia@@SAABUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const & GlxCommandHandlerNewMedia::getStaticMetaObject(void)
-	?SetImageOrientationL@GlxCommandHandlerRotate@@AAEXG@Z @ 9 NONAME ; void GlxCommandHandlerRotate::SetImageOrientationL(unsigned short)
-	?ConfirmationTextL@GlxCommandHandlerDelete@@EBE?AVQString@@_N@Z @ 10 NONAME ; class QString GlxCommandHandlerDelete::ConfirmationTextL(bool) const
-	??_EGlxCommandHandlerSend@@UAE@I@Z @ 11 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(unsigned int)
-	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *)
-	?HandleErrorL@GlxCommandHandlerNewMedia@@MAEXH@Z @ 13 NONAME ; void GlxCommandHandlerNewMedia::HandleErrorL(int)
-	?HandleErrorL@GlxCommandHandlerComment@@EAEXH@Z @ 14 NONAME ; void GlxCommandHandlerComment::HandleErrorL(int)
-	?GetName@GlxCommandHandlerRename@@ABE?AVQString@@AAVMGlxMediaList@@@Z @ 15 NONAME ; class QString GlxCommandHandlerRename::GetName(class MGlxMediaList &) const
-	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 16 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *, int)
-	?DoExecuteCommandL@GlxCommandHandlerRotate@@UAEXHAAVMGlxMediaList@@AAH@Z @ 17 NONAME ; void GlxCommandHandlerRotate::DoExecuteCommandL(int, class MGlxMediaList &, int &)
-	?CompletionTextL@GlxCommandHandlerComment@@EBE?AVQString@@XZ @ 18 NONAME ; class QString GlxCommandHandlerComment::CompletionTextL(void) const
-	?metaObject@GlxCommandHandlerNewMedia@@UBEPBUQMetaObject@@XZ @ 19 NONAME ; struct QMetaObject const * GlxCommandHandlerNewMedia::metaObject(void) const
-	?CreateCommandL@GlxCommandHandlerDelete@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 20 NONAME ; class CMPXMedia * GlxCommandHandlerDelete::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CreateCommandL@GlxCommandHandlerAddToContainer@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 21 NONAME ; class CMPXMedia * GlxCommandHandlerAddToContainer::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CompletionTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 22 NONAME ; class QString GlxCommandHandlerDelete::CompletionTextL(void) const
-	?DoHandleCommandCompleteL@GlxCommandHandlerNewMedia@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 23 NONAME ; void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
-	??0GlxCommandHandlerComment@@QAE@XZ @ 24 NONAME ; GlxCommandHandlerComment::GlxCommandHandlerComment(void)
-	?GenerateNewMediaItemTitleL@GlxCommandHandlerNewMedia@@ABE?AVQString@@V2@AAVMGlxMediaList@@@Z @ 25 NONAME ; class QString GlxCommandHandlerNewMedia::GenerateNewMediaItemTitleL(class QString, class MGlxMediaList &) const
-	??1GlxCommandHandlerRemoveFrom@@UAE@XZ @ 26 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(void)
-	?qt_metacast@GlxCommandHandlerNewMedia@@UAEPAXPBD@Z @ 27 NONAME ; void * GlxCommandHandlerNewMedia::qt_metacast(char const *)
-	??0GlxCommandHandlerRemoveFrom@@QAE@XZ @ 28 NONAME ; GlxCommandHandlerRemoveFrom::GlxCommandHandlerRemoveFrom(void)
-	?HandleItemAddedL@GlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 29 NONAME ; void GlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *)
-	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 30 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *)
-	?createNewMedia@GlxCommandHandlerAddToContainer@@ABEXXZ @ 31 NONAME ; void GlxCommandHandlerAddToContainer::createNewMedia(void) const
-	?ReadImageOrientationL@GlxCommandHandlerRotate@@AAEGXZ @ 32 NONAME ; unsigned short GlxCommandHandlerRotate::ReadImageOrientationL(void)
-	??_EGlxCommandHandlerComment@@UAE@I@Z @ 33 NONAME ; GlxCommandHandlerComment::~GlxCommandHandlerComment(unsigned int)
-	??1GlxCommandHandlerRotate@@UAE@XZ @ 34 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(void)
-	?CreateCommandL@GlxCommandHandlerRename@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 35 NONAME ; class CMPXMedia * GlxCommandHandlerRename::CreateCommandL(int, class MGlxMediaList &, int &) const
-	??1GlxCommandHandlerNewMedia@@UAE@XZ @ 36 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(void)
-	??_EGlxCommandHandlerNewMedia@@UAE@I@Z @ 37 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(unsigned int)
-	?CompletionTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 38 NONAME ; class QString GlxCommandHandlerRemoveFrom::CompletionTextL(void) const
-	??_EGlxCommandHandlerDelete@@UAE@I@Z @ 39 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(unsigned int)
-	?ProgressTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 40 NONAME ; class QString GlxCommandHandlerDelete::ProgressTextL(void) const
-	?CompletionTextL@GlxCommandHandlerRename@@EBE?AVQString@@XZ @ 41 NONAME ; class QString GlxCommandHandlerRename::CompletionTextL(void) const
-	?staticMetaObject@GlxCommandHandlerNewMedia@@2UQMetaObject@@B @ 42 NONAME ; struct QMetaObject const GlxCommandHandlerNewMedia::staticMetaObject
-	?DestroyExifWriter@GlxCommandHandlerRotate@@AAEXXZ @ 43 NONAME ; void GlxCommandHandlerRotate::DestroyExifWriter(void)
-	??0GlxCommandHandlerDelete@@QAE@XZ @ 44 NONAME ; GlxCommandHandlerDelete::GlxCommandHandlerDelete(void)
-	??1GlxCommandHandlerRename@@UAE@XZ @ 45 NONAME ; GlxCommandHandlerRename::~GlxCommandHandlerRename(void)
-	??0GlxCommandHandlerSend@@QAE@XZ @ 46 NONAME ; GlxCommandHandlerSend::GlxCommandHandlerSend(void)
-	?HandleError@GlxCommandHandlerNewMedia@@MAEXH@Z @ 47 NONAME ; void GlxCommandHandlerNewMedia::HandleError(int)
-	??0GlxCommandHandlerAddToContainer@@QAE@XZ @ 48 NONAME ; GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer(void)
-	??_EGlxCommandHandlerRename@@UAE@I@Z @ 49 NONAME ; GlxCommandHandlerRename::~GlxCommandHandlerRename(unsigned int)
-	?GetName@GlxCommandHandlerComment@@ABE?AVQString@@AAVMGlxMediaList@@@Z @ 50 NONAME ; class QString GlxCommandHandlerComment::GetName(class MGlxMediaList &) const
-	?HandleErrorL@GlxCommandHandlerRename@@EAEXH@Z @ 51 NONAME ; void GlxCommandHandlerRename::HandleErrorL(int)
-	??_EGlxCommandHandlerRotate@@UAE@I@Z @ 52 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(unsigned int)
-	?ProgressTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 53 NONAME ; class QString GlxCommandHandlerAddToContainer::ProgressTextL(void) const
-	??1GlxCommandHandlerComment@@UAE@XZ @ 54 NONAME ; GlxCommandHandlerComment::~GlxCommandHandlerComment(void)
-	??1GlxCommandHandlerSend@@UAE@XZ @ 55 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(void)
-	?CompletionTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 56 NONAME ; class QString GlxCommandHandlerAddToContainer::CompletionTextL(void) const
-	??0GlxCommandHandlerNewMedia@@QAE@XZ @ 57 NONAME ; GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia(void)
-	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 58 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *, int)
-	?doHandleUserAction@GlxCommandHandlerSend@@UBEXPAVGlxMediaModel@@V?$QList@VQModelIndex@@@@@Z @ 59 NONAME ; void GlxCommandHandlerSend::doHandleUserAction(class GlxMediaModel *, class QList<class QModelIndex>) const
-	??_EGlxCommandHandlerAddToContainer@@UAE@I@Z @ 60 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(unsigned int)
-	?ProgressTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 61 NONAME ; class QString GlxCommandHandlerNewMedia::ProgressTextL(void) const
-	?ExecuteLD@GlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 62 NONAME ; int GlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &)
-	?CreateCommandL@GlxCommandHandlerRotate@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 63 NONAME ; class CMPXMedia * GlxCommandHandlerRotate::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CreateCommandL@GlxCommandHandlerComment@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 64 NONAME ; class CMPXMedia * GlxCommandHandlerComment::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CompletionTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 65 NONAME ; class QString GlxCommandHandlerNewMedia::CompletionTextL(void) const
-	?CreateCommandL@GlxCommandHandlerRemoveFrom@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 66 NONAME ; class CMPXMedia * GlxCommandHandlerRemoveFrom::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CalculateFinalOrientationL@GlxCommandHandlerRotate@@AAEGG@Z @ 67 NONAME ; unsigned short GlxCommandHandlerRotate::CalculateFinalOrientationL(unsigned short)
-	?InitializeExifWriterL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 68 NONAME ; void GlxCommandHandlerRotate::InitializeExifWriterL(class TBuf<256>)
-	??1GlxCommandHandlerDelete@@UAE@XZ @ 69 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void)
-	?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 70 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const
-	??0GlxCommandHandlerRotate@@QAE@XZ @ 71 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void)
+	?doHandleUserAction@GlxCommandHandlerRotateImage@@UBEXPAVGlxMediaModel@@V?$QList@VQModelIndex@@@@@Z @ 1 NONAME ; void GlxCommandHandlerRotateImage::doHandleUserAction(class GlxMediaModel *, class QList<class QModelIndex>) const
+	??_EGlxCommandHandlerRemoveFrom@@UAE@I@Z @ 2 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(unsigned int)
+	?iSelectionCount@GlxCommandHandlerAddToContainer@@0HA @ 3 NONAME ; int GlxCommandHandlerAddToContainer::iSelectionCount
+	?RotateImageL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 4 NONAME ; void GlxCommandHandlerRotate::RotateImageL(class TBuf<256>)
+	?qt_metacall@GlxCommandHandlerNewMedia@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 5 NONAME ; int GlxCommandHandlerNewMedia::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?doHandleUserAction@GlxCommandHandlerCropImage@@UBEXPAVGlxMediaModel@@V?$QList@VQModelIndex@@@@@Z @ 6 NONAME ; void GlxCommandHandlerCropImage::doHandleUserAction(class GlxMediaModel *, class QList<class QModelIndex>) const
+	?ProgressTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 7 NONAME ; class QString GlxCommandHandlerRemoveFrom::ProgressTextL(void) const
+	??0GlxCommandHandlerRename@@QAE@XZ @ 8 NONAME ; GlxCommandHandlerRename::GlxCommandHandlerRename(void)
+	??1GlxCommandHandlerAddToContainer@@UAE@XZ @ 9 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(void)
+	?getStaticMetaObject@GlxCommandHandlerNewMedia@@SAABUQMetaObject@@XZ @ 10 NONAME ; struct QMetaObject const & GlxCommandHandlerNewMedia::getStaticMetaObject(void)
+	?SetImageOrientationL@GlxCommandHandlerRotate@@AAEXG@Z @ 11 NONAME ; void GlxCommandHandlerRotate::SetImageOrientationL(unsigned short)
+	?ConfirmationTextL@GlxCommandHandlerDelete@@EBE?AVQString@@_N@Z @ 12 NONAME ; class QString GlxCommandHandlerDelete::ConfirmationTextL(bool) const
+	??_EGlxCommandHandlerSend@@UAE@I@Z @ 13 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(unsigned int)
+	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *)
+	?HandleErrorL@GlxCommandHandlerNewMedia@@MAEXH@Z @ 15 NONAME ; void GlxCommandHandlerNewMedia::HandleErrorL(int)
+	??1GlxCommandHandlerCropImage@@UAE@XZ @ 16 NONAME ; GlxCommandHandlerCropImage::~GlxCommandHandlerCropImage(void)
+	?GetName@GlxCommandHandlerRename@@ABE?AVQString@@AAVMGlxMediaList@@@Z @ 17 NONAME ; class QString GlxCommandHandlerRename::GetName(class MGlxMediaList &) const
+	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *, int)
+	?DoExecuteCommandL@GlxCommandHandlerRotate@@UAEXHAAVMGlxMediaList@@AAH@Z @ 19 NONAME ; void GlxCommandHandlerRotate::DoExecuteCommandL(int, class MGlxMediaList &, int &)
+	?CompletionTextL@GlxCommandHandlerComment@@EBE?AVQString@@XZ @ 20 NONAME ; class QString GlxCommandHandlerComment::CompletionTextL(void) const
+	?metaObject@GlxCommandHandlerNewMedia@@UBEPBUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const * GlxCommandHandlerNewMedia::metaObject(void) const
+	?CreateCommandL@GlxCommandHandlerDelete@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 22 NONAME ; class CMPXMedia * GlxCommandHandlerDelete::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CreateCommandL@GlxCommandHandlerAddToContainer@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 23 NONAME ; class CMPXMedia * GlxCommandHandlerAddToContainer::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CompletionTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 24 NONAME ; class QString GlxCommandHandlerDelete::CompletionTextL(void) const
+	?DoHandleCommandCompleteL@GlxCommandHandlerNewMedia@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 25 NONAME ; void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
+	??0GlxCommandHandlerComment@@QAE@XZ @ 26 NONAME ; GlxCommandHandlerComment::GlxCommandHandlerComment(void)
+	?GenerateNewMediaItemTitleL@GlxCommandHandlerNewMedia@@ABE?AVQString@@V2@AAVMGlxMediaList@@@Z @ 27 NONAME ; class QString GlxCommandHandlerNewMedia::GenerateNewMediaItemTitleL(class QString, class MGlxMediaList &) const
+	??1GlxCommandHandlerRemoveFrom@@UAE@XZ @ 28 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(void)
+	?qt_metacast@GlxCommandHandlerNewMedia@@UAEPAXPBD@Z @ 29 NONAME ; void * GlxCommandHandlerNewMedia::qt_metacast(char const *)
+	??0GlxCommandHandlerRemoveFrom@@QAE@XZ @ 30 NONAME ; GlxCommandHandlerRemoveFrom::GlxCommandHandlerRemoveFrom(void)
+	?HandleItemAddedL@GlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 31 NONAME ; void GlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *)
+	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 32 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *)
+	?createNewMedia@GlxCommandHandlerAddToContainer@@ABEXXZ @ 33 NONAME ; void GlxCommandHandlerAddToContainer::createNewMedia(void) const
+	?ReadImageOrientationL@GlxCommandHandlerRotate@@AAEGXZ @ 34 NONAME ; unsigned short GlxCommandHandlerRotate::ReadImageOrientationL(void)
+	??_EGlxCommandHandlerComment@@UAE@I@Z @ 35 NONAME ; GlxCommandHandlerComment::~GlxCommandHandlerComment(unsigned int)
+	??1GlxCommandHandlerRotate@@UAE@XZ @ 36 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(void)
+	?CreateCommandL@GlxCommandHandlerRename@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 37 NONAME ; class CMPXMedia * GlxCommandHandlerRename::CreateCommandL(int, class MGlxMediaList &, int &) const
+	??1GlxCommandHandlerNewMedia@@UAE@XZ @ 38 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(void)
+	??_EGlxCommandHandlerNewMedia@@UAE@I@Z @ 39 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(unsigned int)
+	?CompletionTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 40 NONAME ; class QString GlxCommandHandlerRemoveFrom::CompletionTextL(void) const
+	??_EGlxCommandHandlerDelete@@UAE@I@Z @ 41 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(unsigned int)
+	?ProgressTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 42 NONAME ; class QString GlxCommandHandlerDelete::ProgressTextL(void) const
+	?CompletionTextL@GlxCommandHandlerRename@@EBE?AVQString@@XZ @ 43 NONAME ; class QString GlxCommandHandlerRename::CompletionTextL(void) const
+	?staticMetaObject@GlxCommandHandlerNewMedia@@2UQMetaObject@@B @ 44 NONAME ; struct QMetaObject const GlxCommandHandlerNewMedia::staticMetaObject
+	?DestroyExifWriter@GlxCommandHandlerRotate@@AAEXXZ @ 45 NONAME ; void GlxCommandHandlerRotate::DestroyExifWriter(void)
+	??0GlxCommandHandlerDelete@@QAE@XZ @ 46 NONAME ; GlxCommandHandlerDelete::GlxCommandHandlerDelete(void)
+	??1GlxCommandHandlerRename@@UAE@XZ @ 47 NONAME ; GlxCommandHandlerRename::~GlxCommandHandlerRename(void)
+	??0GlxCommandHandlerSend@@QAE@XZ @ 48 NONAME ; GlxCommandHandlerSend::GlxCommandHandlerSend(void)
+	?HandleError@GlxCommandHandlerNewMedia@@MAEXH@Z @ 49 NONAME ; void GlxCommandHandlerNewMedia::HandleError(int)
+	??0GlxCommandHandlerAddToContainer@@QAE@XZ @ 50 NONAME ; GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer(void)
+	??_EGlxCommandHandlerRename@@UAE@I@Z @ 51 NONAME ; GlxCommandHandlerRename::~GlxCommandHandlerRename(unsigned int)
+	?GetName@GlxCommandHandlerComment@@ABE?AVQString@@AAVMGlxMediaList@@@Z @ 52 NONAME ; class QString GlxCommandHandlerComment::GetName(class MGlxMediaList &) const
+	?HandleErrorL@GlxCommandHandlerRename@@EAEXH@Z @ 53 NONAME ; void GlxCommandHandlerRename::HandleErrorL(int)
+	??1GlxCommandHandlerRotateImage@@UAE@XZ @ 54 NONAME ; GlxCommandHandlerRotateImage::~GlxCommandHandlerRotateImage(void)
+	??0GlxCommandHandlerRotateImage@@QAE@XZ @ 55 NONAME ; GlxCommandHandlerRotateImage::GlxCommandHandlerRotateImage(void)
+	??_EGlxCommandHandlerRotate@@UAE@I@Z @ 56 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(unsigned int)
+	??_EGlxCommandHandlerCropImage@@UAE@I@Z @ 57 NONAME ; GlxCommandHandlerCropImage::~GlxCommandHandlerCropImage(unsigned int)
+	?ProgressTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 58 NONAME ; class QString GlxCommandHandlerAddToContainer::ProgressTextL(void) const
+	??1GlxCommandHandlerComment@@UAE@XZ @ 59 NONAME ; GlxCommandHandlerComment::~GlxCommandHandlerComment(void)
+	??1GlxCommandHandlerSend@@UAE@XZ @ 60 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(void)
+	?CompletionTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 61 NONAME ; class QString GlxCommandHandlerAddToContainer::CompletionTextL(void) const
+	??0GlxCommandHandlerNewMedia@@QAE@XZ @ 62 NONAME ; GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia(void)
+	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 63 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *, int)
+	?doHandleUserAction@GlxCommandHandlerSend@@UBEXPAVGlxMediaModel@@V?$QList@VQModelIndex@@@@@Z @ 64 NONAME ; void GlxCommandHandlerSend::doHandleUserAction(class GlxMediaModel *, class QList<class QModelIndex>) const
+	??_EGlxCommandHandlerAddToContainer@@UAE@I@Z @ 65 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(unsigned int)
+	?ProgressTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 66 NONAME ; class QString GlxCommandHandlerNewMedia::ProgressTextL(void) const
+	?ExecuteLD@GlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 67 NONAME ; int GlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &)
+	?CreateCommandL@GlxCommandHandlerRotate@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 68 NONAME ; class CMPXMedia * GlxCommandHandlerRotate::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CreateCommandL@GlxCommandHandlerComment@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 69 NONAME ; class CMPXMedia * GlxCommandHandlerComment::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CompletionTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 70 NONAME ; class QString GlxCommandHandlerNewMedia::CompletionTextL(void) const
+	?executeCommand@GlxCommandHandlerRotateImage@@UAEXHHV?$QList@VQModelIndex@@@@@Z @ 71 NONAME ; void GlxCommandHandlerRotateImage::executeCommand(int, int, class QList<class QModelIndex>)
+	??_EGlxCommandHandlerRotateImage@@UAE@I@Z @ 72 NONAME ; GlxCommandHandlerRotateImage::~GlxCommandHandlerRotateImage(unsigned int)
+	?CreateCommandL@GlxCommandHandlerRemoveFrom@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 73 NONAME ; class CMPXMedia * GlxCommandHandlerRemoveFrom::CreateCommandL(int, class MGlxMediaList &, int &) const
+	?CalculateFinalOrientationL@GlxCommandHandlerRotate@@AAEGG@Z @ 74 NONAME ; unsigned short GlxCommandHandlerRotate::CalculateFinalOrientationL(unsigned short)
+	?InitializeExifWriterL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 75 NONAME ; void GlxCommandHandlerRotate::InitializeExifWriterL(class TBuf<256>)
+	??1GlxCommandHandlerDelete@@UAE@XZ @ 76 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void)
+	?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 77 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const
+	??0GlxCommandHandlerCropImage@@QAE@XZ @ 78 NONAME ; GlxCommandHandlerCropImage::GlxCommandHandlerCropImage(void)
+	??0GlxCommandHandlerRotate@@QAE@XZ @ 79 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void)
 
--- a/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -45,6 +45,7 @@
 TARGET.UID3 = 0x20000A11
 TARGET.CAPABILITY = ALL -TCB
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE 
 }
 
 
--- a/ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -64,6 +64,7 @@
 void GlxMpxCommandHandler::executeCommand(int commandId, int collectionId,QList<QModelIndex>  indexList)
     {
     OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_ENTRY );
+    Q_UNUSED(indexList);
     int aHierarchyId = 0;
     TGlxFilterItemType aFilterType = EGlxFilterImage;
 
@@ -349,7 +350,8 @@
         // @todo error received. Close progress note 
         DismissProgressNoteL();
         iMediaList->RemoveMediaListObserver(this);
-
+        iMediaList->Close();
+        iMediaList = NULL;
         // handle error
         HandleErrorL(aErrorCode);
         }
@@ -357,6 +359,8 @@
         {
         DismissProgressNoteL();
         iMediaList->RemoveMediaListObserver(this);
+        iMediaList->Close();
+        iMediaList = NULL;
         CompletionNoteL();
         iProgressComplete = EFalse;
         }
@@ -478,7 +482,8 @@
             // 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));
+            QString localisedString  = qtText.arg(qtItemName);
+            qtText = localisedString;          
             }
             // (else) If error, assume confirmed anyway
         CleanupStack::PopAndDestroy(attributeContext);
--- a/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -40,6 +40,7 @@
 TARGET.UID3 = 0x20000A0D
 TARGET.CAPABILITY = ALL -TCB 
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE 
 }
 
 LIBS += -lglxcommandhandlerbase.dll \
@@ -54,7 +55,11 @@
 	-lfbscli.dll \
 	-lbafl.dll \
 	-lefsrv.dll \
-	-lcaf.dll
+	-lcaf.dll \
+        -lxqservice.dll \
+	-lxqserviceutil.dll \
+	-lglxmediamodel.dll
+
 
 # Input
 HEADERS += inc/glxcommandhandlerdelete.h
@@ -66,7 +71,8 @@
 HEADERS += inc/glxcommandhandlerrename.h
 HEADERS += inc/glxcommondialogs.h
 HEADERS += inc/glxcommandhandlercomment.h
-
+HEADERS += inc/glxcommandhandlercropimage.h
+HEADERS += inc/glxcommandhandlerrotateimage.h
 
 SOURCES += src/glxcommandhandlerdelete.cpp
 SOURCES += src/glxcommandhandleraddtocontainer.cpp
@@ -77,6 +83,8 @@
 SOURCES += src/glxcommandhandlerrename.cpp
 SOURCES += src/glxcommondialogs.cpp
 SOURCES += src/glxcommandhandlercomment.cpp
+SOURCES += src/glxcommandhandlercropimage.cpp
+SOURCES += src/glxcommandhandlerrotateimage.cpp
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
 
--- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlercomment.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlercomment.h	Tue Jul 06 14:16:16 2010 +0300
@@ -36,7 +36,7 @@
 private:
     QString CompletionTextL() const;
     QString GetName(MGlxMediaList& aMediaList) const;
-	void HandleErrorL(TInt aErrorCode);
+
 	};
 
 #endif // GLXCOMMANDHANDLERCOMMENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlercropimage.h	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* 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 GLXCOMMANDHANDLERCROPIMAGE_H_
+#define GLXCOMMANDHANDLERCROPIMAGE_H_
+
+
+#include "glxmodelcommandhandler.h"
+#include <xqappmgr.h>               // for XQApplicationManager
+
+#ifdef BUILD_COMMONCOMMANDHANDLERS
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_EXPORT
+#else
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT
+#endif
+
+//Forward Declaration
+class XQAiwRequest;
+
+class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerCropImage : public GlxModelCommandHandler
+{
+  
+public:
+    GlxCommandHandlerCropImage();
+    ~GlxCommandHandlerCropImage();
+    void doHandleUserAction(GlxMediaModel* model,QList<QModelIndex> indexList) const ;
+
+private:
+    mutable XQAiwRequest* mReq;
+    mutable XQApplicationManager mAppmgr;
+};
+
+
+#endif /* GLXCOMMANDHANDLERCROPIMAGE_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerrotateimage.h	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* 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 GLXCOMMANDHANDLERROTATEIMAGE_H_
+#define GLXCOMMANDHANDLERROTATEIMAGE_H_
+
+
+#include <glxmodelcommandhandler.h>
+#include <xqappmgr.h>               // for XQApplicationManager
+
+#ifdef BUILD_COMMONCOMMANDHANDLERS
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_EXPORT
+#else
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT
+#endif
+
+//Forward Declaration
+class XQAiwRequest;
+
+class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerRotateImage : public GlxModelCommandHandler
+{
+  
+public:
+    GlxCommandHandlerRotateImage();
+    ~GlxCommandHandlerRotateImage();
+    void executeCommand(int commandId,int collectionId, QList<QModelIndex> indexList = QList<QModelIndex>() );
+    void doHandleUserAction(GlxMediaModel* model,QList<QModelIndex> indexList) const ;
+
+private:
+    XQAiwRequest* mReq;
+    XQApplicationManager mAppmgr;
+};
+
+
+#endif /* GLXCOMMANDHANDLERROTATEIMAGE_H_ */
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -88,9 +88,11 @@
     connect( mSelectionModel, SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection& ) ), this, SLOT( changeButtonText() ) );
     
     HbAction *primary = new HbAction( "New" );
+    primary->setObjectName( "Cmd New" );
     popup.addAction( primary ) ;
 
     HbAction *secondary = new HbAction( GLX_BUTTON_CANCEL );
+    secondary->setObjectName( "Cmd Cancel" );
     popup.addAction( secondary );
     
     popup.setContentWidget( listview ); //ownership transfer
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -147,15 +147,4 @@
     return title;
     }
 
-void GlxCommandHandlerComment::HandleErrorL(TInt aErrorCode)
-	{
-    if(aErrorCode == KErrAlreadyExists)
-        {
-        HbMessageBox::warning("Name Already Exist!!!", new HbLabel(
-                "Rename"));
-        }
-	else{
-		GlxMpxCommandHandler::HandleErrorL(aErrorCode);
-		}	
-	}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercropimage.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* 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 "glxcommandhandlercropimage.h"
+
+#include <glxcommandfactory.h>
+#include <photoeditor_highway.hrh>
+#include <glxcommandhandlers.hrh>
+#include <XQServiceRequest.h>
+#include <XQAiwRequest.h>
+#include <glxmodelparm.h>
+#include <glxmediamodel.h>
+
+
+GlxCommandHandlerCropImage::GlxCommandHandlerCropImage() : mReq(NULL)
+    {
+    //Nothing to do here for now
+    }
+
+GlxCommandHandlerCropImage::~GlxCommandHandlerCropImage()
+    {
+    delete mReq;
+    mReq = NULL;
+    }
+
+void GlxCommandHandlerCropImage::doHandleUserAction(GlxMediaModel* model,
+        QList<QModelIndex> /*indexList*/) const
+    {
+    const QString interface = QLatin1String("com.nokia.symbian.imageeditor");
+    const QString operation = QLatin1String("view(QString,int)");
+    const QString service = QLatin1String("PhotoEditor");
+    
+    if(mReq == NULL)
+        {
+        //Connect to service provider    
+        mReq = mAppmgr.create(service, interface, operation, true);
+        mReq->setEmbedded(true);
+        mReq->setSynchronous(true);
+        }
+    
+    if(mReq == NULL)
+        {
+        qDebug("QtSamplePhotos::launchPhotoEditor request not Created");
+        return;
+        }
+    
+    //Get the file path for the item selected
+    QString imagePath = (model->data(model->index(model->data(model->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
+       
+    QList<QVariant> args;
+    args << imagePath;
+    args << EEditorHighwayFreeCrop;
+    mReq->setArguments(args);
+    
+    // Send the request
+    bool res = mReq->send();
+    if  (!res) 
+        {
+       // Request failed. 
+        qDebug("QtSamplePhotos::launchPhotoEditor request cannot be send");
+        }
+    
+    }
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -15,10 +15,13 @@
 *
 */
 
+#include "glxlocalisationstrings.h"
+
 #include <mpxcollectionpath.h>
 #include <mglxmedialist.h>
 #include <glxcommandfactory.h>
 #include <glxcommandhandlerdelete.h>
+
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "glxcommandhandlerdeleteTraces.h"
@@ -71,7 +74,8 @@
         }
     else
         {
-        retString = QString("Delete ");
+         
+        retString = GLX_DIALOG_DELETE_ONE_ITEM ;
         }
     return  retString;   
     }    
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -28,6 +28,8 @@
 #include <hbinputdialog.h>
 #include <hblabel.h>
 #include <hbmessagebox.h>
+
+#include "glxlocalisationstrings.h"
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "glxcommandhandlernewmediaTraces.h"
@@ -61,12 +63,11 @@
     CMPXCollectionPath* path = aMediaList.PathLC(NGlxListDefs::EPathParent);
     CMPXCommand* command = NULL;
    
-    QString title("NEW MEDIA");
-    QString mainPane = GenerateNewMediaItemTitleL("Album",aMediaList);
+    QString mainPane = GenerateNewMediaItemTitleL(GLX_DIALOG_ALBUM_NAME_DEFAULT,aMediaList);
     bool ok = false;
 	QString mediaTitle = NULL;
     GlxTextInputDialog* dlg = new GlxTextInputDialog();
-    mediaTitle = dlg->getText(title, mainPane, &ok);
+    mediaTitle = dlg->getText(GLX_DIALOG_NAME_PROMPT, mainPane, &ok);
     delete dlg;
     iNewMediaCreationError = KErrNone;
     if (ok == true)
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrename.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrename.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -26,6 +26,7 @@
 #include <glxattributeretriever.h>
 #include <glxfetchcontextremover.h>
 #include <glxcommondialogs.h>
+#include "glxlocalisationstrings.h"
 
 GlxCommandHandlerRename::GlxCommandHandlerRename()
     {
@@ -43,11 +44,10 @@
     
     CMPXCommand* command = NULL;
     QString mainPane = GetName(aMediaList);
-    QString title("Rename");
     QString mediaTitle = NULL;
     bool ok = false;    
     GlxTextInputDialog* dlg = new GlxTextInputDialog();
-    mediaTitle = dlg->getText(title, mainPane, &ok);
+    mediaTitle = dlg->getText(GLX_DIALOG_NAME_PROMPT, mainPane, &ok);
     delete dlg;
 
     if(ok == true)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotateimage.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* 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 <glxcommandfactory.h>
+#include <photoeditor_highway.hrh>
+#include "glxcommandhandlerrotateimage.h"
+#include <glxcommandhandlers.hrh>
+#include <glxmodelparm.h>
+#include <glxmediamodel.h>
+#include <XQServiceRequest.h>
+#include <XQAiwRequest.h>
+
+GlxCommandHandlerRotateImage::GlxCommandHandlerRotateImage() : mReq(NULL)
+    {
+    //Nothing to do here
+    }
+
+GlxCommandHandlerRotateImage::~GlxCommandHandlerRotateImage()
+    {
+    delete mReq;
+    mReq = NULL;
+    }
+
+void GlxCommandHandlerRotateImage::executeCommand(int commandId,int collectionId, QList<QModelIndex> /*indexList*/)
+//void GlxCommandHandlerRotateImage::doHandleUserAction(GlxMediaModel* model,QList<QModelIndex> indexList) const
+    {
+    const QString service = QLatin1String("PhotoEditor");
+    const QString interface = QLatin1String("com.nokia.symbian.imageeditor");
+    const QString operation = QLatin1String("view(QString,int)");
+    
+    //Connect to service provider
+    if(mReq == NULL)
+        {
+        mReq = mAppmgr.create(service, interface, operation, true);
+        mReq->setEmbedded(true);
+        mReq->setSynchronous(true);
+        }
+    
+    if(mReq == NULL)
+        {
+        return;
+        }
+
+    GlxModelParm modelParm (collectionId, 0);
+    GlxMediaModel* mediaModel = new GlxMediaModel (modelParm);
+    
+    //Get the file path for the item selected
+    QString imagePath = (mediaModel->data(mediaModel->index(mediaModel->data(mediaModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
+    delete mediaModel;
+    
+    QList<QVariant> args;
+    args << imagePath;
+    if(EGlxCmdRotateImgCW == commandId)
+        {
+        args << EEditorHighwayRotateCW;
+        }
+    else // if(EGlxCmdRotateImgCCW == aCommandId)
+        {
+        args << EEditorHighwayRotateCCW;
+        }
+    mReq->setArguments(args);
+    
+    // Send the request
+    bool res = mReq->send();
+    if  (!res) 
+        {
+       // Request failed. 
+        qDebug("QtSamplePhotos::launchPhotoEditor request cannot be send");
+        }
+    }
+
+void GlxCommandHandlerRotateImage::doHandleUserAction(GlxMediaModel* /*model*/,QList<QModelIndex> /*indexList*/) const 
+    {
+    //Dummy, to keepup with compiler errore
+    }
--- a/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -27,77 +27,93 @@
 	_ZN23GlxCommandHandlerRotateD0Ev @ 26 NONAME
 	_ZN23GlxCommandHandlerRotateD1Ev @ 27 NONAME
 	_ZN23GlxCommandHandlerRotateD2Ev @ 28 NONAME
-	_ZN24GlxCommandHandlerComment12HandleErrorLEi @ 29 NONAME
-	_ZN24GlxCommandHandlerCommentC1Ev @ 30 NONAME
-	_ZN24GlxCommandHandlerCommentC2Ev @ 31 NONAME
-	_ZN24GlxCommandHandlerCommentD0Ev @ 32 NONAME
-	_ZN24GlxCommandHandlerCommentD1Ev @ 33 NONAME
-	_ZN24GlxCommandHandlerCommentD2Ev @ 34 NONAME
-	_ZN25GlxCommandHandlerNewMedia11HandleErrorEi @ 35 NONAME
-	_ZN25GlxCommandHandlerNewMedia11qt_metacallEN11QMetaObject4CallEiPPv @ 36 NONAME
-	_ZN25GlxCommandHandlerNewMedia11qt_metacastEPKc @ 37 NONAME
-	_ZN25GlxCommandHandlerNewMedia12HandleErrorLEi @ 38 NONAME
-	_ZN25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 39 NONAME
-	_ZN25GlxCommandHandlerNewMedia16staticMetaObjectE @ 40 NONAME DATA 16
-	_ZN25GlxCommandHandlerNewMedia19getStaticMetaObjectEv @ 41 NONAME
-	_ZN25GlxCommandHandlerNewMedia24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 42 NONAME
-	_ZN25GlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 43 NONAME
-	_ZN25GlxCommandHandlerNewMediaC1Ev @ 44 NONAME
-	_ZN25GlxCommandHandlerNewMediaC2Ev @ 45 NONAME
-	_ZN25GlxCommandHandlerNewMediaD0Ev @ 46 NONAME
-	_ZN25GlxCommandHandlerNewMediaD1Ev @ 47 NONAME
-	_ZN25GlxCommandHandlerNewMediaD2Ev @ 48 NONAME
-	_ZN27GlxCommandHandlerRemoveFromC1Ev @ 49 NONAME
-	_ZN27GlxCommandHandlerRemoveFromC2Ev @ 50 NONAME
-	_ZN27GlxCommandHandlerRemoveFromD0Ev @ 51 NONAME
-	_ZN27GlxCommandHandlerRemoveFromD1Ev @ 52 NONAME
-	_ZN27GlxCommandHandlerRemoveFromD2Ev @ 53 NONAME
-	_ZN31GlxCommandHandlerAddToContainer15iSelectionCountE @ 54 NONAME DATA 4
-	_ZN31GlxCommandHandlerAddToContainerC1Ev @ 55 NONAME
-	_ZN31GlxCommandHandlerAddToContainerC2Ev @ 56 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD0Ev @ 57 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD1Ev @ 58 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD2Ev @ 59 NONAME
-	_ZNK21GlxCommandHandlerSend18doHandleUserActionEP13GlxMediaModel5QListI11QModelIndexE @ 60 NONAME
-	_ZNK23GlxCommandHandlerDelete13ProgressTextLEv @ 61 NONAME
-	_ZNK23GlxCommandHandlerDelete14CreateCommandLEiR13MGlxMediaListRi @ 62 NONAME
-	_ZNK23GlxCommandHandlerDelete15CompletionTextLEv @ 63 NONAME
-	_ZNK23GlxCommandHandlerDelete17ConfirmationTextLEb @ 64 NONAME
-	_ZNK23GlxCommandHandlerRename14CreateCommandLEiR13MGlxMediaListRi @ 65 NONAME
-	_ZNK23GlxCommandHandlerRename15CompletionTextLEv @ 66 NONAME
-	_ZNK23GlxCommandHandlerRename7GetNameER13MGlxMediaList @ 67 NONAME
-	_ZNK23GlxCommandHandlerRotate14CreateCommandLEiR13MGlxMediaListRi @ 68 NONAME
-	_ZNK24GlxCommandHandlerComment14CreateCommandLEiR13MGlxMediaListRi @ 69 NONAME
-	_ZNK24GlxCommandHandlerComment15CompletionTextLEv @ 70 NONAME
-	_ZNK24GlxCommandHandlerComment7GetNameER13MGlxMediaList @ 71 NONAME
-	_ZNK25GlxCommandHandlerNewMedia10metaObjectEv @ 72 NONAME
-	_ZNK25GlxCommandHandlerNewMedia13ProgressTextLEv @ 73 NONAME
-	_ZNK25GlxCommandHandlerNewMedia14CreateCommandLEiR13MGlxMediaListRi @ 74 NONAME
-	_ZNK25GlxCommandHandlerNewMedia15CompletionTextLEv @ 75 NONAME
-	_ZNK25GlxCommandHandlerNewMedia26GenerateNewMediaItemTitleLE7QStringR13MGlxMediaList @ 76 NONAME
-	_ZNK27GlxCommandHandlerRemoveFrom13ProgressTextLEv @ 77 NONAME
-	_ZNK27GlxCommandHandlerRemoveFrom14CreateCommandLEiR13MGlxMediaListRi @ 78 NONAME
-	_ZNK27GlxCommandHandlerRemoveFrom15CompletionTextLEv @ 79 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer13ProgressTextLEv @ 80 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer14CreateCommandLEiR13MGlxMediaListRi @ 81 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer14createNewMediaEv @ 82 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer15CompletionTextLEv @ 83 NONAME
-	_ZTI21GlxCommandHandlerSend @ 84 NONAME
-	_ZTI23GlxCommandHandlerDelete @ 85 NONAME
-	_ZTI23GlxCommandHandlerRename @ 86 NONAME
-	_ZTI23GlxCommandHandlerRotate @ 87 NONAME
-	_ZTI24GlxCommandHandlerComment @ 88 NONAME
-	_ZTI25GlxCommandHandlerNewMedia @ 89 NONAME
-	_ZTI27GlxCommandHandlerRemoveFrom @ 90 NONAME
-	_ZTI31GlxCommandHandlerAddToContainer @ 91 NONAME
-	_ZTV21GlxCommandHandlerSend @ 92 NONAME
-	_ZTV23GlxCommandHandlerDelete @ 93 NONAME
-	_ZTV23GlxCommandHandlerRename @ 94 NONAME
-	_ZTV23GlxCommandHandlerRotate @ 95 NONAME
-	_ZTV24GlxCommandHandlerComment @ 96 NONAME
-	_ZTV25GlxCommandHandlerNewMedia @ 97 NONAME
-	_ZTV27GlxCommandHandlerRemoveFrom @ 98 NONAME
-	_ZTV31GlxCommandHandlerAddToContainer @ 99 NONAME
-	_ZThn8_N25GlxCommandHandlerNewMedia11HandleErrorEi @ 100 NONAME
-	_ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 101 NONAME
+	_ZN24GlxCommandHandlerCommentC1Ev @ 29 NONAME
+	_ZN24GlxCommandHandlerCommentC2Ev @ 30 NONAME
+	_ZN24GlxCommandHandlerCommentD0Ev @ 31 NONAME
+	_ZN24GlxCommandHandlerCommentD1Ev @ 32 NONAME
+	_ZN24GlxCommandHandlerCommentD2Ev @ 33 NONAME
+	_ZN25GlxCommandHandlerNewMedia11HandleErrorEi @ 34 NONAME
+	_ZN25GlxCommandHandlerNewMedia11qt_metacallEN11QMetaObject4CallEiPPv @ 35 NONAME
+	_ZN25GlxCommandHandlerNewMedia11qt_metacastEPKc @ 36 NONAME
+	_ZN25GlxCommandHandlerNewMedia12HandleErrorLEi @ 37 NONAME
+	_ZN25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 38 NONAME
+	_ZN25GlxCommandHandlerNewMedia16staticMetaObjectE @ 39 NONAME DATA 16
+	_ZN25GlxCommandHandlerNewMedia19getStaticMetaObjectEv @ 40 NONAME
+	_ZN25GlxCommandHandlerNewMedia24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 41 NONAME
+	_ZN25GlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 42 NONAME
+	_ZN25GlxCommandHandlerNewMediaC1Ev @ 43 NONAME
+	_ZN25GlxCommandHandlerNewMediaC2Ev @ 44 NONAME
+	_ZN25GlxCommandHandlerNewMediaD0Ev @ 45 NONAME
+	_ZN25GlxCommandHandlerNewMediaD1Ev @ 46 NONAME
+	_ZN25GlxCommandHandlerNewMediaD2Ev @ 47 NONAME
+	_ZN26GlxCommandHandlerCropImageC1Ev @ 48 NONAME
+	_ZN26GlxCommandHandlerCropImageC2Ev @ 49 NONAME
+	_ZN26GlxCommandHandlerCropImageD0Ev @ 50 NONAME
+	_ZN26GlxCommandHandlerCropImageD1Ev @ 51 NONAME
+	_ZN26GlxCommandHandlerCropImageD2Ev @ 52 NONAME
+	_ZN27GlxCommandHandlerRemoveFromC1Ev @ 53 NONAME
+	_ZN27GlxCommandHandlerRemoveFromC2Ev @ 54 NONAME
+	_ZN27GlxCommandHandlerRemoveFromD0Ev @ 55 NONAME
+	_ZN27GlxCommandHandlerRemoveFromD1Ev @ 56 NONAME
+	_ZN27GlxCommandHandlerRemoveFromD2Ev @ 57 NONAME
+	_ZN28GlxCommandHandlerRotateImage14executeCommandEii5QListI11QModelIndexE @ 58 NONAME
+	_ZN28GlxCommandHandlerRotateImageC1Ev @ 59 NONAME
+	_ZN28GlxCommandHandlerRotateImageC2Ev @ 60 NONAME
+	_ZN28GlxCommandHandlerRotateImageD0Ev @ 61 NONAME
+	_ZN28GlxCommandHandlerRotateImageD1Ev @ 62 NONAME
+	_ZN28GlxCommandHandlerRotateImageD2Ev @ 63 NONAME
+	_ZN31GlxCommandHandlerAddToContainer15iSelectionCountE @ 64 NONAME DATA 4
+	_ZN31GlxCommandHandlerAddToContainerC1Ev @ 65 NONAME
+	_ZN31GlxCommandHandlerAddToContainerC2Ev @ 66 NONAME
+	_ZN31GlxCommandHandlerAddToContainerD0Ev @ 67 NONAME
+	_ZN31GlxCommandHandlerAddToContainerD1Ev @ 68 NONAME
+	_ZN31GlxCommandHandlerAddToContainerD2Ev @ 69 NONAME
+	_ZNK21GlxCommandHandlerSend18doHandleUserActionEP13GlxMediaModel5QListI11QModelIndexE @ 70 NONAME
+	_ZNK23GlxCommandHandlerDelete13ProgressTextLEv @ 71 NONAME
+	_ZNK23GlxCommandHandlerDelete14CreateCommandLEiR13MGlxMediaListRi @ 72 NONAME
+	_ZNK23GlxCommandHandlerDelete15CompletionTextLEv @ 73 NONAME
+	_ZNK23GlxCommandHandlerDelete17ConfirmationTextLEb @ 74 NONAME
+	_ZNK23GlxCommandHandlerRename14CreateCommandLEiR13MGlxMediaListRi @ 75 NONAME
+	_ZNK23GlxCommandHandlerRename15CompletionTextLEv @ 76 NONAME
+	_ZNK23GlxCommandHandlerRename7GetNameER13MGlxMediaList @ 77 NONAME
+	_ZNK23GlxCommandHandlerRotate14CreateCommandLEiR13MGlxMediaListRi @ 78 NONAME
+	_ZNK24GlxCommandHandlerComment14CreateCommandLEiR13MGlxMediaListRi @ 79 NONAME
+	_ZNK24GlxCommandHandlerComment15CompletionTextLEv @ 80 NONAME
+	_ZNK24GlxCommandHandlerComment7GetNameER13MGlxMediaList @ 81 NONAME
+	_ZNK25GlxCommandHandlerNewMedia10metaObjectEv @ 82 NONAME
+	_ZNK25GlxCommandHandlerNewMedia13ProgressTextLEv @ 83 NONAME
+	_ZNK25GlxCommandHandlerNewMedia14CreateCommandLEiR13MGlxMediaListRi @ 84 NONAME
+	_ZNK25GlxCommandHandlerNewMedia15CompletionTextLEv @ 85 NONAME
+	_ZNK25GlxCommandHandlerNewMedia26GenerateNewMediaItemTitleLE7QStringR13MGlxMediaList @ 86 NONAME
+	_ZNK26GlxCommandHandlerCropImage18doHandleUserActionEP13GlxMediaModel5QListI11QModelIndexE @ 87 NONAME
+	_ZNK27GlxCommandHandlerRemoveFrom13ProgressTextLEv @ 88 NONAME
+	_ZNK27GlxCommandHandlerRemoveFrom14CreateCommandLEiR13MGlxMediaListRi @ 89 NONAME
+	_ZNK27GlxCommandHandlerRemoveFrom15CompletionTextLEv @ 90 NONAME
+	_ZNK28GlxCommandHandlerRotateImage18doHandleUserActionEP13GlxMediaModel5QListI11QModelIndexE @ 91 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer13ProgressTextLEv @ 92 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer14CreateCommandLEiR13MGlxMediaListRi @ 93 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer14createNewMediaEv @ 94 NONAME
+	_ZNK31GlxCommandHandlerAddToContainer15CompletionTextLEv @ 95 NONAME
+	_ZTI21GlxCommandHandlerSend @ 96 NONAME
+	_ZTI23GlxCommandHandlerDelete @ 97 NONAME
+	_ZTI23GlxCommandHandlerRename @ 98 NONAME
+	_ZTI23GlxCommandHandlerRotate @ 99 NONAME
+	_ZTI24GlxCommandHandlerComment @ 100 NONAME
+	_ZTI25GlxCommandHandlerNewMedia @ 101 NONAME
+	_ZTI26GlxCommandHandlerCropImage @ 102 NONAME
+	_ZTI27GlxCommandHandlerRemoveFrom @ 103 NONAME
+	_ZTI28GlxCommandHandlerRotateImage @ 104 NONAME
+	_ZTI31GlxCommandHandlerAddToContainer @ 105 NONAME
+	_ZTV21GlxCommandHandlerSend @ 106 NONAME
+	_ZTV23GlxCommandHandlerDelete @ 107 NONAME
+	_ZTV23GlxCommandHandlerRename @ 108 NONAME
+	_ZTV23GlxCommandHandlerRotate @ 109 NONAME
+	_ZTV24GlxCommandHandlerComment @ 110 NONAME
+	_ZTV25GlxCommandHandlerNewMedia @ 111 NONAME
+	_ZTV26GlxCommandHandlerCropImage @ 112 NONAME
+	_ZTV27GlxCommandHandlerRemoveFrom @ 113 NONAME
+	_ZTV28GlxCommandHandlerRotateImage @ 114 NONAME
+	_ZTV31GlxCommandHandlerAddToContainer @ 115 NONAME
+	_ZThn8_N25GlxCommandHandlerNewMedia11HandleErrorEi @ 116 NONAME
+	_ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 117 NONAME
 
--- a/ui/detailscustomwidget/detailsdescriptionedit/detailsdescriptionedit.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/detailscustomwidget/detailsdescriptionedit/detailsdescriptionedit.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -46,6 +46,7 @@
     TARGET.UID3 = 0x200071B9
     TARGET.EPOCALLOWDLLDATA = 1
     TARGET.CAPABILITY = CAP_GENERAL_DLL
+    MMP_RULES += SMPSAFE 
     LIBS += -lbafl
 }
 
--- a/ui/detailscustomwidget/detailsdescriptioneditplugin/detailsdescriptioneditplugin.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/detailscustomwidget/detailsdescriptioneditplugin/detailsdescriptioneditplugin.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -49,6 +49,8 @@
     TARGET.UID3 = 0x2000A774
 	TARGET.EPOCALLOWDLLDATA=1
 	TARGET.CAPABILITY = CAP_GENERAL_DLL
+	MMP_RULES += SMPSAFE 
+	
 	  
 	LIBS += \
 	    -ldetailsdescriptionedit.dll
--- a/ui/detailscustomwidget/detailsnamelabel/detailsnamelabel.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/detailscustomwidget/detailsnamelabel/detailsnamelabel.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -45,6 +45,8 @@
     TARGET.UID3 = 0x2000A7BC
     TARGET.EPOCALLOWDLLDATA = 1
     TARGET.CAPABILITY = CAP_GENERAL_DLL
+    MMP_RULES += SMPSAFE 
+    
     LIBS += -lbafl
 }
 
--- a/ui/detailscustomwidget/detailsnamelabelplugin/detailsnamelabelplugin.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/detailscustomwidget/detailsnamelabelplugin/detailsnamelabelplugin.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -49,6 +49,8 @@
     TARGET.UID3 = 0x200071B7
 	TARGET.EPOCALLOWDLLDATA=1
 	TARGET.CAPABILITY = CAP_GENERAL_DLL
+	MMP_RULES += SMPSAFE 
+	
 	  
 	LIBS += \
 	    -ldetailsnamelabel.dll
--- a/ui/inc/glxcommandhandlers.hrh	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/inc/glxcommandhandlers.hrh	Tue Jul 06 14:16:16 2010 +0300
@@ -116,6 +116,9 @@
     EGlxCmdContextRename,
     EGlxCmdSetupItem,
     EGlxCmdComment,
+    EGlxCmdRotateImgCW,
+    EGlxCmdRotateImgCCW,
+    EGlxCmdRotateImgCrop,
     EGlxCmdAiwBase = 0x6000
     };
 
--- a/ui/inc/glxmodelroles.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/inc/glxmodelroles.h	Tue Jul 06 14:16:16 2010 +0300
@@ -44,7 +44,8 @@
 	GlxTimeRole,                        //to get the time image was modified
 	GlxSizeRole,                         //to get the size of the image
 	GlxDescRole,                         //to get the description of the images
-	GlxRemoveContextRole                 //to remove the context
+	GlxRemoveContextRole,                 //to remove the context
+	GlxTempVisualWindowIndex              //to store the visual index obtained from AM temporarily
 };
 
 
--- a/ui/inc/glxuistd.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/inc/glxuistd.h	Tue Jul 06 14:16:16 2010 +0300
@@ -60,6 +60,7 @@
     FLIP_EFFECT,
     SMOOTH_FADE,
     ZOOM_TO_FACE,
+    HELIX_EFFECT,
     TRANSITION_EFFECT,
     FADE_EFFECT,
     GRID_TO_FULLSCREEN,
@@ -128,5 +129,9 @@
 // video playback view UID
 const TInt KGlxVideoPlaybackviewPlugin = 0x2000A7B3;
 
+//Constants for ci_photos.confml
+const TUint32 KGlxCi_UidGallery = 0x20007193;
+const TInt KGlxOperatorLink  = 0x1;
+const TInt KGlxOvi  = 0x2;
 
 #endif  // GLXUISTD_H
--- a/ui/inc/glxviewids.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/inc/glxviewids.h	Tue Jul 06 14:16:16 2010 +0300
@@ -28,26 +28,42 @@
 #define GLX_SLIDESHOWSETTINGSVIEW_ID 0x12121217
 
 
+/* 
+ * For the non ui component, only sub state is expose in the model 
+ * so it is required to have unique substrate of states 
+ * Add the new sub state in between NO and Max 
+ * and take care uniqueness of all these substrate
+ */
 typedef enum 
 {
-    NO_GRID_S,
+    NO_GRID_S = 0,
     ALL_ITEM_S,
-    ALBUM_ITEM_S,
+    ALBUM_ITEM_S,    
+    MAX_GRID_S
 } GridState;
 
 typedef enum 
 {
-    NO_FULLSCREEN_S,
+    NO_FULLSCREEN_S = MAX_GRID_S + 1,
     EXTERNAL_S,
     IMAGEVIEWER_S,
-	FETCHER_S
+	FETCHER_S,  
+	MAX_FULLSCREEN_S
 } FullScreenState;
 
 typedef enum 
 {
-    NO_SLIDESHOW_S,
+    NO_SLIDESHOW_S = MAX_FULLSCREEN_S + 1,
     SLIDESHOW_GRID_ITEM_S,
     SLIDESHOW_ALBUM_ITEM_S,
+    MAX_SLIDESHOW_S 
 } SlideShowState;
 
+typedef enum
+{
+    NO_DETAIL_S = MAX_SLIDESHOW_S + 1,
+    IMAGEVIEWER_DETAIL_S,
+    MAX_DETAIL_S
+} DetailState;
+
 #endif /* GLXVIEWIDS_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/uiengine/bwins/glxdrmutilitywrapperu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,7 @@
+EXPORTS
+	??1GlxDRMUtilityWrapper@@QAE@XZ @ 1 NONAME ; GlxDRMUtilityWrapper::~GlxDRMUtilityWrapper(void)
+	?ItemRightsValidityCheck@GlxDRMUtilityWrapper@@QAE_NVQString@@_N@Z @ 2 NONAME ; bool GlxDRMUtilityWrapper::ItemRightsValidityCheck(class QString, bool)
+	??0GlxDRMUtilityWrapper@@QAE@XZ @ 3 NONAME ; GlxDRMUtilityWrapper::GlxDRMUtilityWrapper(void)
+	?ConsumeRights@GlxDRMUtilityWrapper@@QAE_NVQString@@@Z @ 4 NONAME ; bool GlxDRMUtilityWrapper::ConsumeRights(class QString)
+	?ShowRightsInfo@GlxDRMUtilityWrapper@@QAEXVQString@@@Z @ 5 NONAME ; void GlxDRMUtilityWrapper::ShowRightsInfo(class QString)
+
--- a/ui/uiengine/bwins/glxmedialistwrapperu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/bwins/glxmedialistwrapperu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -54,4 +54,7 @@
 	?removeContextMode@GlxMLWrapper@@QAEXW4GlxContextMode@@@Z @ 53 NONAME ; void GlxMLWrapper::removeContextMode(enum GlxContextMode)
 	?updateDetails@GlxMLWrapper@@IAEXXZ @ 54 NONAME ; void GlxMLWrapper::updateDetails(void)
 	?handleDetailsItemAvailable@GlxMLWrapper@@QAEXH@Z @ 55 NONAME ; void GlxMLWrapper::handleDetailsItemAvailable(int)
+	?setDrmValid@GlxMLWrapper@@QAEXH_N@Z @ 56 NONAME ; void GlxMLWrapper::setDrmValid(int, bool)
+	?IsDrmProtected@GlxMLWrapper@@QAE_NH@Z @ 57 NONAME ; bool GlxMLWrapper::IsDrmProtected(int)
+	?IsDrmValid@GlxMLWrapper@@QAE_NH@Z @ 58 NONAME ; bool GlxMLWrapper::IsDrmValid(int)
 
--- a/ui/uiengine/drmutility/bwins/glxdrmutilityu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/drmutility/bwins/glxdrmutilityu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -1,15 +1,21 @@
 EXPORTS
-	?CanSetAsAutomatedL@CGlxDRMUtility@@QAEHABVTDesC16@@W4TGlxDrmAutomatedType@@@Z @ 1 NONAME ; int CGlxDRMUtility::CanSetAsAutomatedL(class TDesC16 const &, enum TGlxDrmAutomatedType)
-	?CanShowInfoOnlineL@CGlxDRMUtility@@QAEHAAVTDesC16@@@Z @ 2 NONAME ; int CGlxDRMUtility::CanShowInfoOnlineL(class TDesC16 &)
-	?CheckDisplayRightsL@CGlxDRMUtility@@QAEHABVTDesC16@@H@Z @ 3 NONAME ; int CGlxDRMUtility::CheckDisplayRightsL(class TDesC16 const &, int)
-	?CheckOpenRightsL@CGlxDRMUtility@@QAEHABVTDesC16@@H@Z @ 4 NONAME ; int CGlxDRMUtility::CheckOpenRightsL(class TDesC16 const &, int)
-	?Close@CGlxDRMUtility@@QAEXXZ @ 5 NONAME ; void CGlxDRMUtility::Close(void)
-	?ConsumeRightsL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 6 NONAME ; int CGlxDRMUtility::ConsumeRightsL(class TDesC16 const &)
-	?DRMThumbnailSize@CGlxDRMUtility@@QAE?AVTSize@@AAV2@@Z @ 7 NONAME ; class TSize CGlxDRMUtility::DRMThumbnailSize(class TSize &)
-	?InstanceL@CGlxDRMUtility@@SAPAV1@XZ @ 8 NONAME ; class CGlxDRMUtility * CGlxDRMUtility::InstanceL(void)
-	?IsForwardLockedL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 9 NONAME ; int CGlxDRMUtility::IsForwardLockedL(class TDesC16 const &)
-	?SetAsAutomatedL@CGlxDRMUtility@@QAEXABVTDesC16@@W4TGlxDrmAutomatedType@@@Z @ 10 NONAME ; void CGlxDRMUtility::SetAsAutomatedL(class TDesC16 const &, enum TGlxDrmAutomatedType)
-	?ShowDRMDetailsPaneL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 11 NONAME ; void CGlxDRMUtility::ShowDRMDetailsPaneL(class TDesC16 const &)
-	?ShowInfoOnlineL@CGlxDRMUtility@@QAEXAAVTDesC16@@@Z @ 12 NONAME ; void CGlxDRMUtility::ShowInfoOnlineL(class TDesC16 &)
-	?ShowRightsInfoL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 13 NONAME ; void CGlxDRMUtility::ShowRightsInfoL(class TDesC16 const &)
+	?InstanceL@CGlxDRMUtility@@SAPAV1@XZ @ 1 NONAME ; class CGlxDRMUtility * CGlxDRMUtility::InstanceL(void)
+	?ShowDRMDetailsPaneL@CGlxDRMUtility@@QAEXAAVRFile@@@Z @ 2 NONAME ; void CGlxDRMUtility::ShowDRMDetailsPaneL(class RFile &)
+	?ShowRightsInfoL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 3 NONAME ; void CGlxDRMUtility::ShowRightsInfoL(class TDesC16 const &)
+	?DRMThumbnailSize@CGlxDRMUtility@@QAE?AVTSize@@AAV2@@Z @ 4 NONAME ; class TSize CGlxDRMUtility::DRMThumbnailSize(class TSize &)
+	?ItemRightsValidityCheckL@CGlxDRMUtility@@QAEHABVTDesC16@@H@Z @ 5 NONAME ; int CGlxDRMUtility::ItemRightsValidityCheckL(class TDesC16 const &, int)
+	?ClearLastConsumedItemUriL@CGlxDRMUtility@@QAEXXZ @ 6 NONAME ; void CGlxDRMUtility::ClearLastConsumedItemUriL(void)
+	?DisplayItemRightsCheckL@CGlxDRMUtility@@QAEHAAVRFile@@H@Z @ 7 NONAME ; int CGlxDRMUtility::DisplayItemRightsCheckL(class RFile &, int)
+	?ShowRightsInfoL@CGlxDRMUtility@@QAEXAAVRFile@@@Z @ 8 NONAME ; void CGlxDRMUtility::ShowRightsInfoL(class RFile &)
+	?CanShowInfoOnlineL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 9 NONAME ; int CGlxDRMUtility::CanShowInfoOnlineL(class TDesC16 const &)
+	?Close@CGlxDRMUtility@@QAEXXZ @ 10 NONAME ; void CGlxDRMUtility::Close(void)
+	?SetAsAutomatedL@CGlxDRMUtility@@QAEXABVTDesC16@@W4TGlxDrmAutomatedType@@@Z @ 11 NONAME ; void CGlxDRMUtility::SetAsAutomatedL(class TDesC16 const &, enum TGlxDrmAutomatedType)
+	?CanSetAsAutomatedL@CGlxDRMUtility@@QAEHABVTDesC16@@W4TGlxDrmAutomatedType@@@Z @ 12 NONAME ; int CGlxDRMUtility::CanSetAsAutomatedL(class TDesC16 const &, enum TGlxDrmAutomatedType)
+	?ConsumeRightsL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 13 NONAME ; int CGlxDRMUtility::ConsumeRightsL(class TDesC16 const &)
+	?IsForwardLockedL@CGlxDRMUtility@@QAEHABVTDesC16@@@Z @ 14 NONAME ; int CGlxDRMUtility::IsForwardLockedL(class TDesC16 const &)
+	?DisplayItemRightsCheckL@CGlxDRMUtility@@QAEHABVTDesC16@@H@Z @ 15 NONAME ; int CGlxDRMUtility::DisplayItemRightsCheckL(class TDesC16 const &, int)
+	?ItemRightsValidityCheckL@CGlxDRMUtility@@QAEHAAVRFile@@H@Z @ 16 NONAME ; int CGlxDRMUtility::ItemRightsValidityCheckL(class RFile &, int)
+	?ShowDRMDetailsPaneL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 17 NONAME ; void CGlxDRMUtility::ShowDRMDetailsPaneL(class TDesC16 const &)
+	?ShowInfoOnlineL@CGlxDRMUtility@@QAEXABVTDesC16@@@Z @ 18 NONAME ; void CGlxDRMUtility::ShowInfoOnlineL(class TDesC16 const &)
+	?ConsumeRightsL@CGlxDRMUtility@@QAEHAAVRFile@@@Z @ 19 NONAME ; int CGlxDRMUtility::ConsumeRightsL(class RFile &)
 
--- a/ui/uiengine/drmutility/eabi/glxdrmutilityu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/drmutility/eabi/glxdrmutilityu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -1,15 +1,21 @@
 EXPORTS
-	_ZN14CGlxDRMUtility14ConsumeRightsLERK7TDesC16 @ 1 NONAME
-	_ZN14CGlxDRMUtility15SetAsAutomatedLERK7TDesC1620TGlxDrmAutomatedType @ 2 NONAME
-	_ZN14CGlxDRMUtility15ShowInfoOnlineLER7TDesC16 @ 3 NONAME
-	_ZN14CGlxDRMUtility15ShowRightsInfoLERK7TDesC16 @ 4 NONAME
-	_ZN14CGlxDRMUtility16CheckOpenRightsLERK7TDesC16i @ 5 NONAME
-	_ZN14CGlxDRMUtility16DRMThumbnailSizeER5TSize @ 6 NONAME
-	_ZN14CGlxDRMUtility16IsForwardLockedLERK7TDesC16 @ 7 NONAME
-	_ZN14CGlxDRMUtility18CanSetAsAutomatedLERK7TDesC1620TGlxDrmAutomatedType @ 8 NONAME
-	_ZN14CGlxDRMUtility18CanShowInfoOnlineLER7TDesC16 @ 9 NONAME
-	_ZN14CGlxDRMUtility19CheckDisplayRightsLERK7TDesC16i @ 10 NONAME
-	_ZN14CGlxDRMUtility19ShowDRMDetailsPaneLERK7TDesC16 @ 11 NONAME
-	_ZN14CGlxDRMUtility5CloseEv @ 12 NONAME
-	_ZN14CGlxDRMUtility9InstanceLEv @ 13 NONAME
+	_ZN14CGlxDRMUtility14ConsumeRightsLER5RFile @ 1 NONAME
+	_ZN14CGlxDRMUtility14ConsumeRightsLERK7TDesC16 @ 2 NONAME
+	_ZN14CGlxDRMUtility15SetAsAutomatedLERK7TDesC1620TGlxDrmAutomatedType @ 3 NONAME
+	_ZN14CGlxDRMUtility15ShowInfoOnlineLERK7TDesC16 @ 4 NONAME
+	_ZN14CGlxDRMUtility15ShowRightsInfoLER5RFile @ 5 NONAME
+	_ZN14CGlxDRMUtility15ShowRightsInfoLERK7TDesC16 @ 6 NONAME
+	_ZN14CGlxDRMUtility16DRMThumbnailSizeER5TSize @ 7 NONAME
+	_ZN14CGlxDRMUtility16IsForwardLockedLERK7TDesC16 @ 8 NONAME
+	_ZN14CGlxDRMUtility18CanSetAsAutomatedLERK7TDesC1620TGlxDrmAutomatedType @ 9 NONAME
+	_ZN14CGlxDRMUtility18CanShowInfoOnlineLERK7TDesC16 @ 10 NONAME
+	_ZN14CGlxDRMUtility19ShowDRMDetailsPaneLER5RFile @ 11 NONAME
+	_ZN14CGlxDRMUtility19ShowDRMDetailsPaneLERK7TDesC16 @ 12 NONAME
+	_ZN14CGlxDRMUtility23DisplayItemRightsCheckLER5RFilei @ 13 NONAME
+	_ZN14CGlxDRMUtility23DisplayItemRightsCheckLERK7TDesC16i @ 14 NONAME
+	_ZN14CGlxDRMUtility24ItemRightsValidityCheckLER5RFilei @ 15 NONAME
+	_ZN14CGlxDRMUtility24ItemRightsValidityCheckLERK7TDesC16i @ 16 NONAME
+	_ZN14CGlxDRMUtility25ClearLastConsumedItemUriLEv @ 17 NONAME
+	_ZN14CGlxDRMUtility5CloseEv @ 18 NONAME
+	_ZN14CGlxDRMUtility9InstanceLEv @ 19 NONAME
 
--- a/ui/uiengine/drmutility/group/glxdrmutility.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/drmutility/group/glxdrmutility.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -44,4 +44,5 @@
 LIBRARY         caf.lib
 LIBRARY         cafutils.lib
 
+SMPSAFE
 // End of File
--- a/ui/uiengine/drmutility/inc/glxdrmutility.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/drmutility/inc/glxdrmutility.h	Tue Jul 06 14:16:16 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:   DRM utility implementation
+* Description:    DRM utility implementation
 *
 */
 
@@ -28,7 +28,7 @@
 // INCLUDES
 
 #include <e32base.h>
-
+#include <f32file.h>
 // FORWARD DECLARATIONS
 
 class CDRMHelper;
@@ -82,23 +82,47 @@
 
     /**
      * Check whether DRM rights are valid for specified item
-     *
+     * is called before right is consumed and for all items (focused or unfocused).
+     * 
      * @param aUri URI of the media item.
      * @param aCheckViewRights, check view rights if true, play if false
      * @return ETrue if valid rights exist for the media item.
      */
-    IMPORT_C TBool CheckOpenRightsL(const TDesC& aUri, TBool aCheckViewRights);
+    IMPORT_C TBool ItemRightsValidityCheckL(const TDesC& aUri, TBool aCheckViewRights);
+    
+    /**
+     * Check whether DRM rights are valid for specified item
+     * is called before right is consumed and for all items (focused or unfocused).
+     * 
+     * @param filehandle of the media item.
+     * @param aCheckViewRights, check view rights if true, play if false
+     * @return ETrue if valid rights exist for the media item.
+     */
+    IMPORT_C TBool ItemRightsValidityCheckL(RFile& aFileHandle, TBool aCheckViewRights);
 
     /**
      * Check whether DRM rights are valid for specified item
      * If the rights were just consumed, then allow to display
      * Otherwise, obtain current rights
-     *
+     * is called after right is consumed and for only focused/displayed item.
+     * 
      * @param aUri URI of the media item.
      * @param aCheckViewRights, check view rights if true, play if false
      * @return ETrue if valid rights exist for the media item.
      */
-    IMPORT_C TBool CheckDisplayRightsL(const TDesC& aUri, TBool aCheckViewRights);
+    IMPORT_C TBool DisplayItemRightsCheckL(const TDesC& aUri, TBool aCheckViewRights);
+    
+    /**
+     * Check whether DRM rights are valid for specified item
+     * If the rights were just consumed, then allow to display
+     * Otherwise, obtain current rights
+     * is called after right is consumed and for only focused/displayed item.
+     * 
+     * @param filehandle of the media item.
+     * @param aCheckViewRights, check view rights if true, play if false
+     * @return ETrue if valid rights exist for the media item.
+     */
+    IMPORT_C TBool DisplayItemRightsCheckL(RFile& aFileHandle, TBool aCheckViewRights);
     
     /**
       * Consume rights for specified item
@@ -109,7 +133,19 @@
       */
     IMPORT_C TBool ConsumeRightsL(const TDesC& aUri);
     
-    
+    /**
+      * Consume rights for specified item
+      * Caches item so that a client has right to display the item
+      *
+      * @param  Filehandle for item
+      * @return ETrue to no error in rights consumption
+      */
+    IMPORT_C TBool ConsumeRightsL(RFile& aFileHandle);
+
+    /**
+     * Clears Last Consumed Uri
+     */
+    IMPORT_C void ClearLastConsumedItemUriL();
 
     /**
      * Test whether a media item is OMA DRM 2.0 protected and has an associated
@@ -117,13 +153,13 @@
      * @param aUri URI of the media item.
      * @return ETrue if it does.
      */
-    IMPORT_C TBool CanShowInfoOnlineL(TDesC& aUri);
+    IMPORT_C TBool CanShowInfoOnlineL(const TDesC& aUri);
 
     /**
      * Open the associated info URL for a media item in the browser.
      * @param aUri URI of the media item.
      */
-    IMPORT_C void ShowInfoOnlineL(TDesC& aUri);
+    IMPORT_C void ShowInfoOnlineL(const TDesC& aUri);
 
     /**
      * Test whether a media item can be set as automated content.     *
@@ -147,6 +183,12 @@
     IMPORT_C void ShowDRMDetailsPaneL(const TDesC& aUri);
     
     /**
+     * Show DRM details for specified item.
+     * @param Filehandle of the media item.
+     */
+    IMPORT_C void ShowDRMDetailsPaneL(RFile& aFileHandle);
+    
+    /**
       * Ask DRM manager if file is forward locked
       */
     IMPORT_C TBool IsForwardLockedL(const TDesC& aUri);
@@ -158,6 +200,12 @@
     IMPORT_C void ShowRightsInfoL(const TDesC& aUri);
     
     /**
+      * Show rights info
+      * @param filehandle of the media item.
+      */
+    IMPORT_C void ShowRightsInfoL(RFile& aFileHandle);
+    
+    /**
       * Get size of thumbnail to be requested for DRM invalid item
       * @param aSize size of image
       * @return suggested thumbnail size (1/4 of original size)
--- a/ui/uiengine/drmutility/src/glxdrmutility.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/drmutility/src/glxdrmutility.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -34,6 +34,7 @@
 #include <caf/content.h>
 #include <caf/data.h>
 #include <caf/manager.h>
+#include "glxtracer.h"
 
 const TInt KGlxDRMThumbnailHeight = 120;
 const TInt KGlxDRMThumbnailWidth = 90;
@@ -63,9 +64,10 @@
 //============================================================================
 EXPORT_C CGlxDRMUtility* CGlxDRMUtility::InstanceL()
     {
+    TRACER("CGlxDRMUtility::InstanceL()");
     CGlxDrmTls* tls = reinterpret_cast<CGlxDrmTls*>(Dll::Tls());
     
-    if(tls==NULL)
+    if ( !tls )
         {
         CGlxDRMUtility* drmutil = new(ELeave)CGlxDRMUtility();
         CleanupStack::PushL(drmutil);
@@ -88,9 +90,10 @@
 //============================================================================ 
 EXPORT_C void CGlxDRMUtility::Close()
     {
+    TRACER("CGlxDRMUtility::Close()");
     CGlxDrmTls* tls = reinterpret_cast<CGlxDrmTls*>(Dll::Tls());
    
-    if (tls != NULL) 
+    if ( tls ) 
         {
         tls->iRefCount--;
         
@@ -110,23 +113,34 @@
 //============================================================================ 
 CGlxDRMUtility::~CGlxDRMUtility()
     {
+    TRACER("CGlxDRMUtility::~CGlxDRMUtility()");
     delete iCManager;
     delete iDrmHelper;
     delete iLastConsumedItemUri;
     }
     
 //============================================================================
-// CheckOpenRightsL
-//============================================================================ 
-EXPORT_C TBool CGlxDRMUtility::CheckOpenRightsL( const TDesC& aUri, 
+// ItemRightsValidityCheckL
+// for checking DRM rights validity for item.
+// is called before right is consumed and for all items (focused or unfocused).
+//============================================================================
+EXPORT_C TBool CGlxDRMUtility::ItemRightsValidityCheckL( const TDesC& aUri,
                                                 TBool aCheckViewRights )
     {
-    // When checking current rights for a URI, clear stored URI
-    TPtr ptr = iLastConsumedItemUri->Des();
-    ptr.Zero();
-    iLastConsumedItemUri = iLastConsumedItemUri->ReAllocL( 0 );
+    TRACER("CGlxDRMUtility::ItemRightsValidityCheckL()");
+    // When checking current rights for a URI
 
-    TBool rightsValid = EFalse;
+    //Allow to Open if rights for a URI was just consumed (i.e. same as stored URI)
+	if ( iLastConsumedItemUri->Length() > 0 )
+		{
+		if ( aUri.CompareF( *iLastConsumedItemUri ) == 0 )
+			{
+			return ETrue;
+			}
+		}
+
+	//Else for uri of non-focused uri, just check validity rights
+    TInt rightsValid = 0;
     TVirtualPathPtr path( aUri, KDefaultContentObject() );
 
     ContentAccess::TAttribute attr = 
@@ -139,11 +153,31 @@
     }
 
 //============================================================================
-// CheckDisplayRightsL
-//============================================================================ 
-EXPORT_C TBool CGlxDRMUtility::CheckDisplayRightsL( const TDesC& aUri, 
+// ItemRightsValidityCheckL
+// for checking DRM rights validity for item.
+// is called before right is consumed and for all items (focused or unfocused).
+//============================================================================
+EXPORT_C TBool CGlxDRMUtility::ItemRightsValidityCheckL( RFile& aFileHandle,
+                                                TBool /*aCheckViewRights*/ )
+    {
+    TRACER("CGlxDRMUtility::ItemRightsValidityCheckL()");
+    TBool rightsValid = EFalse;
+
+    ContentAccess::CContent* content = ContentAccess::CContent::NewLC( aFileHandle );
+    content->GetAttribute( ContentAccess::ECanView, rightsValid );
+    CleanupStack::PopAndDestroy( content );
+    return rightsValid;
+    }
+
+//============================================================================
+// DisplayItemRightsCheckL
+// is called after right is consumed and for only focused/displayed item.
+//============================================================================
+EXPORT_C TBool CGlxDRMUtility::DisplayItemRightsCheckL( const TDesC& aUri,
                                                     TBool aCheckViewRights )
     {
+    TRACER("CGlxDRMUtility::DisplayItemRightsCheckL()");
+
     // Allow to display if rights for a URI was just consumed (i.e. same as stored URI)
     if ( iLastConsumedItemUri->Length() > 0 )
         {
@@ -153,32 +187,48 @@
             }
         }
 
-    // Otherwise, check current rights for the URI
-    return CheckOpenRightsL( aUri, aCheckViewRights );
+    //Clear the stored uri since focus has changed
+    ClearLastConsumedItemUriL();
+
+    // Otherwise, check current rights for the URI of newly focused item
+    return ItemRightsValidityCheckL( aUri, aCheckViewRights );
     }
 
 //============================================================================
+// DisplayItemRightsCheckL
+// is called after right is consumed and for only focused/displayed item.
+//============================================================================
+EXPORT_C TBool CGlxDRMUtility::DisplayItemRightsCheckL( RFile& aFileHandle,
+                                                    TBool aCheckViewRights )
+    {
+    TRACER("CGlxDRMUtility::DisplayItemRightsCheckL()");
+    // Otherwise, check current rights for the URI of newly focused item
+    return ItemRightsValidityCheckL( aFileHandle, aCheckViewRights );
+    }
+
+
+//============================================================================
 // ConsumeRightsL
 //============================================================================    
 EXPORT_C TBool CGlxDRMUtility::ConsumeRightsL(const TDesC& aUri)
     {
+    TRACER("CGlxDRMUtility::ConsumeRightsL()");
     TVirtualPathPtr path( aUri, KDefaultContentObject() );
 
     // Create a CData object to read the content
     // Tell the agent we are planning to display the content
     CData* data = CData::NewLC(path, ContentAccess::EView, EContentShareReadOnly);
 
-    // When consuming rights for a URI, clear stored URI
-    TPtr oldPtr = iLastConsumedItemUri->Des();
-    oldPtr.Zero();
-    iLastConsumedItemUri = iLastConsumedItemUri->ReAllocL( aUri.Length() );
+    //When consuming rights for a URI, clear stored URI
+    ClearLastConsumedItemUriL();
 
     // Execute the intent, tell the agent that we plan to display the content
     // It is at this point that any stateful rights will be decremented
     TInt err = data->ExecuteIntent(ContentAccess::EView);
     if ( err == KErrNone )
         {
-        // Update stored URI
+        //Update stored URI
+        iLastConsumedItemUri = iLastConsumedItemUri->ReAllocL( aUri.Length() );
         TPtr newPtr = iLastConsumedItemUri->Des();
         newPtr.Copy( aUri );
         }
@@ -188,16 +238,41 @@
     return (err == KErrNone);
     }
 
+
+//============================================================================
+// ConsumeRightsL
+//============================================================================    
+EXPORT_C TBool CGlxDRMUtility::ConsumeRightsL(RFile& aFileHandle)
+    {
+    TRACER("CGlxDRMUtility::ConsumeRightsL(RFile& aFileHandle)");
+    CData* data = CData::NewLC( aFileHandle, KDefaultContentObject(), EPeek );
+    TInt err = data->ExecuteIntent(ContentAccess::EView);
+    CleanupStack::PopAndDestroy( data );
+    return (err == KErrNone);
+    }
+
+//============================================================================
+//Clears Last Consumed Uri
+//============================================================================
+EXPORT_C void CGlxDRMUtility::ClearLastConsumedItemUriL()
+	{
+	//clears the stored uri
+	TPtr ptr = iLastConsumedItemUri->Des();
+	ptr.Zero();
+	iLastConsumedItemUri = iLastConsumedItemUri->ReAllocL( 0 );
+	}
+
 //============================================================================
 // Test whether a media item is OMA DRM 2.0 protected and has an associated
 // info URL.
 //============================================================================
-EXPORT_C TBool CGlxDRMUtility::CanShowInfoOnlineL(TDesC& aUri)
+EXPORT_C TBool CGlxDRMUtility::CanShowInfoOnlineL(const TDesC& aUri)
     {
+    TRACER("CGlxDRMUtility::CanShowInfoOnlineL()");
     TBool canShowInfoOnline = EFalse;
 
     HBufC8* urlBuf = NULL;
-    canShowInfoOnline = iDrmHelper->HasInfoUrlL(aUri, urlBuf);
+    canShowInfoOnline = iDrmHelper->HasInfoUrlL( const_cast<TDesC&>(aUri) , urlBuf);
 
     // discard buf we don't need it
     delete urlBuf;
@@ -208,9 +283,10 @@
 //============================================================================
 // Open the associated info URL for a media item in the browser.
 //============================================================================
-EXPORT_C void CGlxDRMUtility::ShowInfoOnlineL(TDesC& aUri)
+EXPORT_C void CGlxDRMUtility::ShowInfoOnlineL(const TDesC& aUri)
     {
-    iDrmHelper->OpenInfoUrlL(aUri);
+    TRACER("CGlxDRMUtility::ShowInfoOnlineL()");
+    iDrmHelper->OpenInfoUrlL( const_cast<TDesC&>(aUri) );
     }
 
 //============================================================================
@@ -219,6 +295,7 @@
 EXPORT_C TBool CGlxDRMUtility::CanSetAsAutomatedL(const TDesC& aUri, 
                                     TGlxDrmAutomatedType aType)
     {
+    TRACER("CGlxDRMUtility::CanSetAsAutomatedL()");
     TBool canSetAutomated = EFalse;
     switch(aType)
         {
@@ -240,6 +317,7 @@
 EXPORT_C void CGlxDRMUtility::SetAsAutomatedL(const TDesC& aUri, 
                                     TGlxDrmAutomatedType aType)
     {
+    TRACER("CGlxDRMUtility::SetAsAutomatedL()");
      switch(aType)
         {
     case EGlxDrmAutomatedTypeWallpaper:
@@ -266,8 +344,9 @@
 //============================================================================  
 EXPORT_C void CGlxDRMUtility::ShowDRMDetailsPaneL( const TDesC& aUri )
     {
+    TRACER("CGlxDRMUtility::ShowDRMDetailsPaneL()");
     TRAPD( err, iDrmHelper->LaunchDetailsViewEmbeddedL( aUri ) );
-    // if no rights ask user to re-activate?
+    // if no rights ask user to re-activate
     if( err == KErrCANoRights )
         {
         HBufC* buf = aUri.AllocLC();
@@ -278,10 +357,26 @@
     }
 
 //============================================================================
+// ShowDRMDetailsPane
+//============================================================================  
+EXPORT_C void CGlxDRMUtility::ShowDRMDetailsPaneL(RFile& aFileHandle)
+    {
+    TRACER("CGlxDRMUtility::ShowDRMDetailsPaneL()");
+    TRAPD( err, iDrmHelper->LaunchDetailsViewEmbeddedL( aFileHandle ) );
+    // if no rights ask user to re-activate
+    if( err == KErrCANoRights )
+        {
+        //need to check if we need to handle.
+        }
+
+    }
+
+//============================================================================
 // IsForwardLockedL
 //============================================================================  
 EXPORT_C TBool CGlxDRMUtility::IsForwardLockedL(const TDesC& aUri)
     {
+    TRACER("CGlxDRMUtility::IsForwardLockedL()");
     TBool forwardLocked = EFalse;
     TVirtualPathPtr path( aUri, KDefaultContentObject() );
 
@@ -296,14 +391,25 @@
 //============================================================================    
 EXPORT_C void CGlxDRMUtility::ShowRightsInfoL(const TDesC& aUri)    
     {
+    TRACER("CGlxDRMUtility::ShowRightsInfoL()");
     iDrmHelper->CheckRightsAmountL( aUri );
     }
 
 //============================================================================
+// ShowRightsInfoL
+//============================================================================    
+EXPORT_C void CGlxDRMUtility::ShowRightsInfoL(RFile& aFileHandle)    
+    {
+    TRACER("CGlxDRMUtility::ShowRightsInfoL(aFileHandle)");
+    iDrmHelper->CheckRightsAmountL( aFileHandle );
+    }
+
+//============================================================================
 // Return size for DRM thumbnail request.
 //============================================================================
 EXPORT_C TSize CGlxDRMUtility::DRMThumbnailSize(TSize& aSize)
     {
+    TRACER("CGlxDRMUtility::DRMThumbnailSize()");
     TSize thumbnailSize(KGlxDRMThumbnailWidth, KGlxDRMThumbnailHeight);
     
     if((aSize.iWidth*aSize.iHeight)/4 < 
@@ -321,7 +427,7 @@
  */
 CGlxDRMUtility::CGlxDRMUtility()
     {
-    
+    TRACER("CGlxDRMUtility::CGlxDRMUtility()");
     }
 
 /**
@@ -329,6 +435,7 @@
  */
 void CGlxDRMUtility::ConstructL()
     {
+    TRACER("CGlxDRMUtility::ConstructL()");
     iCManager = ContentAccess::CManager::NewL();
     iDrmHelper = CDRMHelper::NewL();
     iLastConsumedItemUri = HBufC::NewL(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/uiengine/drmutilitywrapper/drmutilitywrapper.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,55 @@
+#/* 
+#* 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: Qt wrapper for DRM utility
+#*
+#*/ 
+TEMPLATE = lib
+TARGET = glxdrmutilitywrapper
+DEPENDPATH += . inc src
+INCLUDEPATH += . ../../inc \
+			../../../inc \
+			../drmutility/inc \
+			./inc
+			
+CONFIG += hb
+LIBS +=  -lglxdrmutility.dll \
+		-lglxlogging.dll \
+
+DEFINES += BUILD_DRMUTILITYWRAPPER
+
+symbian: { 
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+TARGET.UID3 = 0x2000A7BC
+TARGET.CAPABILITY = ALL -TCB 
+TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE 
+
+}	
+# Input
+HEADERS += inc/glxdrmutilitywrapper.h \
+			inc/glxdrmutilitywrapper_p.h
+			
+SOURCES += src/glxdrmutilitywrapper.cpp \
+			src/glxdrmutilitywrapper_p.cpp
+
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxdrmutilitywrapper.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxdrmutilitywrapper.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/uiengine/drmutilitywrapper/inc/glxdrmutilitywrapper.h	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   
+*
+*/
+
+#ifndef GLXDRMUTILITYWRAPPER_H
+#define GLXDRMUTILITYWRAPPER_H
+
+#include<QObject>
+// forward decleration
+class GlxDRMUtilityWrapperPrivate;
+
+#ifdef BUILD_DRMUTILITYWRAPPER
+#define GLX_DRMUTILITYWRAPPER_EXPORT Q_DECL_EXPORT
+#else
+#define GLX_DRMUTILITYWRAPPER_EXPORT Q_DECL_IMPORT
+#endif
+
+class GLX_DRMUTILITYWRAPPER_EXPORT GlxDRMUtilityWrapper
+{
+public:
+    /*
+     * Constructor
+     */
+    GlxDRMUtilityWrapper();
+    
+    /*
+     * Destructor
+     */
+    ~GlxDRMUtilityWrapper();
+    
+    bool ItemRightsValidityCheck(QString aUri, bool aCheckViewRights);
+    bool ConsumeRights(QString aUri);
+    void ShowRightsInfo(QString aUri);
+
+private:
+    GlxDRMUtilityWrapperPrivate* mDRMUtilityWrapperPrivate;
+};
+    
+#endif //GLXDRMUTILITYWRAPPER_H 
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/uiengine/drmutilitywrapper/inc/glxdrmutilitywrapper_p.h	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:    
+*
+*/
+
+#ifndef GLXDRMUTILITYWRAPPERPRIVATE_H
+#define GLXDRMUTILITYWRAPPERPRIVATE_H
+
+
+// forward decleration
+class GlxDRMUtilityWrapper;
+class CGlxDRMUtility;
+class QString;
+
+class GlxDRMUtilityWrapperPrivate
+{
+public:
+    /*
+     * Constructor
+     */
+    GlxDRMUtilityWrapperPrivate(GlxDRMUtilityWrapper* DRMUtilityWrapper);
+
+    /*
+     * Destructor
+     */
+    ~GlxDRMUtilityWrapperPrivate();
+
+    /**
+     * Check whether DRM rights are valid for specified item
+     * is called before right is consumed and for all items (focused or unfocused).
+     * 
+     * @param aUri URI of the media item.
+     * @param aCheckViewRights, check view rights if true, play if false
+     * @return ETrue if valid rights exist for the media item.
+     */
+    bool ItemRightsValidityCheck(QString aUri, bool aCheckViewRights);
+    
+//    /**
+//     * Check whether DRM rights are valid for specified item
+//     * is called before right is consumed and for all items (focused or unfocused).
+//     * 
+//     * @param filehandle of the media item.
+//     * @param aCheckViewRights, check view rights if true, play if false
+//     * @return ETrue if valid rights exist for the media item.
+//     */
+//    bool ItemRightsValidityCheckL(RFile& aFileHandle, TBool aCheckViewRights);
+//
+//    /**
+//     * Check whether DRM rights are valid for specified item
+//     * If the rights were just consumed, then allow to display
+//     * Otherwise, obtain current rights
+//     * is called after right is consumed and for only focused/displayed item.
+//     * 
+//     * @param aUri URI of the media item.
+//     * @param aCheckViewRights, check view rights if true, play if false
+//     * @return ETrue if valid rights exist for the media item.
+//     */
+//    bool DisplayItemRightsCheckL(const TDesC& aUri, TBool aCheckViewRights);
+//    
+//    /**
+//     * Check whether DRM rights are valid for specified item
+//     * If the rights were just consumed, then allow to display
+//     * Otherwise, obtain current rights
+//     * is called after right is consumed and for only focused/displayed item.
+//     * 
+//     * @param filehandle of the media item.
+//     * @param aCheckViewRights, check view rights if true, play if false
+//     * @return ETrue if valid rights exist for the media item.
+//     */
+//    bool DisplayItemRightsCheckL(RFile& aFileHandle, TBool aCheckViewRights);
+//    
+    /**
+      * Consume rights for specified item
+      * Caches item so that a client has right to display the item
+      *
+      * @param aUri URI for item
+      * @return ETrue to no error in rights consumption
+      */
+    bool ConsumeRights(QString aUri);
+//    
+//    /**
+//      * Consume rights for specified item
+//      * Caches item so that a client has right to display the item
+//      *
+//      * @param  Filehandle for item
+//      * @return ETrue to no error in rights consumption
+//      */
+//    bool ConsumeRightsL(RFile& aFileHandle);
+//
+//    /**
+//     * Clears Last Consumed Uri
+//     */
+//    void ClearLastConsumedItemUriL();
+//
+//    /**
+//     * Test whether a media item is OMA DRM 2.0 protected and has an associated
+//     * info URL.
+//     * @param aUri URI of the media item.
+//     * @return ETrue if it does.
+//     */
+//    bool CanShowInfoOnlineL(const TDesC& aUri);
+//
+//    /**
+//     * Open the associated info URL for a media item in the browser.
+//     * @param aUri URI of the media item.
+//     */
+//    void ShowInfoOnlineL(const TDesC& aUri);
+//
+//    /**
+//     * Test whether a media item can be set as automated content.     *
+//     * @param aUri URI of the media item.
+//     * @param aType Automated content type, eg. wallpaper.
+//     * @return ETrue if it can.
+//     */
+//    bool CanSetAsAutomatedL(const TDesC& aUri, TGlxDrmAutomatedType aType);
+//
+//    /**
+//     * Set a media item as automated content.
+//     * @param aUri URI of the media item.
+//     * @param aType Automated content type, eg. wallpaper.
+//     */
+//    void SetAsAutomatedL(const TDesC& aUri, TGlxDrmAutomatedType aType);
+//    
+//    /**
+//     * Show DRM details for specified item.
+//     * @param aUri URI of the media item.
+//     */
+//    void ShowDRMDetailsPaneL(const TDesC& aUri);
+//    
+//    /**
+//     * Show DRM details for specified item.
+//     * @param Filehandle of the media item.
+//     */
+//    void ShowDRMDetailsPaneL(RFile& aFileHandle);
+//    
+//    /**
+//      * Ask DRM manager if file is forward locked
+//      */
+//    bool IsForwardLockedL(const TDesC& aUri);
+//    
+    /**
+      * Show rights info
+      * @param aUri URI of the media item.
+      */
+    void ShowRightsInfo(QString aUri);
+    
+//    /**
+//      * Show rights info
+//      * @param filehandle of the media item.
+//      */
+//    void ShowRightsInfoL(RFile& aFileHandle);
+//    
+//    /**
+//      * Get size of thumbnail to be requested for DRM invalid item
+//      * @param aSize size of image
+//      * @return suggested thumbnail size (1/4 of original size)
+//      */
+//    TSize DRMThumbnailSize(TSize& aSize);
+    
+private:
+    GlxDRMUtilityWrapper* iDRMUtilityWrapper;
+    CGlxDRMUtility* iDRMUtility;
+};
+    
+#endif //GLXDRMUTILITYWRAPPERPRIVATE_H 
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/uiengine/drmutilitywrapper/src/glxdrmutilitywrapper.cpp	Tue Jul 06 14:16:16 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: 
+*
+*/
+
+#include"glxdrmutilitywrapper_p.h"
+#include"glxdrmutilitywrapper.h"
+
+GlxDRMUtilityWrapper::GlxDRMUtilityWrapper()
+    {
+    mDRMUtilityWrapperPrivate = new GlxDRMUtilityWrapperPrivate(this);
+    }
+GlxDRMUtilityWrapper::~GlxDRMUtilityWrapper()
+    {
+    delete mDRMUtilityWrapperPrivate;
+    }
+bool GlxDRMUtilityWrapper::ItemRightsValidityCheck(QString aUri, bool aCheckViewRights)
+    {
+    bool ret = mDRMUtilityWrapperPrivate->ItemRightsValidityCheck(aUri,aCheckViewRights);
+    return ret;
+    }
+
+bool GlxDRMUtilityWrapper::ConsumeRights(QString aUri)
+    {
+    bool ret = mDRMUtilityWrapperPrivate->ConsumeRights(aUri);
+    return ret;
+    }
+
+void GlxDRMUtilityWrapper::ShowRightsInfo(QString aUri)
+    {
+    mDRMUtilityWrapperPrivate->ShowRightsInfo(aUri);
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/uiengine/drmutilitywrapper/src/glxdrmutilitywrapper_p.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,197 @@
+/*
+* 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"glxdrmutilitywrapper_p.h"
+#include"glxdrmutility.h"
+
+#include <QString>
+#include <QDir>
+
+GlxDRMUtilityWrapperPrivate::GlxDRMUtilityWrapperPrivate(GlxDRMUtilityWrapper* DRMUtilityWrapper)
+    {
+    iDRMUtilityWrapper = DRMUtilityWrapper;
+    iDRMUtility = CGlxDRMUtility::InstanceL();
+    }
+/*
+ * Destructor
+ */
+GlxDRMUtilityWrapperPrivate::~GlxDRMUtilityWrapperPrivate()
+    {
+    if(iDRMUtility)
+        {
+        iDRMUtility->Close();
+        }
+    }
+
+/**
+ * Check whether DRM rights are valid for specified item
+ * is called before right is consumed and for all items (focused or unfocused).
+ */
+bool GlxDRMUtilityWrapperPrivate::ItemRightsValidityCheck(QString aUri, bool aCheckViewRights)
+    {
+    QString filepath(QDir::toNativeSeparators(aUri));
+    TPtrC16 str(reinterpret_cast<const TUint16*> (filepath.utf16()));
+    HBufC* uri = str.Alloc();
+    TBool checkViewRight = aCheckViewRights?ETrue:EFalse;
+    bool ret = iDRMUtility->ItemRightsValidityCheckL(*uri,checkViewRight);
+    return ret;
+    }
+
+///**
+// * Check whether DRM rights are valid for specified item
+// * is called before right is consumed and for all items (focused or unfocused).
+// */
+//bool GlxDRMUtilityWrapperPrivate::ItemRightsValidityCheckL(RFile& aFileHandle, TBool aCheckViewRights)
+//    {
+//    
+//    }
+//
+///**
+// * Check whether DRM rights are valid for specified item
+// * If the rights were just consumed, then allow to display
+// * Otherwise, obtain current rights
+// * is called after right is consumed and for only focused/displayed item.
+// */
+//bool GlxDRMUtilityWrapperPrivate::DisplayItemRightsCheckL(const TDesC& aUri, TBool aCheckViewRights)
+//    {
+//    
+//    }
+//
+///**
+// * Check whether DRM rights are valid for specified item
+// * If the rights were just consumed, then allow to display
+// * Otherwise, obtain current rights
+// * is called after right is consumed and for only focused/displayed item.
+// */
+//bool GlxDRMUtilityWrapperPrivate::DisplayItemRightsCheckL(RFile& aFileHandle, TBool aCheckViewRights)
+//    {
+//    
+//    }
+//
+/**
+  * Consume rights for specified item
+  * Caches item so that a client has right to display the item
+  */
+bool GlxDRMUtilityWrapperPrivate::ConsumeRights(QString aUri)
+    {
+    QString filepath(QDir::toNativeSeparators(aUri));
+    TPtrC16 str(reinterpret_cast<const TUint16*> (filepath.utf16()));
+    HBufC* uri = str.Alloc();
+    bool ret = iDRMUtility->ConsumeRightsL(*uri);
+    return ret;
+    }
+//
+///**
+//  * Consume rights for specified item
+//  * Caches item so that a client has right to display the item
+//  */
+//bool GlxDRMUtilityWrapperPrivate::ConsumeRightsL(RFile& aFileHandle)
+//    {
+//    
+//    }
+//
+///**
+// * Clears Last Consumed Uri
+// */
+//void GlxDRMUtilityWrapperPrivate::ClearLastConsumedItemUriL()
+//    {
+//    
+//    }
+//
+///**
+// * Test whether a media item is OMA DRM 2.0 protected and has an associated
+// * info URL.
+// */
+//bool GlxDRMUtilityWrapperPrivate::CanShowInfoOnlineL(const TDesC& aUri)
+//    {
+//    
+//    }
+//
+///**
+// * Open the associated info URL for a media item in the browser.
+// */
+//void GlxDRMUtilityWrapperPrivate::ShowInfoOnlineL(const TDesC& aUri)
+//    {
+//    
+//    }
+//
+///**
+// * Test whether a media item can be set as automated content.     *
+// */
+//bool GlxDRMUtilityWrapperPrivate::CanSetAsAutomatedL(const TDesC& aUri, TGlxDrmAutomatedType aType)
+//    {
+//    
+//    }
+//
+///**
+// * Set a media item as automated content.
+// */
+//void GlxDRMUtilityWrapperPrivate::SetAsAutomatedL(const TDesC& aUri, TGlxDrmAutomatedType aType)
+//    {
+//    
+//    }
+//
+///**
+// * Show DRM details for specified item.
+// */
+//void GlxDRMUtilityWrapperPrivate::ShowDRMDetailsPaneL(const TDesC& aUri)
+//    {
+//    
+//    }
+//
+///**
+// * Show DRM details for specified item.
+// */
+//void GlxDRMUtilityWrapperPrivate::ShowDRMDetailsPaneL(RFile& aFileHandle)
+//    {
+//    
+//    }
+//
+///**
+//  * Ask DRM manager if file is forward locked
+//  */
+//bool GlxDRMUtilityWrapperPrivate::IsForwardLockedL(const TDesC& aUri)
+//    {
+//    
+//    }
+//
+/**
+  * Show rights info
+  */
+void GlxDRMUtilityWrapperPrivate::ShowRightsInfo(QString aUri)
+    {
+    QString filepath(QDir::toNativeSeparators(aUri));
+    TPtrC16 str(reinterpret_cast<const TUint16*> (filepath.utf16()));
+    HBufC* uri = str.Alloc();
+    iDRMUtility->ShowRightsInfoL(*uri);
+    }
+
+///**
+//  * Show rights info
+//  */
+//void GlxDRMUtilityWrapperPrivate::ShowRightsInfoL(RFile& aFileHandle)
+//    {
+//    
+//    }
+//
+///**
+//  * Get size of thumbnail to be requested for DRM invalid item
+//  */
+//TSize GlxDRMUtilityWrapperPrivate::DRMThumbnailSize(TSize& aSize)
+//    {
+//    
+//    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/uiengine/eabi/glxdrmutilitywrapperu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,9 @@
+EXPORTS
+	_ZN20GlxDRMUtilityWrapper23ItemRightsValidityCheckE7QStringb @ 1 NONAME
+	_ZN20GlxDRMUtilityWrapperC1Ev @ 2 NONAME
+	_ZN20GlxDRMUtilityWrapperC2Ev @ 3 NONAME
+	_ZN20GlxDRMUtilityWrapperD1Ev @ 4 NONAME
+	_ZN20GlxDRMUtilityWrapperD2Ev @ 5 NONAME
+	_ZN20GlxDRMUtilityWrapper13ConsumeRightsE7QString @ 6 NONAME
+	_ZN20GlxDRMUtilityWrapper14ShowRightsInfoE7QString @ 7 NONAME
+
--- a/ui/uiengine/eabi/glxmedialistwrapperu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/eabi/glxmedialistwrapperu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -51,4 +51,7 @@
 	_ZN12GlxMLWrapper17removeContextModeE14GlxContextMode @ 50 NONAME
 	_ZN12GlxMLWrapper13updateDetailsEv @ 51 NONAME
 	_ZN12GlxMLWrapper26handleDetailsItemAvailableEi @ 52 NONAME
+	_ZN12GlxMLWrapper10IsDrmValidEi @ 53 NONAME
+	_ZN12GlxMLWrapper11setDrmValidEib @ 54 NONAME
+	_ZN12GlxMLWrapper14IsDrmProtectedEi @ 55 NONAME
 
--- a/ui/uiengine/medialists/group/glxmedialists.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/group/glxmedialists.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -103,5 +103,6 @@
 LIBRARY                 bitgdi.lib
 #endif
 
+SMPSAFE
 // End of File
 
--- a/ui/uiengine/medialists/src/glxmedia.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/src/glxmedia.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -273,7 +273,7 @@
     {
     TRACER("TGlxMedia::IsDrmProtected");
     
-    TBool isDrmProtected = ETrue;
+    TBool isDrmProtected = EFalse;
     if ( iItem )
         {
         // ignore return value. Failure leaves isDrmProtected unchanged as ETrue
--- a/ui/uiengine/medialists/src/glxthumbnailcontext.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/src/glxthumbnailcontext.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -590,7 +590,7 @@
         const TDesC& uri = item.Uri();
         if ( uri.Length() && cat != EMPXNoCategory )
             {
-            valid = iDrmUtility->CheckOpenRightsL( uri, ( cat == EMPXImage ) );
+            valid = iDrmUtility->ItemRightsValidityCheckL( uri, ( cat == EMPXImage ) );
             CGlxMedia* properties = const_cast<CGlxMedia*>(item.Properties());
             if( valid )
                 {
--- a/ui/uiengine/medialists/test/group/t_cglxcache.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/t_cglxcache.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -78,5 +78,5 @@
 LIBRARY                 glxlogging.lib
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/t_cglxfetcherrorarray.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/t_cglxfetcherrorarray.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -51,5 +51,5 @@
 LIBRARY                 mpxcommon.lib
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/t_cglxgarbagecollector.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/t_cglxgarbagecollector.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -78,5 +78,5 @@
 LIBRARY                 glxlogging.lib
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/t_cglxmedia.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/t_cglxmedia.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -54,5 +54,5 @@
 LIBRARY                 glxlogging.lib
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/t_glxfromfocusoutwarditerator.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/t_glxfromfocusoutwarditerator.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -44,5 +44,5 @@
 LIBRARY                 lbs.lib // TCoordinate
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/t_glxlistwindow.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/t_glxlistwindow.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -55,4 +55,5 @@
 // Libraries required by the tested code
 
 EXPORTUNFROZEN
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/t_tglxexclusioniterator.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/t_tglxexclusioniterator.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -49,5 +49,5 @@
 //LIBRARY                 glxmedialists.lib
 
 EXPORTUNFROZEN 
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/ut_cglxattributecontext.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/ut_cglxattributecontext.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -87,5 +87,5 @@
 LIBRARY                 lbs.lib // TCoordinate
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/ut_cglxitemlist.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/ut_cglxitemlist.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -67,5 +67,5 @@
 LIBRARY                 Lbs.lib
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/ut_cglxmedialist.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/ut_cglxmedialist.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -79,4 +79,5 @@
 LIBRARY                 lbs.lib // TCoordinate
 
 EXPORTUNFROZEN 
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/ut_cglxnavigablelist.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/ut_cglxnavigablelist.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -70,4 +70,5 @@
 LIBRARY                 Lbs.lib
 
 EXPORTUNFROZEN
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/ut_cglxstaticitemlist.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/ut_cglxstaticitemlist.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -68,5 +68,5 @@
 LIBRARY                 mpxcommon.lib
 
 EXPORTUNFROZEN
-
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/ut_glxerrormanager.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/ut_glxerrormanager.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -86,4 +86,5 @@
 LIBRARY                 lbs.lib // TCoordinate
 
 EXPORTUNFROZEN
+SMPSAFE
 // End of file
--- a/ui/uiengine/medialists/test/group/ut_tglxselectioniterator.mmp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/group/ut_tglxselectioniterator.mmp	Tue Jul 06 14:16:16 2010 +0300
@@ -44,5 +44,6 @@
 LIBRARY        					mpxcommon.lib
 
 EXPORTUNFROZEN
+SMPSAFE
 
 // End of file
--- a/ui/uiengine/medialists/test/ut_cglxattributecontext/ut_cglxattributecontext.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/ut_cglxattributecontext/ut_cglxattributecontext.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -45,7 +45,7 @@
     delete this;
     }
     
-TBool CGlxDRMUtility::CheckOpenRightsL(const TDesC&, TBool)
+TBool CGlxDRMUtility::ItemRightsValidityCheckL(const TDesC&, TBool)
     {
     return ETrue;
     }
--- a/ui/uiengine/medialists/test/ut_cglxmedialist/ut_cglxmedialist.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/ut_cglxmedialist/ut_cglxmedialist.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -51,7 +51,7 @@
     delete this;
     }
     
-TBool CGlxDRMUtility::CheckOpenRightsL(const TDesC&, TBool)
+TBool CGlxDRMUtility::ItemRightsValidityCheckL(const TDesC&, TBool)
     {
     return ETrue;
     }
--- a/ui/uiengine/medialists/test/ut_glxerrormanager/ut_glxerrormanager.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialists/test/ut_glxerrormanager/ut_glxerrormanager.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -47,7 +47,7 @@
     delete this;
     }
     
-TBool CGlxDRMUtility::CheckOpenRightsL(const TDesC&, TBool)
+TBool CGlxDRMUtility::ItemRightsValidityCheckL(const TDesC&, TBool)
     {
     return ETrue;
     }
--- a/ui/uiengine/medialistwrapper/inc/glxmlwrapper.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialistwrapper/inc/glxmlwrapper.h	Tue Jul 06 14:16:16 2010 +0300
@@ -113,6 +113,10 @@
 	QString retrieveViewTitle();
 	void handlepopulated();	
 	bool IsPopulated();
+	bool IsDrmProtected(int index = -1);	
+	bool IsDrmValid(int index);
+	void setDrmValid(int index,bool valid);			
+	
 	/*
 	 * retriveBitmap helps to retrive the bitmap
 	 * @param1 index 
--- a/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h	Tue Jul 06 14:16:16 2010 +0300
@@ -39,6 +39,7 @@
 class CGlxDefaultThumbnailContext;
 class CGlxDefaultListAttributeContext;
 class CGlxTitleFetcher;
+class CGlxDRMUtility;
 //to use first call GlxMLWrapperPrivate::Instance then set the mode by calling GlxMLWrapperPrivate::SetContextMode()
 //CLASS Declaration
 class GlxMLWrapperPrivate : public QObject,public MGlxTitleFetcherObserver
@@ -134,7 +135,9 @@
 	void SetDescontextL();
 	QString RetrieveViewTitle();
 	bool IsPopulated();
-		
+	bool IsDrmProtected(int index );
+	bool IsDrmValid(int index);
+	void setDrmValid(int index,bool valid);			
 private:
 
     /**
@@ -237,6 +240,6 @@
 	CGlxTitleFetcher* iTitleFetcher;
 	QImage iCorruptImage;
 	QString iViewTitle;
-
+	CGlxDRMUtility * iDrmUtility;
 };
 #endif //GLXMLWRAPPER_P_H 
--- a/ui/uiengine/medialistwrapper/medialistwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialistwrapper/medialistwrapper.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -42,6 +42,8 @@
 TARGET.UID3 = 0x20000A0B
 TARGET.CAPABILITY = ALL -TCB 
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE 
+
 }	
 # Input
 HEADERS += inc/glxmlgenericobserver.h inc/glxmlwrapper.h inc/glxmlwrapper_p.h inc/glxattributeretriever.h inc/glxtitlefetcher.h
--- a/ui/uiengine/medialistwrapper/src/glxmlwrapper.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialistwrapper/src/glxmlwrapper.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -178,6 +178,20 @@
     return mMLWrapperPrivate->IsPopulated();
 }
 
+bool GlxMLWrapper::IsDrmProtected(int index)
+    {
+    return mMLWrapperPrivate->IsDrmProtected(index);
+    }
+bool GlxMLWrapper::IsDrmValid(int index)
+	{
+	return mMLWrapperPrivate->IsDrmValid(index);
+	}
+
+void GlxMLWrapper::setDrmValid(int index,bool valid)
+	{
+	mMLWrapperPrivate->setDrmValid(index,valid);
+	}
+
 QVariant GlxMLWrapper::RetrieveBitmap(int index)
 {
     QVariant var;
--- a/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -45,6 +45,8 @@
 //#define GLXPERFORMANCE_LOG  
 #include <glxperformancemacro.h>
 #include "glxtitlefetcher.h"
+#include"glxdrmutility.h"
+
 //constant declaration
 const TInt KTBAttributeAvailable(1);
 const TInt KTBAttributeUnavailable(0);
@@ -131,6 +133,7 @@
 		}
 	iMLGenericObserver = CGlxMLGenericObserver::NewL(*iMediaList,this);
 	iBlockyIteratorForFilmStrip.SetRangeOffsets(0,0);
+	iDrmUtility = CGlxDRMUtility::InstanceL();
     }
 
 // ---------------------------------------------------------------------------
@@ -140,6 +143,10 @@
 GlxMLWrapperPrivate::~GlxMLWrapperPrivate()
     {
     TRACER("GlxMLWrapperPrivate::~GlxMLWrapperPrivate");
+	if ( iDrmUtility )
+		{
+		iDrmUtility->Close();
+		}
 	RemoveGridContext();
 	RemovePtFsContext();
 	RemoveLsFsContext();
@@ -590,7 +597,12 @@
 		filter = TGlxFilterFactory::CreateCameraAlbumExclusionFilterL();
 		CleanupStack::PushL(filter);
 		}
-	else
+	else if(EGlxFilterImage == aFilterType)
+		{
+		filter = TGlxFilterFactory::CreateExcludeDrmImageTypeFilterL(aFilterType);   
+		CleanupStack::PushL(filter);
+		}
+	else 
 		{
 		filter = TGlxFilterFactory::CreateItemTypeFilterL(aFilterType);   //todo take actual filter type
 		CleanupStack::PushL(filter);
@@ -1368,7 +1380,6 @@
     {
     iViewTitle = QString::fromUtf16(aTitle.Ptr(), aTitle.Length());	
 	iMLWrapper->handleTitleAvailable(iViewTitle);
-    RDebug::Print(_L("GlxPhotos: GlxMLWrapperPrivate : TITLE =-%S"),&aTitle);
 	}
 
 QString GlxMLWrapperPrivate::RetrieveViewTitle()
@@ -1407,3 +1418,65 @@
         iDetailsContextActivated = EFalse;   
         }
     }
+
+bool GlxMLWrapperPrivate::IsDrmProtected(int index)
+    {
+    TInt itemIndex = index;
+    if(-1 == itemIndex)
+        {
+        itemIndex = iMediaList->FocusIndex();
+        }
+    const TGlxMedia& media = iMediaList->Item(itemIndex);
+    return media.IsDrmProtected();
+    }
+
+bool GlxMLWrapperPrivate::IsDrmValid(int index)
+    {
+    TInt itemIndex = index;
+    if(-1 == itemIndex)
+        {
+        itemIndex = iMediaList->FocusIndex();
+        }
+		
+    const TGlxMedia& media = iMediaList->Item(itemIndex);
+    TGlxMediaGeneralRightsValidity isValid = EGlxDrmRightsValidityUnknown;
+    TBool ret = media.GetDrmValidity(isValid);
+	if(ret && EGlxDrmRightsValidityUnknown == isValid )
+		{
+		// check rights           
+		TMPXGeneralCategory cat = media.Category();
+		const TDesC& uri = media.Uri();
+		if ( uri.Length() && cat != EMPXNoCategory )
+			{
+			TBool valid = iDrmUtility->ItemRightsValidityCheckL( uri, ( cat == EMPXImage ) );
+			CGlxMedia* properties = const_cast<CGlxMedia*>(media.Properties());
+			if( valid )
+				{
+				
+				isValid = EGlxDrmRightsValid;
+				}
+			else
+				{
+				
+				isValid = EGlxDrmRightsInvalid;
+				}
+			properties->SetTObjectValueL(KGlxMediaGeneralDRMRightsValid, isValid);
+			}
+		}
+    return ( EGlxDrmRightsValid == isValid );
+    }
+	
+void GlxMLWrapperPrivate::setDrmValid(int index,bool valid)	
+	{
+	const TGlxMedia& media = iMediaList->Item(index);
+	CGlxMedia* properties = const_cast<CGlxMedia*>(media.Properties());
+	if(valid)
+		{
+		properties->SetTObjectValueL(KGlxMediaGeneralDRMRightsValid, EGlxDrmRightsValid);
+		}
+	else
+		{
+		properties->SetTObjectValueL(KGlxMediaGeneralDRMRightsValid, EGlxDrmRightsInvalid);
+		}
+	}
+
--- a/ui/uiengine/medialistwrapper/src/glxtitlefetcher.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/medialistwrapper/src/glxtitlefetcher.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -59,8 +59,10 @@
     // this path
     iPath->Back();
     
-    if( iPath->Levels() < 0 )
+    if( iPath->Levels() <= 0 )
         {
+        //For This Level, Opening a collection is nothing but open EGlxCollectionPluginShowInMainListView
+        //We dont need this in 10.1
         return;
         }
     
--- a/ui/uiengine/model/bwins/glxlistmodelu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/bwins/glxlistmodelu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -27,4 +27,6 @@
 	?data@GlxAlbumModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 26 NONAME ; class QVariant GlxAlbumModel::data(class QModelIndex const &, int) const
 	?metaObject@GlxAlbumModel@@UBEPBUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const * GlxAlbumModel::metaObject(void) const
 	?setData@GlxAlbumModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 28 NONAME ; bool GlxAlbumModel::setData(class QModelIndex const &, class QVariant const &, int)
+	?listPopulated@GlxAlbumModel@@IAEXXZ @ 29 NONAME ; void GlxAlbumModel::listPopulated(void)
+	?modelPopulated@GlxAlbumModel@@QAEXXZ @ 30 NONAME ; void GlxAlbumModel::modelPopulated(void)
 
--- a/ui/uiengine/model/eabi/glxlistmodelu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/eabi/glxlistmodelu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -27,4 +27,6 @@
 	_ZNK13GlxAlbumModel8rowCountERK11QModelIndex @ 26 NONAME
 	_ZTI13GlxAlbumModel @ 27 NONAME
 	_ZTV13GlxAlbumModel @ 28 NONAME
+	_ZN13GlxAlbumModel13listPopulatedEv @ 29 NONAME
+	_ZN13GlxAlbumModel14modelPopulatedEv @ 30 NONAME
 
--- a/ui/uiengine/model/favmediamodel/favmediamodel.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/favmediamodel/favmediamodel.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -35,6 +35,8 @@
 TARGET.UID3 = 0x20000A06
 TARGET.CAPABILITY = ALL -TCB 
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE 
+
 }
 # Input
 HEADERS += inc/glxfavmediamodel.h 
--- a/ui/uiengine/model/listmodel/inc/glxalbummodel.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/listmodel/inc/glxalbummodel.h	Tue Jul 06 14:16:16 2010 +0300
@@ -67,10 +67,12 @@
     
 signals :
     void iconAvailable(int itemIndex, HbIcon* itemIcon, GlxTBContextType tbContextType) const;
+    void listPopulated();
 public slots:
     void itemUpdated1(int mlIndex, GlxTBContextType tbContextType);
     void itemsAdded(int startIndex, int endIndex);
     void itemsRemoved(int startIndex, int endIndex);
+    void modelPopulated();
 protected:
     
 private slots:
@@ -80,6 +82,7 @@
     GlxContextMode mContextMode;
     HbIcon* mDefaultIcon;
     QCache<int, HbIcon> itemIconCache;
+    int mTempVisibleWindowIndex;
 };
 
 #endif /* GLXALBUMMODEL_H */
--- a/ui/uiengine/model/listmodel/listmodel.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/listmodel/listmodel.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -32,6 +32,7 @@
 TARGET.UID3 = 0x20000A0A
 TARGET.CAPABILITY = ALL -TCB
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE
 }
 # Input
 HEADERS += inc/glxalbummodel.h 
--- a/ui/uiengine/model/listmodel/src/glxalbummodel.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/listmodel/src/glxalbummodel.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -48,8 +48,11 @@
 	qDebug("insertItems() connection status %d", err);
 	err = connect(mMLWrapper, SIGNAL(removeItems(int, int)), this, SLOT(itemsRemoved(int, int)));
 	qDebug("removeItems() connection status %d", err);
+    err = connect(mMLWrapper, SIGNAL(populated()), this, SLOT(modelPopulated()));
+	qDebug("populated() connection status %d", err);
     err = connect(this, SIGNAL(iconAvailable(int, HbIcon*, GlxTBContextType)), this, SLOT(updateItemIcon(int, HbIcon*, GlxTBContextType)));
 	qDebug("iconAvailable() connection status %d", err);
+	mTempVisibleWindowIndex = 0;
     itemIconCache.setMaxCost(50);
 }
 
@@ -62,6 +65,7 @@
 	err = disconnect(mMLWrapper, SIGNAL(insertItems(int, int)), this, SLOT(itemsAdded(int, int)));
 	err = disconnect(mMLWrapper, SIGNAL(removeItems(int, int)), this, SLOT(itemsRemoved(int, int)));
     err = disconnect(this, SIGNAL(iconAvailable(int, HbIcon*, GlxTBContextType)), this, SLOT(updateItemIcon(int, HbIcon*, GlxTBContextType)));
+    err = disconnect(mMLWrapper, SIGNAL(populated()), this, SLOT(modelPopulated()));
 	delete mMLWrapper;
     mMLWrapper = NULL;
     itemIconCache.clear();
@@ -149,6 +153,8 @@
         
     case GlxSystemItemRole :
         return mMLWrapper->isSystemItem( getFocusIndex().row() );
+    case GlxVisualWindowIndex :
+        return mMLWrapper->getVisibleWindowIndex();
            
     default :       
         return QVariant();
@@ -186,6 +192,12 @@
             return TRUE;
         }
     }
+    if ( GlxTempVisualWindowIndex == role ) {
+        if ( value.isValid() && value.canConvert<int> () ) {
+        mTempVisibleWindowIndex = value.value <int> (); 
+            return TRUE;
+        }
+    }
     return FALSE;
 }
 
@@ -232,6 +244,14 @@
     return index(mMLWrapper->getFocusIndex(), 0);
 }
 
+void GlxAlbumModel::modelPopulated()
+{
+    if ( mTempVisibleWindowIndex!=-1) {
+        mMLWrapper->setVisibleWindowIndex(mTempVisibleWindowIndex);
+        mTempVisibleWindowIndex = -1;
+        emit listPopulated();
+    }
+}
 void GlxAlbumModel::itemUpdated1(int mlIndex,GlxTBContextType tbContextType  )
 {
 	Q_UNUSED(tbContextType);
--- a/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Tue Jul 06 14:16:16 2010 +0300
@@ -35,6 +35,7 @@
 class HbIcon;
 class GlxModelParm;
 class GlxMLWrapper;
+class GlxDRMUtilityWrapper;
 #include <QCache>
 #include <QVector>
 
@@ -119,6 +120,8 @@
 	int externalDataCount;
 	int mFocusIndex;
 	int mSubState;
+	GlxDRMUtilityWrapper* mDRMUtilityWrapper;
+	int mTempVisibleWindowIndex;
 };
 
 
--- a/ui/uiengine/model/mediamodel/mediamodel.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/mediamodel/mediamodel.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -20,12 +20,15 @@
 INCLUDEPATH += . ../../../inc \
 		 ../../../../inc \
              ../../../../loggers\loggerqt\inc \
-		 ../../medialistwrapper/inc 
+		 ../../medialistwrapper/inc \
+		 ../../drmutilitywrapper/inc
 
 CONFIG += hb
 
 LIBS += -lglxmedialistwrapper.dll \
-        -lglxloggerqt.dll
+	-lglxdrmutilitywrapper.dll \
+        -lglxloggerqt.dll \
+	-lglximageviewermanager.dll		
 
 
 DEFINES += BUILD_MEDIAMODEL
@@ -35,6 +38,7 @@
 TARGET.UID3 = 0x20000A08
 TARGET.CAPABILITY = ALL -TCB 
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE
 }
 # Input
 HEADERS += inc/glxmediamodel.h 
--- a/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -24,13 +24,16 @@
 #include <QCache>
 #include <QDebug>
 #include <glxmlwrapper.h>
+#include"glxdrmutilitywrapper.h"
 
 #include <glxfiltergeneraldefs.h>
 
+#include <glximageviewermanager.h>
 //#define GLXPERFORMANCE_LOG  
 #include <glxperformancemacro.h>
 
 #include "glxicondefs.h" //Contains the icon names/Ids
+#include<glxviewids.h>
 
 GlxMediaModel::GlxMediaModel(GlxModelParm & modelParm)
 {
@@ -39,7 +42,7 @@
 	mMLWrapper = new GlxMLWrapper(modelParm.collection(),0,EGlxFilterImage);
 	mMLWrapper->setContextMode( modelParm.contextMode() );
 	mContextMode = modelParm.contextMode( ) ; 
-	
+	mDRMUtilityWrapper = new GlxDRMUtilityWrapper();
 	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)));
@@ -65,6 +68,7 @@
 	externalDataCount = 0;
 	mFocusIndex = -1;
 	mSubState = -1;
+	mTempVisibleWindowIndex = 0;
 }
 
 GlxMediaModel::~GlxMediaModel()
@@ -85,7 +89,7 @@
 	err = disconnect(mMLWrapper, SIGNAL(populated()), this, SLOT(modelpopulated()));
 	err = disconnect(mMLWrapper, SIGNAL(updateDetails()), this, SLOT(updateDetailItems()));
     delete mMLWrapper;
-
+	delete mDRMUtilityWrapper;
 }
 
 //------------------------------------------------------------------------------------------------------------
@@ -360,8 +364,30 @@
 
 HbIcon* GlxMediaModel::GetFsIconItem(int itemIndex, GlxTBContextType tbContextType) const
 {
-	HbIcon* itemIcon = itemFsIconCache[itemIndex];  //Initialize icon from the Cache will be NULL if Item not present
-	if (!itemIcon) {
+	HbIcon* itemIcon = NULL;  //Initialize icon from the Cache will be NULL if Item not present
+
+    bool drmProtected = mMLWrapper->IsDrmProtected(itemIndex);
+    if(drmProtected)
+        {
+        QString imagePath = mMLWrapper->retrieveItemUri(itemIndex);
+		bool rightValid = mMLWrapper->IsDrmValid(itemIndex);
+        if(!rightValid)
+            {
+            //show error note here
+            if(itemIndex == mFocusIndex )
+                mDRMUtilityWrapper->ShowRightsInfo(imagePath);
+            return itemIcon;
+            }
+        else
+            {
+            //consumeDrmRights(imagePath);
+            mDRMUtilityWrapper->ConsumeRights(imagePath);
+			bool rightValid = mDRMUtilityWrapper->ItemRightsValidityCheck(imagePath,true);
+			mMLWrapper->setDrmValid(itemIndex,rightValid);
+            }
+        }
+    itemIcon = itemFsIconCache[itemIndex];  //Initialize icon from the Cache will be NULL if Item not present
+    if (!itemIcon) {
 		itemIcon =  mMLWrapper->retrieveItemIcon(itemIndex, tbContextType);
 		if(itemIcon){
             emit iconAvailable(itemIndex,itemIcon, tbContextType);
@@ -407,6 +433,10 @@
 
 void GlxMediaModel::modelpopulated()
 {
+    if ( mTempVisibleWindowIndex!=-1) {
+        mMLWrapper->setVisibleWindowIndex(mTempVisibleWindowIndex);
+        mTempVisibleWindowIndex = -1;
+	}
     emit populated();
 }
 
@@ -470,10 +500,10 @@
 {
 	qDebug("GlxMediaModel::setFocusIndex%d", index.row());
 	int itemIndex = index.row();
-	
+	int mlIndex = -1;
 	if(itemIndex >=externalDataCount)
 	{
-		int mlIndex = itemIndex - externalDataCount;
+		mlIndex = itemIndex - externalDataCount;
 		mMLWrapper->setFocusIndex(mlIndex);
 		mFocusIndex = -1;
 	}
@@ -481,10 +511,22 @@
 		mFocusIndex = itemIndex;
 		if(rowCount() > externalDataCount) {
 			mMLWrapper->setFocusIndex(0);
+			mlIndex = 0;
 		}
 		
 	}
-
+	if(mSubState != IMAGEVIEWER_S ){
+     if( mMLWrapper->IsDrmProtected(mlIndex) && (!mMLWrapper->IsDrmValid(mlIndex)) )
+            {
+            QString imagePath = mMLWrapper->retrieveItemUri(mlIndex);
+            mDRMUtilityWrapper->ShowRightsInfo(imagePath);
+            }
+	}else {
+        CGlxImageViewerManager* CGlxImageViewerManager = CGlxImageViewerManager::InstanceL();
+        const TDesC& title = CGlxImageViewerManager->ImageUri()->Des();
+        QString imagePath = QString::fromUtf16(title.Ptr(),title.Length());
+        mDRMUtilityWrapper->ShowRightsInfo(imagePath);
+	}
 }
 
 QModelIndex GlxMediaModel::getFocusIndex() const
@@ -554,6 +596,12 @@
         mSubState = value.value <int> () ;
         return TRUE;
     }
+    if ( GlxTempVisualWindowIndex == role ) {
+            if ( value.isValid() && value.canConvert<int> () ) {
+            mTempVisibleWindowIndex = value.value <int> (); 
+            return TRUE;
+            }
+    }
 
     return FALSE;
 }
--- a/ui/uiengine/model/modelwrapper/modelwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/model/modelwrapper/modelwrapper.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -30,6 +30,7 @@
 TARGET.UID3 = 0x2000718C
 TARGET.CAPABILITY = ALL -TCB
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE
 }
 # Input
 HEADERS += inc/glxmodelwrapper.h 
--- a/ui/uiengine/uiengine.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/uiengine/uiengine.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -16,5 +16,6 @@
 #*/ 
 TEMPLATE    = subdirs
 CONFIG += ordered
-SUBDIRS	    = medialistwrapper \
+SUBDIRS	    = drmutilitywrapper \
+              medialistwrapper \
               model
--- a/ui/viewmanagement/bwins/glxstatehandleru.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/bwins/glxstatehandleru.def	Tue Jul 06 14:16:16 2010 +0300
@@ -37,4 +37,6 @@
 	?eventFilter@GlxStateManager@@UAE_NPAVQObject@@PAVQEvent@@@Z @ 36 NONAME ; bool GlxStateManager::eventFilter(class QObject *, class QEvent *)
 	?vanishProgressDialog@GlxStateManager@@AAEXXZ @ 37 NONAME ; void GlxStateManager::vanishProgressDialog(void)
 	?launchProgressDialog@GlxStateManager@@AAEXXZ @ 38 NONAME ; void GlxStateManager::launchProgressDialog(void)
+	?saveData@GlxStateManager@@QAEXXZ @ 39 NONAME ; void GlxStateManager::saveData(void)
+	?launchActivity@GlxStateManager@@AAE_NXZ @ 40 NONAME ; bool GlxStateManager::launchActivity(void)
 
--- a/ui/viewmanagement/bwins/glxviewmanageru.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/bwins/glxviewmanageru.def	Tue Jul 06 14:16:16 2010 +0300
@@ -47,4 +47,6 @@
 	?tr@GlxViewManager@@SA?AVQString@@PBD0H@Z @ 46 NONAME ; class QString GlxViewManager::tr(char const *, char const *, int)
 	?activateView@GlxViewManager@@AAEXXZ @ 47 NONAME ; void GlxViewManager::activateView(void)
 	?hideProgressDialog@GlxViewManager@@AAEXXZ @ 48 NONAME ; void GlxViewManager::hideProgressDialog(void)
+	?applicationReady@GlxViewManager@@IAEXXZ @ 49 NONAME ; void GlxViewManager::applicationReady(void)
+	?handleReadyView@GlxViewManager@@QAEXXZ @ 50 NONAME ; void GlxViewManager::handleReadyView(void)
 
--- a/ui/viewmanagement/eabi/glxstatehandleru.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/eabi/glxstatehandleru.def	Tue Jul 06 14:16:16 2010 +0300
@@ -37,4 +37,6 @@
 	_ZN15GlxStateManager11eventFilterEP7QObjectP6QEvent @ 36 NONAME
 	_ZN15GlxStateManager20launchProgressDialogEv @ 37 NONAME
 	_ZN15GlxStateManager20vanishProgressDialogEv @ 38 NONAME
+	_ZN15GlxStateManager14launchActivityEv @ 39 NONAME
+	_ZN15GlxStateManager8saveDataEv @ 40 NONAME
 
--- a/ui/viewmanagement/eabi/glxviewmanageru.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/eabi/glxviewmanageru.def	Tue Jul 06 14:16:16 2010 +0300
@@ -47,4 +47,6 @@
 	_ZTI14GlxViewManager @ 46 NONAME
 	_ZTV14GlxViewManager @ 47 NONAME
 	_ZN14GlxViewManager18hideProgressDialogEv @ 48 NONAME
+	_ZN14GlxViewManager15handleReadyViewEv @ 49 NONAME
+	_ZN14GlxViewManager16applicationReadyEv @ 50 NONAME
 
--- a/ui/viewmanagement/statehandler/inc/glxstatemanager.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/statehandler/inc/glxstatemanager.h	Tue Jul 06 14:16:16 2010 +0300
@@ -24,6 +24,7 @@
 #include <QObject>
 #include <QList>
 #include <glxbasestate.h>
+#include <qmap.h>
 
 class GlxState;
 class GlxViewManager;
@@ -118,6 +119,7 @@
      * call back function to monitor the change in thumbnail manager
      */
     void updateTNProgress( int count);
+    void saveData();
 
 public :
     /*
@@ -198,6 +200,11 @@
      */        
     void exitApplication();
 
+    /*Launch Application as an acitivyt.
+     * Return Value @0 : If launching an activity fails
+     *              @1 : If launch activity passes
+     */
+     bool launchActivity();
 private:
     GlxViewManager      *mViewManager;
     GlxMediaModel       *mAllMediaModel;        // for all grid
@@ -210,6 +217,7 @@
     GlxTNObserver       *mTNObserver;
     int                 mCollectionId;
     bool                isProgressbarRunning;
+    QMap<QString, qint32> mSaveActivity;
 };
 
 
--- a/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -21,6 +21,8 @@
 #include<glxcommandhandlerdelete.h>
 #include <glxcommandhandleraddtocontainer.h>
 #include <glxcommandhandlerrotate.h>
+#include <glxcommandhandlerrotateimage.h>
+#include <glxcommandhandlercropimage.h>
 #include <glxcommandhandlerremovefrom.h>
 #include <glxcommandhandlernewmedia.h>
 #include <glxcommandhandlersend.h>
@@ -56,7 +58,12 @@
            
         case EGlxCmdComment: cmdHandler = new GlxCommandHandlerComment();
                    break;
-                   
+        case EGlxCmdRotateImgCW:
+        case EGlxCmdRotateImgCCW:
+            					cmdHandler = new GlxCommandHandlerRotateImage();
+            break;
+        case EGlxCmdRotateImgCrop: cmdHandler = new GlxCommandHandlerCropImage();
+            break;
         default:
            break;
         }
--- a/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -22,6 +22,8 @@
 #include <hbnotificationdialog.h>
 #include <QProcess>
 #include <hbinstance.h>
+#include <HbActivityManager.h>
+#include <hbapplication.h>
 
 //user includes
 #include "glxstatemanager.h"
@@ -67,10 +69,12 @@
         mViewManager = new GlxViewManager();
     }
     mTNObserver = new GlxTNObserver();
+    mSaveActivity.clear();
     
     connect ( this, SIGNAL( setupItemsSignal() ), this, SLOT( setupItems() ), Qt::QueuedConnection );
     connect ( mViewManager, SIGNAL(actionTriggered( qint32 )), this, SLOT(actionTriggered( qint32 )), Qt::QueuedConnection );
     connect ( mTNObserver, SIGNAL( leftTNCount( int ) ), this, SLOT( updateTNProgress( int ) ) );
+    connect ( qobject_cast<HbApplication*>(qApp), SIGNAL (aboutToQuit()), this, SLOT(saveData()));
 	//TO:DO TBD through exception when it is null
 }
 
@@ -121,12 +125,18 @@
 void GlxStateManager::launchApplication()
 {
     qDebug("GlxStateManager::launchApplication");   
-       
+     bool activitySuccess = false;  
     //To:Do use it in future once performance code is removed nextState(GLX_GRIDVIEW_ID, ALL_ITEM_S)
+     HbApplication* app = qobject_cast<HbApplication*>(qApp);
+     if(app->activateReason() == Hb::ActivationReasonActivity) {
+          activitySuccess = launchActivity();
+     }
+     if( !activitySuccess ) { 
     mCurrentState = createState( GLX_GRIDVIEW_ID );
     mCurrentState->setState( ALL_ITEM_S );
-       
-    if ( mTNObserver->getTNLeftCount() > 0 ) {
+    
+    int leftCount = mTNObserver->getTNLeftCount() ;
+    if (  leftCount > 0  ) {
         mViewManager->launchApplication( GLX_GRIDVIEW_ID, mCurrentModel);
         launchProgressDialog();
     }
@@ -136,6 +146,41 @@
     }
     
     mTNObserver->startTNObserving() ; 
+     }
+     //Remove the previous activity
+     HbActivityManager* activityManager = app->activityManager();
+     bool ok = activityManager->removeActivity("PhotosMainView");
+     if ( !ok )
+     {
+         qDebug("launchapplication::Remove activity failed" );
+     } 
+}
+bool GlxStateManager::launchActivity()
+{
+    HbApplication* app = qobject_cast<HbApplication*>(qApp);
+    bool ok = app->activityManager()->waitActivity();
+    if ( !ok )
+    {
+        qDebug("subscribing to activity manager failed" );
+        //return false;  TBD: waitActivity is always returning false. Could be some issue with AM.
+    }
+    QVariant data = app->activityManager()->activityData( "PhotosMainView" );
+    QByteArray serializedModel = data.toByteArray();
+    QDataStream stream(&serializedModel, QIODevice::ReadOnly);
+    //Fetch the data from the activity Manager
+    QMap<QString, qint32> fetchActivity;
+    stream >> fetchActivity;  
+    qint32 stateId = fetchActivity.value("ID");
+    mCurrentState = createState(stateId);
+    mCurrentState->setState( fetchActivity.value("InternalState") );
+    createModel( stateId);
+	/*Model might not be populated yet to set the visibleWindowIndex right away.
+	*So, let us store the visible index as a temporary Variable, so that  visible Window Index 
+	*is set once the model is populated.
+    */
+    mCurrentModel->setData(QModelIndex(), fetchActivity.value("VisibleIndex") , GlxTempVisualWindowIndex );
+    mViewManager->launchApplication(stateId, mCurrentModel); 
+    return true;
 }
 
 void GlxStateManager::launchFromExternal()
@@ -171,10 +216,12 @@
 void GlxStateManager::updateTNProgress( int count)
 {    
     TRACER("GlxStateManager::updateTNProgress() ");
-    // this is case when progress bar is not showing
-    // in the case of rename of an image or capture the single item
-    // it is also launching the progress bar, to avoid this scenario add the check of count more than 5
-    if ( mCurrentModel && count > 5 ) { 
+// mCurrentModel ------------this is case when progress bar is not showing
+// count > 5 ----------------in the case of rename of an image or capture the single item
+//                           it is also launching the progress bar, to avoid this scenario add the check of count more than 5
+// count == KErrNotReady ----A case when memory card is inserted but it is not harvest so it is given an error
+//                           In that case also user should be block to browse the images
+    if ( mCurrentModel && ( count > 5  ) ) { 
          goBack( GLX_GRIDVIEW_ID, ALL_ITEM_S ) ;
          cleanAllModel();
          launchProgressDialog();
@@ -189,9 +236,46 @@
         else {
             mViewManager->updateProgressDialog( count );
         }
+    }   
+}
+
+void GlxStateManager::saveData()
+{
+    if( (mCurrentState->id() == GLX_GRIDVIEW_ID && mCurrentState->state() == ALL_ITEM_S) || mCurrentState->id() == GLX_LISTVIEW_ID ) {
+    mSaveActivity.insert("ID",mCurrentState->id()); 
+    mSaveActivity.insert("InternalState",mCurrentState->state());
+    
+    //Store the visual Index
+    if(mCurrentModel)
+    {
+    	QVariant variant = mCurrentModel->data( mCurrentModel->index(0,0), GlxVisualWindowIndex );
+    	if ( variant.isValid() &&  variant.canConvert<int> () ) {
+         mSaveActivity.insert("VisibleIndex",variant.value<int>());
+    	}
+ 		}
+ 		else
+ 			   mSaveActivity.insert("VisibleIndex",0);
+ 			   
+    HbActivityManager* activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
+    
+    //Take a screenshot
+    QVariantHash metadata;
+    HbMainWindow *window = hbInstance->allMainWindows().first();
+    metadata.insert("screenshot", QPixmap::grabWidget(window, window->rect()));
+
+     QByteArray serializedModel;
+     QDataStream stream(&serializedModel, QIODevice::WriteOnly | QIODevice::Append);
+     stream << mSaveActivity;
+     //Add the activity
+    bool ok = activityManager->addActivity("PhotosMainView", serializedModel, metadata);
+     if ( !ok )
+     {
+        qDebug("SaveData::Add activity failed" );
     }
+   }
 }
 
+
 void GlxStateManager::nextState(qint32 state, int internalState)
 {
     qDebug("GlxStateManager::nextState next state = %u", state);
@@ -226,7 +310,7 @@
 
     if ( mCurrentState->previousState() == NULL ) { //In the case only one state in stack then exit from the application
         exitApplication() ;
-        mCurrentState = NULL;
+        return ;
     }
     else {
         //effect parameter should be set here other wise there is no way to know from where it come from
@@ -618,13 +702,11 @@
 
 void GlxStateManager::exitApplication()
 {
-    if ( mCurrentState->id( ) == GLX_FULLSCREENVIEW_ID && mCurrentState->state() == EXTERNAL_S ) {
-        emit externalCommand(EGlxPluginCmdBack);
-    }
-    else {
+    
+    
     //To:Do memory cleanup
         QApplication::quit();
-    }    
+     
 }
 
 GlxStateManager::~GlxStateManager()
@@ -638,6 +720,7 @@
     disconnect ( mViewManager, SIGNAL(externalCommand(int )), this, SIGNAL(externalCommand(int )) );
     disconnect ( mTNObserver, SIGNAL( leftTNCount( int ) ), this, SLOT( updateTNProgress( int ) ) );
     disconnect ( this, SIGNAL( setupItemsSignal() ), this, SLOT( setupItems() ) );
+    disconnect ( qobject_cast<HbApplication*>(qApp), SIGNAL (aboutToQuit()), this, SLOT(saveData()));
     
     delete mTNObserver;
     delete mViewManager; 
--- a/ui/viewmanagement/statehandler/statehandler.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/statehandler/statehandler.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -40,6 +40,7 @@
 TARGET.UID3 = 0x20000A07
 TARGET.CAPABILITY = ALL -TCB 
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE
 }
 
 LIBS += -lglxviewmanager.dll \
--- a/ui/viewmanagement/viewmanager/inc/glxviewmanager.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/viewmanager/inc/glxviewmanager.h	Tue Jul 06 14:16:16 2010 +0300
@@ -105,6 +105,7 @@
  */
     void actionTriggered(qint32 id);
     void externalCommand(int cmdId);
+    void applicationReady();
 
 public slots:
 /*
@@ -146,6 +147,7 @@
  */    
     void itemSpecificMenuTriggered(qint32,QPointF );
     
+    void handleReadyView();
 protected:
 	
 private slots:
@@ -205,7 +207,6 @@
     QList<HbAction *>  mMarkingActionList; //marking mode tool bar action list
     HbToolBar          *mViewToolBar; //view tool bar
     HbToolBar          *mMarkingToolBar; //marking mode tool bar
-    HbMenu *mMenu; 
     GlxView *mView;
     QAbstractItemModel *mModel; //no ownership
     QItemSelectionModel * mSelectionModel;
--- a/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -20,7 +20,8 @@
 #include <hbaction.h>
 #include <hbmenu.h>
 #include <hbmainwindow.h>
-
+#include <featdiscovery.h>
+#include <publicruntimeids.hrh>
 //user include
 #include "glxviewids.h"
 #include "glxmenumanager.h"
@@ -29,7 +30,6 @@
 #include "glxlocalisationstrings.h"
 
 
-
 GlxMenuManager::GlxMenuManager(HbMainWindow* mainWindow)
     : mModel( 0),
       mMainWindow( mainWindow ),
@@ -48,11 +48,13 @@
     
     action = menu->addAction(GLX_OPTION_MARK_ALL);
     action->setData(EGlxCmdMarkAll);
+    action->setObjectName( "Menu MarkAll" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
     
     action = menu->addAction(GLX_OPTION_UN_MARK_ALL);
     action->setDisabled(true);  //Dim UnMarkAll when no images are marked
     action->setData(EGlxCmdUnMarkAll);
+    action->setObjectName( "Menu UnMarkAll" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));    
 }
 
@@ -61,11 +63,12 @@
     QList<QAction*> actionList = menu->actions();
     for ( int i = 0 ; i < actionList.count(); i++) {
         if(actionList.at(i)->data()==EGlxCmdUnMarkAll) {
-               actionList.at(i)->setDisabled(disable);
-               break;
+            actionList.at(i)->setDisabled(disable);
+            break;
         }
      }
 }
+
 void GlxMenuManager::addMenu(qint32 viewId, HbMenu* menu)
 {
     switch(viewId) {
@@ -108,29 +111,39 @@
 {
     qDebug()<<"GlxMenuManager::CreateGridMenu";
     HbAction *action = NULL;
+    menu->setObjectName( "GridMenu" );
     
     action = menu->addAction(GLX_OPTION_SHARE);
     action->setData(EGlxCmdSend);
+    action->setObjectName( "GridMenu Send" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
    
     mSubMenu = menu->addMenu(GLX_OPTION_SLIDESHOW);
+    mSubMenu->setObjectName( "GridMenu SlideShow" );
+	
     action = mSubMenu->addAction(GLX_OPTION_SS_PLAY); 
     action->setData(EGlxCmdFirstSlideshow);
+    action->setObjectName( "GridMenu Play" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
     
     action = mSubMenu->addAction(GLX_OPTION_SS_SETTINGS);
     action->setData(EGlxCmdSlideshowSettings);
+    action->setObjectName( "GridMenu Setting" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); 
+    
     action = menu->addAction(GLX_OPTION_ADD_TO_ALBUM);
     action->setData(EGlxCmdAddToAlbum);
+    action->setObjectName( "GridMenu AddToAlbum" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
     
     action = menu->addAction(GLX_OPTION_REMOVE_FROM_ALBUM);
     action->setData(EGlxCmdRemoveFrom);
+    action->setObjectName( "GridMenu RemoveAlbum" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 
     action = menu->addAction(GLX_OPTION_DELETE);
     action->setData(EGlxCmdDelete);
+    action->setObjectName( "GridMenu Delete" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 }
 
@@ -138,9 +151,11 @@
 {
     qDebug()<<"GlxMenuManager::CreateListMenu";
     HbAction *action = NULL;
+    menu->setObjectName( "Listmenu" );
     
     action = menu->addAction(GLX_OPTION_NEW_ALBUM);
     action->setData(EGlxCmdAddMedia);
+    action->setObjectName( "ListMenu NewAlbum" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 }
 
@@ -148,21 +163,47 @@
 {
     qDebug()<<"GlxMenuManager::CreateFullscreenMenu";
     HbAction *action = NULL;
+    menu->setObjectName( "FSMenu" );
     
     action = menu->addAction(GLX_OPTION_SHARE);
     action->setData(EGlxCmdSend);
+    action->setObjectName( "FSMenu Share" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
     
     mSubMenu = menu->addMenu(GLX_OPTION_SLIDESHOW);
-    action = mSubMenu->addAction(GLX_OPTION_SS_PLAY); 
+    mSubMenu->setObjectName( "FSMenu SlideShow" );
+    
+    action = mSubMenu->addAction(GLX_OPTION_SS_PLAY);
     action->setData(EGlxCmdSelectSlideshow);
-    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); 
+    action->setObjectName( "FSMenu Play" );
+    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
+    
     action = mSubMenu->addAction(GLX_OPTION_SS_SETTINGS);
     action->setData(EGlxCmdSlideshowSettings);
+    action->setObjectName( "FSMenu Setting" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
+#ifndef __WINSCW__
+	CFeatureDiscovery* featManager = CFeatureDiscovery::NewL();
+    if(featManager->IsFeatureSupportedL(KFeatureIdFfImageEditor))
+        {
+		mSubMenu = menu->addMenu(QString("Rotate"));
+		action = mSubMenu->addAction(QString("90 CW")); 
+		action->setData(EGlxCmdRotateImgCW);
+		connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); 
+		action = mSubMenu->addAction(QString("90 CCW"));
+		action->setData(EGlxCmdRotateImgCCW);
+		connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
+		
+		action = menu->addAction(QString("Crop"));
+		action->setData(EGlxCmdRotateImgCrop);
+		connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));   
+        }
+    delete featManager;
+#endif //__WINSCW__	
     
     action = menu->addAction(GLX_OPTION_ADD_TO_ALBUM);
     action->setData(EGlxCmdAddToAlbum);
+    action->setObjectName( "FSMenu AddToAlbum" );
     connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 }
 
@@ -249,30 +290,36 @@
 {
     qDebug("GlxMenuManager::showContextMenu " );
     mContextMenu = new HbMenu();
+    mContextMenu->setObjectName( "ContextMenu" );
     HbAction *action = NULL;
 
     switch ( viewId ) {
 	    case GLX_GRIDVIEW_ID :
 	        action = mContextMenu->addAction(GLX_MENU_SHARE);
 	        action->setData(EGlxCmdContextSend);
+	        action->setObjectName( "CM Send" );
 	        connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 	        
 	        action = mContextMenu->addAction(GLX_MENU_SLIDESHOW);
 	        action->setData(EGlxCmdSelectSlideshow);
+	        action->setObjectName( "CM SlideShow" );
 	        connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 
 	        if ( viewSubState() == ALBUM_ITEM_S ) {        
-	        action = mContextMenu->addAction(GLX_OPTION_REMOVE_FROM_ALBUM);
-	        action->setData(EGlxCmdContextRemoveFrom);
-	        connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
+                action = mContextMenu->addAction(GLX_OPTION_REMOVE_FROM_ALBUM);
+                action->setData(EGlxCmdContextRemoveFrom);
+                action->setObjectName( "CM RemoveAlbum" );
+                connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 	        }
 	        
 	        action = mContextMenu->addAction(GLX_MENU_ADD_TO_ALBUM);
 		    action->setData(EGlxCmdContextAddToAlbum);
+		    action->setObjectName( "CM AddToAlbum" );
 		    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 		    
 		    action = mContextMenu->addAction(GLX_MENU_DELETE);
 		    action->setData(EGlxCmdContextDelete);
+		    action->setObjectName( "CM Delete" );
 		    connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 			break;
 	    	
@@ -286,6 +333,7 @@
 	        if ( count ) {
                 action = mContextMenu->addAction(GLX_MENU_SLIDESHOW);
                 action->setData(EGlxCmdAlbumSlideShow);
+                action->setObjectName( "CM Album SlideShow" );
                 connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
 	        }
 	        
@@ -293,10 +341,12 @@
             if ( variant.isValid() &&  variant.canConvert<bool> () && ( variant.value<bool>() == false ) ) {           
                 action = mContextMenu->addAction(GLX_MENU_RENAME);
                 action->setData(EGlxCmdContextRename);
+                action->setObjectName( "CM Rename" );
                 connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
                             
                 action = mContextMenu->addAction(GLX_MENU_DELETE);
                 action->setData(EGlxCmdContextAlbumDelete);
+                action->setObjectName( "CM Album Delete" );
                 connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));
             }
 	    }
--- a/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -38,6 +38,8 @@
 #include <hbprogressdialog.h>
 #include <QItemSelectionModel>
 #include <glxmainwindoweventfilter.h>
+#include <xqsettingsmanager.h>
+#include <xqsettingskey.h>
 
 
 GlxViewManager::GlxViewManager() 
@@ -46,7 +48,6 @@
       mEffectEngine( NULL ), 
       mViewToolBar( NULL ), 
       mMarkingToolBar( NULL ), 
-      mMenu( NULL ),
       mSelectionModel ( NULL ),
       mProgressDialog( NULL )
 {
@@ -56,6 +57,7 @@
         mMainWindow = GlxExternalUtility::instance()->getMainWindow();
         if(mMainWindow == NULL)	{
             mMainWindow = new HbMainWindow();
+            connect(mMainWindow, SIGNAL( viewReady() ), this, SLOT( handleReadyView() ));
         }
 		//Without this Zoom Does not work
 
@@ -66,6 +68,12 @@
     }
     HbStyleLoader::registerFilePath(":/data/photos.css");
 }
+void GlxViewManager::handleReadyView()
+{
+    emit actionTriggered( EGlxCmdSetupItem );
+    emit applicationReady();
+    disconnect(mMainWindow, SIGNAL( viewReady() ), this, SLOT( handleReadyView() ));
+}
 
 void GlxViewManager::setupItems( )
 {
@@ -123,7 +131,8 @@
     //create the back soft key action and set the data
     mBackAction = new HbAction(Hb::BackNaviAction, this);
     mBackAction->setData(EGlxCmdBack);
-    mView->setNavigationAction(mBackAction);
+    mBackAction->setObjectName( "App Back" );
+    mView->setNavigationAction( mBackAction );
 }
 
 Qt::Orientation GlxViewManager::orientation() const
@@ -206,7 +215,10 @@
 void GlxViewManager::launchProgressDialog( int maxValue )
 {
     if ( maxValue <= 0 ) {
-        return;
+        // TNM return the some error code ( negative value ) until it populated the count
+		// To show progress dialog 10 is chossen
+	     maxValue = 10;
+		          
     }
     if ( mProgressDialog == NULL ) {
         mProgressDialog = new HbProgressDialog( HbProgressDialog::ProgressDialog );
@@ -226,7 +238,7 @@
     mMainWindow->lower();
 }
 
-void GlxViewManager::updateProgressDialog( int currentValue)
+void GlxViewManager::updateProgressDialog( int currentValue )
 {
     static int i = 0;
     HbIcon icon;
@@ -273,10 +285,18 @@
             mProgressDialog->setMaximum( currentValue );
             max = currentValue ;
         }
-        int value = max - currentValue;
-        mProgressDialog->setProgressValue( value );
+        
         mProgressDialog->setIcon(icon);
-        mProgressDialog->setText( QString( " %1 / %2").arg( value ).arg( max ) );
+        
+        if ( currentValue < 0 ) {
+            mProgressDialog->setText( QString( "Refreshing" ) ); //To:Do string will change later
+            mProgressDialog->setProgressValue( 0 );
+        }
+        else {
+            int value = max - currentValue;
+            mProgressDialog->setProgressValue( value );
+            mProgressDialog->setText( QString( " %1 " ).arg( currentValue ) );
+        }
     }
 }
 
@@ -334,21 +354,12 @@
     GlxView *view = findView ( viewId );
     qDebug("GlxViewManager::enterMarkingMode view ID %d", viewId);
     
-    //In the case of first time create the marking mode menu( Mark All, Un Mark All )
-    if( mMenu == NULL ) {
-        mMenu = new HbMenu();
-        mMenuManager->createMarkingModeMenu(mMenu);
-    }
-    
     if ( mMarkingToolBar == NULL) {
         createMarkingModeToolBar(); //Marking mode tool bar is different from normal mode tool bar
     }
     
     if ( view ) { 
         view->enableMarking();
-        HbMenu *menu = view->takeMenu(); //Take the owner ship of current menu
-        view->setMenu(mMenu); //Set the marking mode menu
-        mMenu = menu;
         view->takeToolBar();
         view->addToolBar(mMarkingToolBar);
         mSelectionModel = view->getSelectionModel();
@@ -367,9 +378,6 @@
     qDebug("GlxViewManager::exitMarkingMode view ID %d", viewId);
     if ( view ) { 
         view->disableMarking(); 
-        HbMenu *menu = view->takeMenu(); //Take the owner ship of current menu
-        view->setMenu(mMenu); //Set the view menu option
-        mMenu = menu;
         view->takeToolBar();
         view->addToolBar(mViewToolBar);
         if(mSelectionModel)
@@ -426,7 +434,9 @@
         if ( mMenuManager ) {
             mMenuManager->addMenu( id, view->menu());
         }
-        view->setNavigationAction(mBackAction);
+        if ( mBackAction ) {
+            view->setNavigationAction( mBackAction );
+        }
     }
     return view;
 }
@@ -501,30 +511,63 @@
     mActionList.clear();  
     
     //create the All tool bar button action
-    HbAction* allAction = new HbAction(this);
-    allAction->setData(EGlxCmdAllGridOpen);
-    mActionList.append(allAction);    
-    allAction->setIcon(HbIcon(GLXICON_ALL)) ;
+    HbAction* allAction = new HbAction( this );
+    allAction->setData( EGlxCmdAllGridOpen );
+    mActionList.append( allAction );    
+    allAction->setIcon( HbIcon( GLXICON_ALL ) ) ;
+    allAction->setObjectName( "All Action" );
        
     //create the Album tool bar button action
-    HbAction* albumAction = new HbAction(this);
-    albumAction->setData(EGlxCmdAlbumListOpen);
-    mActionList.append(albumAction);
-    albumAction->setIcon(HbIcon(GLXICON_ALBUMS)) ;
+    HbAction* albumAction = new HbAction( this );
+    albumAction->setData( EGlxCmdAlbumListOpen );
+    mActionList.append( albumAction );
+    albumAction->setIcon( HbIcon( GLXICON_ALBUMS ) ) ;
+    albumAction->setObjectName( "Album Action" );
    
     //create the album tool bar button action
-    HbAction* cameraAction = new HbAction(this);
-    cameraAction->setData(EGlxCmdCameraOpen);
-    mActionList.append(cameraAction);  
-    cameraAction->setIcon(HbIcon(GLXICON_CAMERA)) ;
+    HbAction* cameraAction = new HbAction( this );
+    cameraAction->setData( EGlxCmdCameraOpen );
+    mActionList.append( cameraAction );  
+    cameraAction->setIcon( HbIcon( GLXICON_CAMERA ) ) ;
+    cameraAction->setObjectName( "Camera Action" );
+    
+    //Configure the 4 th Action in the tool bar
+    XQSettingsManager *ciSettingsManager = NULL;
+    ciSettingsManager = new XQSettingsManager(this);
+    
+    
+    XQSettingsKey* operatorLinkCenrepKey = NULL;
+    operatorLinkCenrepKey = new XQSettingsKey(XQSettingsKey::TargetCentralRepository, 
+                                            KGlxCi_UidGallery, KGlxOperatorLink);
+    QVariant value = ciSettingsManager->readItemValue(*operatorLinkCenrepKey);
     
     
-    //create the ovi tool bar button action
-    HbAction* oviAction = new HbAction(this);
-    oviAction->setData(EGlxCmdOviOpen);
-    mActionList.append(oviAction);
-    oviAction->setIcon(HbIcon(GLXICON_OVI)) ;
+    switch(value.toInt()) {
+        case KGlxOvi:
+            {
+                XQSettingsKey* oviCenrepKey = NULL;
+                oviCenrepKey = new XQSettingsKey(XQSettingsKey::TargetCentralRepository, 
+                                                        KGlxCi_UidGallery, KGlxOvi);
+                QVariant Ovivalue = ciSettingsManager->readItemValue(*oviCenrepKey, XQSettingsManager::TypeString);
+                HbAction* configurableAction = new HbAction(this);
+                configurableAction->setData(EGlxCmdOviOpen);
+                mActionList.append(configurableAction);
+            
+                if ( Ovivalue.isValid() && Ovivalue.canConvert<QString>() ) {
+                    configurableAction->setIcon( HbIcon( Ovivalue.toString() ) );
+                }
 
+                delete oviCenrepKey;
+            }
+            break;
+            
+        default:
+            qDebug("GlxViewManager::Configurable Action is empty " );
+            break;
+    }
+    
+    delete operatorLinkCenrepKey;
+    delete ciSettingsManager;
 }
 
 void GlxViewManager::createMarkingModeActions()
@@ -534,6 +577,7 @@
     //create the ok tool bar button action
     HbAction* selectAction = new HbAction(GLX_BUTTON_OK, this);
     selectAction->setData(EGlxCmdSelect);
+    selectAction->setObjectName( "Select Action" );
     mMarkingActionList.append(selectAction);
     connect( selectAction, SIGNAL(triggered( )), this, SLOT(handleAction( )), Qt::QueuedConnection );
     mMarkingToolBar->addAction( selectAction );
@@ -541,6 +585,7 @@
     //create the cancel tool bar button action
     HbAction* cancelAction = new HbAction(GLX_BUTTON_CANCEL, this);
     cancelAction->setData(EGlxCmdCancel);
+    cancelAction->setObjectName( "Cancel Action" );
     mMarkingActionList.append(cancelAction); 
     connect( cancelAction, SIGNAL(triggered( )), this, SLOT(handleAction( )), Qt::QueuedConnection ); 
     mMarkingToolBar->addAction( cancelAction );
@@ -639,20 +684,21 @@
     HbStyleLoader::unregisterFilePath(":/data/photos.css");
 	
     removeConnection();
+	
     delete mMenuManager;
-    qDebug("GlxViewManager::~GlxViewManager deleted menu manager");
+    qDebug("GlxViewManager::~GlxViewManager deleted menu manager");    
+    delete mViewToolBar;
+    delete mMarkingToolBar;
+    qDebug("GlxViewManager::~GlxViewManager deleted toolbar");
     
     while( mViewList.isEmpty( ) == FALSE){
         delete mViewList.takeLast() ;
     }
-    qDebug("GlxViewManager::~GlxViewManager view deleted");
-    
+    qDebug("GlxViewManager::~GlxViewManager view deleted");    
         
     delete mBackAction;
-    delete mViewToolBar;
-    delete mMarkingToolBar;
-    delete mMenu;
     delete mProgressDialog;
+    
     if ( mEffectEngine ) {
         mEffectEngine->deregistertransitionEffect();
         delete mEffectEngine;
--- a/ui/viewmanagement/viewmanager/viewmanager.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewmanagement/viewmanager/viewmanager.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -31,8 +31,9 @@
 LIBS +=  -lglxexternalutility.dll \
          -lglxviews.dll \
          -lglxloggerqt.dll \
-         -lglxviewutilities.dll
-
+         -lglxviewutilities.dll \
+	 -lfeatdiscovery.dll \
+	 -lxqsettingsmanager
 
 DEFINES += BUILD_VIEWMANAGER
 symbian: { 
@@ -40,6 +41,7 @@
 TARGET.UID3 = 0x20000A03
 TARGET.CAPABILITY = ALL -TCB 
 TARGET.EPOCALLOWDLLDATA = 1
+MMP_RULES += SMPSAFE
 }
 # Input
 HEADERS += inc/glxviewmanager.h \
--- a/ui/viewplugins/externalviewplugin/externalviewplugin.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewplugins/externalviewplugin/externalviewplugin.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -53,4 +53,5 @@
     isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 20480 \
         41943040
     TARGET.CAPABILITY = ALL -TCB
+    MMP_RULES += SMPSAFE
 }
\ No newline at end of file
--- a/ui/views/detailsview/inc/glxdetailscustomwidgets.h	Wed Jun 23 18:12:48 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +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:   ?Description
-*
-*/
-
-#ifndef GLXDETAILSCUSTOMWIDGETS_H
-#define GLXDETAILSCUSTOMWIDGETS_H
-
-#include <hbdataformmodelitem.h>
-#include <hbdataformviewitem.h>
-
-
-class HbIconItem;
-class HbLabel;
-class HbDataFormModelItem;
-enum 
-    {
-     ImageNameItem = HbDataFormModelItem::CustomItemEnd +1,
-     DateLabelItem,
-     LocationTagItem,
-     DurationItem,
-     ShareWithItem,
-     FaceTagItem,
-     CommentsItem
-     
-    };
-
-class GlxDetailsCustomWidgets: public HbDataFormViewItem
-{
-    Q_OBJECT
-
-public:
-    GlxDetailsCustomWidgets(QGraphicsItem *parent);
-    ~GlxDetailsCustomWidgets();
-     virtual HbAbstractViewItem* createItem();     
-     bool canSetModelIndex(const QModelIndex &index) const;
-
-protected:
-    virtual HbWidget* createCustomWidget();
-
-private:
-    HbLabel *mLabel;
-};
-
-#endif // GLXDETAILSCUSTOMWIDGETS_H
--- a/ui/views/detailsview/src/glxdetailsview.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/detailsview/src/glxdetailsview.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -72,7 +72,7 @@
 GlxDetailsView::GlxDetailsView(HbMainWindow *window) :
 GlxView(GLX_DETAILSVIEW_ID), mDetailsIcon(NULL), mFavIcon(NULL), mModel(
         NULL), mFavModel(NULL), mWindow(window),
-        mSelIndex(0),mDescriptions(NULL),mDateLabel(NULL),mSizeLabel(NULL),mTimeLabel(NULL)
+        mSelIndex(0),mDocLoader(NULL),mImageName(NULL),mDescriptions(NULL),mDateLabel(NULL),mSizeLabel(NULL),mTimeLabel(NULL)
    {
     GLX_LOG_INFO("GlxDetailsView::GlxDetailsView");
     OstTraceFunctionEntry0( GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY );
@@ -125,7 +125,7 @@
     OstTraceFunctionEntry0( GLXDETAILSVIEW_INITIALIZEVIEW_ENTRY );
     bool loaded = false;
     
-    if(mDocLoader)
+    if(!mDocLoader)
         {
          mDocLoader = new GlxDetailsViewDocLoader();
         }
--- a/ui/views/fullscreenview/inc/glxcoverflow.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/fullscreenview/inc/glxcoverflow.h	Tue Jul 06 14:16:16 2010 +0300
@@ -22,15 +22,15 @@
 
 #define NBR_ICON_ITEM 5
 
-#include <hbscrollarea.h>
 #include <hbeffect.h>
+#include <hbwidget.h>
 
 //forward declaration
 class HbIconItem;
 class HbMainWindow;
 class QAbstractItemModel;
+class QGestureEvent;
 
-class QGestureEvent;
 typedef enum
 {
     NO_MOVE,
@@ -81,14 +81,13 @@
     void dataChanged(QModelIndex startIndex, QModelIndex endIndex);
     void rowsInserted(const QModelIndex &parent, int start, int end);
     void rowsRemoved(const QModelIndex &parent, int start, int end);
+    void modelDestroyed();
     void autoLeftMove();
     void autoRightMove();
 
 protected:
 	void gestureEvent(QGestureEvent *event);
-
     void move(int value);
-
     void setRows() ;
     void setStripLen();
     int calculateIndex(int index);
@@ -96,15 +95,53 @@
     void loadIconItems (); 
     void updateIconItem (qint16 selIndex, qint16 selIconIndex, qint16 deltaX);
     
-    //clear all the model connection
+    /*
+     * In the case of animated image, it will play the animation for focus image
+     */
+    void playAnimation();
+    
+    /*
+     * To stop the animation
+     */
+    void stopAnimation();
+    
+    /*
+     * clear all the model connection
+     */
     void clearCurrentModel();
-    //add the connection to the model
+    
+    /*
+     * add the connection to the model
+     */
     void initializeNewModel();
-    //reset all the data of cover flow
+    
+    /*
+     * reset all the data of cover flow
+     */    
     void resetCoverFlow();
     int getSubState();
     void timerEvent(QTimerEvent *event);
 
+    /*
+     * To get the focus index
+     */
+    int getFocusIndex( );
+
+    /*
+     * To get the full screen icon of the image
+     */
+    HbIcon getIcon( int index );
+    
+    /*
+     * To get the URI of the image
+     */
+    QString getUri( int index );
+    
+    /*
+     * To get the GIF file info of the image
+     */
+    bool isAnimatedImage( int index );
+    
 private:
 	HbIconItem *mIconItem[NBR_ICON_ITEM];      //at most contain only five item
     qint16 mSelItemIndex;                    // current full screen index
--- a/ui/views/fullscreenview/inc/glxfullscreenview.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/fullscreenview/inc/glxfullscreenview.h	Tue Jul 06 14:16:16 2010 +0300
@@ -106,9 +106,10 @@
     void setImageStripModel();
     
     void loadFullScreenToolBar();
-    void imageSelectionAnimation(const QModelIndex &index);
+    void addToolBarAction( int commandId, const QString &iconName, const QString &name) ;
+    void imageSelectionAnimation( const QModelIndex &index );
     int getSubState();
-    void setHdmiModel(QAbstractItemModel *model);
+    void setHdmiModel( QAbstractItemModel *model );
 private:
     QAbstractItemModel  *mModel;   //no ownership
     HbMainWindow        *mWindow;  //no ownership
@@ -118,11 +119,6 @@
     HbIconItem          *mIconItem ;   //temporary item for play the image strip select animation
     GlxTvOutWrapper     *mTvOutWrapper;
     HbToolBar           *mFullScreenToolBar; //Fullscreen Toolbar
-    HbAction            *mFlipAction; //Action : it starts activates the details view
-    HbAction            *mSendAction;
-    HbAction            *mDeleteAction;
-    HbAction            *mUseImageAction;
-
     //for Zoom
 	GlxZoomWidget		*mZoomWidget;
     HbDocumentLoader    *mDocLoader;
--- a/ui/views/fullscreenview/src/glxcoverflow.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/fullscreenview/src/glxcoverflow.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -23,6 +23,7 @@
 #include <QDebug>
 #include <QGesture>
 #include <hbpangesture.h>
+#include <hbiconanimator.h>
 
 //User Includes
 #include <glxmodelparm.h>
@@ -70,7 +71,9 @@
         mIconItem[i]->setBrush( QBrush( Qt::black ) );
         mIconItem[i]->setSize( QSize( 0, 0 ) );
         mIconItem[i]->setAlignment( Qt::AlignCenter );
+        mIconItem[i]->setObjectName( QString( "Cover%1" ).arg( i ) );
     }
+    
     mUiOn = FALSE;
     mBounceBackDeltaX = GLX_BOUNCEBACK_DELTA;
 }
@@ -187,17 +190,13 @@
     
     int index = 0;
     for (int i = 0; i < NBR_ICON_ITEM ; i++) {
-        index = calculateIndex( mSelIndex + i - 2);
+        index = calculateIndex( mSelIndex + i - 2 );
         if ( index == startIndex.row() ) {
             index = ( mSelItemIndex + i - 2 + NBR_ICON_ITEM ) % NBR_ICON_ITEM;
             qDebug("GlxCoverFlow::dataChanged index = %d mSelItemIndex = %d ", index, mSelItemIndex );
-            
-            QVariant variant = mModel->data( startIndex, GlxFsImageRole );
-            if ( variant.isValid() &&  variant.canConvert<HbIcon> () ) {
-                mIconItem[index]->setIcon ( variant.value<HbIcon>() ) ; 
-            }
-            else {
-                mIconItem[index]->setIcon( HbIcon() );
+            mIconItem[ index ]->setIcon( getIcon( startIndex.row() ) );
+            if ( index == mSelItemIndex ) {
+                playAnimation( );
             }
         }
     }
@@ -229,7 +228,10 @@
     }
 }
 
-
+void GlxCoverFlow::modelDestroyed()
+{
+    mModel = NULL ;    
+}
 
 void GlxCoverFlow::autoLeftMove()
 {
@@ -267,12 +269,14 @@
         }
         int selIndex = mCurrentPos / width ;
         if ( mRows == 1 || selIndex != mSelIndex ) {
+            stopAnimation();
             mSelIndex = selIndex;
             mSelItemIndex = ( ++mSelItemIndex ) % NBR_ICON_ITEM;
             selIndex = ( mSelItemIndex + 2 ) % NBR_ICON_ITEM;
             updateIconItem( mSelIndex + 2, selIndex, width * 2 ) ;
+            playAnimation();
 			if(!mZoomOn) {
-            emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
+                emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
 			}
         }
         mMoveDir = NO_MOVE;
@@ -321,12 +325,14 @@
         }
         int selIndex = mCurrentPos / width ;
         if ( mRows == 1 || selIndex != mSelIndex ) {
+            stopAnimation();
             mSelIndex = selIndex;
             mSelItemIndex = ( mSelItemIndex == 0 ) ?  NBR_ICON_ITEM -1 : --mSelItemIndex;
             selIndex = ( mSelItemIndex + 3 ) % NBR_ICON_ITEM;
             updateIconItem( mSelIndex - 2, selIndex, - width * 2 ) ;
+            playAnimation();
 			if(!mZoomOn) {
-            emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
+                emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
 			}
         }
         mMoveDir = NO_MOVE;
@@ -395,71 +401,67 @@
 {  
     qDebug("GlxCoverFlow::loadIconItems ");
     int index = 0;
-    QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
-    if ( variant.isValid() &&  variant.canConvert<int> () ) {
-        mSelIndex = variant.value<int>();  
-    }  
-
+    stopAnimation();
+    mSelIndex = getFocusIndex();
+    
     qDebug("GlxCoverFlow::loadIconItems index = %d, width = %d", mSelIndex, size().width() );    
     
     for ( qint8 i = 0; i < NBR_ICON_ITEM ; i++ ) {
-        index = calculateIndex ( mSelIndex - 2 + i) ;           
-        QVariant variant = mModel->data( mModel->index(index, 0), GlxFsImageRole );
-        if ( variant.isValid() &&  variant.canConvert<HbIcon> () ) {
-            mIconItem[i]->setIcon ( variant.value<HbIcon>() ) ;       
-        }
-        else {
-            mIconItem[i]->setIcon( HbIcon() );
-        }            
+        index = calculateIndex ( mSelIndex - 2 + i) ; 
+        mIconItem[i]->setIcon( getIcon( index ) );
         mIconItem[i]->setSize ( mItemSize );
         mIconItem[i]->setPos ( QPointF ( (i - 2) * mItemSize.width(), 0) );   
     }
     
     mSelItemIndex = 2;
     mCurrentPos = mItemSize.width() * mSelIndex;
+    playAnimation();
+}
+
+void GlxCoverFlow::playAnimation()
+{
+    if ( isAnimatedImage( mSelIndex ) ) {
+        mIconItem[ mSelItemIndex ]->setIcon( HbIcon( getUri( mSelIndex ) ) );
+        mIconItem[ mSelItemIndex ]->animator().startAnimation();
+    }
+}
+
+void GlxCoverFlow::stopAnimation()
+{
+    mIconItem[ mSelItemIndex ]->animator().stopAnimation();
 }
 
 void GlxCoverFlow::updateIconItem (qint16 selIndex, qint16 selItemIndex, qint16 posX)
 {
     qDebug("GlxCoverFlow::updateIconItem selIndex = %d, selIconIndex = %d posX = %d", selIndex, selItemIndex, posX );
-    mIconItem[selItemIndex]->setPos(QPointF(posX, 0));
     
     selIndex = calculateIndex( selIndex );
-    
-    QVariant variant = mModel->data( mModel->index(selIndex, 0), GlxFsImageRole );
-    if ( variant.isValid() &&  variant.canConvert<HbIcon> () ) {
-        mIconItem[selItemIndex]->setIcon ( variant.value<HbIcon>() ) ;       
-    }
-    else {
-        mIconItem[selItemIndex]->setIcon( HbIcon() );
-    }
-    mIconItem[selItemIndex]->setSize ( mItemSize );    
+    mIconItem[ selItemIndex ]->setPos( QPointF( posX, 0 ) );    
+    mIconItem[ selItemIndex ]->setIcon( getIcon( selIndex ) );
+    mIconItem[ selItemIndex ]->setSize ( mItemSize );    
 }
 
-
 void GlxCoverFlow::clearCurrentModel()
 {
     qDebug("GlxCoverFlow::clearCurrentModel ");
     if ( mModel ) {
-        disconnect( mModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );
-        disconnect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(rowsInserted(QModelIndex,int,int)));
-        disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
+        disconnect( mModel, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), this, SLOT( dataChanged( QModelIndex, QModelIndex ) ) );
+        disconnect( mModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( rowsInserted( QModelIndex, int, int ) ) );
+        disconnect( mModel, SIGNAL( rowsRemoved( QModelIndex, int, int) ), this, SLOT( rowsRemoved( QModelIndex, int, int ) ) );
+        disconnect( mModel, SIGNAL( destroyed() ), this, SLOT( modelDestroyed() ) );
         mModel = NULL ;
-    }
-/*
-    disconnect(mModel, SIGNAL(destroyed()), this, SLOT(_q_modelDestroyed()));
-    disconnect(mModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), this, SLOT(rowsAboutToBeRemoved(QModelIndex,int,int)));
-*/  
+    } 
 }
 
 void GlxCoverFlow::initializeNewModel()
 {
     qDebug("GlxCoverFlow::initializeNewModel" );
     if ( mModel ) {
-        connect( mModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );
-        connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(rowsInserted(QModelIndex,int,int)));
-        connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
-    }   
+        connect( mModel, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), this, SLOT( dataChanged( QModelIndex, QModelIndex ) ) );
+        connect( mModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( rowsInserted( QModelIndex, int, int ) ) );
+        connect( mModel, SIGNAL( rowsRemoved( QModelIndex, int, int) ), this, SLOT( rowsRemoved( QModelIndex, int, int ) ) );
+        connect( mModel, SIGNAL( destroyed() ), this, SLOT( modelDestroyed() ) );
+    } 
 }
 
 void GlxCoverFlow::resetCoverFlow()
@@ -488,28 +490,21 @@
 {
     qDebug("GlxCoverFlow::resetpartiallyCreated");
     mIconItem[2]->setSize ( itemSize );
-    mIconItem[2]->setPos ( QPointF ( 0, 0) );  
-    
-    QVariant variant = model->data( model->index(0,0), GlxFocusIndexRole );    
-    if ( variant.isValid() &&  variant.canConvert<int> () ) {
-        mSelIndex = variant.value<int>();  
-       qDebug("GlxCoverFlow::partiallyCreated index mSelIndex=%d",mSelIndex);
-    }
-    
-    variant = model->data( model->index(mSelIndex, 0), GlxFsImageRole );
-    if ( variant.isValid() &&  variant.canConvert<HbIcon> () ) {
-        mIconItem[2]->setIcon ( variant.value<HbIcon>() ) ; 
-    }
+    mIconItem[2]->setPos ( QPointF ( 0, 0) ); 
+    mModel = model ; 
+    mSelIndex = getFocusIndex();
+    mIconItem[2]->setIcon( getIcon( mSelIndex ) ) ;
+    mModel = NULL;
 }
 
 GlxCoverFlow::~GlxCoverFlow()
 {
     qDebug("GlxCoverFlow::~GlxCoverFlow model " );
+    ClearCoverFlow();
     disconnect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ) );
     disconnect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ) );
 }
 
-
 void GlxCoverFlow::ClearCoverFlow()
 {
     qDebug("GlxCoverFlow::ClearCoverFlow  " );
@@ -535,14 +530,15 @@
 void GlxCoverFlow::zoomStarted(int index)
 {
     Q_UNUSED(index)
+    stopAnimation();
 	mZoomOn = true;	
 }
 
 void GlxCoverFlow::zoomFinished(int index)
 { 
 	mZoomOn = false;
+	playAnimation();
 	indexChanged(index);
-
 }
 
 void GlxCoverFlow::timerEvent(QTimerEvent *event)
@@ -553,4 +549,41 @@
         mTimerId = 0;
         emit coverFlowEvent( TAP_EVENT );
     }
-}
\ No newline at end of file
+}
+
+int GlxCoverFlow::getFocusIndex( )
+{
+    QVariant variant = mModel->data( mModel->index( 0, 0 ), GlxFocusIndexRole ) ;
+    if ( variant.isValid() && variant.canConvert< int > () ) {
+        return variant.value< int > ();
+    }
+    return -1;
+}
+
+HbIcon GlxCoverFlow::getIcon( int index )
+{
+    QVariant variant = mModel->data( mModel->index( index, 0 ), GlxFsImageRole );
+    if ( variant.isValid() &&  variant.canConvert< HbIcon > () ) {
+        return variant.value<HbIcon> () ;       
+    }
+    return HbIcon() ;
+}
+
+QString GlxCoverFlow::getUri( int index )
+{
+    QVariant variant = mModel->data( mModel->index( index, 0 ), GlxUriRole );
+    if ( variant.isValid() && variant.canConvert< QString > () ){
+        return variant.value< QString > () ;
+    }
+    return QString();
+}
+
+bool GlxCoverFlow::isAnimatedImage( int index )
+{
+    int frameCount = 0;
+    QVariant variant = mModel->data( mModel->index( index, 0 ), GlxFrameCount );
+    if ( variant.isValid() && variant.canConvert< int > () ) {
+         frameCount = variant.value< int > () ;
+    }
+    return frameCount > 1 ? true : false ;
+}
--- a/ui/views/fullscreenview/src/glxfullscreenview.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/fullscreenview/src/glxfullscreenview.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -63,10 +63,6 @@
     mIconItem(NULL),
     mTvOutWrapper(NULL),
     mFullScreenToolBar(NULL),
-	mFlipAction(NULL),
-	mSendAction(NULL),
-	mDeleteAction(NULL),
-	mUseImageAction(NULL),
 	mZoomWidget(NULL)
 {
     OstTraceFunctionEntry0( GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY );
@@ -89,14 +85,11 @@
         mTvOutWrapper = new GlxTvOutWrapper();
     }
     setHdmiModel(model);
-
-    //Load/Retrieve the Widgets
     loadWidgets();
 
-    //Initialize the coverflow and partially creates the coverflow with one image
-    // to make the widget light weight in order to make
-    // transition smooth 
-    mCoverFlow->partiallyCreate( model, screenSize());
+    // Initialize the coverflow and partially creates the coverflow with one image
+    // to make the widget light weight in order to make transition smooth 
+    mCoverFlow->partiallyCreate( model, screenSize() );
     
     OstTraceFunctionExit0( GLXFULLSCREENVIEW_INITIALIZEVIEW_EXIT );
 }
@@ -104,24 +97,22 @@
 void GlxFullScreenView::loadWidgets()
 {
     OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADWIDGETS_ENTRY );
-    
-    //Load the Coverflow and image strip widget    
+       
     mCoverFlow = qobject_cast<GlxCoverFlow*> (mDocLoader->findWidget(GLXFULLSCREEN_COVERFLOW));
-
-	 mZoomWidget  =  qobject_cast<GlxZoomWidget*> (mDocLoader->findWidget(GLXFULLSCREENZOOMWIDGET));
-	 mZoomWidget->connectDecodeRequestToPinchEvent();
-	 mCoverFlow->setMultitouchFilter(mZoomWidget);
+    
+    mZoomWidget  =  qobject_cast<GlxZoomWidget*> (mDocLoader->findWidget(GLXFULLSCREENZOOMWIDGET));
+    mZoomWidget->connectDecodeRequestToPinchEvent();
+    mCoverFlow->setMultitouchFilter(mZoomWidget);
+    
     //initialise the cover flow for basic connections and the rest
     mCoverFlow->setCoverFlow();
-
-   //Load the IMAGE STRIP & FULLSCREEN TOOLBAR[PUSH BUTTON]
-    mImageStrip              =   qobject_cast<HbGridView*> (mDocLoader->findWidget(GLXFULLSCREEN_FILMSTRIP));
+    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();      
-	mImageStrip->setLayoutName( QString( "ImageStrip" ) );
-	mImageStrip->setEnabledAnimations(HbAbstractItemView::None);
+	mImageStrip->setLayoutName( QString( "ImageStrip" ) ); // To distinguish in CSS file
+	mImageStrip->setEnabledAnimations( HbAbstractItemView::None );
 	
     OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADWIDGETS_EXIT );
 }
@@ -138,66 +129,46 @@
 
     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);
+    
+    addToolBarAction( EGlxCmdDetailsOpen, GLXICON_FLIP, "Flip Action" ); //create  Flip tool bar button action
+    addToolBarAction( EGlxCmdSend, GLXICON_SEND, "Send Action" );        //create  Send tool bar button action
+    if( getSubState() != IMAGEVIEWER_S ) {        
+        addToolBarAction( EGlxCmdDelete, GLXICON_DELETE, "Delete Action" ); //create  Delete tool bar button action
+    }
+    else {
+        addToolBarAction( EGlxCmdHandled, GLXICON_USEIMAGE, "Use Action" ); //create  Use Image tool bar button action
+    }
+ 
+    OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_EXIT );
+}
 
-    //create  Delete tool bar button action
-    mDeleteAction = new HbAction(this);
-    mDeleteAction->setData(EGlxCmdDelete);        
-    mDeleteAction->setIcon(HbIcon(GLXICON_DELETE)); 
-    
-    //create  Use Image tool bar button action
-    mUseImageAction = new HbAction(this);
-    //mUseImageAction->setData(EGlxCmdDelete);        
-    mUseImageAction->setIcon(HbIcon(GLXICON_USEIMAGE)); 
-    if(getSubState() != IMAGEVIEWER_S){
-        mFullScreenToolBar->addAction( mDeleteAction);
-    }else{
-        mFullScreenToolBar->addAction( mUseImageAction);
-    }
-     
-
-    connect(mFlipAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); 
-    connect(mSendAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); 
-    connect(mDeleteAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );
-    connect(mUseImageAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );
-    
-    OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_EXIT );
+void GlxFullScreenView::addToolBarAction( int commandId, const QString &iconName, const QString &name )
+{
+    HbAction *action = new HbAction( this ); 
+    action->setData( commandId );
+    action->setIcon( HbIcon( iconName ) ); 
+    action->setObjectName( name );
+    mFullScreenToolBar->addAction( action);
+    connect(action, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); 
 }
 
 void GlxFullScreenView::activate()
 {
     OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ACTIVATE_ENTRY );    
-
-    setStatusBarVisible(FALSE);
-    setTitleBarVisible(FALSE);
-	//To:Do remove it later, currently it is solving the problem of status bar is not
-	//visible when tap on the screen first time
-    setStatusBarVisible(FALSE);
-    setTitleBarVisible(FALSE);  
-
 //for zoom might not be required after wk15 release
 	mWindow->viewport()->setAttribute(Qt::WA_AcceptTouchEvents,true); 
 	mWindow->viewport()->grabGesture(Qt::PinchGesture);
 	
 	QCoreApplication::instance()->installEventFilter(this);
 
-    if(!mCoverFlow){
+    if( !mCoverFlow ) {
         loadWidgets();  //retrives the widgets
     }
-
     //Loads the widgets corresponding to the orientation.
-    loadViewSection();   
+    loadViewSection();
+    
+    setStatusBarVisible(FALSE);
+    setTitleBarVisible(FALSE);
         
     mUiOffTimer = new QTimer();
     mUiOff = true;
@@ -282,6 +253,7 @@
         delete mTvOutWrapper;
         mTvOutWrapper = NULL;
     }
+    
     if(mZoomWidget)
     {
         mZoomWidget->cleanUp();
@@ -369,7 +341,7 @@
     OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ACTIVATEUI_ENTRY );
     
     if ( mUiOff && getSubState() != FETCHER_S){      
-        if(!mFullScreenToolBar) {
+        if( !mFullScreenToolBar ) {
             loadFullScreenToolBar();
         }
         mUiOff = FALSE;
@@ -384,7 +356,6 @@
 		setStatusBarVisible(TRUE);
         setTitleBarVisible(TRUE);
        
-
         if ( mImageStrip && getSubState() != IMAGEVIEWER_S) {
             mImageStrip->show(); 
             HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapShow"), this, "effectFinished" );
@@ -438,6 +409,10 @@
             // for the image changed on deletion
             mTvOutWrapper->setImagetoHDMI();
         }
+        if (mZoomWidget){
+            // for the image changed on deletion
+            mZoomWidget->indexChanged();
+        }
         return;
     }
     
@@ -672,22 +647,7 @@
         disconnect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi()));
     }
             
-    if(mFlipAction) {
-        disconnect(mFlipAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
-    }
-
-    if(mSendAction) {
-        disconnect(mSendAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
-    }
-
-    if(mDeleteAction) {
-        disconnect(mDeleteAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
-    }
-
-    if(mUseImageAction) {
-        disconnect(mUseImageAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
-    }
-	if(mCoverFlow && mZoomWidget) {
+	if( mCoverFlow && mZoomWidget ) {
 		disconnect(mZoomWidget,SIGNAL( pinchGestureReceived(int) ), mCoverFlow, SLOT( zoomStarted(int) ) );
 		disconnect(mZoomWidget,SIGNAL( zoomWidgetMovedBackground(int) ), mCoverFlow, SLOT( zoomFinished(int) ) );
 	}
@@ -774,10 +734,13 @@
 
 int GlxFullScreenView::getSubState()
 {
-	int substate = NO_FULLSCREEN_S;
-	QVariant variant = mModel->data( mModel->index(0,0), GlxSubStateRole );    
-	if ( variant.isValid() &&  variant.canConvert<int> ()  ) {
-		substate = variant.value<int>();
+	int substate = NO_FULLSCREEN_S;	
+	
+	if ( mModel  ) {	
+        QVariant variant = mModel->data( mModel->index(0,0), GlxSubStateRole );    
+        if ( variant.isValid() &&  variant.canConvert<int> ()  ) {
+            substate = variant.value<int>();
+        }
 	}
 	return substate;
 }
--- a/ui/views/gridview/inc/glxgridview.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/gridview/inc/glxgridview.h	Tue Jul 06 14:16:16 2010 +0300
@@ -70,7 +70,7 @@
     void populated();
 
 protected :
-    QVariant  itemChange (GraphicsItemChange change, const QVariant &value) ;
+   
 
 private slots:
     void indicateLongPress(const QModelIndex& index, QPointF coords);
--- a/ui/views/gridview/src/glxgridview.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/gridview/src/glxgridview.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -72,18 +72,11 @@
 void GlxGridView::activate()
 {
     OstTraceFunctionEntry0( GLXGRIDVIEW_ACTIVATE_ENTRY );
-    if(mUiOnButton == NULL) {
-        mUiOnButton = new HbPushButton(this);
-        connect(mUiOnButton, SIGNAL(clicked(bool)), this, SLOT(uiButtonClicked(bool)));
-        mUiOnButton->setGeometry(QRectF(590,0,40,40));
-        mUiOnButton->setZValue(1);
-        mUiOnButton->setIcon(HbIcon(GLXICON_WALL_UI_ON));
-        mUiOnButton->hide();
-    }
     loadGridView();
 	connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationchanged(Qt::Orientation)),Qt::UniqueConnection);
     if(mCountItem == NULL) {
         mCountItem = new HbLabel(this);
+        mCountItem->setObjectName( "Count" );
         HbFrameItem *frame = new HbFrameItem(this); //graphics for mCountItem
         frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -205,6 +198,7 @@
     mWidget->setSelectionMode(HgWidget::MultiSelection);
     if (mMainLabel == NULL) {
         mMainLabel = new HbLabel("Select Photos", this);
+        mMainLabel->setObjectName( "Select Photos");
         HbFrameItem *frame1 = new HbFrameItem(this);    //graphics for mMainLabel
         frame1->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame1->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -213,6 +207,7 @@
     }
     if (mMarkCheckBox == NULL) {
         mMarkCheckBox = new HbCheckBox(GLX_OPTION_MARK_ALL, this);
+        mMarkCheckBox->setObjectName( "CheckB MarkAll" );
         HbFrameItem *frame2 = new HbFrameItem(this);    //graphics for mMarkCheckBox
         frame2->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame2->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -221,6 +216,7 @@
     }
     if (mCountLabel == NULL) {
         mCountLabel = new HbLabel(this);
+        mCountLabel->setObjectName( "MarkCount" );
         HbFrameItem *frame3 = new HbFrameItem(this);    //graphics for mCountLabel
         frame3->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame3->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -345,9 +341,6 @@
                         showAlbumTitle(variant.toString());
                     }
 				}	
-                else if(XQServiceUtil::isService()){
-                    showAlbumTitle(GLX_FETCHER_TITLE);
-                }
             }
         }
     }
@@ -361,6 +354,7 @@
                                                                    : QSize( deviceSize.height(), deviceSize.width() )  ;
     if(mAlbumName == NULL) {
         mAlbumName = new HbLabel(this);
+        mAlbumName->setObjectName( "Album Name" );
         HbFrameItem *frame = new HbFrameItem(this); //graphics for mAlbumName
         frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -414,12 +408,14 @@
             displayText.append(GLX_GRID_OPEN_CAMERA);
             }
         mZeroItemLabel = new HbLabel(displayText, this);
+        mZeroItemLabel->setObjectName( "No Image" );
     }
     mZeroItemLabel->setGeometry(QRectF(0, midHeight - deviceSize.height()/16, screenSize.width(), 3*deviceSize.height()/32));
     mZeroItemLabel->setAlignment(Qt::AlignHCenter);
     mZeroItemLabel->show();
     if (mCameraButton == NULL) {
         mCameraButton = new HbPushButton(this);
+        mCameraButton->setObjectName( "Camera Button" );
         mCameraButton->setIcon(HbIcon(GLXICON_CAMERA));
         mCameraButton->hide();
         connect(mCameraButton, SIGNAL(clicked(bool)), this, SLOT(cameraButtonClicked(bool)));
@@ -433,6 +429,12 @@
 
 void GlxGridView::populated()
 {
+      QVariant variant = mModelWrapper->data(mModelWrapper->index(0,0), GlxVisualWindowIndex );
+       int visualIndex = 0;
+       if ( variant.isValid() &&  variant.canConvert<int> () )  {
+           visualIndex = variant.value<int>();
+       }
+       mWidget->scrollTo(mModelWrapper->index(visualIndex,0));
     showItemCount();
 }
 
@@ -523,6 +525,7 @@
         mWindow->viewport()->grabGesture(Qt::TapGesture);
         mWindow->viewport()->grabGesture(Qt::TapAndHoldGesture);
         mWidget = new HgGrid(orient);
+        mWidget->setObjectName( "Media Wall" );
         mWidget->setLongPressEnabled(true);
         mWidget->setScrollBarPolicy(HgWidget::ScrollBarAutoHide);
         setWidget( mWidget );
@@ -542,14 +545,16 @@
         if( orient == Qt::Horizontal ) {
 			setItemVisible(Hb::AllItems, FALSE) ;
         	setViewFlags(viewFlags() | HbView::ViewTitleBarHidden | HbView::ViewStatusBarHidden);
-            //To:Do remove it later, currently it is solving the problem of status bar is not
-            //visible when tap on the screen first time
-        	setItemVisible(Hb::AllItems, FALSE) ;
-        	setViewFlags(viewFlags() | HbView::ViewTitleBarHidden | HbView::ViewStatusBarHidden);
-        	showItemCount();
-            if (mUiOnButton) {
-                mUiOnButton->show();
+            showItemCount();
+            if(mUiOnButton == NULL) {
+                mUiOnButton = new HbPushButton(this);
+                connect(mUiOnButton, SIGNAL(clicked(bool)), this, SLOT(uiButtonClicked(bool)));
+                mUiOnButton->setGeometry(QRectF(590,0,40,40));
+                mUiOnButton->setZValue(1);
+                mUiOnButton->setIcon(HbIcon(GLXICON_WALL_UI_ON));
+                mUiOnButton->setObjectName( "UiOn Button" );
             }
+            mUiOnButton->show();
         }
         else {
             showHbItems();
@@ -593,16 +598,6 @@
         }
 }
 
-QVariant  GlxGridView::itemChange (GraphicsItemChange change, const QVariant &value)
-    {
-    OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ITEMCHANGE, "GlxGridView::itemChange" );
-    static bool isEmit = true;
-    if ( isEmit && change == QGraphicsItem::ItemVisibleHasChanged && value.toBool()  ) {
-    emit actionTriggered( EGlxCmdSetupItem );
-    isEmit = false;
-    }
-    return HbWidget::itemChange(change, value);
-    }
 
 void GlxGridView::addViewConnection()
 {
--- a/ui/views/listview/inc/glxlistview.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/listview/inc/glxlistview.h	Tue Jul 06 14:16:16 2010 +0300
@@ -43,6 +43,7 @@
 
 public slots:
     void itemSelected(const QModelIndex &  index);
+    void populated();
     
 private slots:
 	void indicateLongPress( HbAbstractViewItem *item, QPointF coords );
--- a/ui/views/listview/src/glxlistview.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/listview/src/glxlistview.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -63,8 +63,12 @@
 void GlxListView::setModel(QAbstractItemModel *model) 
 {
     qDebug("GlxListView::setModel()");
+    if ( mModel ) {
+        disconnect(mModel, SIGNAL(listPopulated()), this, SLOT( populated()));
+    }
     mModel =  model ;
     mListView->setModel(mModel);
+    connect(mModel, SIGNAL(listPopulated()), this, SLOT( populated()));
 }
 
 void GlxListView::addToolBar( HbToolBar *toolBar ) 
@@ -180,6 +184,17 @@
     }
 }
 
+void GlxListView::populated()
+{
+    QVariant variant = mModel->data(mModel->index(0,0), GlxVisualWindowIndex );
+    int visualIndex = 0;
+    if ( variant.isValid() &&  variant.canConvert<int> () ) 
+    {
+        visualIndex = variant.value<int>();
+    }
+	//Scroll To the Visible Index as mentioned in the AM.
+    mListView->scrollTo(mModel->index(visualIndex, 0),  HbAbstractItemView::PositionAtTop );
+}
 void GlxListView::itemSelected(const QModelIndex &  index)
 {
     qDebug("GlxListView::itemSelected() index = %d", index.row() );
--- a/ui/views/slideshowsettingsview/src/glxslideshowsettingsview.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/slideshowsettingsview/src/glxslideshowsettingsview.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -71,24 +71,29 @@
     
     if ( mContextlabel == NULL ) {
         mContextlabel = new HbLabel( GLX_MENU_SLIDESHOW, this );
+        mContextlabel->setObjectName( "SlideShow" );
     }
     
     if ( mEffectlabel == NULL ) {
         mEffectlabel = new HbLabel( GLX_LABEL_TRANSITION_EFFECT, this );
+        mEffectlabel->setObjectName( "Effect" );
     }
     
     if ( mEffect == NULL ) {
         mEffect = new HbComboBox(this);
         QStringList effectList = mSettings->slideShowEffectList();
-        mEffect->addItems( effectList );        
+        mEffect->addItems( effectList ); 
+        mEffect->setObjectName( "Effect List" );
     }
     
     if ( mDelaylabel == NULL ) {
         mDelaylabel = new HbLabel( GLX_LABEL_TRANSITION_DELAY, this );
+        mDelaylabel->setObjectName( "Delay" );
     }
     
     if ( mDelay == NULL ) {
         mDelay = new HbComboBox(this);
+        mDelay->setObjectName( "Delay List" );
         QStringList delayList;
         delayList <<  GLX_VAL_SLOW << GLX_VAL_MEDIUM << GLX_VAL_FAST ;
         mDelay->addItems( delayList );
--- a/ui/views/slideshowview/src/glxslideshowview.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/slideshowview/src/glxslideshowview.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -64,7 +64,7 @@
 void GlxSlideShowView::activate()
 {
     TRACER("GlxSlideShowView::activate()");
-    mWindow->setOrientation(Qt::Horizontal, true);  // Actually it is animation false, Hack for Bug in Media wall -todo- need to Address this ASAP
+    mWindow->setOrientation(Qt::Horizontal, false);
 
     //finds the widgets from the docml
     loadObjects();
@@ -83,7 +83,7 @@
 void GlxSlideShowView::deActivate()
 {
     TRACER("GlxSlideShowView::deActivate()");
-    mWindow->unsetOrientation(true);         // Actually it is animation false, Hack for Bug in Media wall -todo- need to Address this ASAP
+    mWindow->unsetOrientation(false);
     
     setStatusBarVisible(TRUE);
     setTitleBarVisible(TRUE);
--- a/ui/views/slideshowview/src/glxslideshowwidget.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/slideshowview/src/glxslideshowwidget.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -72,9 +72,10 @@
     mIsPause = false;
 
     for ( int i = 0; i < NBR_ITEM ; i++) {
-        mIconItems[i] = new HbIconItem( this );
-        mIconItems[i]->setBrush( QBrush( Qt::black ) );
+        mIconItems[i] = new HbIconItem(this);
+        mIconItems[i]->setBrush(QBrush(Qt::black));
         mIconItems[i]->setAlignment( Qt::AlignCenter );
+        mIconItems[i]->setObjectName( QString( "SlideShowIcon%1" ).arg( i ) );
     }
 
     mSlideTimer = new QTimer();
--- a/ui/views/viewbase/inc/glxview.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/viewbase/inc/glxview.h	Tue Jul 06 14:16:16 2010 +0300
@@ -60,6 +60,7 @@
     void actionTriggered(qint32 id);
     void itemSpecificMenuTriggered(qint32,QPointF );
     void gridItemSelected(const QModelIndex &);
+   
     
 private :
 	qint32 mId;	
--- a/ui/views/views.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/views/views.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -63,6 +63,7 @@
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 TARGET.EPOCALLOWDLLDATA = 1
 TARGET.CAPABILITY = ALL -TCB 
+MMP_RULES += SMPSAFE
 }
 
 # Input
--- a/ui/viewutilities/effectplugin/inc/glxflipeffectplugin.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewutilities/effectplugin/inc/glxflipeffectplugin.h	Tue Jul 06 14:16:16 2010 +0300
@@ -45,23 +45,12 @@
     void setUpItems( QList< QGraphicsItem * > &  items );
     
     /*
-     * second animation will be run later
-     */    
-    bool isAnimationLater(int index) ;
-    
-    /*
-     *  return the second animation object to play the flip show animation
-     */
-    QGraphicsItem * animationItem() ;
-    
-    /*
      * get the name of the effect, use to shown in the slide show setting view
      */
-    static QString effectName() { return QString ("Flip") ; }
+    static QString effectName();
 	
 private :
     QList <QString > mEffectFileList;
-    QGraphicsItem *mItem;
 };
 
 #endif /*GLXFLIPEFFECTPLUGIN_H*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/viewutilities/effectplugin/inc/glxhelixeffectplugin.h	Tue Jul 06 14:16:16 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
+*
+*/
+
+#ifndef GLXHELIXEFFECTPLUGIN_H
+#define GLXHELIXEFFECTPLUGIN_H
+
+#include "glxeffectpluginbase.h"
+
+class QString ;
+
+class GlxHelixEffectPlugin : public GlxEffectPluginBase
+{
+public :
+    /*
+     * Constructor
+     */
+    GlxHelixEffectPlugin();
+    
+    /*
+     *  Destructor
+     */
+    ~GlxHelixEffectPlugin();
+    
+    /*
+     * return the fade in and fade out fxml file list
+     */
+    QList <QString > effectFileList() { return mEffectFileList ; }
+    
+   /*
+    * setup the item postion and set the mItem value
+    */
+    void setUpItems( QList< QGraphicsItem * > &  items );
+    
+    /*
+     * get the name of the effect, use to shown in the slide show setting view
+     */
+    static QString effectName(); 
+	
+private :
+    QList <QString > mEffectFileList;
+};
+
+#endif /* GLXHELIXEFFECTPLUGIN_H */
--- a/ui/viewutilities/effectplugin/src/glxeffectpluginresolver.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewutilities/effectplugin/src/glxeffectpluginresolver.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -22,6 +22,7 @@
 #include "glxfadeeffectplugin.h"
 #include "glxflipeffectplugin.h"
 #include "glxzoominoutplugin.h"
+#include "glxhelixeffectplugin.h"
 
 GlxEffectPluginResolver::GlxEffectPluginResolver()
 {
@@ -30,6 +31,7 @@
 
 QString GlxEffectPluginResolver::effectName( int effectId )
 {
+    qDebug( " GlxEffectPluginResolver::effectName %d ", effectId );
     switch ( effectId ) {
     case FLIP_EFFECT :
         return GlxFlipEffectPlugin::effectName();
@@ -38,7 +40,10 @@
         return GlxFadeEffectPlugin::effectName() ;
     
     case ZOOM_TO_FACE :
-        return GlxZoomInOutEffectPlugin::effectName(); //To:Do temp remove once plugin is ready
+        return GlxZoomInOutEffectPlugin::effectName();
+        
+    case HELIX_EFFECT :
+        return GlxHelixEffectPlugin::effectName();
         
     default :
         return GlxFadeEffectPlugin::effectName() ;
@@ -47,6 +52,7 @@
 
 GlxEffectPluginBase *GlxEffectPluginResolver::effectPlugin( int effectId )
 {
+    qDebug( " GlxEffectPluginResolver::effectPlugin %d ", effectId );
     GlxEffectPluginBase * effectPlugin = mEffectPluginList.value( ( GlxEffect  )effectId );
     if ( effectPlugin ) {
         return  effectPlugin ;
@@ -63,6 +69,11 @@
             mEffectPluginList[ ZOOM_TO_FACE ] = effectPlugin ;
             break ;
             
+        case HELIX_EFFECT :
+            effectPlugin = new GlxHelixEffectPlugin() ;
+            mEffectPluginList[ HELIX_EFFECT ] = effectPlugin ;
+            break ;
+        
         case SMOOTH_FADE :   
         default :
             effectPlugin = mEffectPluginList.value( SMOOTH_FADE );
--- a/ui/viewutilities/effectplugin/src/glxflipeffectplugin.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewutilities/effectplugin/src/glxflipeffectplugin.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -21,33 +21,22 @@
 
 GlxFlipEffectPlugin::GlxFlipEffectPlugin() : GlxEffectPluginBase( FLIP_EFFECT )
 {
-    mEffectFileList.append(QString(":/data/view_flip_hide.fxml"));
-    mEffectFileList.append(QString(":/data/view_flip_show.fxml"));
+    mEffectFileList.append(QString(":/data/uphide.fxml"));
+    mEffectFileList.append(QString(":/data/downshow.fxml"));
 }
 
 void GlxFlipEffectPlugin::setUpItems( QList< QGraphicsItem * > &  items )
 {
     if ( items.count() < 2 ) 
         return;
-    
-    mItem = items.at(1);
-    mItem->hide();
-    mItem->setPos(0,0);
+   
     items.at(0)->setPos(0,0);
+    items.at(1)->setPos(0,0);
 }
 
-bool GlxFlipEffectPlugin::isAnimationLater(int index) 
-{
-    if ( index == 1) {
-        return true;
-    }
-    return false;
-}
-
-QGraphicsItem * GlxFlipEffectPlugin::animationItem() 
+QString GlxFlipEffectPlugin::effectName() 
 { 
-    mItem->show();
-    return mItem ; 
+    return ( "FLip" ) ; 
 }
 
 GlxFlipEffectPlugin::~GlxFlipEffectPlugin()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/viewutilities/effectplugin/src/glxhelixeffectplugin.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* 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 "glxhelixeffectplugin.h"
+#include "glxuistd.h"
+#include "glxlocalisationstrings.h"
+
+GlxHelixEffectPlugin::GlxHelixEffectPlugin() : GlxEffectPluginBase( HELIX_EFFECT )
+{
+    mEffectFileList.append(QString(":/data/helix.fxml"));
+    mEffectFileList.append(QString(":/data/fadein.fxml"));
+}
+
+void GlxHelixEffectPlugin::setUpItems( QList< QGraphicsItem * > &  items )
+{
+    if ( items.count() < 2 ) 
+        return;
+   
+    items.at(0)->setPos(0,0);
+    items.at(1)->setPos(0,0);
+}
+
+QString GlxHelixEffectPlugin::effectName() 
+{ 
+    return ( "Helix" ) ; 
+}
+
+GlxHelixEffectPlugin::~GlxHelixEffectPlugin()
+{
+    mEffectFileList.clear();
+}
+
--- a/ui/viewutilities/settingutility/inc/glxsetting.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewutilities/settingutility/inc/glxsetting.h	Tue Jul 06 14:16:16 2010 +0300
@@ -25,7 +25,7 @@
 class XQSettingsManager;
 class QStringList;
 
-#define NBR_SLIDESHOW_EFFECT 3
+#define NBR_SLIDESHOW_EFFECT 4
 
 /*
  * This class is used for read and write the photos application related setting from the centrep.
--- a/ui/viewutilities/settingutility/src/glxsetting.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewutilities/settingutility/src/glxsetting.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -29,7 +29,7 @@
 const TUint32 KGlxSlow  = 0x3;
 const TUint32 KGlxMeduim  = 0x4;
 const TUint32 KGlxFast  = 0x5;
-const TUint32 KGlxSlideShowEffect[ ]  = { 0x6, 0x7, 0x8 };
+const TUint32 KGlxSlideShowEffect[ ]  = { 0x6, 0x7, 0x8, 0x9 };
 const TUint32 KCRUidGallery = 0x20007194;
 
 GlxSetting GlxSetting::mObj ;
--- a/ui/viewutilities/viewutilities.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/viewutilities/viewutilities.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -35,6 +35,7 @@
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 TARGET.EPOCALLOWDLLDATA = 1
 TARGET.CAPABILITY = ALL -TCB 
+MMP_RULES += SMPSAFE
 }
 
 # Input
@@ -44,6 +45,7 @@
            effectplugin/inc/glxfadeeffectplugin.h \
            effectplugin/inc/glxflipeffectplugin.h \
            effectplugin/inc/glxzoominoutplugin.h \
+           effectplugin/inc/glxhelixeffectplugin.h \
            effectplugin/inc/glxeffectpluginresolver.h \
            effectengine/inc/glxtransitioneffect.h \
            effectengine/inc/glxeffectengine.h 
@@ -53,6 +55,7 @@
            effectplugin/src/glxfadeeffectplugin.cpp \
            effectplugin/src/glxflipeffectplugin.cpp \
            effectplugin/src/glxzoominoutplugin.cpp \
+           effectplugin/src/glxhelixeffectplugin.cpp \
            effectplugin/src/glxeffectpluginresolver.cpp \
            effectengine/src/glxtransitioneffect.cpp \
            effectengine/src/glxeffectengine.cpp
--- a/ui/widgets/bwins/glxzoomwidgetu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/widgets/bwins/glxzoomwidgetu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -23,18 +23,20 @@
 	?animationTimeLineFinished@GlxZoomWidget@@QAEXXZ @ 22 NONAME ; void GlxZoomWidget::animationTimeLineFinished(void)
 	?qt_metacall@GlxZoomWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 23 NONAME ; int GlxZoomWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
 	?zoomWidgetMovedBackground@GlxZoomWidget@@IAEXH@Z @ 24 NONAME ; void GlxZoomWidget::zoomWidgetMovedBackground(int)
-	?animateZoomOut@GlxZoomWidget@@QAEXVQPointF@@@Z @ 25 NONAME ; void GlxZoomWidget::animateZoomOut(class QPointF)
-	?adjustGestureCenter@GlxZoomWidget@@AAEXAAVQPointF@@AAM@Z @ 26 NONAME ; void GlxZoomWidget::adjustGestureCenter(class QPointF &, float &)
-	?metaObject@GlxZoomWidget@@UBEPBUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const * GlxZoomWidget::metaObject(void) const
-	?decodedImageAvailable@GlxZoomWidget@@QAEXXZ @ 28 NONAME ; void GlxZoomWidget::decodedImageAvailable(void)
-	??_EGlxZoomWidget@@UAE@I@Z @ 29 NONAME ; GlxZoomWidget::~GlxZoomWidget(unsigned int)
-	??1GlxZoomWidget@@UAE@XZ @ 30 NONAME ; GlxZoomWidget::~GlxZoomWidget(void)
-	?sceneEventFilter@GlxZoomWidget@@MAE_NPAVQGraphicsItem@@PAVQEvent@@@Z @ 31 NONAME ; bool GlxZoomWidget::sceneEventFilter(class QGraphicsItem *, class QEvent *)
-	?pinchGestureReceived@GlxZoomWidget@@IAEXH@Z @ 32 NONAME ; void GlxZoomWidget::pinchGestureReceived(int)
-	?setWindowSize@GlxZoomWidget@@QAEXVQSize@@@Z @ 33 NONAME ; void GlxZoomWidget::setWindowSize(class QSize)
-	?retreiveFocusedImage@GlxZoomWidget@@AAEXXZ @ 34 NONAME ; void GlxZoomWidget::retreiveFocusedImage(void)
-	?animationFrameChanged@GlxZoomWidget@@QAEXH@Z @ 35 NONAME ; void GlxZoomWidget::animationFrameChanged(int)
-	?tr@GlxZoomWidget@@SA?AVQString@@PBD0@Z @ 36 NONAME ; class QString GlxZoomWidget::tr(char const *, char const *)
-	?trUtf8@GlxZoomWidget@@SA?AVQString@@PBD0H@Z @ 37 NONAME ; class QString GlxZoomWidget::trUtf8(char const *, char const *, int)
-	?timerEvent@GlxZoomWidget@@MAEXPAVQTimerEvent@@@Z @ 38 NONAME ; void GlxZoomWidget::timerEvent(class QTimerEvent *)
+	?indexChanged@GlxZoomWidget@@QAEXXZ @ 25 NONAME ; void GlxZoomWidget::indexChanged(void)
+	?animateZoomOut@GlxZoomWidget@@QAEXVQPointF@@@Z @ 26 NONAME ; void GlxZoomWidget::animateZoomOut(class QPointF)
+	?timerEvent@GlxZoomWidget@@MAEXPAVQTimerEvent@@@Z @ 27 NONAME ; void GlxZoomWidget::timerEvent(class QTimerEvent *)
+	?adjustGestureCenter@GlxZoomWidget@@AAEXAAVQPointF@@AAM@Z @ 28 NONAME ; void GlxZoomWidget::adjustGestureCenter(class QPointF &, float &)
+	?metaObject@GlxZoomWidget@@UBEPBUQMetaObject@@XZ @ 29 NONAME ; struct QMetaObject const * GlxZoomWidget::metaObject(void) const
+	?decodedImageAvailable@GlxZoomWidget@@QAEXXZ @ 30 NONAME ; void GlxZoomWidget::decodedImageAvailable(void)
+	??_EGlxZoomWidget@@UAE@I@Z @ 31 NONAME ; GlxZoomWidget::~GlxZoomWidget(unsigned int)
+	??1GlxZoomWidget@@UAE@XZ @ 32 NONAME ; GlxZoomWidget::~GlxZoomWidget(void)
+	?sceneEventFilter@GlxZoomWidget@@MAE_NPAVQGraphicsItem@@PAVQEvent@@@Z @ 33 NONAME ; bool GlxZoomWidget::sceneEventFilter(class QGraphicsItem *, class QEvent *)
+	?pinchGestureReceived@GlxZoomWidget@@IAEXH@Z @ 34 NONAME ; void GlxZoomWidget::pinchGestureReceived(int)
+	?setWindowSize@GlxZoomWidget@@QAEXVQSize@@@Z @ 35 NONAME ; void GlxZoomWidget::setWindowSize(class QSize)
+	?retreiveFocusedImage@GlxZoomWidget@@AAEXXZ @ 36 NONAME ; void GlxZoomWidget::retreiveFocusedImage(void)
+	?animationFrameChanged@GlxZoomWidget@@QAEXH@Z @ 37 NONAME ; void GlxZoomWidget::animationFrameChanged(int)
+	?tr@GlxZoomWidget@@SA?AVQString@@PBD0@Z @ 38 NONAME ; class QString GlxZoomWidget::tr(char const *, char const *)
+	?trUtf8@GlxZoomWidget@@SA?AVQString@@PBD0H@Z @ 39 NONAME ; class QString GlxZoomWidget::trUtf8(char const *, char const *, int)
+	?modelDestroyed@GlxZoomWidget@@IAEXXZ @ 40 NONAME ; void GlxZoomWidget::modelDestroyed(void)
 
--- a/ui/widgets/eabi/glxzoomwidgetu.def	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/widgets/eabi/glxzoomwidgetu.def	Tue Jul 06 14:16:16 2010 +0300
@@ -1,46 +1,48 @@
 EXPORTS
 	_ZN13GlxZoomWidget10sceneEventEP6QEvent @ 1 NONAME
-	_ZN13GlxZoomWidget11dataChangedE11QModelIndexS0_ @ 2 NONAME
-	_ZN13GlxZoomWidget11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
-	_ZN13GlxZoomWidget11qt_metacastEPKc @ 4 NONAME
-	_ZN13GlxZoomWidget12indexChangedEi @ 5 NONAME
-	_ZN13GlxZoomWidget13animateZoomInE7QPointF @ 6 NONAME
-	_ZN13GlxZoomWidget13setWindowSizeE5QSize @ 7 NONAME
-	_ZN13GlxZoomWidget14animateZoomOutE7QPointF @ 8 NONAME
-	_ZN13GlxZoomWidget15getFocusedImageEv @ 9 NONAME
-	_ZN13GlxZoomWidget15setMinMaxZValueEii @ 10 NONAME
-	_ZN13GlxZoomWidget16sceneEventFilterEP13QGraphicsItemP6QEvent @ 11 NONAME
-	_ZN13GlxZoomWidget16staticMetaObjectE @ 12 NONAME DATA 16
-	_ZN13GlxZoomWidget17limitRequiredSizeER6QSizeF @ 13 NONAME
-	_ZN13GlxZoomWidget17sendDecodeRequestEi @ 14 NONAME
-	_ZN13GlxZoomWidget19adjustGestureCenterER7QPointFRf @ 15 NONAME
-	_ZN13GlxZoomWidget19executeGestureEventEP13QGraphicsItemP13QGestureEvent @ 16 NONAME
-	_ZN13GlxZoomWidget19getStaticMetaObjectEv @ 17 NONAME
-	_ZN13GlxZoomWidget20pinchGestureReceivedEi @ 18 NONAME
-	_ZN13GlxZoomWidget20retreiveFocusedImageEv @ 19 NONAME
-	_ZN13GlxZoomWidget21animationFrameChangedEi @ 20 NONAME
-	_ZN13GlxZoomWidget21decodedImageAvailableEv @ 21 NONAME
-	_ZN13GlxZoomWidget23finalizeWidgetTransformEv @ 22 NONAME
-	_ZN13GlxZoomWidget25animationTimeLineFinishedEv @ 23 NONAME
-	_ZN13GlxZoomWidget25zoomWidgetMovedBackgroundEi @ 24 NONAME
-	_ZN13GlxZoomWidget32connectDecodeRequestToPinchEventEv @ 25 NONAME
-	_ZN13GlxZoomWidget7cleanUpEv @ 26 NONAME
-	_ZN13GlxZoomWidget8activateEv @ 27 NONAME
-	_ZN13GlxZoomWidget8setModelEP18QAbstractItemModel @ 28 NONAME
-	_ZN13GlxZoomWidget9zoomImageEf7QPointF @ 29 NONAME
-	_ZN13GlxZoomWidgetC1EP13QGraphicsItem @ 30 NONAME
-	_ZN13GlxZoomWidgetC2EP13QGraphicsItem @ 31 NONAME
-	_ZN13GlxZoomWidgetD0Ev @ 32 NONAME
-	_ZN13GlxZoomWidgetD1Ev @ 33 NONAME
-	_ZN13GlxZoomWidgetD2Ev @ 34 NONAME
-	_ZNK13GlxZoomWidget10metaObjectEv @ 35 NONAME
-	_ZTI13GlxZoomWidget @ 36 NONAME
-	_ZTV13GlxZoomWidget @ 37 NONAME
-	_ZThn16_N13GlxZoomWidgetD0Ev @ 38 NONAME
-	_ZThn16_N13GlxZoomWidgetD1Ev @ 39 NONAME
-	_ZThn8_N13GlxZoomWidget10sceneEventEP6QEvent @ 40 NONAME
-	_ZThn8_N13GlxZoomWidget16sceneEventFilterEP13QGraphicsItemP6QEvent @ 41 NONAME
-	_ZThn8_N13GlxZoomWidgetD0Ev @ 42 NONAME
-	_ZThn8_N13GlxZoomWidgetD1Ev @ 43 NONAME
-	_ZN13GlxZoomWidget10timerEventEP11QTimerEvent @ 44 NONAME
+	_ZN13GlxZoomWidget10timerEventEP11QTimerEvent @ 2 NONAME
+	_ZN13GlxZoomWidget11dataChangedE11QModelIndexS0_ @ 3 NONAME
+	_ZN13GlxZoomWidget11qt_metacallEN11QMetaObject4CallEiPPv @ 4 NONAME
+	_ZN13GlxZoomWidget11qt_metacastEPKc @ 5 NONAME
+	_ZN13GlxZoomWidget12indexChangedEi @ 6 NONAME
+	_ZN13GlxZoomWidget12indexChangedEv @ 7 NONAME
+	_ZN13GlxZoomWidget13animateZoomInE7QPointF @ 8 NONAME
+	_ZN13GlxZoomWidget13setWindowSizeE5QSize @ 9 NONAME
+	_ZN13GlxZoomWidget14animateZoomOutE7QPointF @ 10 NONAME
+	_ZN13GlxZoomWidget15getFocusedImageEv @ 11 NONAME
+	_ZN13GlxZoomWidget15setMinMaxZValueEii @ 12 NONAME
+	_ZN13GlxZoomWidget16sceneEventFilterEP13QGraphicsItemP6QEvent @ 13 NONAME
+	_ZN13GlxZoomWidget16staticMetaObjectE @ 14 NONAME DATA 16
+	_ZN13GlxZoomWidget17limitRequiredSizeER6QSizeF @ 15 NONAME
+	_ZN13GlxZoomWidget17sendDecodeRequestEi @ 16 NONAME
+	_ZN13GlxZoomWidget19adjustGestureCenterER7QPointFRf @ 17 NONAME
+	_ZN13GlxZoomWidget19executeGestureEventEP13QGraphicsItemP13QGestureEvent @ 18 NONAME
+	_ZN13GlxZoomWidget19getStaticMetaObjectEv @ 19 NONAME
+	_ZN13GlxZoomWidget20pinchGestureReceivedEi @ 20 NONAME
+	_ZN13GlxZoomWidget20retreiveFocusedImageEv @ 21 NONAME
+	_ZN13GlxZoomWidget21animationFrameChangedEi @ 22 NONAME
+	_ZN13GlxZoomWidget21decodedImageAvailableEv @ 23 NONAME
+	_ZN13GlxZoomWidget23finalizeWidgetTransformEv @ 24 NONAME
+	_ZN13GlxZoomWidget25animationTimeLineFinishedEv @ 25 NONAME
+	_ZN13GlxZoomWidget25zoomWidgetMovedBackgroundEi @ 26 NONAME
+	_ZN13GlxZoomWidget32connectDecodeRequestToPinchEventEv @ 27 NONAME
+	_ZN13GlxZoomWidget7cleanUpEv @ 28 NONAME
+	_ZN13GlxZoomWidget8activateEv @ 29 NONAME
+	_ZN13GlxZoomWidget8setModelEP18QAbstractItemModel @ 30 NONAME
+	_ZN13GlxZoomWidget9zoomImageEf7QPointF @ 31 NONAME
+	_ZN13GlxZoomWidgetC1EP13QGraphicsItem @ 32 NONAME
+	_ZN13GlxZoomWidgetC2EP13QGraphicsItem @ 33 NONAME
+	_ZN13GlxZoomWidgetD0Ev @ 34 NONAME
+	_ZN13GlxZoomWidgetD1Ev @ 35 NONAME
+	_ZN13GlxZoomWidgetD2Ev @ 36 NONAME
+	_ZNK13GlxZoomWidget10metaObjectEv @ 37 NONAME
+	_ZTI13GlxZoomWidget @ 38 NONAME
+	_ZTV13GlxZoomWidget @ 39 NONAME
+	_ZThn16_N13GlxZoomWidgetD0Ev @ 40 NONAME
+	_ZThn16_N13GlxZoomWidgetD1Ev @ 41 NONAME
+	_ZThn8_N13GlxZoomWidget10sceneEventEP6QEvent @ 42 NONAME
+	_ZThn8_N13GlxZoomWidget16sceneEventFilterEP13QGraphicsItemP6QEvent @ 43 NONAME
+	_ZThn8_N13GlxZoomWidgetD0Ev @ 44 NONAME
+	_ZThn8_N13GlxZoomWidgetD1Ev @ 45 NONAME
+	_ZN13GlxZoomWidget14modelDestroyedEv @ 46 NONAME
 
--- a/ui/widgets/glxzoomwidget/glxzoomwidget.pro	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/widgets/glxzoomwidget/glxzoomwidget.pro	Tue Jul 06 14:16:16 2010 +0300
@@ -37,7 +37,8 @@
 TARGET.UID3 = 0x200104E4
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 TARGET.EPOCALLOWDLLDATA = 1
-TARGET.CAPABILITY = ALL -TCB 
+TARGET.CAPABILITY = ALL -TCB
+MMP_RULES += SMPSAFE 
 }
 
 exportfile = "inc/glxzoomwidget.h APP_LAYER_PLATFORM_EXPORT_PATH(glxzoomwidget.h)"
--- a/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h	Tue Jul 06 14:16:16 2010 +0300
@@ -48,7 +48,12 @@
     void activate();
     void setMinMaxZValue(int minZvalue, int maxZvalue);
     void connectDecodeRequestToPinchEvent();
-
+    
+    /*
+     * This is an overloaded function when an index is changes due to deletion 
+     */
+    void indexChanged();
+    
     signals:
     void pinchGestureReceived(int index);
     void zoomWidgetMovedBackground(int index);
@@ -70,7 +75,7 @@
     void timerEvent(QTimerEvent *event);
     protected slots:
     void dataChanged(QModelIndex startIndex, QModelIndex endIndex);
-
+    void modelDestroyed();
 
     private:
     bool executeGestureEvent(QGraphicsItem *source,QGestureEvent *event);
--- a/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp	Wed Jun 23 18:12:48 2010 +0300
+++ b/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp	Tue Jul 06 14:16:16 2010 +0300
@@ -74,6 +74,7 @@
         mModel = model;
         retreiveFocusedImage(); //Update mZoomItem with focused Image
         connect( mModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );
+        connect( mModel, SIGNAL( destroyed() ), this, SLOT( modelDestroyed() ) );
     }
 }
 
@@ -99,6 +100,7 @@
 {
     if(mModel) {
         disconnect( mModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );
+        disconnect( mModel, SIGNAL( destroyed() ), this, SLOT( modelDestroyed() ) );
         mModel = NULL;
     }
     if(mImageDecoder) {
@@ -385,6 +387,16 @@
     }
 }
 
+void GlxZoomWidget::modelDestroyed()
+{
+    mModel = NULL ;    
+}
+
+void GlxZoomWidget::indexChanged()
+    {
+    retreiveFocusedImage();
+    }
+
 void GlxZoomWidget::decodedImageAvailable()
 {
     //new bitmap with better resolution is available