Revision: 201023
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 18:12:48 +0300
changeset 48 d0b4e67b3a60
parent 36 6481344a6d67
child 49 f291796e213d
Revision: 201023 Kit: 2010125
commonutilities/externalutility/externalutility.pro
commonutilities/imagedecoderwrapper/imagedecoderwrapper.pro
data/detailsview.docml
data/listview.docml
data/photos.css
data/qgn_menu_ovi_photos.svg
engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp
gallery/sis/createsis.bat
gallery/sis/photos.sis
gallery/sis/photos.sisx
gallery/sis/photos_stub.sis
inc/glxlocalisationstrings.h
loggers/loggerqt/loggerqt.pro
main/glxaiwservicehandler.cpp
main/glxaiwservicehandler.h
main/glxapplication.cpp
main/glxapplication.h
main/main.cpp
main/main.pro
photos.qrc
rom/photos.iby
tsrc/unittest/unittest_imagedecoderwrapper/unittest_imagedecoderwrapper.pro
tvout/tvoutwrapper/tvoutwrapper.pro
ui/commandhandlers/bwins/glxcommoncommandhandlersu.def
ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro
ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro
ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlercomment.h
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp
ui/commandhandlers/eabi/glxcommoncommandhandlersu.def
ui/detailscustomwidget/bwins/detailsdescriptioneditu.def
ui/detailscustomwidget/bwins/detailsnamelabelu.def
ui/detailscustomwidget/detailscustomwidget.pro
ui/detailscustomwidget/detailsdescriptionedit/detailsdescriptionedit.pro
ui/detailscustomwidget/detailsdescriptionedit/inc/glxdetailsdescriptionedit.h
ui/detailscustomwidget/detailsdescriptionedit/src/glxdetailsdescriptionedit.cpp
ui/detailscustomwidget/detailsdescriptioneditplugin/detailsdescriptioneditplugin.pro
ui/detailscustomwidget/detailsdescriptioneditplugin/main.cpp
ui/detailscustomwidget/detailsnamelabel/detailsnamelabel.pro
ui/detailscustomwidget/detailsnamelabel/inc/glxdetailsnamelabel.h
ui/detailscustomwidget/detailsnamelabel/src/glxdetailsnamelabel.cpp
ui/detailscustomwidget/detailsnamelabelplugin/detailsnamelabelplugin.pro
ui/detailscustomwidget/detailsnamelabelplugin/main.cpp
ui/detailscustomwidget/eabi/detailsdescriptioneditu.def
ui/detailscustomwidget/eabi/detailsnamelabelu.def
ui/inc/glxcommandhandlers.hrh
ui/inc/glxdocloaderdefs.h
ui/inc/glxmodelparm.h
ui/inc/glxmodelroles.h
ui/inc/glxuistd.h
ui/ui.pro
ui/uiengine/bwins/glxmedialistwrapperu.def
ui/uiengine/eabi/glxmedialistwrapperu.def
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/model/bwins/glxmediamodelu.def
ui/uiengine/model/bwins/glxmodelwrapperu.def
ui/uiengine/model/eabi/glxmediamodelu.def
ui/uiengine/model/eabi/glxmodelwrapperu.def
ui/uiengine/model/favmediamodel/favmediamodel.pro
ui/uiengine/model/listmodel/listmodel.pro
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/viewmanagement/bwins/glxstatehandleru.def
ui/viewmanagement/eabi/glxstatehandleru.def
ui/viewmanagement/statehandler/inc/glxstatemanager.h
ui/viewmanagement/statehandler/src/glxactionhandler.cpp
ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp
ui/viewmanagement/statehandler/src/glxstatemanager.cpp
ui/viewmanagement/statehandler/src/glxtnobserver.cpp
ui/viewmanagement/statehandler/statehandler.pro
ui/viewmanagement/viewmanager/src/glxviewmanager.cpp
ui/viewmanagement/viewmanager/viewmanager.pro
ui/views/detailsview/inc/glxdetailsview.h
ui/views/detailsview/src/glxdetailsview.cpp
ui/views/docloaders/inc/glxviewdocloader.h
ui/views/docloaders/src/glxviewdocloader.cpp
ui/views/fullscreenview/inc/glxcoverflow.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/src/glxlistview.cpp
ui/views/slideshowview/src/glxslideshowwidget.cpp
ui/views/views.pro
ui/viewutilities/effectengine/src/glxeffectengine.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/commonutilities/externalutility/externalutility.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/commonutilities/externalutility/externalutility.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -35,4 +35,12 @@
 HEADERS += inc/glxexternalutility.h 
 SOURCES += src/glxexternalutility.cpp
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxexternalutility.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxexternalutility.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/commonutilities/imagedecoderwrapper/imagedecoderwrapper.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/commonutilities/imagedecoderwrapper/imagedecoderwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -25,7 +25,8 @@
 LIBS += -limageconversion.dll \
 	-lbitmaptransforms.dll \
 	-liclextjpegapi.dll \
-	-lfbscli.dll
+	-lfbscli.dll \
+	-lefsrv.dll
 
 DEFINES += BUILD_IMAGEWRAPPER
 symbian: { 
@@ -40,4 +41,13 @@
 HEADERS += inc/glximagedecoder.h inc/glximagedecoderwrapper.h
 SOURCES += src/glximagedecoder.cpp src/glximagedecoderwrapper.cpp
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glximagedecoderwrapper.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glximagedecoderwrapper.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/detailsview.docml	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+    <widget name="view" type="HbView">
+        <widget name="content" role="HbView:widget" type="HbWidget">
+            <widget name="MainWidget" type="HbWidget">
+                <widget name="ImageIcon" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <icon iconName="qtg_small_smiley_very_cool" name="icon"/>
+                    <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="31.95un" type="PREFERRED" width="31.95un"/>
+                    <sizehint height="31.95un" type="MINIMUM" width="31.95un"/>
+                    <sizehint height="31.95un" type="MAXIMUM" width="31.95un"/>
+                </widget>
+                <widget name="FavIcon" type="HbPushButton">
+                    <real name="z" value="1"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <real name="opacity" value="0.6"/>
+                    <sizehint type="MINIMUM" width="5un"/>
+                    <sizehint height="5un" type="MAXIMUM" width="5un"/>
+                    <string name="text"/>
+                </widget>
+                <widget name="ImageName" plugin="detailsnamelabelplugin" type="GlxDetailsNameLabel"/>
+                <widget name="container" type="HbWidget">
+                    <widget name="DateContainer" type="HbWidget">
+                        <widget name="DateText" type="HbLabel">
+                            <string name="plainText"/>
+                        </widget>
+                        <real name="z" value="0"/>
+                        <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                        <layout orientation="Horizontal" type="linear">
+                            <linearitem itemname="DateText"/>
+                        </layout>
+                    </widget>
+                    <widget name="TimeContainer" type="HbWidget">
+                        <widget name="TimeText" type="HbLabel">
+                            <string name="plainText"/>
+                        </widget>
+                        <real name="z" value="0"/>
+                        <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                        <layout orientation="Horizontal" type="linear">
+                            <linearitem itemname="TimeText"/>
+                        </layout>
+                    </widget>
+                    <widget name="SizeContainer" type="HbWidget">
+                        <widget name="SizeText" type="HbLabel">
+                            <string name="plainText"/>
+                        </widget>
+                        <real name="z" value="0"/>
+                        <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                        <layout orientation="Horizontal" type="linear">
+                            <linearitem itemname="SizeText"/>
+                        </layout>
+                    </widget>
+                    <widget name="DescLabelContainer" type="HbWidget">
+                        <widget name="Descriptions" type="HbLabel">
+                            <string name="plainText"/>
+                        </widget>
+                        <real name="z" value="0"/>
+                        <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                        <layout orientation="Horizontal" type="linear">
+                            <linearitem itemname="Descriptions"/>
+                        </layout>
+                    </widget>
+                    <widget name="DescTextContainer" type="HbWidget">
+                        <widget name="DescriptionsText" plugin="detailsdescriptioneditplugin" type="GlxDetailsDescriptionEdit">
+                            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                        </widget>
+                        <real name="z" value="0"/>
+                        <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                        <layout orientation="Horizontal" type="linear">
+                            <linearitem itemname="DescriptionsText"/>
+                        </layout>
+                    </widget>
+                    <real name="z" value="0"/>
+                    <sizehint height="23.8806un" type="PREFERRED" width="11.9403un"/>
+                    <layout orientation="Vertical" type="linear">
+                        <linearitem itemname="DateContainer"/>
+                        <linearitem itemname="TimeContainer"/>
+                        <linearitem itemname="SizeContainer"/>
+                        <linearitem itemname="DescLabelContainer"/>
+                        <linearitem itemname="DescTextContainer"/>
+                    </layout>
+                </widget>
+                <real name="z" value="0"/>
+                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                <sizehint height="expr(var(hb-param-screen-height) - (2*var(hb-param-margin-gene-screen) )-var(hb-param-widget-chrome-height))" type="FIXED" width="expr(var(hb-param-screen-width) -(2*var(hb-param-margin-gene-screen) ))"/>
+                <sizehint height="expr(var(hb-param-screen-height) - (2*var(hb-param-margin-gene-screen) )-var(hb-param-widget-chrome-height))" type="MINIMUM" width="expr(var(hb-param-screen-width) -(2*var(hb-param-margin-gene-screen) ))"/>
+                <sizehint height="expr(var(hb-param-screen-height) - (2*var(hb-param-margin-gene-screen) )-var(hb-param-widget-chrome-height))" type="MAXIMUM" width="expr(var(hb-param-screen-width) -(2*var(hb-param-margin-gene-screen) ))"/>
+                <layout type="anchor">
+                    <anchoritem dst="ImageIcon" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="ImageIcon" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                    <anchoritem dst="FavIcon" dstEdge="TOP" spacing="29.85075un" src="" srcEdge="TOP"/>
+                    <anchoritem dst="FavIcon" dstEdge="RIGHT" spacing="-10.85075un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="ImageName" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="ImageName" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                    <anchoritem dst="container" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="container" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                </layout>
+            </widget>
+            <layout type="anchor">
+                <anchoritem dst="MainWidget" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-screen) )" src="" srcEdge="LEFT"/>
+                <anchoritem dst="MainWidget" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-screen) )" src="" srcEdge="TOP"/>
+            </layout>
+        </widget>
+        <string name="title" value="View"/>
+    </widget>
+    <section name="portrait">
+        <widget name="DescriptionsText" plugin="detailsdescriptioneditplugin" type="GlxDetailsDescriptionEdit">
+            <sizehint height="10.5un" type="PREFERRED" width="48un"/>
+            <sizehint height="10.5un" type="MAXIMUM" width="48un"/>
+            <sizehint height="10.5un" type="MINIMUM" width="48un"/>
+        </widget>
+        <widget name="DateContainer" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="7.5un" type="MAXIMUM" width="48.38806un"/>
+            <sizehint height="5un" type="FIXED" width="48.38806un"/>
+            <sizehint height="5un" type="MINIMUM" width="48.38806un"/>
+            <layout orientation="Horizontal" spacing="3px" type="linear">
+                <contentsmargins bottom="3px" left="3px" right="3px" top="3px"/>
+                <linearitem itemname="DateText"/>
+            </layout>
+        </widget>
+        <widget name="content" role="HbView:widget" type="HbWidget">
+            <layout type="anchor">
+                <anchoritem dst="MainWidget" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-screen) )" src="" srcEdge="LEFT"/>
+                <anchoritem dst="MainWidget" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-screen) + var(hb-param-widget-chrome-height)  + var(hb-param-widget-chrome-height) /3)" src="" srcEdge="TOP"/>
+            </layout>
+        </widget>
+        <widget name="DescLabelContainer" type="HbWidget">
+            <sizehint height="4.5un" type="MAXIMUM" width="48.38806un"/>
+            <sizehint height="4.5un" type="MINIMUM" width="48.38806un"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="4.5un" type="FIXED" width="48.38806un"/>
+            <layout orientation="Horizontal" spacing="3px" type="linear">
+                <contentsmargins bottom="3px" left="3px" right="3px" top="3px"/>
+                <linearitem itemname="Descriptions"/>
+            </layout>
+        </widget>
+        <widget name="DateText" type="HbLabel">
+            <string name="plainText"/>
+        </widget>
+        <widget name="TimeContainer" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="5un" type="MAXIMUM" width="48.38806un"/>
+            <sizehint height="5un" type="FIXED" width="48.38806un"/>
+            <sizehint height="5un" type="MINIMUM" width="48.38806un"/>
+            <layout orientation="Horizontal" spacing="3px" type="linear">
+                <contentsmargins bottom="3px" left="3px" right="3px" top="3px"/>
+                <linearitem itemname="TimeText"/>
+            </layout>
+        </widget>
+        <widget name="container" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="37.82239un" type="MAXIMUM" width="49.73134un"/>
+            <sizehint height="37.82239un" type="FIXED" width="49.73134un"/>
+            <sizehint height="37.82239un" type="MINIMUM" width="49.73134un"/>
+            <layout orientation="Vertical" spacing="0un" type="linear">
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="DateContainer"/>
+                <linearitem itemname="TimeContainer"/>
+                <linearitem itemname="SizeContainer"/>
+                <linearitem itemname="DescLabelContainer"/>
+                <linearitem itemname="DescTextContainer"/>
+            </layout>
+        </widget>
+        <widget name="SizeContainer" type="HbWidget">
+            <sizehint height="7.5un" type="MINIMUM" width="48.38806un"/>
+            <sizehint height="5un" type="MAXIMUM" width="48.38806un"/>
+            <sizehint height="7.5un" type="FIXED" width="48.38806un"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <layout orientation="Horizontal" spacing="3px" type="linear">
+                <contentsmargins bottom="3px" left="3px" right="3px" top="3px"/>
+                <linearitem itemname="SizeText"/>
+            </layout>
+        </widget>
+        <widget name="MainWidget" type="HbWidget">
+            <layout type="anchor">
+                <anchoritem dst="ImageIcon" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="ImageIcon" dstEdge="CENTERH" spacing="0un" src="" srcEdge="CENTERH"/>
+                <anchoritem dst="FavIcon" dstEdge="RIGHT" spacing="0un" src="ImageIcon" srcEdge="RIGHT"/>
+                <anchoritem dst="FavIcon" dstEdge="BOTTOM" spacing="0un" src="ImageIcon" srcEdge="BOTTOM"/>
+                <anchoritem dst="ImageName" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="ImageName" dstEdge="TOP" spacing="expr(31.95un +var(hb-param-margin-gene-middle-vertical))" src="" srcEdge="TOP"/>
+                <anchoritem dst="container" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="container" dstEdge="TOP" spacing="expr(31.95un +var(hb-param-margin-gene-middle-vertical) + var(hb-param-margin-gene-bottom) + 5un)" src="" srcEdge="TOP"/>
+            </layout>
+        </widget>
+        <widget name="DescTextContainer" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="14un" type="MAXIMUM" width="48.38806un"/>
+            <sizehint height="14un" type="FIXED" width="48.38806un"/>
+            <sizehint height="7.5un" type="MINIMUM" width="48.38806un"/>
+            <layout orientation="Horizontal" spacing="3px" type="linear">
+                <contentsmargins bottom="3px" left="3px" right="3px" top="3px"/>
+                <linearitem itemname="DescriptionsText"/>
+            </layout>
+        </widget>
+        <widget name="ImageName" plugin="detailsnamelabelplugin" type="GlxDetailsNameLabel">
+            <enums name="textWrapping" value="TextWordWrap"/>
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <real name="z" value="2"/>
+            <sizehint height="6un" type="FIXED" width="48.50746un"/>
+            <sizehint height="6un" type="MINIMUM" width="48.50746un"/>
+            <sizehint height="7un" type="MAXIMUM" width="48.50746un"/>
+            <string name="plainText"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+        </widget>
+        <widget name="FavIcon" type="HbPushButton">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-graphic-size-primary-small) + 2un)"/>
+            <sizehint type="MINIMUM" width="expr(var(hb-param-graphic-size-primary-small) + 2un)"/>
+            <sizehint height="5un" type="MAXIMUM" width="expr(var(hb-param-graphic-size-primary-small) + 2un)"/>
+            <real name="opacity" value="0.6"/>
+        </widget>
+        <widget name="Descriptions" type="HbLabel">
+            <string name="plainText" value="Description:"/>
+        </widget>
+    </section>
+    <section name="landscape">
+        <widget name="DescriptionsText" plugin="detailsdescriptioneditplugin" type="GlxDetailsDescriptionEdit">
+            <sizehint height="12un" type="MINIMUM" width="56un"/>
+            <sizehint height="12un" type="PREFERRED" width="56un"/>
+            <sizehint height="12un" type="MAXIMUM" width="56un"/>
+        </widget>
+        <widget name="DateContainer" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="5un" type="FIXED" width="expr(var(hb-param-screen-width) -  (2*var(hb-param-margin-gene-screen)) -31.95un -var(hb-param-margin-gene-left) )"/>
+            <sizehint height="5un" type="MAXIMUM" width="expr(var(hb-param-screen-width) -  (2*var(hb-param-margin-gene-screen)) -31.95un -var(hb-param-margin-gene-left) )"/>
+            <sizehint height="5un" type="MINIMUM" width="expr(var(hb-param-screen-width) -  (2*var(hb-param-margin-gene-screen)) -31.95un -var(hb-param-margin-gene-left) )"/>
+        </widget>
+        <widget name="content" role="HbView:widget" type="HbWidget">
+            <layout type="anchor">
+                <anchoritem dst="MainWidget" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-screen) )" src="" srcEdge="LEFT"/>
+                <anchoritem dst="MainWidget" dstEdge="TOP" spacing="expr(var(hb-param-margin-gene-screen) + var(hb-param-widget-chrome-height))" src="" srcEdge="TOP"/>
+            </layout>
+        </widget>
+        <widget name="DescLabelContainer" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="4.5un" type="MINIMUM" width="57.57239un"/>
+            <sizehint height="4.5un" type="FIXED" width="57.57239un"/>
+            <sizehint height="4.5un" type="MAXIMUM" width="57.57239un"/>
+        </widget>
+        <widget name="DateText" type="HbLabel">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint type="MINIMUM" width="55un"/>
+            <sizehint type="MAXIMUM" width="55un"/>
+        </widget>
+        <widget name="TimeContainer" type="HbWidget">
+            <sizehint height="5un" type="MINIMUM" width="57.57239un"/>
+            <sizehint height="5un" type="FIXED" width="57.57239un"/>
+            <sizehint height="5un" type="MAXIMUM" width="57.57239un"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+        </widget>
+        <widget name="SizeText" type="HbLabel">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="3.28358un" type="MINIMUM" width="55un"/>
+            <sizehint height="3.28358un" type="MAXIMUM" width="55un"/>
+        </widget>
+        <widget name="container" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="49.73134un" type="MINIMUM" width="57.57239un"/>
+            <sizehint height="49.73134un" type="FIXED" width="57.57239un"/>
+            <sizehint type="MAXIMUM" width="57.57239un"/>
+            <layout orientation="Vertical" type="linear">
+                <contentsmargins bottom="1un" left="0un" right="0un" top="0un"/>
+                <linearitem itemname="DateContainer"/>
+                <linearitem itemname="TimeContainer"/>
+                <linearitem itemname="SizeContainer"/>
+                <linearitem itemname="DescLabelContainer"/>
+                <linearitem itemname="DescTextContainer"/>
+            </layout>
+        </widget>
+        <widget name="SizeContainer" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="5un" type="MINIMUM" width="57.57239un"/>
+            <sizehint height="5un" type="FIXED" width="57.57239un"/>
+            <sizehint height="5un" type="MAXIMUM" width="57.57239un"/>
+        </widget>
+        <widget name="MainWidget" type="HbWidget">
+            <layout type="anchor">
+                <anchoritem dst="ImageIcon" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="ImageIcon" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="FavIcon" dstEdge="RIGHT" spacing="0un" src="ImageIcon" srcEdge="RIGHT"/>
+                <anchoritem dst="FavIcon" dstEdge="BOTTOM" spacing="0un" src="ImageIcon" srcEdge="BOTTOM"/>
+                <anchoritem dst="ImageName" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="ImageName" dstEdge="TOP" spacing="expr(31.95un +var(hb-param-margin-gene-middle-vertical))" src="" srcEdge="TOP"/>
+                <anchoritem dst="container" dstEdge="LEFT" spacing="expr(31.95un +var(hb-param-margin-gene-left))" src="" srcEdge="LEFT"/>
+                <anchoritem dst="container" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+            </layout>
+        </widget>
+        <widget name="TimeText" type="HbLabel">
+            <sizehint type="FIXED" width="55un"/>
+            <sizehint type="MINIMUM" width="55un"/>
+            <sizehint height="3.28358un" type="MAXIMUM" width="55un"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+        </widget>
+        <widget name="ImageName" plugin="detailsnamelabelplugin" type="GlxDetailsNameLabel">
+            <real name="z" value="2"/>
+            <sizehint height="7.5un" type="PREFERRED" width="31.95un"/>
+            <sizehint height="7.5un" type="MINIMUM" width="31.95un"/>
+            <sizehint height="7.5un" type="MAXIMUM" width="31.95un"/>
+        </widget>
+        <widget name="DescTextContainer" type="HbWidget">
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint type="MAXIMUM" width="57.57239un"/>
+            <sizehint height="12un" type="FIXED" width="57.57239un"/>
+            <sizehint height="12un" type="MINIMUM" width="57.57239un"/>
+            <layout orientation="Horizontal" spacing="0un" type="linear">
+                <contentsmargins bottom="1.34328un" left="0un" right="1.34328un" top="0un"/>
+                <linearitem itemname="DescriptionsText"/>
+            </layout>
+        </widget>
+        <widget name="FavIcon" type="HbPushButton">
+            <sizehint type="PREFERRED" width="expr(var(hb-param-graphic-size-primary-small) + 2un)"/>
+            <sizehint type="MINIMUM" width="expr(var(hb-param-graphic-size-primary-small) + 2un)"/>
+            <sizehint height="5un" type="MAXIMUM" width="expr(var(hb-param-graphic-size-primary-small) + 2un)"/>
+        </widget>
+        <widget name="Descriptions" type="HbLabel">
+            <string name="plainText" value="Descriptions:"/>
+        </widget>
+    </section>
+    <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"/>
+    </metadata>
+</hbdocument>
--- a/data/listview.docml	Fri Jun 11 13:38:23 2010 +0300
+++ b/data/listview.docml	Wed Jun 23 18:12:48 2010 +0300
@@ -17,13 +17,13 @@
             </widget>
             <layout type="anchor">
                 <anchoritem dst="listview" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="listview" dstEdge="TOP" spacing="9un" src="" srcEdge="TOP"/>
+                <anchoritem dst="listview" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
                 <anchoritem dst="listview" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="listview" dstEdge="BOTTOM" spacing="-9un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="listview" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
         <string name="title" value="Photos"/>
-        <bool name="contentFullScreen" value="TRUE"/>
+        <bool name="contentFullScreen" value="FALSE"/>
     </widget>
     <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
--- a/data/photos.css	Fri Jun 11 13:38:23 2010 +0300
+++ b/data/photos.css	Wed Jun 23 18:12:48 2010 +0300
@@ -55,7 +55,7 @@
 }
 
 HbListViewItem::multiselection-toucharea{
-	fixed-width: 90.0un;
+	fixed-width: 0.0un;
 }
 
 HbListViewItem::icon-1{
--- a/data/qgn_menu_ovi_photos.svg	Fri Jun 11 13:38:23 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="44px" version="1.1" viewBox="0 0 44 44" width="44px" x="0px" y="0px">
-<g>
-<path d="M40.999,20.516c0-1.516-1.317-2.365-2.217-2.45l-0.01-11.99c0-0.552-0.448-1-1-1L6.007,5.089   c-0.476,0-0.999,0.396-0.999,0.999v26.843c0,0.555,0.523,1.005,1.009,1.005c0,0,6.411-0.005,7.088-0.005   c0,1.258-0.042,1.813,0.771,2.41c0,1.004,0.577,2.659,2.683,2.659c0.025,0,21.679-0.003,21.679-0.003   c1.669,0,2.761-1.152,2.761-2.481C40.999,36.494,40.999,20.534,40.999,20.516z" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M6.016,30.777l0.001,2.152l8.098-0.003v1.964c0,0.414,0.337,0.75,0.752,0.75h0.018v0.798   c0,0-0.064,1.555,1.754,1.555h21.6c1.819,0,1.754-1.555,1.754-1.555v-3.159L6.016,30.777z" fill-opacity="0.5" stroke-opacity="0.5"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="21.8945" x2="21.8945" y1="5.3208" y2="64.1475">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#B2B2B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_1_)" points="37.782,31.912 6.017,31.924 6.007,6.012 37.772,6  "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="21.8926" x2="21.8926" y1="19.2339" y2="4.6529">
-<stop offset="0" style="stop-color:#DEEEF9"/>
-<stop offset="0.1953" style="stop-color:#C2E7F8"/>
-<stop offset="0.6144" style="stop-color:#7AD6F5"/>
-<stop offset="1" style="stop-color:#33C5F3"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" points="35.66,29.276 8.135,29.286 8.125,8.648 35.654,8.64  "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="23.3984" x2="23.3984" y1="8.5083" y2="35.9947">
-<stop offset="0" style="stop-color:#79CD19"/>
-<stop offset="1" style="stop-color:#1B6332"/>
-</linearGradient>
-<polygon fill="url(#SVGID_3_)" points="29.477,11.339 11.137,29.282 35.66,29.276 35.658,17.496  "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="18.7227" x2="18.7227" y1="16.8872" y2="38.1738">
-<stop offset="0" style="stop-color:#79CD19"/>
-<stop offset="1" style="stop-color:#1B6332"/>
-</linearGradient>
-<polygon fill="url(#SVGID_4_)" points="13.434,13.741 29.311,29.292 8.135,29.286 8.137,19.021  "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="27.438" x2="27.438" y1="15.6304" y2="42.5308">
-<stop offset="0" style="stop-color:#E6E6F5"/>
-<stop offset="1" style="stop-color:#333342"/>
-</linearGradient>
-<path d="M38.238,18.032h-21.6c-1.818,0-1.754,1.553-1.754,1.553v15.848c0,0-0.064,1.555,1.754,1.555h21.6   c1.819,0,1.754-1.555,1.754-1.555V19.585C39.992,19.585,40.057,18.032,38.238,18.032z" fill="url(#SVGID_5_)"/>
-<path d="M39.298,19.565c0.004-0.019-0.016-0.288-0.136-0.469c-0.128-0.17-0.259-0.355-0.925-0.373   h-21.6c-0.667,0.018-0.798,0.203-0.926,0.373c-0.098,0.143-0.129,0.346-0.135,0.43v13.848l23.721-11.025v-2.765   C39.296,19.584,39.296,19.577,39.298,19.565z" fill="#FFFFFF" fill-opacity="0.15" stroke-opacity="0.15"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="27.3267" x2="27.3267" y1="37.043" y2="24.6615">
-<stop offset="0" style="stop-color:#5A5A6A"/>
-<stop offset="0.5477" style="stop-color:#A4A4AD"/>
-<stop offset="1" style="stop-color:#DDDDE1"/>
-</linearGradient>
-<path d="M39.771,18.763c-0.221-0.371-0.658-0.73-1.533-0.73h-21.6c-1.818,0-1.754,1.553-1.754,1.553v15.848   c0,0-0.018,0.452,0.249,0.868l0.554-0.422c-0.076-0.139-0.104-0.312-0.109-0.388V19.526c0.006-0.084,0.037-0.287,0.135-0.43   c0.128-0.17,0.259-0.355,0.926-0.373h21.6c0.605,0.016,0.768,0.17,0.889,0.325L39.771,18.763z" fill="url(#SVGID_6_)"/>
-<path d="M22.302,28.112c0-3.822,3.104-6.919,6.937-6.919l0,0c3.834,0,6.939,3.097,6.939,6.919l0,0   c0,3.821-3.105,6.917-6.939,6.917l0,0C25.407,35.029,22.302,31.934,22.302,28.112L22.302,28.112z M22.769,28.112   c0.008,3.563,2.898,6.443,6.47,6.449l0,0c3.573-0.006,6.464-2.887,6.47-6.449l0,0c-0.006-3.563-2.896-6.444-6.47-6.451l0,0   C25.667,21.668,22.777,24.549,22.769,28.112L22.769,28.112z" fill="#FFFFFF" fill-opacity="0.25" stroke-opacity="0.25"/>
-<path d="M34.365,28.112c0,2.822-2.293,5.109-5.124,5.109c-2.835,0-5.126-2.287-5.126-5.109   c0-2.823,2.291-5.109,5.126-5.109C32.072,23.003,34.365,25.289,34.365,28.112z" fill="#FFFFFF" fill-opacity="0.25" stroke-opacity="0.25"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="29.2407" x2="29.2407" y1="33.0615" y2="25.352">
-<stop offset="0" style="stop-color:#404040"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<ellipse cx="29.241" cy="28.112" fill="url(#SVGID_7_)" rx="4.296" ry="4.282"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="29.2407" x2="29.2407" y1="35.3877" y2="20.1111">
-<stop offset="0" style="stop-color:#676767"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M29.241,23.828c-2.371,0-4.296,1.919-4.296,4.284c0,2.364,1.925,4.282,4.296,4.282   c2.373,0,4.297-1.918,4.297-4.282C33.538,25.747,31.614,23.828,29.241,23.828z M29.241,31.924c-2.105,0-3.82-1.708-3.82-3.812   c0-2.1,1.715-3.809,3.82-3.809c2.106,0,3.82,1.709,3.82,3.809C33.061,30.216,31.347,31.924,29.241,31.924z" fill="url(#SVGID_8_)"/>
-<path d="M31.326,28.109c0,1.149-0.936,2.078-2.085,2.078c-1.15,0-2.084-0.929-2.084-2.078c0-1.145,0.934-2.075,2.084-2.075   C30.39,26.034,31.326,26.965,31.326,28.109z"/>
-<circle cx="25.197" cy="21.106" fill-opacity="0.2" r="1.608" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="25.1968" x2="25.1968" y1="23.4219" y2="20.0526">
-<stop offset="0" style="stop-color:#676767"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<circle cx="25.197" cy="21.106" fill="url(#SVGID_9_)" r="1.313"/>
-<rect fill="#F2F2F2" height="2.451" width="4.916" x="33.474" y="19.462"/>
-<path d="M32.746,26.63c-0.583-1.363-1.917-2.331-3.499-2.331   c-2.118,0-3.834,1.711-3.834,3.821c0,0.624,0.164,1.202,0.432,1.719L32.746,26.63z" fill="#FFFFFF" fill-opacity="0.25" stroke-opacity="0.25"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="12.2798" x2="21.6919" y1="27.5088" y2="27.5088">
-<stop offset="0" style="stop-color:#404040"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M19.807,33.885c0,0.414-0.337,0.749-0.752,0.749h-4.188c-0.415,0-0.752-0.335-0.752-0.749V21.134   c0-0.414,0.337-0.75,0.752-0.75h4.188c0.415,0,0.752,0.336,0.752,0.75V33.885z" fill="url(#SVGID_10_)"/>
-<path d="M14.806,34.623V20.396c-0.384,0.031-0.691,0.344-0.691,0.738v12.751   C14.115,34.277,14.422,34.592,14.806,34.623z" fill="#FFFFFF" fill-opacity="0.25" stroke-opacity="0.25"/>
-<rect fill="none" height="44" width="44" x="0"/>
-</g>
-</svg>
--- a/engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -373,7 +373,7 @@
 EXPORT_C void CGlxCollectionPluginBase::HandleResponse(CMPXMedia* aResponse, CGlxRequest* aRequest, const TInt& aError)
 	{
     TRACER("void CGlxCollectionPluginBase::HandleResponse()");
-	
+    GLX_DEBUG2("CGlxCollectionPluginBase::HandleResponse()() aError=%d", aError);
     if (dynamic_cast<CGlxIdListRequest*>(aRequest))
 	// iRequest is a CGlxIdListRequest
 	    {
@@ -384,8 +384,20 @@
 	else if (dynamic_cast<CGlxThumbnailRequest*>(aRequest))
 	// iRequest is a CGlxThumbnailRequest
         {
- 		iObs->HandleMedia(aResponse, aError); 
-	    }
+        //when IAD update / sisx installation of S60 TNM is done and
+        //photos asks for the thumbnail, the thumbnail manager returns an 
+        //error KErrServerTerminated(-15)/KErrDied(-13) for which the MPX recreates
+        //the collection plugins and reconnects to the MPX server and goes into
+        //a invalid state. After this, the error is not propogated to the Medialist
+        //and no further requests are processed and it keeps returning KErrNotReady(-18)
+        //So, as a HACK we are changing the error code to KErrCompletion(-17), 
+        //for which the MPX collection does not take any action and propogates the error
+        //to the medialist. This error(KErrCompletion) is treated as a temporary error
+        //and the thumbnail request is made again from the medialist for which the
+        //S60 TNM returns the thumbnail properly.
+        iObs->HandleMedia(aResponse, ((aError == KErrServerTerminated
+                || aError == KErrDied) ? KErrCompletion : aError));
+        }
 	else if (dynamic_cast<CGlxGetRequest*>(aRequest))
 	// iRequest is a CGlxGetRequest
         {
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -550,9 +550,13 @@
 		{
 	    for ( TInt i = 0; i < aObjectIdArray.Count(); i++ )
 	        {
-			iAddedItems.Append(aObjectIdArray[i]);
+            TInt ret = iAddedItems.Append(aObjectIdArray[i]);
+            if (ret != KErrNone)
+                {
+                GLX_DEBUG2("ENotifyAdd-iAddedItems.Append() failed i(%d)", i);
+                }
 	        }
-	    GLX_LOG_INFO1("ENotifyAdd - iAddedItems.Count()=%d", iAddedItems.Count());
+	    GLX_DEBUG2("ENotifyAdd - iAddedItems.Count()=%d", iAddedItems.Count());
 		}
     
    	if (ENotifyModify == aType)
@@ -563,25 +567,25 @@
 	        	{
 		        if (!iHarvestingOngoing)
 		        	{
-		        	GLX_LOG_INFO("ENotifyModify - Harvesting Completed - "
+		        	GLX_DEBUG1("ENotifyModify - Harvesting Completed - "
 		        	        "Reset iAddedItems array");
 					iAddedItems.Reset();
 					break;
 		        	}
-		        GLX_LOG_INFO("ENotifyModify - Id found in iAddedItems array, DO NOT PROCESS");
+                GLX_DEBUG1("ENotifyModify - Id found in iAddedItems array, DO NOT PROCESS");
 	        	return;
 	        	}
 	        }
         }
 
-   	GLX_LOG_INFO("ProcessUpdateArray");
+   	GLX_DEBUG1("HandleObjectNotification - ProcessUpdateArray");
 	ProcessUpdateArray(aObjectIdArray,  MPXChangeEventType(aType), ETrue);
 #ifndef USE_S60_TNM
 	if(MPXChangeEventType(aType) == EMPXItemDeleted )
 		{			
 		TInt count = aObjectIdArray.Count();
 		iDeletedCount += count;
-		GLX_LOG_INFO2("EMPXItemDeleted - aObjectIdArray.Count()=%d, iDeletedCount=%d", 
+		GLX_DEBUG3("EMPXItemDeleted - aObjectIdArray.Count()=%d, iDeletedCount=%d", 
 		        count, iDeletedCount);
 		if(iDeletedCount > KGlxThumbnailCleanupAfterDeletions)
 		    {
@@ -595,7 +599,7 @@
 
 	if(MPXChangeEventType(aType) == EMPXItemModified )
 	    {
-	    GLX_LOG_INFO("EMPXItemModified");
+	    GLX_DEBUG1("HandleObjectNotification - EMPXItemModified");
 	    TRAP_IGNORE(ThumbnailCreator().CleanupThumbnailsL(iThumbnailDatabase));
 		}
 #endif		
--- a/gallery/sis/createsis.bat	Fri Jun 11 13:38:23 2010 +0300
+++ b/gallery/sis/createsis.bat	Wed Jun 23 18:12:48 2010 +0300
@@ -15,7 +15,7 @@
 rem
 
 
-call makesis photos_stub.pkg
+call makesis -v -s photos_stub.pkg
 
 call makesis photos.pkg
 call signsis -s photos.sis photos.sisx RDTest_02.der RDTest_02.key
\ No newline at end of file
Binary file gallery/sis/photos.sis has changed
Binary file gallery/sis/photos.sisx has changed
Binary file gallery/sis/photos_stub.sis has changed
--- a/inc/glxlocalisationstrings.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/inc/glxlocalisationstrings.h	Wed Jun 23 18:12:48 2010 +0300
@@ -88,8 +88,9 @@
 #define GLX_SUBTITLE_CAM_GRIDVIEW      hbTrId("txt_photos_subtitle_my_camera")
 #define GLX_SUBTITLE_MYFAV_GRIDVIEW    hbTrId("txt_photos_subtitle_my_favorites")
 #define GLX_SUBTITLE_NOITEMS           hbTrId("txt_photos_subtitle_no_image_or_videos_to_display")
-
-
+#define GLX_FETCHER_TITLE              QString("Select Image")
+#define GLX_GRID_NO_IMAGE              QString("(No Images)\n")
+#define GLX_GRID_OPEN_CAMERA           QString("To capture images Open")
 //VIEW RELATED STRINGS AND COMMON DIALOGS
 
 //comments lable for photos flip view
--- a/loggers/loggerqt/loggerqt.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/loggers/loggerqt/loggerqt.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -40,4 +40,13 @@
            
 SOURCES += src/glxperformancelog.cpp
 
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxloggerqt.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxloggerqt.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
+
 # Directories
--- a/main/glxaiwservicehandler.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/main/glxaiwservicehandler.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -65,11 +65,20 @@
     mDSDIService(NULL),
     mImageViewerService(NULL)
     {
-    mFetcherService = new GlxGetImageService(this);
-    mNSDIService = new GlxGetImageServiceNSDI(this);
-    mDSDIService = new GlxGetImageServiceDSDI(this);
-    
-    mImageViewerService = new GlxImageViewerService(this);
+    QString currentInterfaceName = XQServiceUtil::interfaceName();
+    if( 0 == currentInterfaceName.compare(QLatin1String("com.nokia.symbian.IImageFetch")))
+        {
+        mFetcherService = new GlxGetImageService(this);
+        }
+    else if( 0 == currentInterfaceName.compare(QLatin1String("Image")))
+        {
+        mNSDIService = new GlxGetImageServiceNSDI(this);
+        mDSDIService = new GlxGetImageServiceDSDI(this);
+        }
+    else if( 0 == currentInterfaceName.compare(QLatin1String("com.nokia.symbian.IFileView")))
+        {
+        mImageViewerService = new GlxImageViewerService(this);
+        }
 
 #ifdef _DEBUG
 	QString t;
@@ -117,7 +126,7 @@
     {
     qDebug() << "GlxFetcher::itemSelected";
     
-    if (mFetcherService->isActive())
+    if (mFetcherService && mFetcherService->isActive())
         {
         qDebug() << "GlxFetcher::itemSelected mFetcherService->isActive()";
         QVariant variant = mModel->data(index, GlxUriRole);
@@ -129,7 +138,7 @@
             }
         }
     
-    if (mNSDIService->isActive())
+    else if (mNSDIService && mNSDIService->isActive())
         {
     qDebug() << "GlxFetcher::itemSelected mNSDIService->isActive()";
         QVariant variant = mModel->data(index, GlxUriRole);
@@ -141,7 +150,7 @@
             }
         }
     
-    if (mDSDIService->isActive())
+    else if (mDSDIService && mDSDIService->isActive())
         {
     qDebug() << "GlxFetcher::itemSelected mDSDIService->isActive()";
         QVariant variant = mModel->data(index, GlxUriRole);
@@ -156,9 +165,10 @@
 
 
 
-void GlxAiwServiceHandler::launchFetcher()
+void GlxAiwServiceHandler::launchFetcher(QString viewTitle)
     {
     qDebug() << "GlxAiwServiceHandler::launchFetcher START";
+    qApp->setApplicationName(viewTitle);
     HbStyleLoader::registerFilePath(":/data/photos.css");
     GlxModelParm modelParm(KGlxCollectionPluginAllImplementationUid, 0);
     mModel = new GlxMediaModel(modelParm);
@@ -323,7 +333,11 @@
 void GlxGetImageService::fetch()
     {
     mImageRequestIndex = setCurrentRequestAsync();
-    mServiceApp->launchFetcher();
+    QString title = requestInfo().info("WindowTitle").toString();
+    if(title.isNull()){
+        title = QString("Image Fetcher");
+    }
+    mServiceApp->launchFetcher(title);
     }
 
 // ----------------------------------------------------------------------------
@@ -412,7 +426,11 @@
     {
     qDebug() << "GlxGetImageServiceNSDI::fetch START";
     mImageRequestIndex = setCurrentRequestAsync();
-    mServiceApp->launchFetcher();
+    QString title = requestInfo().info("WindowTitle").toString();
+    if(title.isNull()){
+        title = QString("Image Fetcher");
+    }
+    mServiceApp->launchFetcher(title);
     qDebug() << "GlxGetImageServiceNSDI::fetch END";
     }
 
@@ -491,7 +509,11 @@
     Q_UNUSED(filter)
     Q_UNUSED(flag)
     mImageRequestIndex = setCurrentRequestAsync();
-    mServiceApp->launchFetcher();
+    QString title = requestInfo().info("WindowTitle").toString();
+    if(title.isNull()){
+        title = QString("Image Fetcher");
+    }
+    mServiceApp->launchFetcher(title);
     }
 
 // ----------GlxImageViewerService---------------
--- a/main/glxaiwservicehandler.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/main/glxaiwservicehandler.h	Wed Jun 23 18:12:48 2010 +0300
@@ -54,7 +54,7 @@
      * Destructor.
      */
     ~GlxAiwServiceHandler();
-	void launchFetcher();
+	void launchFetcher(QString viewTitle);
 	void launchImageViewer();
 public slots:  
     void itemSelected(const QModelIndex &  index);    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main/glxapplication.cpp	Wed Jun 23 18:12:48 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:   ?Description
+*
+*/
+
+//include
+#include <qsymbianevent.h>
+#include <oommonitorplugin.h>
+#include <w32std.h>
+
+//userinclude
+#include "glxapplication.h"
+#include "mglxcache.h"
+
+GlxApplication::GlxApplication( int &argc, char *argv[ ], Hb::ApplicationFlags flags )
+    : HbApplication( argc, argv, flags )
+{
+}
+
+GlxApplication::GlxApplication( QApplication::QS60MainApplicationFactory factory, int &argc, char *argv[], Hb::ApplicationFlags flags  )
+    : HbApplication( factory, argc, argv, flags )
+{
+}
+
+bool GlxApplication::symbianEventFilter(const QSymbianEvent *aQSEvent)
+{
+    if ( aQSEvent->type( ) == QSymbianEvent::WindowServerEvent ) {
+        const TWsEvent *aEvent = aQSEvent->windowServerEvent();
+        if ( aEvent && aEvent->Type() == KAppOomMonitor_FreeRam ) {
+            cleanUpCache();
+        }
+    }
+    return HbApplication::symbianEventFilter( aQSEvent );
+}
+
+void GlxApplication::cleanUpCache()
+{
+    qDebug("GlxApplication::cleanUpCache()");
+    MGlxCache* cacheManager = MGlxCache::InstanceL();
+    cacheManager->ReleaseRAML(true);
+    cacheManager->Close();
+}
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main/glxapplication.h	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,45 @@
+/*
+* 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 GLXAPPLICATION_H_
+#define GLXAPPLICATION_H_
+
+#include <hbApplication.h>
+
+class QSymbianEvent;
+
+class GlxApplication: public HbApplication
+{
+
+public:
+
+    GlxApplication( int &argc, char *argv[],
+                        Hb::ApplicationFlags flags = Hb::DefaultApplicationFlags );
+    
+    GlxApplication( QApplication::QS60MainApplicationFactory factory,
+                        int &argc, 
+                        char *argv[],
+                        Hb::ApplicationFlags flags = Hb::DefaultApplicationFlags );
+    
+    bool symbianEventFilter( const QSymbianEvent *aQSEvent );
+    
+private :
+    void cleanUpCache();
+
+};
+    
+#endif // GLXAPPLICATION_H_
--- a/main/main.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/main/main.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -16,9 +16,6 @@
 */
 
 
-
-#include <hbapplication.h>
-#include <glxstatemanager.h>
 #include <hbmainwindow.h>
 #include <glxloggerenabler.h>
 
@@ -26,7 +23,10 @@
 #include <QDebug>
 #include <QTranslator>
 #include <xqserviceutil.h>
-#include <glxaiwservicehandler.h>
+
+#include "glxstatemanager.h"
+#include "glxaiwservicehandler.h"
+#include "glxapplication.h"
 
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
@@ -42,18 +42,15 @@
     OstTraceExt3( TRACE_NORMAL, DUP1__MAIN, "::main Time at Launch HHMMSS =%d::%d::%d",
             localTime.hour(), localTime.minute(), localTime.second() );
 
-    HbApplication app(argc, argv);	
-    
-	bool loaded(false);	
-    
+    GlxApplication app(argc, argv);	
+    bool loaded(false);	
     QTranslator translator;
     QString path = "Z:/resource/qt/translations/";
+    
     loaded = translator.load("photos_" + QLocale::system().name(), path);
-    if(loaded)
-        {
+    if(loaded) {
          qApp->installTranslator(&translator);
-        }
-    
+    }
     
     GlxStateManager* stateMgr = NULL;
     GlxAiwServiceHandler* mainWindow = NULL;
@@ -61,13 +58,12 @@
     OstTraceEventStart0( EVENT_DUP1__MAIN_START, "launch" );
 
     if(!XQServiceUtil::isService()){
-	      stateMgr = new GlxStateManager();
+        stateMgr = new GlxStateManager();
         app.setApplicationName("Photos");          
         stateMgr->launchApplication();  
     }
-    else
-    {
-	      mainWindow = new GlxAiwServiceHandler();
+    else {
+        mainWindow = new GlxAiwServiceHandler();
         mainWindow->show();
     }
     OstTraceEventStop( EVENT_DUP1__MAIN_STOP, "launch", EVENT_DUP1__MAIN_START );
--- a/main/main.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/main/main.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -24,21 +24,23 @@
                ../ui/inc \
                ../ui/uiengine/model/mediamodel/inc \
                ../ui/uiengine/medialistwrapper/inc \
+               ../ui/uiengine/medialists/inc \
                ../loggers/loggerqt/inc \
                ../ui/views/viewsfactory/inc \
                ../ui/views/viewbase/inc \
                ../ui/views/gridview/inc \
-	       ../engine/collectionframework/plugins/glxcollectionpluginall/inc \
+               ../engine/collectionframework/plugins/glxcollectionpluginall/inc \
                ../traces
 
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
 CONFIG += HB
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
 
-
 symbian: { 
     TARGET.UID3 = 0x20000A14
-    ICON = ../data/qgn_menu_ovi_photos.svg
+    SKINICON = qtg_large_photos
     isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000
     isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 20480 \
         41943040
@@ -51,13 +53,17 @@
         -lglxviews.dll \
         -lglxmediamodel.dll \
         -lglxexternalutility.dll \
-	-lglximageviewermanager.dll
+        -lglximageviewermanager.dll \
+        -lglxmedialists.dll
 		
 
 # Input
 SOURCES += main.cpp \
-	   glxaiwservicehandler.cpp 
-HEADERS +=glxaiwservicehandler.h
+           glxaiwservicehandler.cpp \
+           glxapplication.cpp
+	         
+HEADERS += glxaiwservicehandler.h \
+           glxapplication.h
 
 RESOURCES += ../photos.qrc
 TRANSLATIONS= photos.ts
--- a/photos.qrc	Fri Jun 11 13:38:23 2010 +0300
+++ b/photos.qrc	Wed Jun 23 18:12:48 2010 +0300
@@ -23,6 +23,7 @@
         <file>data/listview.docml</file>
         <file>data/fullscreen.docml</file>
         <file>data/slideshow.docml</file>
+	<file>data/detailsview.docml</file>
         <file>data/Image1.jpg</file>
         <file>data/Image2.jpg</file>
         <file>data/Image3.jpg</file>
--- a/rom/photos.iby	Fri Jun 11 13:38:23 2010 +0300
+++ b/rom/photos.iby	Wed Jun 23 18:12:48 2010 +0300
@@ -78,6 +78,10 @@
 file=ABI_DIR/BUILD_DIR/glxviews.dll                        	SHARED_LIB_DIR/glxviews.dll
 file=ABI_DIR/BUILD_DIR/glxviewutilities.dll                	SHARED_LIB_DIR/glxviewutilities.dll
 file=ABI_DIR/BUILD_DIR/glxzoomwidget.dll                	SHARED_LIB_DIR/glxzoomwidget.dll
+file=ABI_DIR/BUILD_DIR/detailsnamelabel.dll                	SHARED_LIB_DIR/detailsnamelabel.dll
+file=ABI_DIR/BUILD_DIR/detailsnamelabelplugin.dll          	SHARED_LIB_DIR/detailsnamelabelplugin.dll
+file=ABI_DIR/BUILD_DIR/detailsdescriptionedit.dll          SHARED_LIB_DIR/detailsdescriptionedit.dll
+file=ABI_DIR/BUILD_DIR/detailsdescriptioneditplugin.dll    SHARED_LIB_DIR/detailsdescriptioneditplugin.dll
 
 
 S60_APP_EXE(photos)
--- a/tsrc/unittest/unittest_imagedecoderwrapper/unittest_imagedecoderwrapper.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/tsrc/unittest/unittest_imagedecoderwrapper/unittest_imagedecoderwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -21,6 +21,7 @@
 INCLUDEPATH += . 
 INCLUDEPATH += ../../../commonutilities/imagedecoderwrapper/inc
 INCLUDEPATH += /epoc32/include/mw/QtTest
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 
 CONFIG += qtestlib \
           Hb
--- a/tvout/tvoutwrapper/tvoutwrapper.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/tvout/tvoutwrapper/tvoutwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -43,4 +43,13 @@
 			src/glxtvoutwrapper_p.cpp \
 			src/glxtvconnectionobserver.cpp
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxtvoutwrapper.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxtvoutwrapper.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -12,55 +12,62 @@
 	??_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)
-	?GetName@GlxCommandHandlerRename@@ABE?AVQString@@AAVMGlxMediaList@@@Z @ 14 NONAME ; class QString GlxCommandHandlerRename::GetName(class MGlxMediaList &) const
-	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 15 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *, int)
-	?DoExecuteCommandL@GlxCommandHandlerRotate@@UAEXHAAVMGlxMediaList@@AAH@Z @ 16 NONAME ; void GlxCommandHandlerRotate::DoExecuteCommandL(int, class MGlxMediaList &, int &)
-	?metaObject@GlxCommandHandlerNewMedia@@UBEPBUQMetaObject@@XZ @ 17 NONAME ; struct QMetaObject const * GlxCommandHandlerNewMedia::metaObject(void) const
-	?CreateCommandL@GlxCommandHandlerDelete@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 18 NONAME ; class CMPXMedia * GlxCommandHandlerDelete::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CreateCommandL@GlxCommandHandlerAddToContainer@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 19 NONAME ; class CMPXMedia * GlxCommandHandlerAddToContainer::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CompletionTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 20 NONAME ; class QString GlxCommandHandlerDelete::CompletionTextL(void) const
-	?DoHandleCommandCompleteL@GlxCommandHandlerNewMedia@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 21 NONAME ; void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
-	?GenerateNewMediaItemTitleL@GlxCommandHandlerNewMedia@@ABE?AVQString@@V2@AAVMGlxMediaList@@@Z @ 22 NONAME ; class QString GlxCommandHandlerNewMedia::GenerateNewMediaItemTitleL(class QString, class MGlxMediaList &) const
-	??1GlxCommandHandlerRemoveFrom@@UAE@XZ @ 23 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(void)
-	?qt_metacast@GlxCommandHandlerNewMedia@@UAEPAXPBD@Z @ 24 NONAME ; void * GlxCommandHandlerNewMedia::qt_metacast(char const *)
-	??0GlxCommandHandlerRemoveFrom@@QAE@XZ @ 25 NONAME ; GlxCommandHandlerRemoveFrom::GlxCommandHandlerRemoveFrom(void)
-	?HandleItemAddedL@GlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 26 NONAME ; void GlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *)
-	?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 27 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *)
-	?createNewMedia@GlxCommandHandlerAddToContainer@@ABEXXZ @ 28 NONAME ; void GlxCommandHandlerAddToContainer::createNewMedia(void) const
-	?ReadImageOrientationL@GlxCommandHandlerRotate@@AAEGXZ @ 29 NONAME ; unsigned short GlxCommandHandlerRotate::ReadImageOrientationL(void)
-	??1GlxCommandHandlerRotate@@UAE@XZ @ 30 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(void)
-	?CreateCommandL@GlxCommandHandlerRename@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 31 NONAME ; class CMPXMedia * GlxCommandHandlerRename::CreateCommandL(int, class MGlxMediaList &, int &) const
-	??1GlxCommandHandlerNewMedia@@UAE@XZ @ 32 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(void)
-	??_EGlxCommandHandlerNewMedia@@UAE@I@Z @ 33 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(unsigned int)
-	?CompletionTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 34 NONAME ; class QString GlxCommandHandlerRemoveFrom::CompletionTextL(void) const
-	??_EGlxCommandHandlerDelete@@UAE@I@Z @ 35 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(unsigned int)
-	?ProgressTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 36 NONAME ; class QString GlxCommandHandlerDelete::ProgressTextL(void) const
-	?CompletionTextL@GlxCommandHandlerRename@@EBE?AVQString@@XZ @ 37 NONAME ; class QString GlxCommandHandlerRename::CompletionTextL(void) const
-	?staticMetaObject@GlxCommandHandlerNewMedia@@2UQMetaObject@@B @ 38 NONAME ; struct QMetaObject const GlxCommandHandlerNewMedia::staticMetaObject
-	?DestroyExifWriter@GlxCommandHandlerRotate@@AAEXXZ @ 39 NONAME ; void GlxCommandHandlerRotate::DestroyExifWriter(void)
-	??0GlxCommandHandlerDelete@@QAE@XZ @ 40 NONAME ; GlxCommandHandlerDelete::GlxCommandHandlerDelete(void)
-	??1GlxCommandHandlerRename@@UAE@XZ @ 41 NONAME ; GlxCommandHandlerRename::~GlxCommandHandlerRename(void)
-	??0GlxCommandHandlerSend@@QAE@XZ @ 42 NONAME ; GlxCommandHandlerSend::GlxCommandHandlerSend(void)
-	?HandleError@GlxCommandHandlerNewMedia@@MAEXH@Z @ 43 NONAME ; void GlxCommandHandlerNewMedia::HandleError(int)
-	??0GlxCommandHandlerAddToContainer@@QAE@XZ @ 44 NONAME ; GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer(void)
-	??_EGlxCommandHandlerRename@@UAE@I@Z @ 45 NONAME ; GlxCommandHandlerRename::~GlxCommandHandlerRename(unsigned int)
-	?HandleErrorL@GlxCommandHandlerRename@@EAEXH@Z @ 46 NONAME ; void GlxCommandHandlerRename::HandleErrorL(int)
-	??_EGlxCommandHandlerRotate@@UAE@I@Z @ 47 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(unsigned int)
-	?ProgressTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 48 NONAME ; class QString GlxCommandHandlerAddToContainer::ProgressTextL(void) const
-	??1GlxCommandHandlerSend@@UAE@XZ @ 49 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(void)
-	?CompletionTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 50 NONAME ; class QString GlxCommandHandlerAddToContainer::CompletionTextL(void) const
-	??0GlxCommandHandlerNewMedia@@QAE@XZ @ 51 NONAME ; GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia(void)
-	?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 52 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *, int)
-	?doHandleUserAction@GlxCommandHandlerSend@@UBEXPAVGlxMediaModel@@V?$QList@VQModelIndex@@@@@Z @ 53 NONAME ; void GlxCommandHandlerSend::doHandleUserAction(class GlxMediaModel *, class QList<class QModelIndex>) const
-	??_EGlxCommandHandlerAddToContainer@@UAE@I@Z @ 54 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(unsigned int)
-	?ProgressTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 55 NONAME ; class QString GlxCommandHandlerNewMedia::ProgressTextL(void) const
-	?ExecuteLD@GlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 56 NONAME ; int GlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &)
-	?CreateCommandL@GlxCommandHandlerRotate@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 57 NONAME ; class CMPXMedia * GlxCommandHandlerRotate::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CompletionTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 58 NONAME ; class QString GlxCommandHandlerNewMedia::CompletionTextL(void) const
-	?CreateCommandL@GlxCommandHandlerRemoveFrom@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 59 NONAME ; class CMPXMedia * GlxCommandHandlerRemoveFrom::CreateCommandL(int, class MGlxMediaList &, int &) const
-	?CalculateFinalOrientationL@GlxCommandHandlerRotate@@AAEGG@Z @ 60 NONAME ; unsigned short GlxCommandHandlerRotate::CalculateFinalOrientationL(unsigned short)
-	?InitializeExifWriterL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 61 NONAME ; void GlxCommandHandlerRotate::InitializeExifWriterL(class TBuf<256>)
-	?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 62 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const
-	??1GlxCommandHandlerDelete@@UAE@XZ @ 63 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void)
-	??0GlxCommandHandlerRotate@@QAE@XZ @ 64 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void)
+	?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)
 
--- a/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -47,6 +47,7 @@
 TARGET.EPOCALLOWDLLDATA = 1
 }
 
+
 # Input
 HEADERS += inc/glxcommandhandler.h
 HEADERS += inc/glxmpxcommandhandler.h
@@ -57,3 +58,12 @@
 SOURCES += src/glxmodelcommandhandler.cpp
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxcommandhandlerbase.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxcommandhandlerbase.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -52,7 +52,9 @@
         -lshareui.dll \
 	-lexiflib.dll \
 	-lfbscli.dll \
-	-lbafl.dll
+	-lbafl.dll \
+	-lefsrv.dll \
+	-lcaf.dll
 
 # Input
 HEADERS += inc/glxcommandhandlerdelete.h
@@ -63,6 +65,8 @@
 HEADERS += inc/glxcommandhandlerremovefrom.h
 HEADERS += inc/glxcommandhandlerrename.h
 HEADERS += inc/glxcommondialogs.h
+HEADERS += inc/glxcommandhandlercomment.h
+
 
 SOURCES += src/glxcommandhandlerdelete.cpp
 SOURCES += src/glxcommandhandleraddtocontainer.cpp
@@ -72,6 +76,16 @@
 SOURCES += src/glxcommandhandlerremovefrom.cpp
 SOURCES += src/glxcommandhandlerrename.cpp
 SOURCES += src/glxcommondialogs.cpp
+SOURCES += src/glxcommandhandlercomment.cpp
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
 
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxcommoncommandhandlers.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxcommoncommandhandlers.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlercomment.h	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef GLXCOMMANDHANDLERCOMMENT_H
+#define GLXCOMMANDHANDLERCOMMENT_H
+
+#include <glxmpxcommandhandler.h>
+
+#ifdef BUILD_COMMONCOMMANDHANDLERS
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_EXPORT
+#else
+#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT
+#endif
+
+
+class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerComment : public GlxMpxCommandHandler
+	{
+public:
+    GlxCommandHandlerComment();
+    ~GlxCommandHandlerComment();
+    CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const ;
+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/src/glxcommandhandlercomment.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* 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 <hbmessagebox.h>
+#include <hblabel.h>
+
+#include <mpxcollectionpath.h>
+#include <mglxmedialist.h>
+#include <glxcommandfactory.h>
+#include <glxcommandhandlercomment.h>
+#include <glxattributecontext.h>
+#include <glxattributeretriever.h>
+#include <glxfetchcontextremover.h>
+#include <glxcommondialogs.h>
+#include "glxlocalisationstrings.h"
+
+GlxCommandHandlerComment::GlxCommandHandlerComment()
+    {
+    }
+
+GlxCommandHandlerComment::~GlxCommandHandlerComment()
+    {
+    }
+
+CMPXCommand* GlxCommandHandlerComment::CreateCommandL(TInt aCommandId,
+        MGlxMediaList& aMediaList, TBool& aConsume) const
+    {
+    Q_UNUSED(aCommandId);
+    Q_UNUSED(aConsume);
+    
+    CMPXCommand* command = NULL;
+    QString mainPane = GetName(aMediaList);
+    QString title(GLX_DETAILS_DESCRIPTION);
+    QString mediaTitle = NULL;
+    bool ok = false;    
+    GlxTextInputDialog* dlg = new GlxTextInputDialog();
+    mediaTitle = dlg->getText(title, mainPane, &ok);
+    delete dlg;
+
+    if(ok == true)
+        {
+        TPtrC16 newMediaItemTitleDes
+            = (reinterpret_cast<const TUint16*> (mediaTitle.utf16()));
+
+        HBufC* newMediaItemTitle = newMediaItemTitleDes.Alloc();
+        CleanupStack::PushL(newMediaItemTitle);
+
+        CMPXCollectionPath* path = aMediaList.PathLC(
+                NGlxListDefs::EPathFocusOrSelection);
+        command = 
+            TGlxCommandFactory::SetDescriptionCommandLC(*newMediaItemTitle,*path);
+        CleanupStack::Pop(command);
+        CleanupStack::PopAndDestroy(path);
+        CleanupStack::PopAndDestroy(newMediaItemTitle);
+        }
+    return command;
+    }
+
+QString GlxCommandHandlerComment::CompletionTextL() const
+    {
+	//return command completion text
+	return QString();
+    }
+
+QString GlxCommandHandlerComment::GetName(MGlxMediaList& aMediaList) const
+    {
+        // Create an iterator to retrieve the relevant attribute
+    TGlxSelectionIterator iterator;
+    // only want the title of one item
+	iterator.SetRange( 1 );
+    CGlxAttributeContext* context = new( ELeave )
+        CGlxAttributeContext( &iterator );
+	CleanupStack::PushL( context );
+        
+	// Want to read the title attribute    
+    // Configure the context
+	context->AddAttributeL( KMPXMediaGeneralComment );
+	
+	// Add the context to the media list
+	aMediaList.AddContextL( context, KGlxFetchContextPriorityBlocking );
+
+    // TGlxContextRemover will remove the context when it goes out of scope
+    // Used here to avoid a trap and still have safe cleanup    
+    TGlxFetchContextRemover contextRemover( context, aMediaList );
+    // put to cleanupstack as cleanupstack is emptied before stack objects
+    // are deleted
+    CleanupClosePushL( contextRemover );
+	// Yuck - a leave and a return code!
+	// EFalse => don't show a progress dialog
+    TInt err = GlxAttributeRetriever::RetrieveL( *context, aMediaList, EFalse );
+    // Using a distinct error value as "LeaveIfError( FuncL() );" looks bad
+    User::LeaveIfError( err );
+    // context off the list
+    CleanupStack::PopAndDestroy( &contextRemover );
+
+    // Now get the title of the relevant item: if *an* item is selected use its
+    // title, otherwise use the item with focus
+	// Get the index of the item to rename
+    TInt index = KErrNotFound;
+    QString title = NULL;
+	// first see if there's a selected item...
+    if ( aMediaList.SelectionCount() == 1 )
+    	{
+        // Find the index of the selected item
+    	index = aMediaList.Count();
+    	do
+            {
+            --index;
+            }
+        while ( !aMediaList.IsSelected( index ) && index > 0 );
+    	}
+    else
+    	{
+    	// Use the index of the item with focus
+       	index = aMediaList.FocusIndex();
+    	}
+
+	if ( index != KErrNotFound )
+		{
+        // use iterator to get the right item
+        iterator.SetToFirst( &aMediaList );
+        const CGlxMedia* media = aMediaList.Item( iterator++ ).Properties();
+		if( media )
+			{
+			// found the item's media properties, extract the title
+            const TDesC& titleDesc = media->ValueText(KMPXMediaGeneralComment);
+            title = QString::fromUtf16(titleDesc.Ptr(),
+                    titleDesc.Length());
+			}
+		}
+    CleanupStack::PopAndDestroy( context );
+
+    return title;
+    }
+
+void GlxCommandHandlerComment::HandleErrorL(TInt aErrorCode)
+	{
+    if(aErrorCode == KErrAlreadyExists)
+        {
+        HbMessageBox::warning("Name Already Exist!!!", new HbLabel(
+                "Rename"));
+        }
+	else{
+		GlxMpxCommandHandler::HandleErrorL(aErrorCode);
+		}	
+	}
+
--- a/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -27,66 +27,77 @@
 	_ZN23GlxCommandHandlerRotateD0Ev @ 26 NONAME
 	_ZN23GlxCommandHandlerRotateD1Ev @ 27 NONAME
 	_ZN23GlxCommandHandlerRotateD2Ev @ 28 NONAME
-	_ZN25GlxCommandHandlerNewMedia11HandleErrorEi @ 29 NONAME
-	_ZN25GlxCommandHandlerNewMedia11qt_metacallEN11QMetaObject4CallEiPPv @ 30 NONAME
-	_ZN25GlxCommandHandlerNewMedia11qt_metacastEPKc @ 31 NONAME
-	_ZN25GlxCommandHandlerNewMedia12HandleErrorLEi @ 32 NONAME
-	_ZN25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 33 NONAME
-	_ZN25GlxCommandHandlerNewMedia16staticMetaObjectE @ 34 NONAME DATA 16
-	_ZN25GlxCommandHandlerNewMedia19getStaticMetaObjectEv @ 35 NONAME
-	_ZN25GlxCommandHandlerNewMedia24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 36 NONAME
-	_ZN25GlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 37 NONAME
-	_ZN25GlxCommandHandlerNewMediaC1Ev @ 38 NONAME
-	_ZN25GlxCommandHandlerNewMediaC2Ev @ 39 NONAME
-	_ZN25GlxCommandHandlerNewMediaD0Ev @ 40 NONAME
-	_ZN25GlxCommandHandlerNewMediaD1Ev @ 41 NONAME
-	_ZN25GlxCommandHandlerNewMediaD2Ev @ 42 NONAME
-	_ZN27GlxCommandHandlerRemoveFromC1Ev @ 43 NONAME
-	_ZN27GlxCommandHandlerRemoveFromC2Ev @ 44 NONAME
-	_ZN27GlxCommandHandlerRemoveFromD0Ev @ 45 NONAME
-	_ZN27GlxCommandHandlerRemoveFromD1Ev @ 46 NONAME
-	_ZN27GlxCommandHandlerRemoveFromD2Ev @ 47 NONAME
-	_ZN31GlxCommandHandlerAddToContainer15iSelectionCountE @ 48 NONAME DATA 4
-	_ZN31GlxCommandHandlerAddToContainerC1Ev @ 49 NONAME
-	_ZN31GlxCommandHandlerAddToContainerC2Ev @ 50 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD0Ev @ 51 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD1Ev @ 52 NONAME
-	_ZN31GlxCommandHandlerAddToContainerD2Ev @ 53 NONAME
-	_ZNK21GlxCommandHandlerSend18doHandleUserActionEP13GlxMediaModel5QListI11QModelIndexE @ 54 NONAME
-	_ZNK23GlxCommandHandlerDelete13ProgressTextLEv @ 55 NONAME
-	_ZNK23GlxCommandHandlerDelete14CreateCommandLEiR13MGlxMediaListRi @ 56 NONAME
-	_ZNK23GlxCommandHandlerDelete15CompletionTextLEv @ 57 NONAME
-	_ZNK23GlxCommandHandlerDelete17ConfirmationTextLEb @ 58 NONAME
-	_ZNK23GlxCommandHandlerRename14CreateCommandLEiR13MGlxMediaListRi @ 59 NONAME
-	_ZNK23GlxCommandHandlerRename15CompletionTextLEv @ 60 NONAME
-	_ZNK23GlxCommandHandlerRename7GetNameER13MGlxMediaList @ 61 NONAME
-	_ZNK23GlxCommandHandlerRotate14CreateCommandLEiR13MGlxMediaListRi @ 62 NONAME
-	_ZNK25GlxCommandHandlerNewMedia10metaObjectEv @ 63 NONAME
-	_ZNK25GlxCommandHandlerNewMedia13ProgressTextLEv @ 64 NONAME
-	_ZNK25GlxCommandHandlerNewMedia14CreateCommandLEiR13MGlxMediaListRi @ 65 NONAME
-	_ZNK25GlxCommandHandlerNewMedia15CompletionTextLEv @ 66 NONAME
-	_ZNK25GlxCommandHandlerNewMedia26GenerateNewMediaItemTitleLE7QStringR13MGlxMediaList @ 67 NONAME
-	_ZNK27GlxCommandHandlerRemoveFrom13ProgressTextLEv @ 68 NONAME
-	_ZNK27GlxCommandHandlerRemoveFrom14CreateCommandLEiR13MGlxMediaListRi @ 69 NONAME
-	_ZNK27GlxCommandHandlerRemoveFrom15CompletionTextLEv @ 70 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer13ProgressTextLEv @ 71 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer14CreateCommandLEiR13MGlxMediaListRi @ 72 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer14createNewMediaEv @ 73 NONAME
-	_ZNK31GlxCommandHandlerAddToContainer15CompletionTextLEv @ 74 NONAME
-	_ZTI21GlxCommandHandlerSend @ 75 NONAME
-	_ZTI23GlxCommandHandlerDelete @ 76 NONAME
-	_ZTI23GlxCommandHandlerRename @ 77 NONAME
-	_ZTI23GlxCommandHandlerRotate @ 78 NONAME
-	_ZTI25GlxCommandHandlerNewMedia @ 79 NONAME
-	_ZTI27GlxCommandHandlerRemoveFrom @ 80 NONAME
-	_ZTI31GlxCommandHandlerAddToContainer @ 81 NONAME
-	_ZTV21GlxCommandHandlerSend @ 82 NONAME
-	_ZTV23GlxCommandHandlerDelete @ 83 NONAME
-	_ZTV23GlxCommandHandlerRename @ 84 NONAME
-	_ZTV23GlxCommandHandlerRotate @ 85 NONAME
-	_ZTV25GlxCommandHandlerNewMedia @ 86 NONAME
-	_ZTV27GlxCommandHandlerRemoveFrom @ 87 NONAME
-	_ZTV31GlxCommandHandlerAddToContainer @ 88 NONAME
-	_ZThn8_N25GlxCommandHandlerNewMedia11HandleErrorEi @ 89 NONAME
-	_ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 90 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
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/bwins/detailsdescriptioneditu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,18 @@
+EXPORTS
+	?qt_metacall@GlxDetailsDescriptionEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1 NONAME ; int GlxDetailsDescriptionEdit::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacast@GlxDetailsDescriptionEdit@@UAEPAXPBD@Z @ 2 NONAME ; void * GlxDetailsDescriptionEdit::qt_metacast(char const *)
+	??1GlxDetailsDescriptionEdit@@UAE@XZ @ 3 NONAME ; GlxDetailsDescriptionEdit::~GlxDetailsDescriptionEdit(void)
+	?staticMetaObject@GlxDetailsDescriptionEdit@@2UQMetaObject@@B @ 4 NONAME ; struct QMetaObject const GlxDetailsDescriptionEdit::staticMetaObject
+	??0GlxDetailsDescriptionEdit@@QAE@PAVQGraphicsItem@@@Z @ 5 NONAME ; GlxDetailsDescriptionEdit::GlxDetailsDescriptionEdit(class QGraphicsItem *)
+	?tr@GlxDetailsDescriptionEdit@@SA?AVQString@@PBD0H@Z @ 6 NONAME ; class QString GlxDetailsDescriptionEdit::tr(char const *, char const *, int)
+	??_EGlxDetailsDescriptionEdit@@UAE@I@Z @ 7 NONAME ; GlxDetailsDescriptionEdit::~GlxDetailsDescriptionEdit(unsigned int)
+	?labelPressed@GlxDetailsDescriptionEdit@@IAEXXZ @ 8 NONAME ; void GlxDetailsDescriptionEdit::labelPressed(void)
+	?metaObject@GlxDetailsDescriptionEdit@@UBEPBUQMetaObject@@XZ @ 9 NONAME ; struct QMetaObject const * GlxDetailsDescriptionEdit::metaObject(void) const
+	?focusInEvent@GlxDetailsDescriptionEdit@@MAEXPAVQFocusEvent@@@Z @ 10 NONAME ; void GlxDetailsDescriptionEdit::focusInEvent(class QFocusEvent *)
+	?trUtf8@GlxDetailsDescriptionEdit@@SA?AVQString@@PBD0H@Z @ 11 NONAME ; class QString GlxDetailsDescriptionEdit::trUtf8(char const *, char const *, int)
+	?focusOutEvent@GlxDetailsDescriptionEdit@@MAEXPAVQFocusEvent@@@Z @ 12 NONAME ; void GlxDetailsDescriptionEdit::focusOutEvent(class QFocusEvent *)
+	?tr@GlxDetailsDescriptionEdit@@SA?AVQString@@PBD0@Z @ 13 NONAME ; class QString GlxDetailsDescriptionEdit::tr(char const *, char const *)
+	?getStaticMetaObject@GlxDetailsDescriptionEdit@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & GlxDetailsDescriptionEdit::getStaticMetaObject(void)
+	?setItemText@GlxDetailsDescriptionEdit@@QAEXABVQString@@@Z @ 15 NONAME ; void GlxDetailsDescriptionEdit::setItemText(class QString const &)
+	?trUtf8@GlxDetailsDescriptionEdit@@SA?AVQString@@PBD0@Z @ 16 NONAME ; class QString GlxDetailsDescriptionEdit::trUtf8(char const *, char const *)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/bwins/detailsnamelabelu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,18 @@
+EXPORTS
+	??_EGlxDetailsNameLabel@@UAE@I@Z @ 1 NONAME ; GlxDetailsNameLabel::~GlxDetailsNameLabel(unsigned int)
+	??1GlxDetailsNameLabel@@UAE@XZ @ 2 NONAME ; GlxDetailsNameLabel::~GlxDetailsNameLabel(void)
+	?tr@GlxDetailsNameLabel@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString GlxDetailsNameLabel::tr(char const *, char const *)
+	?mousePressEvent@GlxDetailsNameLabel@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 4 NONAME ; void GlxDetailsNameLabel::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?metaObject@GlxDetailsNameLabel@@UBEPBUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const * GlxDetailsNameLabel::metaObject(void) const
+	?getStaticMetaObject@GlxDetailsNameLabel@@SAABUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const & GlxDetailsNameLabel::getStaticMetaObject(void)
+	?staticMetaObject@GlxDetailsNameLabel@@2UQMetaObject@@B @ 7 NONAME ; struct QMetaObject const GlxDetailsNameLabel::staticMetaObject
+	?qt_metacall@GlxDetailsNameLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 8 NONAME ; int GlxDetailsNameLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0GlxDetailsNameLabel@@QAE@PAVQGraphicsItem@@@Z @ 9 NONAME ; GlxDetailsNameLabel::GlxDetailsNameLabel(class QGraphicsItem *)
+	?labelPressed@GlxDetailsNameLabel@@IAEXXZ @ 10 NONAME ; void GlxDetailsNameLabel::labelPressed(void)
+	?setItemText@GlxDetailsNameLabel@@QAEXABVQString@@@Z @ 11 NONAME ; void GlxDetailsNameLabel::setItemText(class QString const &)
+	?mouseReleaseEvent@GlxDetailsNameLabel@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 12 NONAME ; void GlxDetailsNameLabel::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
+	?trUtf8@GlxDetailsNameLabel@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString GlxDetailsNameLabel::trUtf8(char const *, char const *, int)
+	?trUtf8@GlxDetailsNameLabel@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString GlxDetailsNameLabel::trUtf8(char const *, char const *)
+	?tr@GlxDetailsNameLabel@@SA?AVQString@@PBD0H@Z @ 15 NONAME ; class QString GlxDetailsNameLabel::tr(char const *, char const *, int)
+	?qt_metacast@GlxDetailsNameLabel@@UAEPAXPBD@Z @ 16 NONAME ; void * GlxDetailsNameLabel::qt_metacast(char const *)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailscustomwidget.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,24 @@
+#/* 
+#* 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:
+#*
+#*/ 
+ 
+           
+TEMPLATE = subdirs
+SUBDIRS += detailsnamelabel
+SUBDIRS += detailsnamelabelplugin
+SUBDIRS += detailsdescriptionedit
+SUBDIRS += detailsdescriptioneditplugin
+CONFIG += ordered
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsdescriptionedit/detailsdescriptionedit.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,60 @@
+#/* 
+#* 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:
+#*
+#*/ 
+ 
+
+TEMPLATE = lib
+TARGET = detailsdescriptionedit
+CONFIG += hb
+DEFINES += BUILD_DESCEDIT
+
+win32{
+CONFIG(release, debug|release){
+  TARGET = detailsdescriptionedit
+  DESTDIR = ../release # for easy plugin loading
+}else{
+  TARGET = detailsdescriptioneditd
+  DESTDIR = ../debug # for easy plugin loading
+  }
+}
+
+DEPENDPATH += ./inc \
+              ./src
+
+INCLUDEPATH += ./inc
+
+SOURCES += \
+		glxdetailsdescriptionedit.cpp
+
+HEADERS += \
+        glxdetailsdescriptionedit.h 
+            
+symbian {
+    TARGET.UID3 = 0x200071B9
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    LIBS += -lbafl
+}
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/detailsdescriptionedit.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/detailsdescriptionedit.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
+# End of file	--Don't remove this
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsdescriptionedit/inc/glxdetailsdescriptionedit.h	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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:   This is custom widget for details view in photos for displaying the description of image .
+*
+*/
+ 
+#ifndef GlXDETAILSDESCEDIT_H
+#define GlXDETAILSDESCEDIT_H
+
+#include <hbtextedit.h>
+
+#ifdef BUILD_DESCEDIT
+#define MY_EXPORT Q_DECL_EXPORT
+#else
+#define MY_EXPORT Q_DECL_IMPORT
+#endif
+
+class HbEditorInterface;
+class MY_EXPORT GlxDetailsDescriptionEdit : public HbTextEdit 
+{	
+    Q_OBJECT
+    
+public:
+    GlxDetailsDescriptionEdit(QGraphicsItem *parent = NULL);
+    ~GlxDetailsDescriptionEdit();    	
+    void setItemText( const QString &text );
+		
+protected:
+    void  focusInEvent (QFocusEvent *event) ;
+    void  focusOutEvent (QFocusEvent *event) ;
+
+    
+signals :
+     void labelPressed();
+private:
+     HbEditorInterface *mDesc;     
+};
+
+#endif // GlXDETAILSDESCEDIT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsdescriptionedit/src/glxdetailsdescriptionedit.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* 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:   This is custom widget for details view in photos for displaying the description of image .
+*
+*/
+ 
+
+
+#include "glxdetailsdescriptionedit.h"
+#include <hbeditorinterface>
+#include <QEvent>
+
+
+
+void  GlxDetailsDescriptionEdit::focusInEvent (QFocusEvent *event)
+    {
+    if(event->reason() == Qt::MouseFocusReason )
+        {
+          event->setAccepted(TRUE);
+          emit labelPressed();
+        }
+    
+    }
+void  GlxDetailsDescriptionEdit::focusOutEvent (QFocusEvent *event) 
+    {
+     event->setAccepted(TRUE);    
+    }
+
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//GlxDetailsDescLabel
+//--------------------------------------------------------------------------------------------------------------------------------------------
+GlxDetailsDescriptionEdit::GlxDetailsDescriptionEdit(QGraphicsItem *parent) : HbTextEdit( parent )
+{
+   setAlignment(Qt::AlignLeft);
+   mDesc = new HbEditorInterface(this);
+   mDesc->setInputConstraints (HbEditorConstraintIgnoreFocus);
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//~GlxDetailsDescLabel
+//--------------------------------------------------------------------------------------------------------------------------------------------
+GlxDetailsDescriptionEdit::~GlxDetailsDescriptionEdit()
+{
+  delete mDesc;
+   mDesc = NULL;
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//setItemText
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsDescriptionEdit::setItemText( const QString &text )
+{
+    setPlainText( text );
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsdescriptioneditplugin/detailsdescriptioneditplugin.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,67 @@
+#/* 
+#* 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:
+#*
+#*/ 
+
+TEMPLATE = lib
+TARGET = detailsdescriptioneditplugin
+
+win32{
+CONFIG(release, debug|release){
+	TARGET = detailsdescriptioneditplugin
+	} else {
+	TARGET = detailsdescriptioneditplugind
+	}
+}
+
+CONFIG += hb plugin
+
+win32{
+CONFIG(release, debug|release){
+		DESTDIR = ../release # for easy plugin loading
+		LIBS += -L../release -ldetailsdescriptionedit
+	} else {
+		DESTDIR = ../debug # for easy plugin loading
+		LIBS += -L../debug -ldetailsdescriptioneditd
+	}
+}
+
+SOURCES += \
+        main.cpp
+
+INCLUDEPATH += \
+            ../detailsdescriptionedit \ 
+            ../detailsdescriptionedit/inc
+
+symbian: { 
+    TARGET.UID3 = 0x2000A774
+	TARGET.EPOCALLOWDLLDATA=1
+	TARGET.CAPABILITY = CAP_GENERAL_DLL
+	  
+	LIBS += \
+	    -ldetailsdescriptionedit.dll
+
+	pluginstub.sources = detailsdescriptioneditplugin.dll
+	pluginstub.path = /resource/plugins
+	DEPLOYMENT += pluginstub
+	DESTDIR = $$HB_PLUGINS_DIR
+}
+
+!local {
+    target.path = $$HB_PLUGINS_DIR
+    INSTALLS += target
+}
+
+# End of file	--Don't remove this.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsdescriptioneditplugin/main.cpp	Wed Jun 23 18:12:48 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:  ??
+*
+*/
+ 
+
+#include "glxdetailsdescriptionedit.h"
+#include <QtPlugin>
+#include <hbdocumentloaderplugin.h>
+
+class GlxDetailsDescriptionEditPlugin : public HbDocumentLoaderPlugin
+{
+public:
+    QObject *createObject(const QString& type, const QString &name);
+    QList<const QMetaObject *> supportedObjects();  
+};
+Q_EXPORT_PLUGIN(GlxDetailsDescriptionEditPlugin)
+
+QObject *GlxDetailsDescriptionEditPlugin::createObject(const QString& type, const QString &name )
+{
+    if( type == GlxDetailsDescriptionEdit::staticMetaObject.className() ) {
+        QObject *object = new GlxDetailsDescriptionEdit();
+        object->setObjectName(name);
+        return object;    
+    }
+    return 0;
+}
+
+QList<const QMetaObject *> GlxDetailsDescriptionEditPlugin::supportedObjects()
+{
+    QList<const QMetaObject *> result;
+    result.append( &GlxDetailsDescriptionEdit::staticMetaObject );
+    return result;
+}
+
+// end of file 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsnamelabel/detailsnamelabel.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,60 @@
+#/* 
+#* 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:
+#*
+#*/ 
+
+TEMPLATE = lib
+TARGET = detailsnamelabel
+CONFIG += hb
+DEFINES += BUILD_NAMELABEL
+
+win32{
+CONFIG(release, debug|release){
+  TARGET = detailsnamelabel
+  DESTDIR = ../release # for easy plugin loading
+}else{
+  TARGET = detailsnamelabeld
+  DESTDIR = ../debug # for easy plugin loading
+  }
+}
+
+DEPENDPATH += ./inc \
+              ./src
+
+INCLUDEPATH += ./inc
+
+SOURCES += \
+		glxdetailsnamelabel.cpp
+
+HEADERS += \
+        glxdetailsnamelabel.h 
+            
+symbian {
+    TARGET.UID3 = 0x2000A7BC
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    LIBS += -lbafl
+}
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/detailsnamelabel.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/detailsnamelabel.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
+
+# End of file	--Don't remove this
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsnamelabel/inc/glxdetailsnamelabel.h	Wed Jun 23 18:12:48 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:   ?Description
+*
+*/
+
+#ifndef GlXDETAILSNAMELABEL_H
+#define GlXDETAILSNAMELABEL_H
+
+#include <hblabel.h>
+
+#ifdef BUILD_NAMELABEL
+#define MY_EXPORT Q_DECL_EXPORT
+#else
+#define MY_EXPORT Q_DECL_IMPORT
+#endif
+
+
+class MY_EXPORT GlxDetailsNameLabel : public HbLabel 
+{	
+    Q_OBJECT
+    
+public:
+    GlxDetailsNameLabel(QGraphicsItem *parent = NULL);
+    ~GlxDetailsNameLabel();    	
+    void setItemText( const QString &text );
+		
+protected:
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);	
+    void mouseReleaseEvent (QGraphicsSceneMouseEvent *event);
+    
+signals :
+     void labelPressed();
+     
+};
+
+#endif // GlXDETAILSNAMELABEL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsnamelabel/src/glxdetailsnamelabel.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* 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 <hblabel.h>
+#include "glxdetailsnamelabel.h"
+#include <QEvent>
+#include <QDebug>
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//mousePressEvent
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsNameLabel::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    Q_UNUSED(event)
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//mouseReleaseEvent
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsNameLabel::mouseReleaseEvent (QGraphicsSceneMouseEvent *event) 
+{
+    qDebug("GlxDetailsNameLabel::mouseReleaseEvent");
+    Q_UNUSED(event)  
+    emit labelPressed();
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//GlxDetailsNameLabel
+//--------------------------------------------------------------------------------------------------------------------------------------------
+GlxDetailsNameLabel::GlxDetailsNameLabel(QGraphicsItem *parent) : HbLabel( parent )
+{
+    qDebug("GlxDetailsNameLabel::GlxDetailsNameLabel");
+     setTextWrapping(Hb::TextWordWrap);
+     setAlignment(Qt::AlignHCenter);
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//~GlxDetailsCustomLabel
+//--------------------------------------------------------------------------------------------------------------------------------------------
+GlxDetailsNameLabel::~GlxDetailsNameLabel()
+{
+
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//setItemText
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsNameLabel::setItemText( const QString &text )
+{
+    qDebug("GlxDetailsNameLabel::setItemText");
+    setHtml(text);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsnamelabelplugin/detailsnamelabelplugin.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,67 @@
+#/* 
+#* 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:
+#*
+#*/ 
+
+TEMPLATE = lib
+TARGET = detailsnamelabelplugin
+
+win32{
+CONFIG(release, debug|release){
+	TARGET = detailsnamelabelplugin
+	} else {
+	TARGET = detailsnamelabelplugind
+	}
+}
+
+CONFIG += hb plugin
+
+win32{
+CONFIG(release, debug|release){
+		DESTDIR = ../release # for easy plugin loading
+		LIBS += -L../release -ldetailsnamelabel
+	} else {
+		DESTDIR = ../debug # for easy plugin loading
+		LIBS += -L../debug -ldetailsnamelabeld
+	}
+}
+
+SOURCES += \
+        main.cpp
+
+INCLUDEPATH += \
+            ../detailsnamelabel \ 
+            ../detailsnamelabel/inc
+
+symbian: { 
+    TARGET.UID3 = 0x200071B7
+	TARGET.EPOCALLOWDLLDATA=1
+	TARGET.CAPABILITY = CAP_GENERAL_DLL
+	  
+	LIBS += \
+	    -ldetailsnamelabel.dll
+
+	pluginstub.sources = detailsnamelabelplugin.dll
+	pluginstub.path = /resource/plugins
+	DEPLOYMENT += pluginstub
+	DESTDIR = $$HB_PLUGINS_DIR
+}
+
+!local {
+    target.path = $$HB_PLUGINS_DIR
+    INSTALLS += target
+}
+
+# End of file	--Don't remove this.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/detailsnamelabelplugin/main.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* 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 "glxdetailsnamelabel.h"
+#include <QtPlugin>
+#include <hbdocumentloaderplugin.h>
+#include <QDebug>
+
+class GlxDetailsNameLabelPlugin : public HbDocumentLoaderPlugin
+{
+public:
+    QObject *createObject(const QString& type, const QString &name);
+    QList<const QMetaObject *> supportedObjects();  
+};
+Q_EXPORT_PLUGIN(GlxDetailsNameLabelPlugin)
+
+QObject *GlxDetailsNameLabelPlugin::createObject(const QString& type, const QString &name )
+{
+    qDebug("GlxDetailsNameLabelPlugin::createObject");
+    if( type == GlxDetailsNameLabel::staticMetaObject.className() ) {
+    
+        qDebug("GlxDetailsNameLabelPlugin::createObject created");
+        QObject *object = new GlxDetailsNameLabel();
+        object->setObjectName(name);
+        return object;    
+    }
+    return 0;
+}
+
+QList<const QMetaObject *> GlxDetailsNameLabelPlugin::supportedObjects()
+{
+    qDebug("GlxDetailsNameLabelPlugin::supportedObjects");
+    QList<const QMetaObject *> result;
+    result.append( &GlxDetailsNameLabel::staticMetaObject );
+    return result;
+}
+
+// end of file 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/eabi/detailsdescriptioneditu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,24 @@
+EXPORTS
+	_ZN25GlxDetailsDescriptionEdit11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN25GlxDetailsDescriptionEdit11qt_metacastEPKc @ 2 NONAME
+	_ZN25GlxDetailsDescriptionEdit11setItemTextERK7QString @ 3 NONAME
+	_ZN25GlxDetailsDescriptionEdit12focusInEventEP11QFocusEvent @ 4 NONAME
+	_ZN25GlxDetailsDescriptionEdit12labelPressedEv @ 5 NONAME
+	_ZN25GlxDetailsDescriptionEdit13focusOutEventEP11QFocusEvent @ 6 NONAME
+	_ZN25GlxDetailsDescriptionEdit16staticMetaObjectE @ 7 NONAME DATA 16
+	_ZN25GlxDetailsDescriptionEdit19getStaticMetaObjectEv @ 8 NONAME
+	_ZN25GlxDetailsDescriptionEditC1EP13QGraphicsItem @ 9 NONAME
+	_ZN25GlxDetailsDescriptionEditC2EP13QGraphicsItem @ 10 NONAME
+	_ZN25GlxDetailsDescriptionEditD0Ev @ 11 NONAME
+	_ZN25GlxDetailsDescriptionEditD1Ev @ 12 NONAME
+	_ZN25GlxDetailsDescriptionEditD2Ev @ 13 NONAME
+	_ZNK25GlxDetailsDescriptionEdit10metaObjectEv @ 14 NONAME
+	_ZTI25GlxDetailsDescriptionEdit @ 15 NONAME
+	_ZTV25GlxDetailsDescriptionEdit @ 16 NONAME
+	_ZThn16_N25GlxDetailsDescriptionEditD0Ev @ 17 NONAME
+	_ZThn16_N25GlxDetailsDescriptionEditD1Ev @ 18 NONAME
+	_ZThn8_N25GlxDetailsDescriptionEdit12focusInEventEP11QFocusEvent @ 19 NONAME
+	_ZThn8_N25GlxDetailsDescriptionEdit13focusOutEventEP11QFocusEvent @ 20 NONAME
+	_ZThn8_N25GlxDetailsDescriptionEditD0Ev @ 21 NONAME
+	_ZThn8_N25GlxDetailsDescriptionEditD1Ev @ 22 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/detailscustomwidget/eabi/detailsnamelabelu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,24 @@
+EXPORTS
+	_ZN19GlxDetailsNameLabel11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN19GlxDetailsNameLabel11qt_metacastEPKc @ 2 NONAME
+	_ZN19GlxDetailsNameLabel11setItemTextERK7QString @ 3 NONAME
+	_ZN19GlxDetailsNameLabel12labelPressedEv @ 4 NONAME
+	_ZN19GlxDetailsNameLabel15mousePressEventEP24QGraphicsSceneMouseEvent @ 5 NONAME
+	_ZN19GlxDetailsNameLabel16staticMetaObjectE @ 6 NONAME DATA 16
+	_ZN19GlxDetailsNameLabel17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 7 NONAME
+	_ZN19GlxDetailsNameLabel19getStaticMetaObjectEv @ 8 NONAME
+	_ZN19GlxDetailsNameLabelC1EP13QGraphicsItem @ 9 NONAME
+	_ZN19GlxDetailsNameLabelC2EP13QGraphicsItem @ 10 NONAME
+	_ZN19GlxDetailsNameLabelD0Ev @ 11 NONAME
+	_ZN19GlxDetailsNameLabelD1Ev @ 12 NONAME
+	_ZN19GlxDetailsNameLabelD2Ev @ 13 NONAME
+	_ZNK19GlxDetailsNameLabel10metaObjectEv @ 14 NONAME
+	_ZTI19GlxDetailsNameLabel @ 15 NONAME
+	_ZTV19GlxDetailsNameLabel @ 16 NONAME
+	_ZThn16_N19GlxDetailsNameLabelD0Ev @ 17 NONAME
+	_ZThn16_N19GlxDetailsNameLabelD1Ev @ 18 NONAME
+	_ZThn8_N19GlxDetailsNameLabel15mousePressEventEP24QGraphicsSceneMouseEvent @ 19 NONAME
+	_ZThn8_N19GlxDetailsNameLabel17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 20 NONAME
+	_ZThn8_N19GlxDetailsNameLabelD0Ev @ 21 NONAME
+	_ZThn8_N19GlxDetailsNameLabelD1Ev @ 22 NONAME
+
--- a/ui/inc/glxcommandhandlers.hrh	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/inc/glxcommandhandlers.hrh	Wed Jun 23 18:12:48 2010 +0300
@@ -115,8 +115,7 @@
     EGlxCmdContextSend,
     EGlxCmdContextRename,
     EGlxCmdSetupItem,
-    EGlxCmdAppBackground,    //when application goes into background
-    EGlxCmdAppForeground,    //when application comes into foreground
+    EGlxCmdComment,
     EGlxCmdAiwBase = 0x6000
     };
 
--- a/ui/inc/glxdocloaderdefs.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/inc/glxdocloaderdefs.h	Wed Jun 23 18:12:48 2010 +0300
@@ -30,6 +30,7 @@
 #define GLXFULLSCREENZOOMWIDGET   "glxZoomWidget"
 #define GLXFULLSCREENDOCMLPATH    ":/data/fullscreen.docml"
 
+
 //SLIDE SHOW
 #define GLXSLIDESHOW_VIEW         "mglxslideshow"
 #define GLXSLIDESHOW_WIDGET       "mslideshowwidget"
@@ -48,4 +49,19 @@
 #define  GLX_LISTVIEW_LIST       "listview"
 #define  GLX_LISTVIEW_DOCMLPATH  ":/data/listview.docml"
 
+//DETAILS VIEW
+#define GLX_DETAILSVIEW_DOCMLPATH  ":/data/detailsview.docml"
+#define GLX_DETAILSVIEW_VIEW       "view"
+#define GLX_DETAILSVIEW_IMAGE      "ImageIcon"
+#define GLX_DETAILSVIEW_FAVICON    "FavIcon"    
+#define GLX_DETAILSVIEW_IMGNAME    "ImageName"
+#define GLX_DETAILSVIEW_DATETEXT   "DateText"
+#define GLX_DETAILSVIEW_SIZETEXT   "SizeText"
+#define GLX_DETAILSVIEW_TIMETEXT   "TimeText"
+#define GLX_DETAILSVIEW_DESCRPTION "Descriptions"
+#define GLX_DETAILSVIEW_DESCRPTIONTEXT "DescriptionsText"
+#define  GLX_DETAILSVIEW_LSSECTION   "landscape"
+#define  GLX_DETAILSVIEW_PTSECTION   "portrait"
+
+
 #endif /* GLXDOCLOADERDEFS_H */
--- a/ui/inc/glxmodelparm.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/inc/glxmodelparm.h	Wed Jun 23 18:12:48 2010 +0300
@@ -22,31 +22,7 @@
 
 #include<glxfiltergeneraldefs.h>
 #include<glxuistd.h>
-
-enum
-{
-    GlxHgVisibilityRole = Qt::UserRole + 1, // VisibilityRole For MediaWall ,  Dont Change This Value - Depedency To HgWidget
-    GlxFsImageRole,                         //to get the fullscreen image
-    GlxContextRole,                     //to get and set the context   
-    GlxFocusIndexRole,                  //to get and set the selected item index
-    GlxVisualWindowIndex,               //to set the visual window index in media list
-    GlxUriRole,                         //to get the URI of the image
-    GlxDimensionsRole,                  
-    GlxSelectedIndexRole,               //to get and set the seleceted item list
-    GlxDateRole,                        //to get the image created or modified date 
-    GlxFrameCount,                      //to get the number of frame in an image
-    GlxSubStateRole,                    //to publish the sub state of a SM states
-    GlxHdmiBitmap,                      //to get the pre decoded thumbnail for HDMI
-	GlxListItemCount,                   //to get the number of item in the album list
-	GlxSystemItemRole,                   //to get the item is system item or not
-    GlxFavorites,                       //to get the image is in favorites folder or not
-    GlxQImageSmall,                     //To Get Grid Thumbnail as QImage
-    GlxQImageLarge,                     //To Get FullScreen Thumbnail as QImage
-    GlxDefaultImage,					//To Get Default Thumbnail 
-    GlxViewTitle,
-    GlxPopulated
-};
-
+#include<glxmodelroles.h>
 
 class GlxModelParm
 {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/inc/glxmodelroles.h	Wed Jun 23 18:12:48 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* 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 GLXMODELROLES_H
+#define GLXMODELROLES_H
+enum
+{
+    GlxHgVisibilityRole = Qt::UserRole + 1, // VisibilityRole For MediaWall ,  Dont Change This Value - Depedency To HgWidget
+    GlxFsImageRole,                         //to get the fullscreen image
+    GlxContextRole,                     //to get and set the context   
+    GlxFocusIndexRole,                  //to get and set the selected item index
+    GlxVisualWindowIndex,               //to set the visual window index in media list
+    GlxUriRole,                         //to get the URI of the image
+    GlxDimensionsRole,                  
+    GlxSelectedIndexRole,               //to get and set the seleceted item list
+    GlxDateRole,                        //to get the image created or modified date 
+    GlxFrameCount,                      //to get the number of frame in an image
+    GlxSubStateRole,                    //to publish the sub state of a SM states
+    GlxHdmiBitmap,                      //to get the pre decoded thumbnail for HDMI
+	GlxListItemCount,                   //to get the number of item in the album list
+	GlxSystemItemRole,                   //to get the item is system item or not
+    GlxFavorites,                       //to get the image is in favorites folder or not
+    GlxQImageSmall,                     //To Get Grid Thumbnail as QImage
+    GlxQImageLarge,                     //To Get FullScreen Thumbnail as QImage
+    GlxDefaultImage,					//To Get Default Thumbnail 
+    GlxViewTitle,
+    GlxPopulated,
+	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
+};
+
+
+#endif 
--- a/ui/inc/glxuistd.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/inc/glxuistd.h	Wed Jun 23 18:12:48 2010 +0300
@@ -41,7 +41,8 @@
 	GlxContextLsList,
 	GlxContextPtList,
     GlxContextSelectionList,
-    GlxContextFavorite
+    GlxContextFavorite,
+    GlxContextComment   //to fetch the description
 };
 
 enum GlxTBContextType
--- a/ui/ui.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/ui.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -16,7 +16,12 @@
 #*/ 
 TEMPLATE    = subdirs
 CONFIG += ordered
-SUBDIRS	    = uiengine \
+
+exportfile += "inc/glxmodelroles.h APP_LAYER_PLATFORM_EXPORT_PATH(glxmodelroles.h)"
+BLD_INF_RULES.prj_exports += exportfile
+
+SUBDIRS	    = detailscustomwidget \
+               uiengine \
               commandhandlers \
               viewutilities \
               widgets \
--- a/ui/uiengine/bwins/glxmedialistwrapperu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/bwins/glxmedialistwrapperu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -48,4 +48,10 @@
 	??0GlxMLWrapper@@QAE@HHW4TGlxFilterItemType@@VQString@@@Z @ 47 NONAME ; GlxMLWrapper::GlxMLWrapper(int, int, enum TGlxFilterItemType, class QString)
 	?itemsAdded@GlxMLWrapper@@QAEXHH@Z @ 48 NONAME ; void GlxMLWrapper::itemsAdded(int, int)
 	?retrieveItemIcon@GlxMLWrapper@@QAEPAVHbIcon@@HW4GlxTBContextType@@@Z @ 49 NONAME ; class HbIcon * GlxMLWrapper::retrieveItemIcon(int, enum GlxTBContextType)
+	?retrieveItemSize@GlxMLWrapper@@QAEHH@Z @ 50 NONAME ; int GlxMLWrapper::retrieveItemSize(int)
+	?retrieveItemTime@GlxMLWrapper@@QAE?AVQTime@@H@Z @ 51 NONAME ; class QTime GlxMLWrapper::retrieveItemTime(int)
+	?retrieveListDesc@GlxMLWrapper@@QAE?AVQString@@H@Z @ 52 NONAME ; class QString GlxMLWrapper::retrieveListDesc(int)
+	?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)
 
--- a/ui/uiengine/eabi/glxmedialistwrapperu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/eabi/glxmedialistwrapperu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -45,4 +45,10 @@
 	_ZNK12GlxMLWrapper13getFocusIndexEv @ 44 NONAME
 	_ZTI12GlxMLWrapper @ 45 NONAME
 	_ZTV12GlxMLWrapper @ 46 NONAME
+	_ZN12GlxMLWrapper16retrieveItemSizeEi @ 47 NONAME
+	_ZN12GlxMLWrapper16retrieveItemTimeEi @ 48 NONAME
+	_ZN12GlxMLWrapper16retrieveListDescEi @ 49 NONAME
+	_ZN12GlxMLWrapper17removeContextModeE14GlxContextMode @ 50 NONAME
+	_ZN12GlxMLWrapper13updateDetailsEv @ 51 NONAME
+	_ZN12GlxMLWrapper26handleDetailsItemAvailableEi @ 52 NONAME
 
--- a/ui/uiengine/medialistwrapper/inc/glxmlwrapper.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/medialistwrapper/inc/glxmlwrapper.h	Wed Jun 23 18:12:48 2010 +0300
@@ -61,6 +61,11 @@
      * for setting the attribute context mode will be used mainly for retreiving thumbnail of different sizes.
      */
     void setContextMode(GlxContextMode contextMode);
+    /**
+      * for removing the contect once it is not rquired anymore
+      */
+    void removeContextMode(GlxContextMode contextMode);
+    
      /**
      * for retreiving the data Count.
      */
@@ -76,6 +81,7 @@
     void handleIconCorrupt(int itemIndex);
     void handleGeneralError(int error);
 	void handleListItemAvailable(int itemIndex);
+	void handleDetailsItemAvailable(int itemIndex);
     int getFocusIndex() const;
     void setFocusIndex(int itemIndex);
     
@@ -83,11 +89,26 @@
 
 	QString retrieveListTitle(int index);
 	QString retrieveListSubTitle(int index);
+	/*
+	 * fetches the comments entered for the image
+	 */
+	QString retrieveListDesc(int index);
     int getVisibleWindowIndex();
     void setVisibleWindowIndex(int itemIndex);
 	QString retrieveItemUri(int index);
 	QSize retrieveItemDimension(int index);
+	/*
+	 * fetches the size for the image
+	 */
+	int   retrieveItemSize(int index);
+    /*
+	 * fetches the date for the image
+	 */	
 	QDate retrieveItemDate(int index);
+	/*
+	 * fetches the time for the image
+	 */	
+	QTime retrieveItemTime(int index);
 	int retrieveItemFrameCount(int index);
 	QString retrieveViewTitle();
 	void handlepopulated();	
@@ -116,6 +137,10 @@
 	 void itemCorrupted(int itemIndex);
 	 void updateAlbumTitle(QString aTitle);
 	 void populated();
+ 	/*
+	 * emits the signal to update details view
+	 */	
+	 void updateDetails();
 
 private:
 	GlxMLWrapperPrivate* mMLWrapperPrivate;
--- a/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h	Wed Jun 23 18:12:48 2010 +0300
@@ -59,6 +59,12 @@
      * for setting the attribute context mode will be used mainly for retreiving thumbnail of different sizes.
      */
 	 void SetContextMode(GlxContextMode aContextMode);
+	 
+	 /*
+	  * For removing the contect used
+	  */
+	 void RemoveContextMode(GlxContextMode aContextMode);
+	 
 	 /**
      * for retreiving the Media List Count.
      */
@@ -111,14 +117,21 @@
 	HbIcon* RetrieveItemIcon(int index, GlxTBContextType aTBContextType);
 	QImage  RetrieveItemImage(int index, GlxTBContextType aTBContextType);
 	QString RetrieveListTitle(int index);
+	QString RetrieveListDesc(int index);
 	QString RetrieveListSubTitle(int index);
 	QString RetrieveItemUri(int index);
 	QSize   RetrieveItemDimension(int index);
+	int     RetrieveItemSize(int index);
 	QDate   RetrieveItemDate(int index);
+	QTime   RetrieveItemTime(int index);
 	int     RetrieveItemFrameCount(int aItemIndex);
 	CFbsBitmap* RetrieveBitmap(int aItemIndex);
 	int     RetrieveListItemCount( int aItemIndex );
 	bool    isSystemItem( int aItemIndex );
+	/*
+	 *Sets the context for fetcing comments
+	 */
+	void SetDescontextL();
 	QString RetrieveViewTitle();
 	bool IsPopulated();
 		
@@ -152,6 +165,7 @@
 	void RemovePtFsContext();
 	void RemoveListContext();
 	void RemoveFavouriteContext();
+	void RemoveDescContext();
 	//for the attribute filtering
 	TInt CheckTBAttributesPresenceandSanity(TInt aItemIndex,
 		const RArray<TMPXAttribute>& aAttributes, TMPXAttribute aThumbnailAttribute );
@@ -160,6 +174,10 @@
 	void CheckLsFsTBAttribute(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
 	void CheckListAttributes(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
 	/*
+	 * to check the attributes returned for details view is present
+	 */
+	void CheckDetailsAttributes(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
+	/*
 	 * convert the CFbsbitmap to HbIcon
 	 */
 	HbIcon *convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap);
@@ -185,7 +203,6 @@
 	CGlxDefaultThumbnailContext* iLsFsThumbnailContext; 
 	CGlxDefaultThumbnailContext* iFocusFsThumbnailContext;
 	CGlxDefaultThumbnailContext* iFocusGridThumbnailContext;
-	CGlxThumbnailContext* iFilmStripThumbnailContext;
 
 	//List related contexts
 	// Fetch context for retrieving title attribute
@@ -197,6 +214,9 @@
     //to find if the image is in favorites or not
    	CGlxDefaultAttributeContext *iFavouriteContext;	
 	
+	//To fetch the details
+    CGlxDefaultAttributeContext *iDescContext;
+	
     CGlxThumbnailContext* iListThumbnailContext;
     // for thumbnail context
     TGlxFromVisibleIndexOutwardListIterator iThumbnailIterator;
@@ -212,6 +232,7 @@
 	TBool iPtFsContextActivated;
 	TBool iLsListContextActivated; //currently not used as we have not implemented the logic for 3 thumbnails
 	TBool iPtListContextActivated; 
+	TBool iDetailsContextActivated; //this is to fetch the comments attributes
 	TBool iSelectionListContextActivated;
 	CGlxTitleFetcher* iTitleFetcher;
 	QImage iCorruptImage;
--- a/ui/uiengine/medialistwrapper/medialistwrapper.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/medialistwrapper/medialistwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -51,4 +51,13 @@
 	       src/glxattributeretriever.cpp \
 		   src/glxtitlefetcher.cpp
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxmedialistwrapper.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxmedialistwrapper.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/uiengine/medialistwrapper/src/glxmlwrapper.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/medialistwrapper/src/glxmlwrapper.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -52,6 +52,17 @@
 }
 
 // ---------------------------------------------------------------------------
+// removeContextMode.
+// ---------------------------------------------------------------------------
+//
+void GlxMLWrapper::removeContextMode(GlxContextMode contextMode)
+{
+    mMLWrapperPrivate->RemoveContextMode(contextMode);
+}
+
+
+
+// ---------------------------------------------------------------------------
 // getItemCount.
 // ---------------------------------------------------------------------------
 //
@@ -92,6 +103,16 @@
 {
 	return (mMLWrapperPrivate->RetrieveListSubTitle(index));
 }
+
+// ---------------------------------------------------------------------------
+// retrieveListDesc.
+// ---------------------------------------------------------------------------
+//
+QString GlxMLWrapper::retrieveListDesc(int index)
+{
+    return (mMLWrapperPrivate->RetrieveListDesc(index));
+}
+
 // ---------------------------------------------------------------------------
 // retrieveItemUri.
 // ---------------------------------------------------------------------------
@@ -109,11 +130,34 @@
 	return (mMLWrapperPrivate->RetrieveItemDimension(index));
 }
 
+// ---------------------------------------------------------------------------
+// retrieveItemSize.
+// ---------------------------------------------------------------------------
+//
+int GlxMLWrapper::retrieveItemSize(int index)
+{
+    return (mMLWrapperPrivate->RetrieveItemSize(index));
+}
+
+// ---------------------------------------------------------------------------
+// retrieveItemDate.
+// ---------------------------------------------------------------------------
+//
 QDate GlxMLWrapper::retrieveItemDate(int index)
 {
 	return (mMLWrapperPrivate->RetrieveItemDate(index));
 }
 
+// ---------------------------------------------------------------------------
+// retrieveItemTime.
+// ---------------------------------------------------------------------------
+//
+QTime GlxMLWrapper::retrieveItemTime(int index)
+{
+    return (mMLWrapperPrivate->RetrieveItemTime(index));
+}
+
+
 int GlxMLWrapper::retrieveItemFrameCount(int index)
 {
     return (mMLWrapperPrivate->RetrieveItemFrameCount(index));
@@ -245,6 +289,16 @@
 
 
 // ---------------------------------------------------------------------------
+// handleDetailsItemAvailable.
+// ---------------------------------------------------------------------------
+//
+void GlxMLWrapper::handleDetailsItemAvailable(int itemIndex)
+{
+
+    emit updateDetails();
+}
+
+// ---------------------------------------------------------------------------
 // handleGeneralError.
 // ---------------------------------------------------------------------------
 //
--- a/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -34,8 +34,6 @@
 #include <glxattributecontext.h>
 #include <glxuistd.h>
 #include <glxlistdefs.h>
-#include <hal.h>
-#include <hal_data.h>
 #include <glxmediaid.h>
 #include <caf/caferr.h>
 //internal includes 
@@ -88,11 +86,15 @@
 // might leave.
 // ---------------------------------------------------------------------------
 //
-GlxMLWrapperPrivate::GlxMLWrapperPrivate(GlxMLWrapper* aMLWrapper): iMLWrapper(aMLWrapper),
-								iGridContextActivated(EFalse), iLsFsContextActivated(EFalse),
-								iPtFsContextActivated(EFalse), iPtListContextActivated(EFalse),
-								iSelectionListContextActivated(EFalse)
-    {
+GlxMLWrapperPrivate::GlxMLWrapperPrivate(GlxMLWrapper* aMLWrapper)
+    : iMLWrapper(aMLWrapper),
+      iGridContextActivated(EFalse), 
+      iLsFsContextActivated(EFalse),
+      iPtFsContextActivated(EFalse), 
+      iPtListContextActivated(EFalse),
+      iSelectionListContextActivated(EFalse),
+	  iDetailsContextActivated(EFalse)
+{
     TRACER("GlxMLWrapperPrivate::GlxMLWrapperPrivate");
 	iGridThumbnailContext = NULL;
 	iPtFsThumbnailContext = NULL;
@@ -102,7 +104,6 @@
     iListThumbnailContext = NULL;
     iFocusGridThumbnailContext = NULL;
     iFocusFsThumbnailContext = NULL;
-    iFilmStripThumbnailContext = NULL;
     iFavouriteContext = NULL;
     iTitleFetcher = NULL;
     iViewTitle = QString();
@@ -163,9 +164,13 @@
 		{  
 		TRAP(err, SetThumbnailContextL(aContextMode) ); //todo add a trap here
 		}
-	else if(aContextMode == GlxContextFavorite)
+    else if(aContextMode == GlxContextFavorite)
+        {
+        TRAP(err,SetFavouriteContextL());
+        }
+	else if(aContextMode == GlxContextComment)
 	    {
-	    TRAP(err,SetFavouriteContextL());
+	    TRAP(err,SetDescontextL());
 	    }
 	else
 		{
@@ -177,6 +182,17 @@
 	}
 
 // ---------------------------------------------------------------------------
+// RemoveContextMode
+// ---------------------------------------------------------------------------
+//
+void GlxMLWrapperPrivate::RemoveContextMode(GlxContextMode aContextMode)
+{
+  if(aContextMode == GlxContextComment) 
+      {
+       RemoveDescContext();
+      }
+}
+// ---------------------------------------------------------------------------
 // SetFavouriteContextL
 // ---------------------------------------------------------------------------
 //
@@ -279,9 +295,9 @@
     }
 	
 	if(aContextMode == GlxContextLsFs && !iLsFsContextActivated) {
-		if(iGridContextActivated) {
-            RemoveGridContext();
-		}
+	    if(!iGridContextActivated) {
+	        CreateGridContextL();
+	    }
 		if(iPtFsContextActivated) {
 			RemovePtFsContext();
 		}
@@ -289,9 +305,9 @@
 	}
 	
 	if(aContextMode == GlxContextPtFs && !iPtFsContextActivated) {
-		if(iGridContextActivated) {
-            RemoveGridContext();
-		}
+        if(!iGridContextActivated) {
+            CreateGridContextL();
+        }
 		if(iLsFsContextActivated) {
 			RemoveLsFsContext();
 		}
@@ -358,18 +374,11 @@
             iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight );  //todo get these image sizes from  the layout.
             }
 
-        if(!iFilmStripThumbnailContext)
-            {
-            iFilmStripThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFilmStrip ); // set the thumbnail context for Focus Grid
-            iFilmStripThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight );  //todo get these image sizes from  the layout.
-            }
-
         // show static items if required
         iMediaList->SetStaticItemsEnabled(EFalse);
-        iMediaList->AddContextL(iFocusFsThumbnailContext, 8 );      // Temp will change this number  
-        iMediaList->AddContextL(iFocusGridThumbnailContext, 9 );    // Temp will change this number
-        iMediaList->AddContextL(iFilmStripThumbnailContext, 7 );    // Temp will change this number 
-        iMediaList->AddContextL(iLsFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail );
+        iMediaList->AddContextL(iFocusFsThumbnailContext, KGlxFetchContextPriorityNormal );      // Temp will change this number  
+        iMediaList->AddContextL(iFocusGridThumbnailContext, KGlxFetchContextPriorityNormal );    // Temp will change this number
+        iMediaList->AddContextL(iLsFsThumbnailContext, KGlxFetchContextPriorityNormal );
         iLsFsContextActivated = ETrue;
         }
     }
@@ -405,18 +414,11 @@
             iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight );  //todo get these image sizes from  the layout.
             }
 
-        if(!iFilmStripThumbnailContext)
-            {
-            iFilmStripThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFilmStrip ); // set the thumbnail context for Focus Grid
-            iFilmStripThumbnailContext->SetDefaultSpec( KGridTNPTWIdth, KGridTNPTHeight );  //todo get these image sizes from  the layout.
-            }
-
         // show static items if required
         iMediaList->SetStaticItemsEnabled(EFalse);
-        iMediaList->AddContextL(iFocusFsThumbnailContext, 8 );      // Temp will change this number  
-        iMediaList->AddContextL(iFocusGridThumbnailContext, 9 );    // Temp will change this number  
-        iMediaList->AddContextL(iFilmStripThumbnailContext, 7 );    // Temp will change this number 
-        iMediaList->AddContextL(iPtFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail );
+        iMediaList->AddContextL(iFocusFsThumbnailContext, KGlxFetchContextPriorityNormal );      // Temp will change this number  
+        iMediaList->AddContextL(iFocusGridThumbnailContext, KGlxFetchContextPriorityNormal );    // Temp will change this number  
+        iMediaList->AddContextL(iPtFsThumbnailContext, KGlxFetchContextPriorityNormal );
         iPtFsContextActivated = ETrue;
         }
     }
@@ -463,12 +465,6 @@
             delete iFocusGridThumbnailContext;
             iFocusGridThumbnailContext = NULL;
 		    }
-		if(iFilmStripThumbnailContext)
-		    {
-		    iMediaList->RemoveContext(iFilmStripThumbnailContext);
-		    delete iFilmStripThumbnailContext;
-		    iFilmStripThumbnailContext = NULL;
-		    }		    
 	    
 		iLsFsContextActivated = EFalse;
 		}
@@ -499,12 +495,6 @@
             delete iFocusGridThumbnailContext;
             iFocusGridThumbnailContext = NULL;
             }
-        if(iFilmStripThumbnailContext)
-            {
-            iMediaList->RemoveContext(iFilmStripThumbnailContext);
-            delete iFilmStripThumbnailContext;
-            iFilmStripThumbnailContext = NULL;
-            }
 	        
 		iPtFsContextActivated = EFalse;
 		}
@@ -800,6 +790,18 @@
 }
 
 // ---------------------------------------------------------------------------
+//  RetrieveListDesc
+// ---------------------------------------------------------------------------
+//
+QString GlxMLWrapperPrivate::RetrieveListDesc(int aItemIndex)
+{
+    const TGlxMedia& item = iMediaList->Item( aItemIndex );
+    const TDesC &commentstring = item.Comment();
+    QString descstring =  QString::fromUtf16(commentstring.Ptr(), commentstring.Length());
+	return  descstring;
+}
+
+// ---------------------------------------------------------------------------
 //  Retrieve number of image contained by album list
 // ---------------------------------------------------------------------------
 //
@@ -864,6 +866,18 @@
  }
 
 // ---------------------------------------------------------------------------
+//  RetrieveItemSize
+// ---------------------------------------------------------------------------
+//
+int GlxMLWrapperPrivate::RetrieveItemSize(int aItemIndex)
+{
+    const TGlxMedia& item = iMediaList->Item( aItemIndex );
+    int itemSize ;
+    item.GetSize(itemSize);
+    return itemSize;
+ }
+
+// ---------------------------------------------------------------------------
 //  RetrieveItemDate
 // ---------------------------------------------------------------------------
 //
@@ -882,6 +896,29 @@
         }
      return date;
     }
+	
+// ---------------------------------------------------------------------------
+//  RetrieveItemTime
+// ---------------------------------------------------------------------------
+//
+QTime GlxMLWrapperPrivate::RetrieveItemTime(int index)
+    {
+    GLX_LOG_INFO1("GlxMLWrapperPrivate::RetrieveItemTime %d",index);
+    const TGlxMedia& item = iMediaList->Item( index );
+    TTime TimeValue;
+    QTime time = QTime();
+    TBool returnValue =item.GetDate(TimeValue);
+    
+    if(returnValue)
+        {
+        GLX_LOG_INFO1("GlxMLWrapperPrivate::RetrieveItemDate %d",returnValue);
+        TDateTime dateTime = TimeValue.DateTime();
+        time = QTime(dateTime.Hour(),dateTime.Minute());
+        }
+     return time;
+    }
+
+
 
 // ---------------------------------------------------------------------------
 //  RetrieveFsBitmap
@@ -997,7 +1034,9 @@
 	    CheckLsFsTBAttribute(aItemIndex, aAttributes);
 	if (iPtListContextActivated || iSelectionListContextActivated)
 	    CheckListAttributes(aItemIndex, aAttributes);
-	// }
+ 	if( iDetailsContextActivated && aItemIndex == iMediaList->FocusIndex() )
+ 	   CheckDetailsAttributes(aItemIndex, aAttributes);
+	
 	}
 // ---------------------------------------------------------------------------
 // CheckGridTBAttribute
@@ -1128,6 +1167,29 @@
 		return searchStatus;	
 
 	 }    
+
+// ---------------------------------------------------------------------------
+// CheckDetailsAttributes
+// ---------------------------------------------------------------------------
+//
+void GlxMLWrapperPrivate::CheckDetailsAttributes(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes)
+{
+    qDebug("GlxMLWrapperPrivate::CheckDetailsAttributes");
+    TBool attribPresent = EFalse;
+    TMPXAttribute titleAttrib(KMPXMediaGeneralComment);
+    TIdentityRelation< TMPXAttribute > match ( &TMPXAttribute::Match );
+
+    const TGlxMedia& item = iMediaList->Item(aItemIndex);
+
+    if (KErrNotFound != aAttributes.Find(titleAttrib, match))
+        {
+        qDebug("GlxMLWrapperPrivate::CheckDetailsAttributes TRUE");
+        attribPresent = ETrue;
+        iMLWrapper->handleDetailsItemAvailable(aItemIndex);
+        GLX_LOG_INFO1("### GlxMLWrapperPrivate::CheckDetailsAttributes title present %d",aItemIndex);
+        }     
+}
+
 // ---------------------------------------------------------------------------
 // GetItemCount
 // ---------------------------------------------------------------------------
@@ -1319,4 +1381,29 @@
     return iMediaList->IsPopulated();
     }
 
-	 
+// ---------------------------------------------------------------------------
+// SetDescontextL
+// ---------------------------------------------------------------------------
+//
+void GlxMLWrapperPrivate::SetDescontextL()
+     {
+     iDescContext = CGlxDefaultAttributeContext::NewL();
+     iDescContext->AddAttributeL( KMPXMediaGeneralComment );
+     iMediaList->AddContextL( iDescContext, KGlxFetchContextPriorityLow );
+     iDetailsContextActivated = ETrue;     
+     }
+	
+// ---------------------------------------------------------------------------
+// RemoveDescContext
+// ---------------------------------------------------------------------------
+//
+void GlxMLWrapperPrivate::RemoveDescContext()
+    {
+    if(iDescContext )
+        {
+        iMediaList->RemoveContext(iDescContext);
+        delete iDescContext;
+        iDescContext = NULL;  
+        iDetailsContextActivated = EFalse;   
+        }
+    }
--- a/ui/uiengine/model/bwins/glxmediamodelu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/bwins/glxmediamodelu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -36,4 +36,7 @@
 	?index@GlxMediaModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 35 NONAME ; class QModelIndex GlxMediaModel::index(int, int, class QModelIndex const &) const
 	?GetExternalIconItem@GlxMediaModel@@ABEPAVHbIcon@@HW4GlxTBContextType@@@Z @ 36 NONAME ; class HbIcon * GlxMediaModel::GetExternalIconItem(int, enum GlxTBContextType) const
 	?albumTitleAvailable@GlxMediaModel@@IAEXVQString@@@Z @ 37 NONAME ; void GlxMediaModel::albumTitleAvailable(class QString)
+	?updateDetailsView@GlxMediaModel@@IAEXXZ @ 38 NONAME ; void GlxMediaModel::updateDetailsView(void)
+	?removeContextMode@GlxMediaModel@@AAEXW4GlxContextMode@@@Z @ 39 NONAME ; void GlxMediaModel::removeContextMode(enum GlxContextMode)
+	?updateDetailItems@GlxMediaModel@@QAEXXZ @ 40 NONAME ; void GlxMediaModel::updateDetailItems(void)
 
--- a/ui/uiengine/model/bwins/glxmodelwrapperu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/bwins/glxmodelwrapperu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -11,24 +11,24 @@
 	?getStaticMetaObject@GlxModelWrapper@@SAABUQMetaObject@@XZ @ 10 NONAME ; struct QMetaObject const & GlxModelWrapper::getStaticMetaObject(void)
 	?index@GlxModelWrapper@@UBE?AVQModelIndex@@HHABV2@@Z @ 11 NONAME ; class QModelIndex GlxModelWrapper::index(int, int, class QModelIndex const &) const
 	?rowsAboutToBeInserted@GlxModelWrapper@@IAEXABVQModelIndex@@HH@Z @ 12 NONAME ; void GlxModelWrapper::rowsAboutToBeInserted(class QModelIndex const &, int, int)
-	?data@GlxModelWrapper@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 13 NONAME ; class QVariant GlxModelWrapper::data(class QModelIndex const &, int) const
-	?staticMetaObject@GlxModelWrapper@@2UQMetaObject@@B @ 14 NONAME ; struct QMetaObject const GlxModelWrapper::staticMetaObject
-	?scrollingEnded@GlxModelWrapper@@QAEXXZ @ 15 NONAME ; void GlxModelWrapper::scrollingEnded(void)
-	?rowsRemoved@GlxModelWrapper@@IAEXABVQModelIndex@@HH@Z @ 16 NONAME ; void GlxModelWrapper::rowsRemoved(class QModelIndex const &, int, int)
-	?basemodelindex@GlxModelWrapper@@QBE?AVQModelIndex@@HHABV2@@Z @ 17 NONAME ; class QModelIndex GlxModelWrapper::basemodelindex(int, int, class QModelIndex const &) const
-	?columnCount@GlxModelWrapper@@UBEHABVQModelIndex@@@Z @ 18 NONAME ; int GlxModelWrapper::columnCount(class QModelIndex const &) const
-	?parent@GlxModelWrapper@@UBE?AVQModelIndex@@ABV2@@Z @ 19 NONAME ; class QModelIndex GlxModelWrapper::parent(class QModelIndex const &) const
-	?rowsInserted@GlxModelWrapper@@IAEXABVQModelIndex@@HH@Z @ 20 NONAME ; void GlxModelWrapper::rowsInserted(class QModelIndex const &, int, int)
-	?disConnectFromModel@GlxModelWrapper@@AAEXXZ @ 21 NONAME ; void GlxModelWrapper::disConnectFromModel(void)
-	?metaObject@GlxModelWrapper@@UBEPBUQMetaObject@@XZ @ 22 NONAME ; struct QMetaObject const * GlxModelWrapper::metaObject(void) const
-	??1GlxModelWrapper@@UAE@XZ @ 23 NONAME ; GlxModelWrapper::~GlxModelWrapper(void)
-	?connectToModel@GlxModelWrapper@@AAEXXZ @ 24 NONAME ; void GlxModelWrapper::connectToModel(void)
-	?setModel@GlxModelWrapper@@QAEXPAVQAbstractItemModel@@@Z @ 25 NONAME ; void GlxModelWrapper::setModel(class QAbstractItemModel *)
-	?tr@GlxModelWrapper@@SA?AVQString@@PBD0H@Z @ 26 NONAME ; class QString GlxModelWrapper::tr(char const *, char const *, int)
-	?qt_metacall@GlxModelWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 27 NONAME ; int GlxModelWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?setRoles@GlxModelWrapper@@QAEXHH@Z @ 28 NONAME ; void GlxModelWrapper::setRoles(int, int)
-	?scrollingStarted@GlxModelWrapper@@QAEXXZ @ 29 NONAME ; void GlxModelWrapper::scrollingStarted(void)
-	?trUtf8@GlxModelWrapper@@SA?AVQString@@PBD0H@Z @ 30 NONAME ; class QString GlxModelWrapper::trUtf8(char const *, char const *, int)
-	?qt_metacast@GlxModelWrapper@@UAEPAXPBD@Z @ 31 NONAME ; void * GlxModelWrapper::qt_metacast(char const *)
-	?resetTheModel@GlxModelWrapper@@AAEXXZ @ 32 NONAME ; void GlxModelWrapper::resetTheModel(void)
+	?resetTheModel@GlxModelWrapper@@AAEXXZ @ 13 NONAME ; void GlxModelWrapper::resetTheModel(void)
+	?data@GlxModelWrapper@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 14 NONAME ; class QVariant GlxModelWrapper::data(class QModelIndex const &, int) const
+	?staticMetaObject@GlxModelWrapper@@2UQMetaObject@@B @ 15 NONAME ; struct QMetaObject const GlxModelWrapper::staticMetaObject
+	?scrollingEnded@GlxModelWrapper@@QAEXXZ @ 16 NONAME ; void GlxModelWrapper::scrollingEnded(void)
+	?rowsRemoved@GlxModelWrapper@@IAEXABVQModelIndex@@HH@Z @ 17 NONAME ; void GlxModelWrapper::rowsRemoved(class QModelIndex const &, int, int)
+	?basemodelindex@GlxModelWrapper@@QBE?AVQModelIndex@@HHABV2@@Z @ 18 NONAME ; class QModelIndex GlxModelWrapper::basemodelindex(int, int, class QModelIndex const &) const
+	?columnCount@GlxModelWrapper@@UBEHABVQModelIndex@@@Z @ 19 NONAME ; int GlxModelWrapper::columnCount(class QModelIndex const &) const
+	?parent@GlxModelWrapper@@UBE?AVQModelIndex@@ABV2@@Z @ 20 NONAME ; class QModelIndex GlxModelWrapper::parent(class QModelIndex const &) const
+	?rowsInserted@GlxModelWrapper@@IAEXABVQModelIndex@@HH@Z @ 21 NONAME ; void GlxModelWrapper::rowsInserted(class QModelIndex const &, int, int)
+	?disConnectFromModel@GlxModelWrapper@@AAEXXZ @ 22 NONAME ; void GlxModelWrapper::disConnectFromModel(void)
+	?metaObject@GlxModelWrapper@@UBEPBUQMetaObject@@XZ @ 23 NONAME ; struct QMetaObject const * GlxModelWrapper::metaObject(void) const
+	??1GlxModelWrapper@@UAE@XZ @ 24 NONAME ; GlxModelWrapper::~GlxModelWrapper(void)
+	?connectToModel@GlxModelWrapper@@AAEXXZ @ 25 NONAME ; void GlxModelWrapper::connectToModel(void)
+	?setModel@GlxModelWrapper@@QAEXPAVQAbstractItemModel@@@Z @ 26 NONAME ; void GlxModelWrapper::setModel(class QAbstractItemModel *)
+	?tr@GlxModelWrapper@@SA?AVQString@@PBD0H@Z @ 27 NONAME ; class QString GlxModelWrapper::tr(char const *, char const *, int)
+	?qt_metacall@GlxModelWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 28 NONAME ; int GlxModelWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setRoles@GlxModelWrapper@@QAEXHH@Z @ 29 NONAME ; void GlxModelWrapper::setRoles(int, int)
+	?scrollingStarted@GlxModelWrapper@@QAEXXZ @ 30 NONAME ; void GlxModelWrapper::scrollingStarted(void)
+	?trUtf8@GlxModelWrapper@@SA?AVQString@@PBD0H@Z @ 31 NONAME ; class QString GlxModelWrapper::trUtf8(char const *, char const *, int)
+	?qt_metacast@GlxModelWrapper@@UAEPAXPBD@Z @ 32 NONAME ; void * GlxModelWrapper::qt_metacast(char const *)
 
--- a/ui/uiengine/model/eabi/glxmediamodelu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/eabi/glxmediamodelu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -36,4 +36,7 @@
 	_ZNK13GlxMediaModel8rowCountERK11QModelIndex @ 35 NONAME
 	_ZTI13GlxMediaModel @ 36 NONAME
 	_ZTV13GlxMediaModel @ 37 NONAME
+	_ZN13GlxMediaModel17removeContextModeE14GlxContextMode @ 38 NONAME
+	_ZN13GlxMediaModel17updateDetailItemsEv @ 39 NONAME
+	_ZN13GlxMediaModel17updateDetailsViewEv @ 40 NONAME
 
--- a/ui/uiengine/model/eabi/glxmodelwrapperu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/eabi/glxmodelwrapperu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -3,32 +3,32 @@
 	_ZN15GlxModelWrapper11qt_metacastEPKc @ 2 NONAME
 	_ZN15GlxModelWrapper11rowsRemovedERK11QModelIndexii @ 3 NONAME
 	_ZN15GlxModelWrapper12rowsInsertedERK11QModelIndexii @ 4 NONAME
-	_ZN15GlxModelWrapper14connectToModelEv @ 5 NONAME
-	_ZN15GlxModelWrapper14modelDestroyedEv @ 6 NONAME
-	_ZN15GlxModelWrapper14scrollingEndedEv @ 7 NONAME
-	_ZN15GlxModelWrapper16scrollingStartedEv @ 8 NONAME
-	_ZN15GlxModelWrapper16staticMetaObjectE @ 9 NONAME DATA 16
-	_ZN15GlxModelWrapper18dataChangedinModelE11QModelIndexS0_ @ 10 NONAME
-	_ZN15GlxModelWrapper19disConnectFromModelEv @ 11 NONAME
-	_ZN15GlxModelWrapper19getStaticMetaObjectEv @ 12 NONAME
-	_ZN15GlxModelWrapper20rowsAboutToBeRemovedERK11QModelIndexii @ 13 NONAME
-	_ZN15GlxModelWrapper21rowsAboutToBeInsertedERK11QModelIndexii @ 14 NONAME
-	_ZN15GlxModelWrapper7setDataERK11QModelIndexRK8QVarianti @ 15 NONAME
-	_ZN15GlxModelWrapper8setModelEP18QAbstractItemModel @ 16 NONAME
-	_ZN15GlxModelWrapper8setRolesEii @ 17 NONAME
-	_ZN15GlxModelWrapperC1Ev @ 18 NONAME
-	_ZN15GlxModelWrapperC2Ev @ 19 NONAME
-	_ZN15GlxModelWrapperD0Ev @ 20 NONAME
-	_ZN15GlxModelWrapperD1Ev @ 21 NONAME
-	_ZN15GlxModelWrapperD2Ev @ 22 NONAME
-	_ZNK15GlxModelWrapper10metaObjectEv @ 23 NONAME
-	_ZNK15GlxModelWrapper11columnCountERK11QModelIndex @ 24 NONAME
-	_ZNK15GlxModelWrapper14basemodelindexEiiRK11QModelIndex @ 25 NONAME
-	_ZNK15GlxModelWrapper4dataERK11QModelIndexi @ 26 NONAME
-	_ZNK15GlxModelWrapper5indexEiiRK11QModelIndex @ 27 NONAME
-	_ZNK15GlxModelWrapper6parentERK11QModelIndex @ 28 NONAME
-	_ZNK15GlxModelWrapper8rowCountERK11QModelIndex @ 29 NONAME
-	_ZTI15GlxModelWrapper @ 30 NONAME
-	_ZTV15GlxModelWrapper @ 31 NONAME
-	_ZN15GlxModelWrapper13resetTheModelEv @ 32 NONAME
+	_ZN15GlxModelWrapper13resetTheModelEv @ 5 NONAME
+	_ZN15GlxModelWrapper14connectToModelEv @ 6 NONAME
+	_ZN15GlxModelWrapper14modelDestroyedEv @ 7 NONAME
+	_ZN15GlxModelWrapper14scrollingEndedEv @ 8 NONAME
+	_ZN15GlxModelWrapper16scrollingStartedEv @ 9 NONAME
+	_ZN15GlxModelWrapper16staticMetaObjectE @ 10 NONAME DATA 16
+	_ZN15GlxModelWrapper18dataChangedinModelE11QModelIndexS0_ @ 11 NONAME
+	_ZN15GlxModelWrapper19disConnectFromModelEv @ 12 NONAME
+	_ZN15GlxModelWrapper19getStaticMetaObjectEv @ 13 NONAME
+	_ZN15GlxModelWrapper20rowsAboutToBeRemovedERK11QModelIndexii @ 14 NONAME
+	_ZN15GlxModelWrapper21rowsAboutToBeInsertedERK11QModelIndexii @ 15 NONAME
+	_ZN15GlxModelWrapper7setDataERK11QModelIndexRK8QVarianti @ 16 NONAME
+	_ZN15GlxModelWrapper8setModelEP18QAbstractItemModel @ 17 NONAME
+	_ZN15GlxModelWrapper8setRolesEii @ 18 NONAME
+	_ZN15GlxModelWrapperC1Ev @ 19 NONAME
+	_ZN15GlxModelWrapperC2Ev @ 20 NONAME
+	_ZN15GlxModelWrapperD0Ev @ 21 NONAME
+	_ZN15GlxModelWrapperD1Ev @ 22 NONAME
+	_ZN15GlxModelWrapperD2Ev @ 23 NONAME
+	_ZNK15GlxModelWrapper10metaObjectEv @ 24 NONAME
+	_ZNK15GlxModelWrapper11columnCountERK11QModelIndex @ 25 NONAME
+	_ZNK15GlxModelWrapper14basemodelindexEiiRK11QModelIndex @ 26 NONAME
+	_ZNK15GlxModelWrapper4dataERK11QModelIndexi @ 27 NONAME
+	_ZNK15GlxModelWrapper5indexEiiRK11QModelIndex @ 28 NONAME
+	_ZNK15GlxModelWrapper6parentERK11QModelIndex @ 29 NONAME
+	_ZNK15GlxModelWrapper8rowCountERK11QModelIndex @ 30 NONAME
+	_ZTI15GlxModelWrapper @ 31 NONAME
+	_ZTV15GlxModelWrapper @ 32 NONAME
 
--- a/ui/uiengine/model/favmediamodel/favmediamodel.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/favmediamodel/favmediamodel.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -43,3 +43,12 @@
 SOURCES += src/glxfavmediamodel.cpp 
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxfavmediamodel.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxfavmediamodel.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/uiengine/model/listmodel/listmodel.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/listmodel/listmodel.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -37,4 +37,13 @@
 HEADERS += inc/glxalbummodel.h 
 SOURCES += src/glxalbummodel.cpp 
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxlistmodel.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxlistmodel.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Wed Jun 23 18:12:48 2010 +0300
@@ -76,6 +76,10 @@
  * for setting the attribute context mode will be used mainly for retreiving thumbnail of different sizes.
  */
     void setContextMode(GlxContextMode contextMode);
+	/*
+	 *Removes the context
+	 */
+    void removeContextMode(GlxContextMode contextMode);
     void setFocusIndex(const QModelIndex &index);
     QModelIndex getFocusIndex() const;
     void setSelectedIndex(const QModelIndex &index);
@@ -84,6 +88,10 @@
 	
 signals :
     void iconAvailable(int itemIndex, HbIcon* itemIcon, GlxTBContextType tbContextType) const;
+	/*
+	 *signal to update the details view
+	 */
+    void updateDetailsView();
 public slots:
 	void itemUpdated1(int mlIndex, GlxTBContextType tbContextType);
 	void itemsAdded(int startIndex, int endIndex);
@@ -91,6 +99,10 @@
 	void itemCorrupted(int itemIndex);
 	void albumTitleUpdated(QString aTitle);
 	void modelpopulated();
+	/*
+	 *Emits signal to update the details view
+	 */
+	void updateDetailItems();
 protected:
 	
 private slots:
--- a/ui/uiengine/model/mediamodel/mediamodel.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/mediamodel/mediamodel.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -25,7 +25,7 @@
 CONFIG += hb
 
 LIBS += -lglxmedialistwrapper.dll \
-        -lglxloggerqt.dll      
+        -lglxloggerqt.dll
 
 
 DEFINES += BUILD_MEDIAMODEL
@@ -43,3 +43,13 @@
 SOURCES += src/glxmediamodel.cpp 
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxmediamodel.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxmediamodel.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
+
--- a/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -23,8 +23,6 @@
 #include <glxmodelparm.h>
 #include <QCache>
 #include <QDebug>
-#include <hal.h>
-#include <hal_data.h>
 #include <glxmlwrapper.h>
 
 #include <glxfiltergeneraldefs.h>
@@ -55,7 +53,7 @@
 	err = connect( mMLWrapper, SIGNAL(updateAlbumTitle(QString)), this, SLOT(albumTitleUpdated(QString)));
 	qDebug("updateAlbumTitle() connection status %d", err);
 	err = connect(mMLWrapper, SIGNAL(populated()), this, SLOT(modelpopulated()));
-	//itemadded.resize(mMLWrapper->getItemCount());
+	err = connect(mMLWrapper, SIGNAL(updateDetails()), this, SLOT(updateDetailItems()));
 	
 	itemIconCache.setMaxCost(20);  //Changed While Doing Media Wall
 	itemFsIconCache.setMaxCost(5);
@@ -73,40 +71,55 @@
 {
     //itemadded.clear();
 	qDebug("GlxMediaModel::~GlxMediaModel");
-	int freeMemory = 0;
-	int err1 = HAL::Get( HALData::EMemoryRAMFree, freeMemory );
-	qDebug("####mediaModel : Memory available before cache cleanup  = %d and error is = %d ", freeMemory , err1 );
 	itemIconCache.clear();
 	itemFsIconCache.clear();
 	delete m_DefaultIcon;
 	m_DefaultIcon = NULL;
 	clearExternalItems();
-	err1 = HAL::Get( HALData::EMemoryRAMFree, freeMemory );
-	qDebug("####mediaModel : Memory available after cache cleanup  = %d and error is = %d ", freeMemory , err1 );
-    int err = disconnect(mMLWrapper, SIGNAL(updateItem(int, GlxTBContextType)), this, SLOT(itemUpdated1(int, GlxTBContextType)));
+  int err = disconnect(mMLWrapper, SIGNAL(updateItem(int, GlxTBContextType)), this, SLOT(itemUpdated1(int, GlxTBContextType)));
 	err = disconnect(mMLWrapper, SIGNAL(itemCorrupted(int)), this, SLOT(itemCorrupted(int)));
 	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(updateAlbumTitle(QString)), this, SLOT(albumTitleUpdated(QString)));	    
 	err = disconnect(mMLWrapper, SIGNAL(populated()), this, SLOT(modelpopulated()));
+	err = disconnect(mMLWrapper, SIGNAL(updateDetails()), this, SLOT(updateDetailItems()));
     delete mMLWrapper;
 
 }
 
+//------------------------------------------------------------------------------------------------------------
+//setContextMode
+//------------------------------------------------------------------------------------------------------------
 void GlxMediaModel::setContextMode(GlxContextMode contextMode)
 {
-	if(mContextMode != contextMode)	{
+    if(contextMode == GlxContextComment)
+        {
+           mMLWrapper->setContextMode(contextMode);
+        }
+    else 
+        {
+      if(mContextMode != contextMode)	{
+        
 		itemFsIconCache.clear();
 		mMLWrapper->setContextMode(contextMode);
 		mContextMode = contextMode;
 		if ( mContextMode == GlxContextLsGrid || mContextMode == GlxContextPtGrid ) {
             itemIconCache.clear();
             //emit dataChanged( index( 0, 0), index( rowCount() - 1, 0) );  // Not Needed for HgWidget
-        }
-	}
+       }
+	  }
+     }
 }
 
+//------------------------------------------------------------------------------------------------------------
+//removeContextMode
+//------------------------------------------------------------------------------------------------------------
+void GlxMediaModel::removeContextMode(GlxContextMode contextMode)
+    {
+     mMLWrapper->removeContextMode(contextMode);
+    }
+
 //to add external data to the model
 void GlxMediaModel::addExternalItems(GlxExternalData* externalItems)
 {
@@ -314,7 +327,18 @@
     if (role == GlxHdmiBitmap) {
         return mMLWrapper->RetrieveBitmap(itemIndex);
     }
-	    
+    
+    if (role == GlxTimeRole) {
+        return mMLWrapper->retrieveItemTime(itemIndex);
+    }
+	
+    if (role == GlxSizeRole) {
+            return mMLWrapper->retrieveItemSize(itemIndex);
+        }
+    
+    if (role == GlxDescRole) {
+              return mMLWrapper->retrieveListDesc(itemIndex);
+          }
     return QVariant();
 }
 
@@ -386,6 +410,15 @@
     emit populated();
 }
 
+//------------------------------------------------------------------------------------------------------------
+//updateDetailItems
+//------------------------------------------------------------------------------------------------------------
+void GlxMediaModel::updateDetailItems()
+{
+    qDebug("GlxMediaModel::updateDetailItems");
+    emit updateDetailsView();
+}
+
 void GlxMediaModel::itemsAdded(int startIndex, int endIndex)
 {
 	qDebug("GlxMediaModel::itemsAdded %d %d", startIndex, endIndex);
@@ -486,6 +519,14 @@
         }
     }
     
+    if ( GlxRemoveContextRole == role ) {
+            if ( value.isValid() &&  value.canConvert <int> () ) {
+                removeContextMode( (GlxContextMode) value.value <int> () );
+                return TRUE;
+            }
+        }
+    
+    
     if ( GlxFocusIndexRole == role ) {
         if ( value.isValid() &&  value.canConvert <int> () ) {
             setFocusIndex( index( value.value <int> (), 0) );
--- a/ui/uiengine/model/modelwrapper/modelwrapper.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/uiengine/model/modelwrapper/modelwrapper.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -35,4 +35,13 @@
 HEADERS += inc/glxmodelwrapper.h 
 SOURCES += src/glxmodelwrapper.cpp 
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxmodelwrapper.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxmodelwrapper.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/viewmanagement/bwins/glxstatehandleru.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/bwins/glxstatehandleru.def	Wed Jun 23 18:12:48 2010 +0300
@@ -34,4 +34,7 @@
 	?exitMarkingMode@GlxStateManager@@QAEXXZ @ 33 NONAME ; void GlxStateManager::exitMarkingMode(void)
 	?removeCurrentModel@GlxStateManager@@QAEXXZ @ 34 NONAME ; void GlxStateManager::removeCurrentModel(void)
 	?createModel@GlxStateManager@@AAEXHW4NavigationDir@@@Z @ 35 NONAME ; void GlxStateManager::createModel(int, enum NavigationDir)
+	?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)
 
--- a/ui/viewmanagement/eabi/glxstatehandleru.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/eabi/glxstatehandleru.def	Wed Jun 23 18:12:48 2010 +0300
@@ -34,4 +34,7 @@
 	_ZNK15GlxStateManager10metaObjectEv @ 33 NONAME
 	_ZTI15GlxStateManager @ 34 NONAME
 	_ZTV15GlxStateManager @ 35 NONAME
+	_ZN15GlxStateManager11eventFilterEP7QObjectP6QEvent @ 36 NONAME
+	_ZN15GlxStateManager20launchProgressDialogEv @ 37 NONAME
+	_ZN15GlxStateManager20vanishProgressDialogEv @ 38 NONAME
 
--- a/ui/viewmanagement/statehandler/inc/glxstatemanager.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/statehandler/inc/glxstatemanager.h	Wed Jun 23 18:12:48 2010 +0300
@@ -45,83 +45,157 @@
 	friend class TestGlxStateManager;
 	
 public :
+    /*
+     * Constructor
+     */
     GlxStateManager();
+    
+    /*
+     * Destructor
+     */
     virtual ~GlxStateManager();
+    
+    /*
+     * Fuction to launch the application from some external world
+     */
     void launchFromExternal();
+    
+    /*
+     * Clean the all externel data
+     */
     void cleanupExternal();
     
-    //internal exposed function
+    /*
+     *  Move the views to the multiple item selection state
+     */
     void enterMarkingMode();
+    
+    /*
+     * Exit from the multiselection state
+     */
     void exitMarkingMode();
+    
+    /*
+     * Execute the commant on multiple selected item
+     */
     bool executeCommand(qint32 commandId);
+    
+    /*
+     *  when application goes into background or come back to foreground
+     *  set and reset the background thumbnail generation property
+     */
+    bool eventFilter(QObject *obj, QEvent *ev);    
 
-signals :    
+signals :
+    /*
+     * Send the user activities ( command ) to the external world
+     */
     void externalCommand(int cmdId);
+    
+    /*
+     * TO send the signal to initialise the rest of items
+     * which is not created in the launch sequence
+     */
     void setupItemsSignal();
     
 public slots:
+    /*
+     * To launch the application
+     */
     void launchApplication();
+    
+    /*
+     * To handle the user action, view switching etc
+     */
     void actionTriggered(qint32 id);
+    
+    /*
+     * To create the items which is not created in the aluch sequence
+     */
     void setupItems();
+    
+    /*
+     * call back function to monitor the change in thumbnail manager
+     */
     void updateTNProgress( int count);
 
 public :
-/*
- * It will create a new state and replace the current state with new state in the stack.
- * It will use in the case of state switching.
- * use -1 if state does not have internal state
- */    
+    /*
+     * It will create a new state and replace the current state with new state in the stack.
+     * It will use in the case of state switching.
+     * use -1 if state does not have internal state
+     */    
     void changeState(qint32 newStateId, int internalState );
-/*
- * Go back to previous state 
- */    
+    
+    /*
+     * Go back to previous state 
+     */    
     void previousState();
 
-/*
- * Go back to a state in hierarchy and pop all the state upto that level.
- * if state is not found, then all the state from the hierachy is removed and create a new state on level 0
- * This function will be use in the case when more then one back is required in single event.
- */
+    /*
+     * Go back to a state in hierarchy and pop all the state upto that level.
+     * if state is not found, then all the state from the hierachy is removed and create a new state on level 0
+     * This function will be use in the case when more then one back is required in single event.
+     */
     void goBack(qint32 stateId, int internalState);
        
-/*
- * Create a new state and current state should be pushed into stack.
- * use -1 if state does not have internal state
- */  
+    /*
+     * Create a new state and current state should be pushed into stack.
+     * use -1 if state does not have internal state
+     */  
     void nextState(qint32 newStateId, int internalState );
 
-/*
- * It will delete the current model
- */      
+    /*
+     * It will delete the current model
+     */      
     void removeCurrentModel();
     
-/*
- * It will delete the all model used by state manager
- */
+    /*
+     * It will delete the all model used by state manager
+     */
     void cleanAllModel();
     
 
 private:
-/*
- * Factory function to create the state.
- */  
+
+    /*
+     *  Launch the harvesting and TN generation progress bar dialog
+     */
+    void launchProgressDialog();
+    
+    /*
+     * remove the harvesting and TN generation progress bar dialog
+     */
+    void vanishProgressDialog();
+    
+    /*
+     * Factory function to create the state.
+     */  
     GlxState * createState(qint32 state);
-/*
- * Factory function to create the model.
- */  	
+    
+    /*
+     * Factory function to create the model.
+     */  	
     void createModel(qint32 stateId, NavigationDir dir = NO_DIR);
-/*
- * Factory function to create the grid model.
- */  	
+
+    /*
+     * Factory function to create the grid model.
+     */  	
     void createGridModel(int internalState, NavigationDir dir = NO_DIR);
-/*
- * To set the fullscreen context based on the currrent orientation
- */    
+
+    /*
+     * To set the fullscreen context based on the currrent orientation
+     */    
     void setFullScreenContext();
+    
+    /*
+     * Apllication event handler function
+     */
     void eventHandler(qint32 &id);
-/*
- * A function to care the exit for application, in the case when application launch from internal and external
- */        
+    
+    /*
+     * A function to care the exit for application, in the case when application launch from internal and external
+     */        
     void exitApplication();
 
 private:
--- a/ui/viewmanagement/statehandler/src/glxactionhandler.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/statehandler/src/glxactionhandler.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -28,8 +28,7 @@
 
 GlxActionHandler::~GlxActionHandler()
 {
-    foreach( GlxCommandHandler *cmdhandler, mCommandHandlerList)
-        delete cmdhandler;
+    qDeleteAll( mCommandHandlerList );
     mCommandHandlerList.clear();
 }
 
--- a/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -25,6 +25,7 @@
 #include <glxcommandhandlernewmedia.h>
 #include <glxcommandhandlersend.h>
 #include <glxcommandhandlerrename.h>
+#include <glxcommandhandlercomment.h>
 
 
 GlxCommandHandler* GlxCommandHandlerFactory::CreateCommandHandler(int commandId)
@@ -52,7 +53,10 @@
 
         case EGlxCmdRename: cmdHandler = new GlxCommandHandlerRename();
            break;
-
+           
+        case EGlxCmdComment: cmdHandler = new GlxCommandHandlerComment();
+                   break;
+                   
         default:
            break;
         }
--- a/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/statehandler/src/glxstatemanager.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -15,34 +15,40 @@
 *
 */
 
-#include <glxstatemanager.h>
-#include <glxviewmanager.h>
-#include <glxviewids.h>
-#include <glxmediamodel.h>
-#include <glxgridstate.h>
-#include <glxliststate.h>
-#include <glxfullscreenstate.h>
-#include <glxdetailstate.h>
-#include <glxslideshowsettingsstate.h>
-#include <glxslideshowstate.h>
-#include <glxtnobserver.h>
-#include <glxmodelparm.h>
-#include <glxcollectionpluginall.hrh>
-#include <glxcollectionplugincamera.hrh>
-#include <glxcollectionpluginalbums.hrh>
-#include <glxcollectionpluginimageviewer.hrh>
-#include <glxexternalutility.h>
-#include <glxalbummodel.h>
-#include <glxloggerenabler.h>
-#include <glxmediaid.h>
-#include <glxactionhandler.h>
-#include <glxcommandhandlers.hrh>
+//include
 #include <QApplication>
-#include <glxplugincommandid.hrh>
 #include <QDebug>
 #include <QItemSelectionModel>
 #include <hbnotificationdialog.h>
 #include <QProcess>
+#include <hbinstance.h>
+
+//user includes
+#include "glxstatemanager.h"
+#include "glxviewmanager.h"
+#include "glxviewids.h"
+#include "glxmediamodel.h"
+#include "glxgridstate.h"
+#include "glxliststate.h"
+#include "glxfullscreenstate.h"
+#include "glxdetailstate.h"
+#include "glxslideshowsettingsstate.h"
+#include "glxslideshowstate.h"
+#include "glxtnobserver.h"
+#include "glxmodelparm.h"
+#include "glxcollectionpluginall.hrh"
+#include "glxcollectionplugincamera.hrh"
+#include "glxcollectionpluginalbums.hrh"
+#include "glxcollectionpluginimageviewer.hrh"
+#include "glxexternalutility.h"
+#include "glxalbummodel.h"
+#include "glxloggerenabler.h"
+#include "glxmediaid.h"
+#include "glxactionhandler.h"
+#include "glxcommandhandlers.hrh"
+#include "glxplugincommandid.hrh"
+#include "glxlog.h"
+#include "glxtracer.h"
 
 
 GlxStateManager::GlxStateManager() 
@@ -98,6 +104,20 @@
     return TRUE;
 }
 
+bool GlxStateManager::eventFilter(QObject *obj, QEvent *event)
+{
+    TRACER("GlxStateManager::eventFilter() ");
+    GLX_LOG_INFO1("GlxStateManager::eventFilter() %d event type", event->type());
+    
+    if ( event->type() ==  QEvent::ApplicationActivate ) {
+        mTNObserver->startTNMDaemon();
+    }
+    if ( event->type() ==  QEvent::ApplicationDeactivate ) {
+        mTNObserver->stopTNMDaemon();
+    }
+    return QObject::eventFilter(obj, event);
+}
+
 void GlxStateManager::launchApplication()
 {
     qDebug("GlxStateManager::launchApplication");   
@@ -108,8 +128,7 @@
        
     if ( mTNObserver->getTNLeftCount() > 0 ) {
         mViewManager->launchApplication( GLX_GRIDVIEW_ID, mCurrentModel);
-        mViewManager->launchProgressDialog( mTNObserver->getTNLeftCount() );
-		isProgressbarRunning = true ;
+        launchProgressDialog();
     }
     else {
         createModel( GLX_GRIDVIEW_ID );
@@ -151,24 +170,25 @@
 
 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 ) { 
          goBack( GLX_GRIDVIEW_ID, ALL_ITEM_S ) ;
-         cleanAllModel();   
-         mViewManager->launchProgressDialog ( count ) ;
-         isProgressbarRunning = true ;         
+         cleanAllModel();
+         launchProgressDialog();
     }
     
     if ( isProgressbarRunning ){
         if ( count == 0 ) {
             createModel( mCurrentState->id() );
             mViewManager->setModel( mCurrentModel );
-            isProgressbarRunning = false;
+            vanishProgressDialog();
         }
-        
-        mViewManager->updateProgressDialog( count );
+        else {
+            mViewManager->updateProgressDialog( count );
+        }
     }
 }
 
@@ -282,6 +302,7 @@
 
 void GlxStateManager::removeCurrentModel()
 {
+    TRACER("GlxStateManager::removeCurrentModel() ");
     if ( mCurrentModel == mAllMediaModel ) {
         qDebug("GlxStateManager::removeCurrentModel() remove all media model");	
         delete mAllMediaModel ;
@@ -308,6 +329,7 @@
 
 void GlxStateManager::cleanAllModel()
 {
+    TRACER("GlxStateManager::cleanAllModel() ");
     delete mAllMediaModel ;
     mAllMediaModel = NULL ;
     delete mAlbumMediaModel ; 
@@ -319,6 +341,28 @@
     mCurrentModel = NULL ;
 }
 
+void GlxStateManager::launchProgressDialog()
+{
+    TRACER("GlxStateManager::launchProgressDialog() ");
+    //HbMainWindow *window = hbInstance->allMainWindows().first();
+    //window->setAutomaticOrientationEffectEnabled( true );
+    
+    QCoreApplication::instance()->installEventFilter( this );
+    mViewManager->launchProgressDialog( mTNObserver->getTNLeftCount() );
+    isProgressbarRunning = true ;
+}
+
+void GlxStateManager::vanishProgressDialog()
+{
+    TRACER("GlxStateManager::vanishProgressDialog() ");
+    //HbMainWindow *window = hbInstance->allMainWindows().first();
+    //window->setAutomaticOrientationEffectEnabled( false );
+    
+    QCoreApplication::instance()->removeEventFilter( this );
+    isProgressbarRunning = false;
+    mViewManager->updateProgressDialog( 0 );    
+}
+
 GlxState * GlxStateManager::createState(qint32 stateId)
 {
     qDebug("GlxStateManager::createState state id = %d", stateId);
@@ -566,18 +610,6 @@
        emit setupItemsSignal();
        break;
        
-   case EGlxCmdAppBackground :
-       if ( isProgressbarRunning ){
-            mTNObserver->stopTNMDaemon();
-       }
-       break;
- 
-   case EGlxCmdAppForeground :
-       if ( isProgressbarRunning ){
-            mTNObserver->startTNMDaemon();
-       }
-       break;
-       
     default :
         mActionHandler->handleAction(id,mCollectionId);
     	break;
--- a/ui/viewmanagement/statehandler/src/glxtnobserver.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/statehandler/src/glxtnobserver.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -66,5 +66,6 @@
 GlxTNObserver::~GlxTNObserver()
 {
     TRACER("GlxTNObserver::~GlxTNObserver() ");
+    RProperty::Set( KTAGDPSNotification, KForceBackgroundGeneration, EFalse );
     delete mTNMonitor;
 }
--- a/ui/viewmanagement/statehandler/statehandler.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/statehandler/statehandler.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -77,3 +77,13 @@
            src/glxtnobserver.cpp
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxstatehandler.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxstatehandler.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
+
--- a/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -70,10 +70,8 @@
 void GlxViewManager::setupItems( )
 {
     mMenuManager = new GlxMenuManager(mMainWindow);
-    addBackSoftKeyAction(); 
-    
-    addConnection();
-    
+    addBackSoftKeyAction();    
+    addConnection();    
     mMenuManager->addMenu( mView->viewId(), mView->menu() );
     mMenuManager->setModel( mModel );
 }
@@ -159,7 +157,7 @@
     if ( mEffectEngine == NULL ) { 
         mEffectEngine = new GlxEffectEngine();
         mEffectEngine->registerTransitionEffect();
-        connect( mEffectEngine, SIGNAL( effectFinished() ), this, SLOT( effectFinished() ) );
+        connect( mEffectEngine, SIGNAL( effectFinished() ), this, SLOT( effectFinished() ), Qt::QueuedConnection );
     }
     
     QList< QGraphicsItem * > itemList;
@@ -587,7 +585,7 @@
         connect(mBackAction, SIGNAL( triggered() ), this, SLOT( handleAction() ));
         
     if ( mEffectEngine )  {
-        connect( mEffectEngine, SIGNAL( effectFinished() ), this, SLOT( effectFinished() ) );
+        connect( mEffectEngine, SIGNAL( effectFinished() ), this, SLOT( effectFinished() ), Qt::QueuedConnection );
     }        
 }
 
--- a/ui/viewmanagement/viewmanager/viewmanager.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewmanagement/viewmanager/viewmanager.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -49,3 +49,13 @@
            src/glxmenumanager.cpp 
 
 DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT           
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxviewmanager.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxviewmanager.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
+
--- a/ui/views/detailsview/inc/glxdetailsview.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/detailsview/inc/glxdetailsview.h	Wed Jun 23 18:12:48 2010 +0300
@@ -20,16 +20,18 @@
 
 #include <glxview.h>
 
-class HbDataForm;
-class HbDataFormModelItem;
-class HbDataFormModel;
+
 class GlxMediaModel;
 class QAbstractItemModel;
 class HbIconItem;
-class GlxDetailsCustomWidgets;
-class GlxDetailsCustomIcon;
+
 class GlxFavMediaModel;
-
+class HbDocumentLoader;
+class HbLabel;
+class HbPushButton;
+class GlxDetailsNameLabel;
+class GlxDetailsDescriptionEdit;
+class GlxDetailsViewDocLoader;
 
 class GlxDetailsView : public GlxView  
 {
@@ -70,9 +72,9 @@
      * Sets the model corresponding to this view.
      */
     void setModel (QAbstractItemModel *model);
-/*
- * return the view item for animation
- */    
+    /*
+     * return the view item for animation
+     */    
     QGraphicsItem * getAnimationItem(GlxEffect transtionEffect);
 
 
@@ -81,15 +83,11 @@
     void rowsRemoved(const QModelIndex &parent, int start, int end);
     void dataChanged(QModelIndex startIndex, QModelIndex endIndex);
     void updateFavourites();
+    void UpdateDescription();
+    void FillDetails();
     
 private:
 
-   //Adds the Widget required to show the details
-    void addWidgets();
-
-    //Fills the data in the form
-    void setFormData();
-
     /*
      * Retrieves the image from the model and shows the image
      */
@@ -99,6 +97,8 @@
      * Sets the Date to the label recieved from MDS
      */
     void setImageName();
+    
+    void setDesc();
 
     /*
      * Sets the Date to the label received from MDS
@@ -106,6 +106,21 @@
     void setDate();
     
     /*
+     * Sets the time to the label received from MDS
+     */
+    void setTime();
+    
+    /*
+     * Sets the size to the label received from MDS
+     */
+    void setSize();    
+    
+    /*
+     * create the favourite model
+     */
+    void setFavModel();
+    
+    /*
      * Add all the model releted connection and data
      */
     void initializeNewModel();
@@ -119,47 +134,53 @@
      */
     void cleanUp();
     
+    QString sizeinStrings(int size);
+
     /*
-     * create the favourite model
+     * connects the items to slot to respective signals
      */
-    void setFavModel();
+    void setConnections();
 
-
+    /*
+     * clear the connections
+     */
+    void clearConnections();
+    
 private:
     
     //Contains the thumbnail shown in teh details view.
-    HbIconItem *mDetailsIcon;
+    HbLabel *mDetailsIcon;
     
     //Contains the favourite icon which adds or removes the image to favourite folder
-    GlxDetailsCustomIcon *mFavIcon;
-    
+    HbPushButton *mFavIcon;
+   
     //The media Model to acess the attributes; not owned,dont delete.
     QAbstractItemModel *mModel; 
     
     //The media Model to acess the attributes whether image is in favourite folder or not;owned by this view
-    GlxFavMediaModel *mFavModel;
-    
-    //The Model for the Form
-    HbDataFormModel *mDetailModel;
-
+    GlxFavMediaModel *mFavModel;    
+ 
     //The reference to the Main Window
     HbMainWindow *mWindow;
-
-    //The data form for the detail 
-    HbDataForm * mDataForm;
-
-    //Custom widgets which will contain the widgets not created/supported by data form 
-    GlxDetailsCustomWidgets *mCustomPrototype;
-    
+     
     int mSelIndex;
     
-    //Contains the Datelabel item
-    HbDataFormModelItem *mDateLabelItem;
-    
-    //Contains the ImageLabel item
-    HbDataFormModelItem *mImageLabelitem;
-    
-    //Contains the Comments item
-    HbDataFormModelItem *mCommentsLabelitem;
+   //Document Loader  
+    GlxDetailsViewDocLoader *mDocLoader;
+  
+    //Shows the Images
+    GlxDetailsNameLabel *mImageName;
+	
+	//Shows the descriptions
+     GlxDetailsDescriptionEdit *mDescriptions;
+	
+	//Shows the Date 
+    HbLabel *mDateLabel;
+	
+	//Shows the size of the image
+    HbLabel *mSizeLabel;
+	
+	//Shows the time 
+    HbLabel *mTimeLabel;    
 };
 #endif //GLXDETAILSVIEW_H
--- a/ui/views/detailsview/src/glxdetailsview.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/detailsview/src/glxdetailsview.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -16,16 +16,22 @@
  */
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
+
+
 #include <QModelIndex>
 #include <qdatetime.h>
+#include <QDebug>
+#include <HbAnchorLayout.h>
+//--------------------------------------------------------------------------------------------------------------------------------------------
 
-//--------------------------------------------------------------------------------------------------------------------------------------------
 #include <hblabel.h>
 #include <hbdataform.h>
 #include <hbinstance.h>
 #include <hbiconitem.h>
-#include <hblineedit.h>
+#include <hbframeitem.h>
+#include <hbpushbutton.h>
 #include <hbdataformmodel.h>
+#include <hbdocumentloader.h>
 #include <hbdataformmodelitem.h>
 #include <hbdataformviewitem.h>
 
@@ -33,45 +39,59 @@
 #include "glxviewids.h"
 #include "glxicondefs.h" //Contains the icon names/Ids
 #include "glxmodelparm.h"
+#include "glxmediamodel.h"
 #include "glxdetailsview.h"
 #include "glxfavmediamodel.h"
+#include "glxdocloaderdefs.h"
 #include <glxcommandhandlers.hrh>
-#include "glxdetailscustomicon.h"
-#include "glxdetailscustomwidgets.h"
+#include "glxdetailsdescriptionedit.h"
+#include "glxdetailsnamelabel.h"
+
+
+#include "glxviewdocloader.h"
 #include <glxcollectionpluginalbums.hrh>
 
+#include "glxlog.h"
+#include "glxloggerenabler.h"
+
 
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "glxdetailsviewTraces.h"
 #endif
 
-
 //SIZE OF THE IMAGE , LAYOUTS TEAM NEED TO GIVER THE SIZE IN UNITS
 #define GLX_IMAGE_SIZE 215 
+const int KBytesInKB = 1024;
+const int KBytesInMB = 1024 * 1024;
+const int KBytesInGB = 1024 * 1024 * 1024;
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //GlxDetailsView
 //--------------------------------------------------------------------------------------------------------------------------------------------
-GlxDetailsView::GlxDetailsView(HbMainWindow *window) :  
-    GlxView ( GLX_DETAILSVIEW_ID),
-    mDetailsIcon(NULL),
-    mFavIcon(NULL),
-    mModel(NULL),
-    mFavModel(NULL),
-    mDetailModel(NULL),
-    mWindow(window), 
-    mDataForm(NULL),     
-    mCustomPrototype(NULL),
-    mSelIndex(0),
-    mDateLabelItem(NULL),
-    mImageLabelitem(NULL),
-    mCommentsLabelitem(NULL)
-        {
-    OstTraceFunctionEntry0( GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY );    
-    setContentFullScreen( true );//for smooth transtion between grid to full screen and vice versa
+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)
+   {
+    GLX_LOG_INFO("GlxDetailsView::GlxDetailsView");
+    OstTraceFunctionEntry0( GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY );
+    setContentFullScreen(true);//for smooth transtion between grid to full screen and vice versa
     OstTraceFunctionExit0( GLXDETAILSVIEW_GLXDETAILSVIEW_EXIT );
-        }
+   }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//~GlxDetailsView
+//--------------------------------------------------------------------------------------------------------------------------------------------
+GlxDetailsView::~GlxDetailsView()
+    {
+    OstTrace0( TRACE_IMPORTANT, GLXDETAILSVIEW_GLXDETAILSVIEW, "GlxDetailsView::~GlxDetailsView" );
+    
+    delete mDocLoader;
+    mDocLoader = NULL;
+    
+    cleanUp();
+    }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //activate
@@ -79,9 +99,21 @@
 void GlxDetailsView::activate()
     {
     OstTraceFunctionEntry0( GLXDETAILSVIEW_ACTIVATE_ENTRY );
-    setFormData();    
-    connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation)));
-    connect(mFavIcon,SIGNAL(updateFavourites()),this ,SLOT(updateFavourites()));
+    //create and set the Favourite Model
+    setFavModel();
+    
+    //fill the data
+    FillDetails();
+    
+    //Initialze the Model
+    initializeNewModel();
+    
+    //make the connections
+    setConnections();
+        
+    //Set context mode to fetch descriptions
+    mModel->setData(QModelIndex(), (int) GlxContextComment, GlxContextRole);    
+    
     OstTraceFunctionExit0( GLXDETAILSVIEW_ACTIVATE_EXIT );
     }
 
@@ -89,38 +121,63 @@
 //initializeView
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::initializeView(QAbstractItemModel *model)
-    {   
+    {
     OstTraceFunctionEntry0( GLXDETAILSVIEW_INITIALIZEVIEW_ENTRY );
+    bool loaded = false;
+    
+    if(mDocLoader)
+        {
+         mDocLoader = new GlxDetailsViewDocLoader();
+        }
+    
+    //Load the docml
+    mDocLoader->load(GLX_DETAILSVIEW_DOCMLPATH, &loaded);     
+    
+    HbView *mView = static_cast<HbView*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_VIEW));
+    
+    HbWidget *mwidget = static_cast<HbWidget*> (mDocLoader->findWidget(
+            "MainWidget"));
 
-    //To show the thumbnail 
-    if ( mDataForm == NULL) {
-    mDataForm = new HbDataForm(this);
-    mDetailModel = new HbDataFormModel();
+    mDetailsIcon = static_cast<HbLabel*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_IMAGE));
+    mFavIcon = static_cast<HbPushButton*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_FAVICON));
 
-    //custom prototype
-    mCustomPrototype = new GlxDetailsCustomWidgets(mDataForm);           
-    QList <HbAbstractViewItem*> protos = mDataForm->itemPrototypes();
-    protos.append(mCustomPrototype);
-    mDataForm->setItemPrototypes(protos);
+    mDescriptions = static_cast<GlxDetailsDescriptionEdit*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_DESCRPTIONTEXT));
+    
+    mImageName = static_cast<GlxDetailsNameLabel*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_IMGNAME));
+    
+    mDateLabel = static_cast<HbLabel*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_DATETEXT));
+    
+    mTimeLabel = static_cast<HbLabel*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_TIMETEXT));
+    
+    mSizeLabel = static_cast<HbLabel*> (mDocLoader->findWidget(
+            GLX_DETAILSVIEW_SIZETEXT));
 
-    //Add the Widgets according to the mime type
-    addWidgets();
-    }   
-
-    if( mDetailsIcon == NULL) {
-    mDetailsIcon = new HbIconItem(this);
-    mFavIcon = new GlxDetailsCustomIcon(this);
-    }
+    //set the frame graphics to the background of the fav icon
+    HbFrameItem* frame = new HbFrameItem(this);
+    frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
+    frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
+    frame->graphicsItem()->setOpacity(0.2);
+    mFavIcon->setBackgroundItem(frame->graphicsItem(), -1);
+    mFavIcon->setBackground(HbIcon("qtg_fr_multimedia_trans"));
+    mFavIcon->setIcon(HbIcon(GLXICON_REMOVE_FAV));
+    
+    setWidget(mView);
 
     //Set the Model
-    mModel = model;
-    initializeNewModel();
+    mModel = model;  
 
     //Set the Layout Correspondingly.
     updateLayout(mWindow->orientation());
 
     //Shows the Image 
-    showImage(); 
+    showImage();
     OstTraceFunctionExit0( GLXDETAILSVIEW_INITIALIZEVIEW_EXIT );
     }
 
@@ -129,16 +186,23 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::resetView()
     {
-    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_RESETVIEW, "GlxDetailsView::resetView" );   
+    GLX_LOG_INFO("GlxDetailsView::resetView");
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_RESETVIEW, "GlxDetailsView::resetView" );
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //deActivate
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::deActivate()
-    { 
+    {
+    GLX_LOG_INFO("GlxDetailsView::deActivate");
     OstTraceFunctionEntry0( GLXDETAILSVIEW_DEACTIVATE_ENTRY );
-    cleanUp();      
+
+    //Remove the context created to update details
+    mModel->setData(QModelIndex(), (int) GlxContextComment,
+            GlxRemoveContextRole);
+    cleanUp();
+    
     OstTraceFunctionExit0( GLXDETAILSVIEW_DEACTIVATE_EXIT );
     }
 
@@ -150,17 +214,7 @@
     clearCurrentModel();
 
     //clear the connections
-    if(mWindow) {
-    disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation)));
-    }
-
-    if(mFavModel) {
-    disconnect( mFavModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );
-    }
-
-    if(mFavIcon) {
-    disconnect(mFavIcon,SIGNAL(updateFavourites()),this ,SLOT(updateFavourites()));
-    }
+    clearConnections();   
 
     delete mFavModel;
     mFavModel = NULL;
@@ -169,75 +223,7 @@
     mFavIcon = NULL;
 
     delete mDetailsIcon;
-    mDetailsIcon = NULL;    
-    }  
-
-//--------------------------------------------------------------------------------------------------------------------------------------------
-//~GlxDetailsView
-//--------------------------------------------------------------------------------------------------------------------------------------------
-GlxDetailsView::~GlxDetailsView()
-    {
-    OstTrace0( TRACE_IMPORTANT, GLXDETAILSVIEW_GLXDETAILSVIEW, "GlxDetailsView::~GlxDetailsView" );
-
-    cleanUp();     
-
-    if(mDetailModel) {
-      delete mDetailModel;
-      mDataForm->setModel(0);
-    }
-
-    if(mDataForm) {
-    delete mDataForm;
-    mDataForm = NULL;
-    }       
-    }
-
-//--------------------------------------------------------------------------------------------------------------------------------------------
-//addWidgets
-//--------------------------------------------------------------------------------------------------------------------------------------------
-void GlxDetailsView::addWidgets()
-    {
-    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets create Form" );
-
-    //----------------------------START OF CREATION OF WIDGETS---------------------------------//
-    // To add new widgets in the details view, add it here.
-
-    //---------------------------IMAGE NAME LABEL --------------------------------------------//
-    OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets create Image Label" );
-    mImageLabelitem = mDetailModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString("Name"), NULL);
-
-    //---------------------------DATE LABEL --------------------------------------------//
-    OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets date label" );
-    mDateLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(DateLabelItem), QString("Date"), NULL);
-
-
-    //----------------------------COMMENTS TEXT ITEM---------------------------------------------//
-    OstTrace0( TRACE_NORMAL, DUP5_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets comment text" );
-    mCommentsLabelitem = mDetailModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString("Description"), NULL);
-
-    //----------------------------END OF CREATION OF WIDGETS-------------------------------------//
-
-    //Set the model to the Data Form
-    mDataForm->setModel(mDetailModel);
-    }
-
-//--------------------------------------------------------------------------------------------------------------------------------------------
-//setFavModel
-//--------------------------------------------------------------------------------------------------------------------------------------------
-void GlxDetailsView::setFavModel()
-    {
-    GlxModelParm modelParm;
-
-    QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
-
-    if(mFavModel == NULL) {
-    modelParm.setCollection( KGlxCollectionPluginFavoritesAlbumId );
-    modelParm.setContextMode(GlxContextFavorite);
-    modelParm.setPath(imagePath);
-    mFavModel = new GlxFavMediaModel( modelParm );
-    }
-    QString imageName = imagePath.section('\\',-1);
-    connect( mFavModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );   
+    mDetailsIcon = NULL;
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -246,25 +232,112 @@
 void GlxDetailsView::setModel(QAbstractItemModel *model)
     {
     OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETMODEL, "GlxDetailsView::setModel" );
-    if ( mModel == model ) {
-    return ;
-    }
+    if (mModel == model)
+        {
+        return;
+        }
     clearCurrentModel();
     mModel = model;
     initializeNewModel();
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
+//setFavModel
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::setFavModel()
+{
+    GlxModelParm modelParm;
+    QString imagePath = (mModel->data(mModel->index(mModel->data(
+            mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
+            GlxUriRole)).value<QString> ();
+
+    if (mFavModel == NULL)
+        {
+        modelParm.setCollection(KGlxCollectionPluginFavoritesAlbumId);
+        modelParm.setContextMode(GlxContextFavorite);
+        modelParm.setPath(imagePath);
+        mFavModel = new GlxFavMediaModel(modelParm);
+        }
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//initializeNewModel
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::initializeNewModel()
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_INITIALIZENEWMODEL, "GlxDetailsView::initializeNewModel" );
+
+    if (mModel)
+        {
+    connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this,
+            SLOT(rowsRemoved(QModelIndex,int,int)));
+        }
+    }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//clearCurrentModel
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::clearCurrentModel()
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_CLEARCURRENTMODEL, "GlxDetailsView::clearCurrentModel" );
+
+    if (mModel)
+        {
+        disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this,
+                SLOT(rowsRemoved(QModelIndex,int,int)));
+        mModel = NULL;
+        }
+    }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//setConnections
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::setConnections()
+    {
+    connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this,
+            SLOT(updateLayout(Qt::Orientation)));
+    connect(mFavIcon, SIGNAL(clicked()), this, SLOT(updateFavourites()));
+    
+    connect(mDescriptions, SIGNAL(labelPressed()), this,
+            SLOT(UpdateDescription()));
+    
+    connect(mModel, SIGNAL( updateDetailsView() ), this, SLOT( FillDetails() ));
+    
+    connect(mFavModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ),
+               this, SLOT( dataChanged(QModelIndex,QModelIndex) ));    
+    }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//clearConnections
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::clearConnections()
+    {
+    disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this,
+            SLOT(updateLayout(Qt::Orientation)));
+    
+    disconnect(mFavIcon, SIGNAL(clicked()), this, SLOT(updateFavourites()));
+    
+    disconnect(mDescriptions, SIGNAL(labelPressed()), this,
+            SLOT(UpdateDescription()));
+    
+    disconnect(mModel, SIGNAL( updateDetailsView() ), this, SLOT( FillDetails() ));
+    
+    disconnect(mFavModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ),
+                this, SLOT( dataChanged(QModelIndex,QModelIndex) ));
+    }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
 //getAnimationItem
 //--------------------------------------------------------------------------------------------------------------------------------------------
 QGraphicsItem * GlxDetailsView::getAnimationItem(GlxEffect transtionEffect)
     {
     OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_GETANIMATIONITEM, "GlxDetailsView::getAnimationItem" );
-    if ( transtionEffect == FULLSCREEN_TO_DETAIL
-            || transtionEffect == DETAIL_TO_FULLSCREEN ) {
+    if (transtionEffect == FULLSCREEN_TO_DETAIL || transtionEffect
+            == DETAIL_TO_FULLSCREEN)
+        {
     return this;
-    }
-    return NULL;    
+        }
+    return NULL;
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -273,98 +346,77 @@
 void GlxDetailsView::updateLayout(Qt::Orientation orient)
     {
     OstTrace1( TRACE_NORMAL, GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout;orient=%d", orient );
-
-    qreal IconPosX = 0.0;
-    qreal IconPosY = 0.0;
-    qreal FavIconPosX = 0.0;
-    qreal FavIconPosY = 0.0;
-    qreal DataFormX = 0.0;
-    qreal DataFormY = 0.0;
-    qreal DataFormWidth = 0.0;
-    qreal DataFormHeight = 0.0;
-
-
-    qreal screenWidth = 0.0;
-    qreal screenHeight = 0.0;
-    qreal leftMargin = 0.0;
-    qreal bottomMargin = 0.0;
-    qreal screenMargin = 0.0;
-    qreal favIconSize = 0.0;
-    qreal chromeHeight = 0.0;
-    qreal middleVerticalMargin = 0.0;
-
-    style()->parameter("hb-param-screen-width", screenWidth);
-    style()->parameter("hb-param-screen-height", screenHeight);
+    GLX_LOG_INFO("GlxDetailsView::updateLayout ");
+    bool loaded = false;
+    QString section;
 
-    style()->parameter("hb-param-margin-gene-middle-vertical", middleVerticalMargin);
-    style()->parameter("hb-param-margin-gene-left", leftMargin);
-    style()->parameter("hb-param-margin-gene-bottom", bottomMargin);
-    style()->parameter("hb-param-margin-gene-screen", screenMargin);
-
-    style()->parameter("hb-param-graphic-size-primary-small", favIconSize);
-    style()->parameter("hb-param-widget-chrome-height", chromeHeight);
-
-
-    if(orient == Qt::Horizontal)
+    //Load the widgets accroding to the current Orientation
+    if (orient == Qt::Horizontal)
         {
-    OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout HORIZONTAL" );
-    setGeometry(0,0,640,360);
-    IconPosX    = screenMargin;
-    IconPosY    = (screenMargin + chromeHeight);
-    FavIconPosX = (IconPosX + GLX_IMAGE_SIZE - (favIconSize +10));
-    FavIconPosY = (IconPosY + GLX_IMAGE_SIZE - (favIconSize + 10));
-    DataFormX =  screenMargin + GLX_IMAGE_SIZE + leftMargin ;
-    DataFormY =  screenMargin + chromeHeight ;
-
-    //This Commented code should be un commented , once the screen width and height size issue is solved and also
-    //the dataform issue of wrapping issue is solved
-    // DataFormWidth =  screenWidth(640) - DataFormX  - screenMargin ;
-    // DataFormHeight = screenHeight(360) - DataFormY - screenMargin ;
-    DataFormWidth = screenWidth - (screenMargin  + screenMargin) ;
-    DataFormHeight = screenHeight - DataFormY;
-
+        section = GLX_DETAILSVIEW_LSSECTION;
         }
     else
         {
-    OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout VERTICAL" );
-    setGeometry(0,0,screenWidth,screenHeight);
-    IconPosX    = (screenWidth/2) - (GLX_IMAGE_SIZE/2);
-    IconPosY    = (screenMargin + chromeHeight);
-    FavIconPosX = (IconPosX + GLX_IMAGE_SIZE - (favIconSize +10));
-    FavIconPosY = (IconPosY + GLX_IMAGE_SIZE - (favIconSize +10));
-    DataFormX =  screenMargin;
-    DataFormY =  IconPosY + GLX_IMAGE_SIZE + middleVerticalMargin + bottomMargin ;
-    DataFormWidth = screenWidth - (screenMargin  + screenMargin) ;
-    DataFormHeight = screenHeight - DataFormY;
+        section = GLX_DETAILSVIEW_PTSECTION;
         }
 
-    mDetailsIcon->setPos(IconPosX,IconPosY);
-    //The Numerical should be updated once we get the parameters size from the layouts.
-    mFavIcon->setItemGeometry(QRect(FavIconPosX-2 ,FavIconPosY-2 ,favIconSize+12,favIconSize + 12)) ;
-    //Place the FavIcon with respect to the Widget.
-    mFavIcon->setItemPos(2 ,2 );
-    mDataForm->setGeometry(DataFormX,DataFormY,DataFormWidth,DataFormHeight);    
+    //Load the Sections
+    mDocLoader->load(GLX_DETAILSVIEW_DOCMLPATH, section, &loaded);
+
+    //This is just to over come the bug in docloader,once that is fixed we can remove the 
+    //below lines of code
+     setImageName();
+     setDate();
+
+    GLX_LOG_INFO1("GlxDetailsView::updateLayout =%d\n",loaded);
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //rowsRemoved
 //--------------------------------------------------------------------------------------------------------------------------------------------
-void GlxDetailsView::rowsRemoved(const QModelIndex &parent, int start, int end)
+void GlxDetailsView::rowsRemoved(const QModelIndex &parent, int start,
+        int end)
     {
     Q_UNUSED(parent);
     Q_UNUSED(start);
     Q_UNUSED(end);
     OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_ROWSREMOVED, "GlxDetailsView::rowsRemoved" );
 
-    if ( mModel->rowCount() <= 0 ) {
-    return emit actionTriggered( EGlxCmdEmptyData );
+    if (mModel->rowCount() <= 0)
+        {
+        return emit actionTriggered(EGlxCmdEmptyData);
+        }
+
+    if (start <= mSelIndex && end >= mSelIndex)
+        {
+        return emit actionTriggered(EGlxCmdBack);
+        }
     }
 
-    if ( start <= mSelIndex && end >= mSelIndex ) {
-    return emit actionTriggered( EGlxCmdBack );
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//FillData
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::FillDetails()
+    {
+    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETFORMDATA, "GlxDetailsView::setFormData" );
+
+    qDebug("GlxDetailsView::FillDetails");
+    //Call to set the Image Name
+    setImageName();
+
+    //Call to set the description
+    setDesc();
+
+    //Call to set the date in the from
+    setDate();
+
+    //Call to set the time
+    setTime();
+
+    //Call to set the size
+    setSize();
+
     }
-    }
-
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //showImage
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -372,46 +424,23 @@
     {
     OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage" );
 
-    QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
-    if ( variant.isValid() &&  variant.canConvert<int> () ) {
-    mSelIndex = variant.value<int>();  
-    }
-
-    variant = mModel->data( mModel->index( mSelIndex ,0), GlxFsImageRole);
-    if ( variant.isValid() &&  variant.canConvert<HbIcon> () )
+    QVariant variant = mModel->data(mModel->index(0, 0), GlxFocusIndexRole);
+    if (variant.isValid() && variant.canConvert<int> ())
         {
-        QIcon itemIcon = variant.value<HbIcon>().qicon();
-        QPixmap itemPixmap = itemIcon.pixmap(GLX_IMAGE_SIZE,GLX_IMAGE_SIZE);
-        QSize sz(GLX_IMAGE_SIZE,GLX_IMAGE_SIZE);
-        itemPixmap = itemPixmap.scaled(sz, Qt::IgnoreAspectRatio );
-    
-    
-        HbIcon tmp = HbIcon( QIcon(itemPixmap)) ;
-        mDetailsIcon->setSize(QSize(GLX_IMAGE_SIZE, GLX_IMAGE_SIZE));
+        mSelIndex = variant.value<int> ();
+        }
+
+    variant = mModel->data(mModel->index(mSelIndex, 0), GlxFsImageRole);
+    if (variant.isValid() && variant.canConvert<HbIcon> ())
+        {
+        QIcon itemIcon = variant.value<HbIcon> ().qicon();
+        QPixmap itemPixmap = itemIcon.pixmap(GLX_IMAGE_SIZE, GLX_IMAGE_SIZE);
+        QSize sz(GLX_IMAGE_SIZE, GLX_IMAGE_SIZE);
+        itemPixmap = itemPixmap.scaled(sz, Qt::IgnoreAspectRatio);
+
+        HbIcon tmp = HbIcon(QIcon(itemPixmap));
         mDetailsIcon->setIcon(tmp);
-        mFavIcon->setItemIcon(HbIcon("qtg_graf_ratingslider_unrated"));
-    
-        qreal favIconSize = 0.0;
-        style()->parameter("hb-param-graphic-size-primary-small", favIconSize);
-        mFavIcon->setItemSize(QSize(favIconSize+10, favIconSize+10));
-        }        
-    }
-
-//--------------------------------------------------------------------------------------------------------------------------------------------
-//FillData
-//--------------------------------------------------------------------------------------------------------------------------------------------
-void GlxDetailsView::setFormData()
-    {
-    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETFORMDATA, "GlxDetailsView::setFormData" );
-
-    //create and set the Favourite Model
-    setFavModel();
-
-    //Call to set the Image Name
-    setImageName();
-
-    //Call to set the date in the from
-    setDate();
+        }
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -420,12 +449,27 @@
 void GlxDetailsView::setImageName()
     {
     OstTraceFunctionEntry0( GLXDETAILSVIEW_SETIMAGENAME_ENTRY );
+    QString temp = "<u>";
+    QString imagePath = (mModel->data(mModel->index(mModel->data(
+            mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
+            GlxUriRole)).value<QString> ();
+    QString imageName = imagePath.section('\\', -1);
+    
+    temp.append(imageName);
+    temp.append("</u>");
+    mImageName->setItemText(temp);    
+    OstTraceFunctionExit0( GLXDETAILSVIEW_SETIMAGENAME_EXIT );
+    }
 
-    QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxUriRole)).value<QString>();
-    QString imageName = imagePath.section('\\',-1);
-
-    mImageLabelitem->setContentWidgetData("text",imageName);
-    OstTraceFunctionExit0( GLXDETAILSVIEW_SETIMAGENAME_EXIT );
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//setImageName
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::setDesc()
+    {
+    QString description = (mModel->data(mModel->index(mModel->data(
+            mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
+            GlxDescRole)).value<QString> ();
+    mDescriptions->setItemText(description);
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -436,77 +480,101 @@
     OstTraceFunctionEntry0( GLXDETAILSVIEW_SETDATE_ENTRY );
 
     QString datestring;
-    QString str("dd.MM.yyyy");
-    QDate date = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxDateRole)).value<QDate>();
-
-    if(date.isNull() == FALSE )
+    QString dateFormat("dd.MM.yyyy");
+    QDate date = (mModel->data(mModel->index(mModel->data(
+            mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
+            GlxDateRole)).value<QDate> ();
+    
+    datestring = QString("Date: ");
+    if (date.isNull() == FALSE)
         {
-    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate is not NULL" );
-    datestring = date.toString(str);
+        OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate is not NULL" );
+        datestring.append(date.toString(dateFormat));
         }
 
-    mDateLabelItem->setContentWidgetData("plainText",datestring);
+    mDateLabel->setPlainText(datestring);
 
     OstTraceFunctionExit0( GLXDETAILSVIEW_SETDATE_EXIT );
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
-//initializeNewModel
+//setTime
 //--------------------------------------------------------------------------------------------------------------------------------------------
-void GlxDetailsView::initializeNewModel()
+void GlxDetailsView::setTime()
     {
-    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_INITIALIZENEWMODEL, "GlxDetailsView::initializeNewModel" );
-
-    if ( mModel ) {
-    connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
-    }
+    QString timestring;
+    QString timeFormat("h:m ap");
+    QTime timevalue = (mModel->data(mModel->index(mModel->data(mModel->index(
+            0, 0), GlxFocusIndexRole).value<int> (), 0), GlxTimeRole)).value<
+            QTime> ();
+    timestring = QString("Time: ");
+    if (timevalue.isNull() == FALSE)
+        {
+        OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setTime is not NULL" );
+        timestring.append(timevalue.toString(timeFormat));
+        }
+    mTimeLabel->setPlainText(timestring);
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
-//clearCurrentModel
+//setSize
 //--------------------------------------------------------------------------------------------------------------------------------------------
-void GlxDetailsView::clearCurrentModel()
+void GlxDetailsView::setSize()
     {
-    OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_CLEARCURRENTMODEL, "GlxDetailsView::clearCurrentModel" );
-
-    if ( mModel ) {
-    disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
-    mModel = NULL ;
-    }    
-    }
+    int size = 0;
+    size = (mModel->data(mModel->index(mModel->data(mModel->index(0, 0),
+            GlxFocusIndexRole).value<int> (), 0), GlxSizeRole)).value<int> ();
+    QString sizelabel;
+    QString sizestring;
+    sizelabel = QString("Size  : ");
+    sizestring = sizeinStrings(size);
+    sizelabel.append(sizestring);
+    mSizeLabel->setPlainText(sizelabel);
+    
+   }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //dataChanged
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::dataChanged(QModelIndex startIndex, QModelIndex endIndex)
     {
-    Q_UNUSED(endIndex);      
- 
-    QVariant variant = mFavModel->data( startIndex, GlxFavorites );
-    if ( variant.isValid() &&  variant.canConvert<bool> () ) 
+    Q_UNUSED(endIndex);
+
+    QVariant variant = mFavModel->data(startIndex, GlxFavorites);
+    if (variant.isValid() && variant.canConvert<bool> ())
         {
-        if(variant.value<bool>() )
-            {  
-             mFavIcon->setItemIcon(HbIcon(GLXICON_ADD_TO_FAV));
+        if (variant.value<bool> ())
+            {
+            mFavIcon->setIcon(HbIcon(GLXICON_ADD_TO_FAV));
             }
-        else 
+        else
             {
-             mFavIcon->setItemIcon(HbIcon(GLXICON_REMOVE_FAV));
+            mFavIcon->setIcon(HbIcon(GLXICON_REMOVE_FAV));
             }
         }
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
+//UpdateDescription
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsView::UpdateDescription()
+    {
+    GLX_LOG_INFO("GlxDetailsView::UpdateDescription ");
+    qDebug("GlxDetailsView::UpdateDescription");
+    emit actionTriggered(EGlxCmdComment);
+    }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
 //updateFavourites
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::updateFavourites()
     {
-    QVariant variant = mFavModel->data(mFavModel->index(0,0), GlxFavorites );
-    if ( variant.isValid() &&  variant.canConvert<bool> ())
+    QVariant variant = mFavModel->data(mFavModel->index(0, 0), GlxFavorites);
+    if (variant.isValid() && variant.canConvert<bool> ())
         {
-        if(variant.value<bool>() )
+        if (variant.value<bool> ())
             {
-             emit actionTriggered( EGlxCmdRemoveFromFav); 
+            emit actionTriggered(EGlxCmdRemoveFromFav);
             }
         else
             {
@@ -514,3 +582,35 @@
             }
         }
     }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//sizeinStrings
+//--------------------------------------------------------------------------------------------------------------------------------------------
+QString GlxDetailsView::sizeinStrings(int size)
+    {
+    QString sizeString;
+    if (size >= KBytesInGB)
+        {
+        int gbSize = size / KBytesInGB; // Size in GB
+        sizeString.setNum(gbSize);
+        sizeString.append("GB");
+        }
+    else if (size >= KBytesInMB)
+        {
+        int mbSize = size / KBytesInMB; // Size in MB
+        sizeString.setNum(mbSize);
+        sizeString.append("MB");
+        }
+    else if (size >= KBytesInKB)
+        {
+        TInt kBsize = size / KBytesInKB; // bytes to kB
+        sizeString.setNum(kBsize);
+        sizeString.append("KB");
+        }
+    else
+        {
+        sizeString.setNum(size);
+        sizeString.append("Bytes");
+        }
+    return sizeString;
+    }
--- a/ui/views/docloaders/inc/glxviewdocloader.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/docloaders/inc/glxviewdocloader.h	Wed Jun 23 18:12:48 2010 +0300
@@ -44,4 +44,14 @@
     private: //
 };
 
+//Custom Docloader to load the details  view
+class GlxDetailsViewDocLoader : public HbDocumentLoader
+{
+protected:
+    //This creates the custom widget for details
+    QObject* createObject(const QString &type, const QString &name);
+    
+    private: //
+};
+
 #endif /* GLXVIEWDOCLOADER_H */
--- a/ui/views/docloaders/src/glxviewdocloader.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/docloaders/src/glxviewdocloader.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -30,6 +30,8 @@
 #include "glxslideshowwidget.h"
 #include "glxslideshowview.h"
 #include "glxzoomwidget.h"
+#include "glxdetailsnamelabel.h"
+#include "glxdetailsdescriptionedit.h"
 
 //----------------------------------------------------------------------------------------
 // createObject:creates the custom widget and views of fullscreen view
@@ -97,3 +99,34 @@
         }
     return HbDocumentLoader::createObject(type, name);
     }
+
+	//----------------------------------------------------------------------------------------
+// createObject:creates the custom widget and views of details view
+//----------------------------------------------------------------------------------------
+QObject* GlxDetailsViewDocLoader::createObject(const QString &type, const QString &name)
+    {
+    qDebug() <<"GlxDetailsViewDocLoader::createObject -->";
+
+
+    if (GLX_DETAILSVIEW_IMGNAME == name)
+        {
+        qDebug() << "GlxDetailsViewDocLoader::createObject:GLX_DETAILSVIEW_IMGNAME -->";
+
+        QObject *object = new GlxDetailsNameLabel();
+        object->setObjectName(name);
+        return object;
+        }
+    
+    if (GLX_DETAILSVIEW_DESCRPTIONTEXT == name)
+        {
+        qDebug() << "GlxDetailsViewDocLoader::createObject:GLX_DETAILSVIEW_DESCRPTIONTEXT -->";
+
+        QObject *object = new GlxDetailsDescriptionEdit();
+        object->setObjectName(name);
+        return object;
+        }
+    
+   
+    return HbDocumentLoader::createObject(type, name);
+    }
+
--- a/ui/views/fullscreenview/inc/glxcoverflow.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/fullscreenview/inc/glxcoverflow.h	Wed Jun 23 18:12:48 2010 +0300
@@ -73,6 +73,7 @@
     void changeSelectedIndex(const QModelIndex &index);
     void autoLeftMoveSignal();
     void autoRightMoveSignal();
+    void doubleTapEventReceived(QPointF position);
 
 protected slots:
     void panGesture ( const QPointF & delta )  ;
@@ -102,6 +103,7 @@
     //reset all the data of cover flow
     void resetCoverFlow();
     int getSubState();
+    void timerEvent(QTimerEvent *event);
 
 private:
 	HbIconItem *mIconItem[NBR_ICON_ITEM];      //at most contain only five item
@@ -119,6 +121,7 @@
     int mSpeed;        
 	bool mZoomOn;
 	QGraphicsItem* mMultitouchFilter;
+    int mTimerId;
 };
 
 #endif /* GLXCOVERFLOW_H_ */
--- a/ui/views/fullscreenview/src/glxcoverflow.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/fullscreenview/src/glxcoverflow.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -45,7 +45,8 @@
        mMoveDir(NO_MOVE),
        mSpeed ( GLX_COVERFLOW_SPEED ),
 	   mZoomOn(false),
-	   mMultitouchFilter(NULL)
+	   mMultitouchFilter(NULL),
+       mTimerId(0)
 {
 //TO:DO through exception
    qDebug("GlxCoverFlow::GlxCoverFlow");
@@ -63,11 +64,12 @@
 {
     qDebug("GlxCoverFlow::setCoverFlow");
     for ( qint8 i = 0; i < NBR_ICON_ITEM ; i++ ) {
-        mIconItem[i] = new HbIconItem(this);
-        mIconItem[i]->grabGesture(Qt::PinchGesture, Qt::ReceivePartialGestures);
-        mIconItem[i]->installSceneEventFilter(mMultitouchFilter);
-        mIconItem[i]->setBrush(QBrush(Qt::black));
-        mIconItem[i]->setSize(QSize(0,0));
+        mIconItem[i] = new HbIconItem( this );
+        mIconItem[i]->grabGesture( Qt::PinchGesture, Qt::ReceivePartialGestures );
+        mIconItem[i]->installSceneEventFilter( mMultitouchFilter );
+        mIconItem[i]->setBrush( QBrush( Qt::black ) );
+        mIconItem[i]->setSize( QSize( 0, 0 ) );
+        mIconItem[i]->setAlignment( Qt::AlignCenter );
     }
     mUiOn = FALSE;
     mBounceBackDeltaX = GLX_BOUNCEBACK_DELTA;
@@ -108,7 +110,14 @@
 {    
     if(QTapGesture *gesture = static_cast<QTapGesture *>(event->gesture(Qt::TapGesture))) {        
         if (gesture->state() == Qt::GestureFinished) {
-            emit coverFlowEvent( TAP_EVENT );
+            if(!mTimerId) {
+                mTimerId = startTimer(500);
+            }
+            else {
+                killTimer(mTimerId);
+                mTimerId = 0;
+                emit doubleTapEventReceived(gesture->position());
+            }
             event->accept(gesture);
         }
     }
@@ -535,3 +544,13 @@
 	indexChanged(index);
 
 }
+
+void GlxCoverFlow::timerEvent(QTimerEvent *event)
+{
+    if(mTimerId == event->timerId())
+    {
+        killTimer(mTimerId);
+        mTimerId = 0;
+        emit coverFlowEvent( TAP_EVENT );
+    }
+}
\ No newline at end of file
--- a/ui/views/fullscreenview/src/glxfullscreenview.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/fullscreenview/src/glxfullscreenview.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -97,9 +97,6 @@
     // to make the widget light weight in order to make
     // transition smooth 
     mCoverFlow->partiallyCreate( model, screenSize());
-	
-    setStatusBarVisible(FALSE);
-    setTitleBarVisible(FALSE);
     
     OstTraceFunctionExit0( GLXFULLSCREENVIEW_INITIALIZEVIEW_EXIT );
 }
@@ -184,7 +181,10 @@
 
     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); 
@@ -208,7 +208,7 @@
      
     if (!mTvOutWrapper){
         mTvOutWrapper = new GlxTvOutWrapper();
-        }
+    }
     OstTraceFunctionExit0( GLXFULLSCREENVIEW_ACTIVATE_EXIT );
 }
 
@@ -285,7 +285,7 @@
     if(mZoomWidget)
     {
         mZoomWidget->cleanUp();
-
+        mZoomWidget = NULL;
     }
     OstTraceFunctionExit0( GLXFULLSCREENVIEW_CLEANUP_EXIT );
 }
@@ -312,10 +312,9 @@
 	mZoomWidget->setModel(mModel);  
     mCoverFlow->setModel(mModel);
     setImageStripModel();
-    if(getSubState() == IMAGEVIEWER_S)
-        {
+    if(getSubState() == IMAGEVIEWER_S) {
         setTitle("Image Viewer");
-        }
+    }
 	else if(getSubState() == FETCHER_S){
 		setStatusBarVisible(TRUE);
         setTitleBarVisible(TRUE);
@@ -324,13 +323,12 @@
 }
 
 void GlxFullScreenView::setHdmiModel(QAbstractItemModel* model)
-    {
-    if (mTvOutWrapper)
-        mTvOutWrapper->setModel(model);
-    
-    // for the first image on screen
-    mTvOutWrapper->setImagetoHDMI();
-    }
+{
+    if (mTvOutWrapper) {
+        mTvOutWrapper->setModel(model); 
+        mTvOutWrapper->setImagetoHDMI(); // for the first image on screen
+    }    
+}
 
 void GlxFullScreenView::setModelContext()
 {
@@ -435,18 +433,20 @@
     
     QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
     if ( variant.isValid() &&  variant.canConvert<int> () && ( index.row() == variant.value<int>() ) ) {
-       OstTraceFunctionExit0( GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT );
-       if (mTvOutWrapper){
-       // for the image changed on deletion
-       mTvOutWrapper->setImagetoHDMI();
-       }
-       return;
-    }         
-    mModel->setData( index, index.row(), GlxFocusIndexRole );  
+        OstTraceFunctionExit0( GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT );
+        if (mTvOutWrapper){
+            // for the image changed on deletion
+            mTvOutWrapper->setImagetoHDMI();
+        }
+        return;
+    }
+    
+    mModel->setData( index, index.row(), GlxFocusIndexRole );
+    mModel->setData( index, index.row(), GlxVisualWindowIndex );
 	mZoomWidget->indexChanged(index.row());  
     if (mTvOutWrapper){
-    // for the image changed on swipe
-    mTvOutWrapper->setImagetoHDMI();
+        // for the image changed on swipe
+        mTvOutWrapper->setImagetoHDMI();
     }
     OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT );
 }
@@ -639,6 +639,7 @@
     if(mCoverFlow && mZoomWidget) {
 		connect(mZoomWidget,SIGNAL( pinchGestureReceived(int) ), mCoverFlow, SLOT( zoomStarted(int) ) );
 		connect(mZoomWidget,SIGNAL( zoomWidgetMovedBackground(int) ), mCoverFlow, SLOT( zoomFinished(int) ) );
+        connect(mCoverFlow,SIGNAL( doubleTapEventReceived(QPointF) ), mZoomWidget, SLOT( animateZoomIn(QPointF) ) );
 	}
 
     connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation)));
@@ -670,7 +671,6 @@
         GLX_LOG_INFO("GlxFullScreenView::removeConnection() mUiOffTimer  " );
         disconnect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi()));
     }
-
             
     if(mFlipAction) {
         disconnect(mFlipAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) );  
--- a/ui/views/gridview/inc/glxgridview.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/gridview/inc/glxgridview.h	Wed Jun 23 18:12:48 2010 +0300
@@ -71,11 +71,6 @@
 
 protected :
     QVariant  itemChange (GraphicsItemChange change, const QVariant &value) ;
-    
-    /*
-     *  To emit the signal when application goes into background or come back to foreground
-     */
-    bool eventFilter(QObject *obj, QEvent *ev);    
 
 private slots:
     void indicateLongPress(const QModelIndex& index, QPointF coords);
--- a/ui/views/gridview/src/glxgridview.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/gridview/src/glxgridview.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -30,7 +30,6 @@
 #include <hblabel.h>
 #include <QString>
 #include <hbframeitem.h>
-#include <QCoreApplication>
 
 //User Includes
 #include "glxviewids.h"
@@ -39,19 +38,16 @@
 #include "glxcommandhandlers.hrh"
 #include "glxicondefs.h"
 #include "glxlocalisationstrings.h"
-#include "glxlog.h"
-#include "glxtracer.h"
-
 
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "glxgridviewTraces.h"
 #endif
 
-GlxGridView::GlxGridView(HbMainWindow *window) 
-    : GlxView ( GLX_GRIDVIEW_ID ), 
-      mWindow(window), 
-      mModel ( NULL), 
+GlxGridView::GlxGridView(HbMainWindow *window)
+    : GlxView ( GLX_GRIDVIEW_ID ),
+      mWindow(window),
+      mModel ( NULL),
       mWidget(NULL),
       mSelectionModel(NULL),
       mModelWrapper(NULL),
@@ -87,14 +83,14 @@
     loadGridView();
 	connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationchanged(Qt::Orientation)),Qt::UniqueConnection);
     if(mCountItem == NULL) {
-        mCountItem = new HbLabel(this);        
+        mCountItem = new HbLabel(this);
         HbFrameItem *frame = new HbFrameItem(this); //graphics for mCountItem
         frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
         frame->graphicsItem()->setOpacity(1);
         mCountItem->setBackgroundItem(frame->graphicsItem(),-1);
+        mCountItem->hide();
     }
-    QCoreApplication::instance()->installEventFilter(this);
     OstTraceFunctionExit0( GLXGRIDVIEW_ACTIVATE_EXIT );
 }
 
@@ -104,7 +100,7 @@
     mScrolling = FALSE;
     if (mUiOnButton){
         mUiOnButton->hide();
-    }    
+    }
     if(mIconItem) {
         mIconItem->hide();
         mIconItem->resetTransform();
@@ -123,7 +119,6 @@
     if(mCameraButton) {
         mCameraButton->hide();
     }
-    QCoreApplication::instance()->removeEventFilter(this);
     disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationchanged(Qt::Orientation)));
     OstTraceFunctionExit0( GLXGRIDVIEW_DEACTIVATE_EXIT );
 }
@@ -171,7 +166,7 @@
             mWidget->setDefaultImage(variantimage.value<QImage>());
             }
         mModelWrapper->setModel(mModel);
-        mWidget->setModel(mModelWrapper);  
+        mWidget->setModel(mModelWrapper);
         if(!mSelectionModel)
             {
             mSelectionModel = new QItemSelectionModel(mModelWrapper, this);
@@ -196,10 +191,10 @@
         }
 }
 
-void GlxGridView::addToolBar( HbToolBar *toolBar ) 
+void GlxGridView::addToolBar( HbToolBar *toolBar )
 {
-    OstTraceFunctionEntry0( GLXGRIDVIEW_ADDTOOLBAR_ENTRY ); 
-    setToolBar(toolBar);  
+    OstTraceFunctionEntry0( GLXGRIDVIEW_ADDTOOLBAR_ENTRY );
+    setToolBar(toolBar);
     hideorshowitems(mWindow->orientation());
     OstTraceFunctionExit0( GLXGRIDVIEW_ADDTOOLBAR_EXIT );
 }
@@ -209,7 +204,7 @@
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ENABLEMARKING, "GlxGridView::enableMarking" );
     mWidget->setSelectionMode(HgWidget::MultiSelection);
     if (mMainLabel == NULL) {
-        mMainLabel = new HbLabel("Select Photos", this);        
+        mMainLabel = new HbLabel("Select Photos", this);
         HbFrameItem *frame1 = new HbFrameItem(this);    //graphics for mMainLabel
         frame1->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame1->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -217,7 +212,7 @@
         mMainLabel->setBackgroundItem(frame1->graphicsItem(),-1);
     }
     if (mMarkCheckBox == NULL) {
-        mMarkCheckBox = new HbCheckBox(GLX_OPTION_MARK_ALL, this);        
+        mMarkCheckBox = new HbCheckBox(GLX_OPTION_MARK_ALL, this);
         HbFrameItem *frame2 = new HbFrameItem(this);    //graphics for mMarkCheckBox
         frame2->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame2->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -225,7 +220,7 @@
         mMarkCheckBox->setBackgroundItem(frame2->graphicsItem(),-1);
     }
     if (mCountLabel == NULL) {
-        mCountLabel = new HbLabel(this);        
+        mCountLabel = new HbLabel(this);
         HbFrameItem *frame3 = new HbFrameItem(this);    //graphics for mCountLabel
         frame3->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame3->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -240,7 +235,7 @@
 
 }
 
-void GlxGridView::disableMarking() 
+void GlxGridView::disableMarking()
 {
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_DISABLEMARKING, "GlxGridView::disableMarking" );
     mWidget->setSelectionMode(HgWidget::NoSelection);
@@ -295,7 +290,11 @@
             }
             if(isItemVisible(Hb::TitleBarItem)) {
                 QString text;
-                if (getSubState() == ALL_ITEM_S) {
+                if(XQServiceUtil::isService())
+                    {
+                    showAlbumTitle(GLX_FETCHER_TITLE);
+                    }
+                else if (getSubState() == ALL_ITEM_S) {
 					if (mAlbumName) {
                     	mAlbumName->hide();
 					}
@@ -337,14 +336,17 @@
                 if (mAlbumName) {
                     mAlbumName->hide();
                 }
-                
-                showNoImageString();            
-                
-                if (getSubState() == ALBUM_ITEM_S) {                
+
+                showNoImageString();
+
+                if (getSubState() == ALBUM_ITEM_S) {
                     QVariant variant = mModel->data(mModel->index(0,0),GlxViewTitle);
                     if (variant.toString() != NULL) {
                         showAlbumTitle(variant.toString());
                     }
+				}	
+                else if(XQServiceUtil::isService()){
+                    showAlbumTitle(GLX_FETCHER_TITLE);
                 }
             }
         }
@@ -358,7 +360,7 @@
     QSize screenSize = ( mWindow->orientation() == Qt::Vertical ) ? QSize( deviceSize.width(), deviceSize.height() )
                                                                    : QSize( deviceSize.height(), deviceSize.width() )  ;
     if(mAlbumName == NULL) {
-        mAlbumName = new HbLabel(this);            
+        mAlbumName = new HbLabel(this);
         HbFrameItem *frame = new HbFrameItem(this); //graphics for mAlbumName
         frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
         frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
@@ -366,23 +368,32 @@
         mAlbumName->setBackgroundItem(frame->graphicsItem(),-1);
     }
     
-    if(count && isItemVisible(Hb::TitleBarItem)) {        
-        mAlbumName->setGeometry(QRectF(0,0,screenSize.width()/2,deviceSize.height()/24));
-        QString text = QString(aTitle);
-        mAlbumName->setPlainText( text );
-        mAlbumName->show();
-        mCountItem->setGeometry(QRectF(screenSize.width()/2,0,screenSize.width()/2,deviceSize.height()/24));
-        text = QString("(%1)").arg(count);
-        mCountItem->setPlainText( text );
-        mCountItem->setAlignment(Qt::AlignRight);
-        mCountItem->show();
-    }    
-    else if((!count) && isItemVisible(Hb::TitleBarItem)) {
+	//If fetcher service set only title text
+	if((XQServiceUtil::isService() ) && isItemVisible(Hb::TitleBarItem)) {
         mAlbumName->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24));
         QString text = QString(aTitle);
         mAlbumName->setPlainText( text );
         mAlbumName->show();
     }
+	else{ //handle album tiltle and count display logic here
+	    if( count && isItemVisible(Hb::TitleBarItem)) {        
+	        mAlbumName->setGeometry(QRectF(0,0,screenSize.width()/2,deviceSize.height()/24));
+	        QString text = QString(aTitle);
+	        mAlbumName->setPlainText( text );
+	        mAlbumName->show();
+	        mCountItem->setGeometry(QRectF(screenSize.width()/2,0,screenSize.width()/2,deviceSize.height()/24));
+	        text = QString("(%1)").arg(count);
+	        mCountItem->setPlainText( text );
+	        mCountItem->setAlignment(Qt::AlignRight);
+	        mCountItem->show();
+	    }    
+	    else if((!count) && isItemVisible(Hb::TitleBarItem)) {
+	        mAlbumName->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24));
+	        QString text = QString(aTitle);
+	        mAlbumName->setPlainText( text );
+	        mAlbumName->show();
+	    }
+	}
 }
 
 void GlxGridView::showNoImageString()
@@ -396,8 +407,13 @@
         style()->parameter("hb-param-widget-chrome-height", chromeHeight);
         midHeight -= chromeHeight;
     }
-    if (mZeroItemLabel == NULL) {                
-        mZeroItemLabel = new HbLabel("(No Images)\n To capture images Open", this);
+    if (mZeroItemLabel == NULL) {
+        QString displayText(GLX_GRID_NO_IMAGE); 
+        if(!XQServiceUtil::isService())
+            {
+            displayText.append(GLX_GRID_OPEN_CAMERA);
+            }
+        mZeroItemLabel = new HbLabel(displayText, this);
     }
     mZeroItemLabel->setGeometry(QRectF(0, midHeight - deviceSize.height()/16, screenSize.width(), 3*deviceSize.height()/32));
     mZeroItemLabel->setAlignment(Qt::AlignHCenter);
@@ -405,10 +421,14 @@
     if (mCameraButton == NULL) {
         mCameraButton = new HbPushButton(this);
         mCameraButton->setIcon(HbIcon(GLXICON_CAMERA));
+        mCameraButton->hide();
         connect(mCameraButton, SIGNAL(clicked(bool)), this, SLOT(cameraButtonClicked(bool)));
     }
-    mCameraButton->setGeometry(QRectF(screenSize.width()/2 - 3*deviceSize.height()/64, midHeight + deviceSize.height()/32, deviceSize.height()/32, deviceSize.height()/32));
-    mCameraButton->show();
+    if(!XQServiceUtil::isService())
+        {
+        mCameraButton->setGeometry(QRectF(screenSize.width()/2 - 3*deviceSize.height()/64, midHeight + deviceSize.height()/32, deviceSize.height()/32, deviceSize.height()/32));
+        mCameraButton->show();
+        }
 }
 
 void GlxGridView::populated()
@@ -416,20 +436,6 @@
     showItemCount();
 }
 
-bool GlxGridView::eventFilter(QObject *obj, QEvent *event)
-{
-    TRACER("GlxGridView::eventFilter() ");
-    GLX_LOG_INFO1("GlxGridView::eventFilter() %d event type", event->type());
-    
-    if ( event->type() ==  QEvent::ApplicationActivate ) {
-        emit actionTriggered( EGlxCmdAppForeground );
-    }
-    if ( event->type() ==  QEvent::ApplicationDeactivate ) {
-        emit actionTriggered( EGlxCmdAppBackground );
-    }
-    return HbView::eventFilter(obj,event);
-}
-
 void GlxGridView::handleUserAction(qint32 commandId)
 {
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::handleUserAction" );
@@ -440,11 +446,11 @@
 
         case EGlxCmdUnMarkAll :
             mWidget->clearSelection();
-            break;        
+            break;
 
         default :
             break;
-    }    
+    }
 }
 
 QItemSelectionModel * GlxGridView::getSelectionModel()
@@ -464,12 +470,12 @@
 
     if ( transitionEffect == GRID_TO_FULLSCREEN )
         {
-        QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
-        if ( variant.isValid() &&  variant.canConvert<int> () ) 
+        QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );
+        if ( variant.isValid() &&  variant.canConvert<int> () )
             {
-            selIndex = variant.value<int>();  
-            } 
-        else 
+            selIndex = variant.value<int>();
+            }
+        else
             {
             return mWidget;
             }
@@ -493,7 +499,7 @@
             mIconItem->setPos(itemRect.topLeft());
             mIconItem->setZValue(mIconItem->zValue() + 20);
             mIconItem->show();
-            return mIconItem;   
+            return mIconItem;
             }
         else
             {
@@ -505,7 +511,7 @@
         return mWidget;
     }
     OstTraceFunctionExit0( GLXGRIDVIEW_GETANIMATIONITEM_EXIT );
-    return NULL;    
+    return NULL;
 }
 
 void GlxGridView::loadGridView()
@@ -518,8 +524,8 @@
         mWindow->viewport()->grabGesture(Qt::TapAndHoldGesture);
         mWidget = new HgGrid(orient);
         mWidget->setLongPressEnabled(true);
-        mWidget->setScrollBarPolicy(HgWidget::ScrollBarAutoHide);  
-        setWidget( mWidget );  
+        mWidget->setScrollBarPolicy(HgWidget::ScrollBarAutoHide);
+        setWidget( mWidget );
         addViewConnection();
         hideorshowitems(orient);
     }
@@ -532,24 +538,24 @@
 }
 void GlxGridView::hideorshowitems(Qt::Orientation orient)
 {
-    if (mWidget && mWidget->selectionMode() == HgWidget::NoSelection) {
-        if(orient == Qt::Horizontal)
-            {
+    if ( mWidget && mWidget->selectionMode() == HgWidget::NoSelection ) {
+        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)
-                {
+            if (mUiOnButton) {
                 mUiOnButton->show();
-                }
             }
-        else
-            {
+        }
+        else {
             showHbItems();
-            }
+        }
     }
-
-    if (mWidget && mWidget->selectionMode() == HgWidget::MultiSelection) {
+    else if (mWidget && mWidget->selectionMode() == HgWidget::MultiSelection) {
         setItemVisible(Hb::TitleBarItem, FALSE) ;
         if (mUiOnButton) {
             mUiOnButton->hide();
@@ -578,8 +584,8 @@
 {
     if(mModelWrapper && mWidget)
         {
-        QVariant variant = mModelWrapper->data( mModelWrapper->index(0,0), GlxFocusIndexRole );    
-        if ( variant.isValid() &&  variant.canConvert<int> () ) 
+        QVariant variant = mModelWrapper->data( mModelWrapper->index(0,0), GlxFocusIndexRole );
+        if ( variant.isValid() &&  variant.canConvert<int> () )
             {
             mWidget->scrollTo( mModelWrapper->index( variant.value<int>(),0) );
             mModel->setData(mModel->index(0,0),variant.value<int>(),GlxVisualWindowIndex);
@@ -587,9 +593,9 @@
         }
 }
 
-QVariant  GlxGridView::itemChange (GraphicsItemChange change, const QVariant &value) 
+QVariant  GlxGridView::itemChange (GraphicsItemChange change, const QVariant &value)
     {
-    OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ITEMCHANGE, "GlxGridView::itemChange" );    
+    OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ITEMCHANGE, "GlxGridView::itemChange" );
     static bool isEmit = true;
     if ( isEmit && change == QGraphicsItem::ItemVisibleHasChanged && value.toBool()  ) {
     emit actionTriggered( EGlxCmdSetupItem );
@@ -627,21 +633,18 @@
 void GlxGridView::itemSelected(const QModelIndex &  index)
 {
     OstTrace1( TRACE_NORMAL, GLXGRIDVIEW_ITEMSELECTED, "GlxGridView::itemSelected;index=%d", index.row() );
-    if ( mWidget->selectionMode() == HgWidget::MultiSelection )
-        { 
+    if ( mWidget->selectionMode() == HgWidget::MultiSelection ) {
         return ;
-        }    
-   if(XQServiceUtil::isService()){
+    }
+    if(XQServiceUtil::isService()){
         emit gridItemSelected(index);
         return;
-    }    
-    OstTraceEventStart0( EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START, "Fullscreen Launch Time" );    
-    if ( mModel ) 
-        {
+    }
+    OstTraceEventStart0( EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START, "Fullscreen Launch Time" );
+    if ( mModel ) {
         mModel->setData( index, index.row(), GlxFocusIndexRole );
-        }
-    setItemVisible(Hb::AllItems, FALSE);
-    emit actionTriggered( EGlxCmdFullScreenOpen ); 
+    }
+    emit actionTriggered( EGlxCmdFullScreenOpen );
     OstTraceEventStop( EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP, "Fullscreen Launch Time", EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START );
 }
 
@@ -682,7 +685,7 @@
     if (  index.row() < 0 || index.row() >= mModel->rowCount() )
         {
         return;
-        }    
+        }
     if(mModel)
         {
         mModel->setData( index, index.row(), GlxVisualWindowIndex);
@@ -722,15 +725,15 @@
 void GlxGridView::indicateLongPress(const QModelIndex& index, QPointF coords)
 {
     OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_INDICATELONGPRESS, "GlxGridView::indicateLongPress" );
-     
+
      if ( mWidget->selectionMode() == HgWidget::MultiSelection )
-         { 
+         {
          return;
-         }     
-     if ( mModel ) 
+         }
+     if ( mModel )
          {
          mModel->setData( index, index.row(), GlxFocusIndexRole );
-         }     
+         }
      emit itemSpecificMenuTriggered(viewId(),coords);
 }
 
--- a/ui/views/listview/src/glxlistview.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/listview/src/glxlistview.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -43,7 +43,6 @@
 {
     qDebug("GlxListView::GlxListView()");
     mDocLoader = new HbDocumentLoader();
-    setContentFullScreen( true );
 }
 
 void GlxListView::activate()
@@ -137,13 +136,13 @@
             mView = static_cast<HbView*>(mDocLoader->findWidget(QString(GLX_LISTVIEW_VIEW)));
             mListView = static_cast<HbListView*>(mDocLoader->findWidget(QString(GLX_LISTVIEW_LIST)));
 
-            if(mListView) { 
+            if( mListView ) { 
                 //sets the widget
                 setWidget((QGraphicsWidget*) mView);
+                HbListViewItem *prototype = mListView->listItemPrototype();
+                prototype->setStretchingStyle(HbListViewItem::StretchLandscape);
             }
         }  
-        HbListViewItem *prototype = mListView->listItemPrototype();
-        prototype->setStretchingStyle(HbListViewItem::StretchLandscape);
     }
 }
 
--- a/ui/views/slideshowview/src/glxslideshowwidget.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/slideshowview/src/glxslideshowwidget.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -72,8 +72,9 @@
     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 );
     }
 
     mSlideTimer = new QTimer();
@@ -170,7 +171,7 @@
     GLX_LOG_INFO3("GlxSlideShowWidget::triggeredEffect() image selected index %d array index %d index %d", mSelIndex, mItemIndex, index);  
     mEffectEngine->runEffect( mItemList, QString("HbIconItem") );
     emit slideShowEvent( EFFECT_STARTED );
-    }
+}
 
 void GlxSlideShowWidget::effectFinshed()
 {
@@ -182,6 +183,7 @@
     mSelIndex = ( ++mSelIndex ) % rowCount;
     mItemIndex = ( ++mItemIndex ) % NBR_ITEM;
     mModel->setData( mModel->index(mSelIndex, 0), mSelIndex, GlxFocusIndexRole );
+    mModel->setData( mModel->index(mSelIndex, 0), mSelIndex, GlxVisualWindowIndex );
     setIconItems( MOVE_FORWARD );
   
     GLX_LOG_INFO2("GlxSlideShowWidget::effectFinshed() after image selected index %d array index %d ", mSelIndex, mItemIndex);
@@ -315,6 +317,7 @@
     mSelIndex = ( ++mSelIndex ) % rowCount;
     mItemIndex = ( ++mItemIndex ) % NBR_ITEM;
     mModel->setData( mModel->index(mSelIndex, 0), mSelIndex, GlxFocusIndexRole );
+    mModel->setData( mModel->index(mSelIndex, 0), mSelIndex, GlxVisualWindowIndex );
 
     setIconItems( MOVE_FORWARD );
     startSlideShow();
@@ -331,8 +334,9 @@
     mSelIndex = mSelIndex ? --mSelIndex : rowCount - 1;
     mItemIndex = mItemIndex ? mItemIndex - 1 : NBR_ITEM - 1;
     mModel->setData( mModel->index(mSelIndex, 0), mSelIndex, GlxFocusIndexRole );
+    mModel->setData( mModel->index(mSelIndex, 0), mSelIndex, GlxVisualWindowIndex );
 
-    setIconItems( MOVE_BACKWARD);
+    setIconItems( MOVE_BACKWARD );
     startSlideShow();
     emit indexchanged(); // on right swipe
 } 
--- a/ui/views/views.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/views/views.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -21,6 +21,7 @@
 CONFIG += hb
 
 LIBS += -lglxfavmediamodel.dll \
+        -lglxmediamodel.dll \
         -lglximagedecoderwrapper.dll \
         -lglxloggerqt.dll \
         -lshareui.dll \
@@ -31,14 +32,19 @@
         -lganeswidgets.dll \
         -lglxmodelwrapper.dll \
         -lglxviewutilities.dll \
-        -lglxzoomwidget.dll
+	 -lglxzoomwidget.dll \
+        -ldetailsnamelabel.dll \
+        -ldetailsnamelabelplugin.dll \
+        -ldetailsdescriptionedit.dll \
+        -ldetailsdescriptioneditplugin.dll
 
 DEFINES += BUILD_GLXVIEWS
 
 INCLUDEPATH += . ../inc \
           ../../inc \
-	  ../widgets/glxzoomwidget/inc \
-          ../uiengine/model/favmediamodel/inc \
+  	  ../widgets/glxzoomwidget/inc \
+          ../uiengine/model/mediamodel/inc \
+	  ../uiengine/model/favmediamodel/inc \
           ../uiengine/medialistwrapper/inc \
           ../viewbase/inc \
           ../../commonutilities/imagedecoderwrapper/inc \
@@ -48,7 +54,9 @@
           ../uiengine/model/modelwrapper/inc \
           ../viewutilities/effectengine/inc \
           ../viewutilities/settingutility/inc \
-          /epoc32/include/mw/hgwidgets
+          /epoc32/include/mw/hgwidgets \
+          ../detailscustomwidget/detailsnamelabel/inc \
+          ../detailscustomwidget/detailsdescriptionedit/inc
 
 symbian: { 
 TARGET.UID3 = 0x200009EF
@@ -62,8 +70,6 @@
            fullscreenview/inc/glxcoverflow.h \
            fullscreenview/inc/glxfullscreenview.h \
            detailsview/inc/glxdetailsview.h  \
-           detailsview/inc/glxdetailscustomwidgets.h  \
-           detailsview/inc/glxdetailscustomicon.h \
            gridview/inc/glxgridview.h \
            slideshowsettingsview/inc/glxslideshowsettingsview.h \
            listview/inc/glxlistview.h \
@@ -76,8 +82,6 @@
            fullscreenview/src/glxcoverflow.cpp \
            fullscreenview/src/glxfullscreenview.cpp \
 	   detailsview/src/glxdetailsview.cpp \
-           detailsview/src/glxdetailscustomwidgets.cpp \
-           detailsview/src/glxdetailscustomicon.cpp \
            gridview/src/glxgridview.cpp \
            slideshowsettingsview/src/glxslideshowsettingsview.cpp \
            listview/src/glxlistview.cpp \
@@ -86,4 +90,13 @@
 	   docloaders/src/glxviewdocloader.cpp \
            viewsfactory/src/glxviewsfactory.cpp
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT 
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT 
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxviews.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxviews.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/viewutilities/effectengine/src/glxeffectengine.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewutilities/effectengine/src/glxeffectengine.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -253,13 +253,16 @@
 {	
     qDebug("GlxSlideShowEffectEngine::cleanTrnastionEfffect()");
     
-    foreach( GlxTransitionEffectSetting *list, mTransitionEffectList) {
+    QHashIterator<GlxEffect, GlxTransitionEffectSetting *> iter( mTransitionEffectList );
+
+    while ( iter.hasNext() ) {
+        iter.next();
+        GlxTransitionEffectSetting *list =  iter.value();
         for ( int i = 0; i < list->count(); ++i ) {
             HbEffect::remove( list->itemType().at(i), list->effectFileList().at(i), list->eventType().at(i)) ;
         }
-        delete list;
+        delete list;        
     }
-    mTransitionEffectList.clear();	
-    
+    mTransitionEffectList.clear();
 }
 
--- a/ui/viewutilities/viewutilities.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/viewutilities/viewutilities.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -57,4 +57,13 @@
            effectengine/src/glxtransitioneffect.cpp \
            effectengine/src/glxeffectengine.cpp
 
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT 
\ No newline at end of file
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT 
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxviewutilities.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxviewutilities.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/widgets/bwins/glxzoomwidgetu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/widgets/bwins/glxzoomwidgetu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -36,4 +36,5 @@
 	?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 *)
 
--- a/ui/widgets/eabi/glxzoomwidgetu.def	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/widgets/eabi/glxzoomwidgetu.def	Wed Jun 23 18:12:48 2010 +0300
@@ -42,4 +42,5 @@
 	_ZThn8_N13GlxZoomWidget16sceneEventFilterEP13QGraphicsItemP6QEvent @ 41 NONAME
 	_ZThn8_N13GlxZoomWidgetD0Ev @ 42 NONAME
 	_ZThn8_N13GlxZoomWidgetD1Ev @ 43 NONAME
+	_ZN13GlxZoomWidget10timerEventEP11QTimerEvent @ 44 NONAME
 
--- a/ui/widgets/glxzoomwidget/glxzoomwidget.pro	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/widgets/glxzoomwidget/glxzoomwidget.pro	Wed Jun 23 18:12:48 2010 +0300
@@ -41,8 +41,18 @@
 }
 
 exportfile = "inc/glxzoomwidget.h APP_LAYER_PLATFORM_EXPORT_PATH(glxzoomwidget.h)"
+exportfile += "inc/glxzoomwidget_global.h APP_LAYER_PLATFORM_EXPORT_PATH(glxzoomwidget_global.h)"
 BLD_INF_RULES.prj_exports += exportfile
 
 # Input
 HEADERS += inc/glxzoomwidget.h inc/glxzoomwidget_global.h
 SOURCES += src/glxzoomwidget.cpp
+
+defBlock = \      
+"$${LITERAL_HASH}if defined(EABI)" \
+"DEFFILE  ../eabi/glxzoomwidget.def" \
+	 "$${LITERAL_HASH}else" \
+	 "DEFFILE  ../bwins/glxzoomwidget.def" \
+             "$${LITERAL_HASH}endif"
+	
+MMP_RULES += defBlock
--- a/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h	Wed Jun 23 18:12:48 2010 +0300
@@ -67,6 +67,7 @@
     protected:
     bool sceneEvent(QEvent *event);
     bool sceneEventFilter(QGraphicsItem *watched,QEvent *event);
+    void timerEvent(QTimerEvent *event);
     protected slots:
     void dataChanged(QModelIndex startIndex, QModelIndex endIndex);
 
@@ -130,6 +131,7 @@
     bool mPinchGestureOngoing; 
     //to check if decoded image is available
     bool mDecodedImageAvailable;
+    int mTimerId;
 
 };
 #endif  //GLXZOOMWIDGET_H
--- a/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp	Fri Jun 11 13:38:23 2010 +0300
+++ b/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp	Wed Jun 23 18:12:48 2010 +0300
@@ -23,9 +23,10 @@
 #include "glxmodelparm.h"
 #include "glxzoomwidget.h"
 
-GlxZoomWidget::GlxZoomWidget(QGraphicsItem *parent):HbScrollArea(parent), mModel(NULL), mMinZValue(MINZVALUE), mMaxZValue(MAXZVALUE), mImageDecodeRequestSend(false), mPinchGestureOngoing(false), mDecodedImageAvailable(false)
+GlxZoomWidget::GlxZoomWidget(QGraphicsItem *parent):HbScrollArea(parent), mModel(NULL), mMinZValue(MINZVALUE), mMaxZValue(MAXZVALUE), mImageDecodeRequestSend(false), mPinchGestureOngoing(false), mDecodedImageAvailable(false), mTimerId(0)
 {
     grabGesture(Qt::PinchGesture);
+    grabGesture(Qt::TapGesture);
     setAcceptTouchEvents(true) ;
     setFrictionEnabled(false);
     setZValue(mMinZValue);
@@ -45,7 +46,7 @@
     mImageDecoder = new GlxImageDecoderWrapper;
 
 	//inititalizing the timer for animation
-	m_AnimTimeLine = new QTimeLine(1000, this);
+	m_AnimTimeLine = new QTimeLine(500, this);
 	m_AnimTimeLine->setFrameRange(0, 100);
 	connect(m_AnimTimeLine, SIGNAL(frameChanged(int)), this, SLOT(animationFrameChanged(int)));
 	connect(m_AnimTimeLine, SIGNAL(finished()), this, SLOT(animationTimeLineFinished()));
@@ -96,7 +97,10 @@
 
 void GlxZoomWidget::cleanUp()
 {
-//    disconnect( mModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );
+    if(mModel) {
+        disconnect( mModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ), this, SLOT( dataChanged(QModelIndex,QModelIndex) ) );
+        mModel = NULL;
+    }
     if(mImageDecoder) {
         mImageDecoder->resetDecoder();
     }
@@ -148,6 +152,20 @@
 
 bool GlxZoomWidget::executeGestureEvent(QGraphicsItem *source,QGestureEvent *event)
 {
+         if(QTapGesture *gesture = static_cast<QTapGesture *>(event->gesture(Qt::TapGesture))) {        
+            if (gesture->state() == Qt::GestureFinished) {
+                if(!mTimerId) {
+                    mTimerId = startTimer(500);
+                }
+            else {
+                killTimer(mTimerId);
+                mTimerId = 0;
+                animateZoomOut(gesture->position());
+            }
+        }
+        event->accept(gesture);
+        return true;
+    }
      if (QGesture *pinch = event->gesture(Qt::PinchGesture))  {
        QPinchGesture* pinchG = static_cast<QPinchGesture *>(pinch);
        QPinchGesture::ChangeFlags changeFlags = pinchG->changeFlags();
@@ -354,6 +372,13 @@
         //retreiveFocusedImage();
         if(!mDecodedImageAvailable)  {
         QPixmap targetPixmap(getFocusedImage());
+        mItemSize = targetPixmap.size();
+        mMaxScaleSize = mItemSize;
+        mMaxScaleSize.scale(mWindowSize*13, Qt::KeepAspectRatio);
+        mMaxScaleDecSize = mItemSize;
+        mMaxScaleDecSize.scale(mWindowSize*7, Qt::KeepAspectRatio);
+        mMinScaleSize = mItemSize* 0.7;
+        mMinDecScaleSize = mItemSize;
         mZoomItem->setPixmap(targetPixmap);
         finalizeWidgetTransform();
         }
@@ -439,7 +464,7 @@
 	m_AnimRefPoint = animRefPoint;
     QSizeF requiredSize = mItemSize;
     requiredSize.scale(mWindowSize*3.5, Qt::KeepAspectRatio);
-	m_FinalAnimatedScaleFactor = requiredSize.width()*3.5/mMinScaleSize.width();
+	m_FinalAnimatedScaleFactor = requiredSize.width()/mMinDecScaleSize.width();
 	m_AnimTimeLine->setDirection(QTimeLine::Forward);
 	m_AnimTimeLine->start();
   //  zoomImage(5, m_AnimRefPoint);
@@ -448,7 +473,7 @@
 void GlxZoomWidget::animateZoomOut(QPointF animRefPoint)
 {
 	m_AnimRefPoint = animRefPoint;
-	m_FinalAnimatedScaleFactor = mMinScaleSize.width()/mCurrentSize.width();
+	m_FinalAnimatedScaleFactor = mMinDecScaleSize.width()/mCurrentSize.width();
 	//m_AnimTimeLine->setDirection(QTimeLine::Backward);
 	m_AnimTimeLine->start();
 }
@@ -456,12 +481,10 @@
 {
 qreal scaleFactor = 1;
 	if(m_FinalAnimatedScaleFactor > 1) {
-	//	qreal scaleFactor = (100+ ((m_FinalAnimatedScaleFactor*100 - 100)/100)*frameNumber)/100;
-		scaleFactor = 1.0 + (((m_FinalAnimatedScaleFactor - 1)/100)*frameNumber);
+        scaleFactor = (1.0 + (((m_FinalAnimatedScaleFactor - 1)/100)*frameNumber))/(mCurrentSize.width()/mMinDecScaleSize.width());
 	}
 	if(m_FinalAnimatedScaleFactor < 1) {
-		scaleFactor = (m_FinalAnimatedScaleFactor*100+ ((100 - m_FinalAnimatedScaleFactor*100 )/100)*frameNumber)/100;
-	//	qreal scaleFactor = 1.0 + (((m_FinalAnimatedScaleFactor - 1)/100)*frameNumber)
+        scaleFactor = (m_FinalAnimatedScaleFactor+ (((1 - m_FinalAnimatedScaleFactor)/100)*frameNumber))/(mCurrentSize.width()/mMinDecScaleSize.width());
 	}
 
 	zoomImage(scaleFactor, m_AnimRefPoint);
@@ -480,3 +503,12 @@
            }
 }
 
+
+void GlxZoomWidget::timerEvent(QTimerEvent *event)
+{
+    if(mTimerId == event->timerId())
+    {
+        killTimer(mTimerId);
+        mTimerId = 0;
+    }
+}