Revision: 201033
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 02 Sep 2010 20:26:45 +0300
changeset 61 743eb0b9959e
parent 55 fb37077c270f
child 67 199e6e1e0b54
Revision: 201033 Kit: 201035
data/rotatefslandscape.fxml
data/rotatefsprotrait.fxml
engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp
engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp
main/glxapplication.cpp
main/glxapplication.h
main/main.cpp
ui/commandhandlers/bwins/glxcommoncommandhandlersu.def
ui/commandhandlers/commoncommandhandlers/inc/glxcommondialogs.h
ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp
ui/commandhandlers/commoncommandhandlers/src/glxcommondialogs.cpp
ui/commandhandlers/eabi/glxcommoncommandhandlersu.def
ui/detailscustomwidget/detailscustomwidgets/glxdetailstextedit.cpp
ui/inc/glxmodelroles.h
ui/inc/glxuistd.h
ui/uiengine/model/mediamodel/inc/glxmediamodel.h
ui/uiengine/model/mediamodel/src/glxmediamodel.cpp
ui/uiengine/model/modelwrapper/inc/glxmodelwrapper.h
ui/uiengine/model/modelwrapper/src/glxmodelwrapper.cpp
ui/viewmanagement/bwins/glxviewmanageru.def
ui/viewmanagement/eabi/glxviewmanageru.def
ui/viewmanagement/viewmanager/inc/glxviewmanager.h
ui/viewmanagement/viewmanager/src/glxviewmanager.cpp
ui/views/detailsview/src/glxdetailsview.cpp
ui/views/fullscreenview/inc/glxcoverflow.h
ui/views/fullscreenview/inc/glxfullscreenview.h
ui/views/fullscreenview/src/glxcoverflow.cpp
ui/views/fullscreenview/src/glxfullscreenview.cpp
ui/views/gridview/src/glxgridview.cpp
ui/views/slideshowview/inc/glxslideshowwidget.h
ui/views/slideshowview/src/glxslideshowwidget.cpp
ui/widgets/glxzoomwidget/inc/glxzoomwidget.h
ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp
--- a/data/rotatefslandscape.fxml	Wed Aug 18 09:48:53 2010 +0300
+++ b/data/rotatefslandscape.fxml	Thu Sep 02 20:26:45 2010 +0300
@@ -9,8 +9,8 @@
 			<keyframe at="0.0">-60</keyframe>
 			<keyframe at="1.0">0</keyframe>
 		</param>
-		<param name="rotation_origin_x" ref="visual.width">0.5</param>
-		<param name="rotation_origin_y" ref="visual.height">0.5</param>
+		<param name="rotation_origin_x" ref="screen.width">0.5</param>
+		<param name="rotation_origin_y" ref="screen.height">0.5</param>
 		
 	</visual>
 	
--- a/data/rotatefsprotrait.fxml	Wed Aug 18 09:48:53 2010 +0300
+++ b/data/rotatefsprotrait.fxml	Thu Sep 02 20:26:45 2010 +0300
@@ -9,8 +9,8 @@
 			<keyframe at="0.0">60</keyframe>
 			<keyframe at="1.0">0</keyframe>
 		</param>
-		<param name="rotation_origin_x" ref="visual.width">0.5</param>
-		<param name="rotation_origin_y" ref="visual.height">0.5</param>
+		<param name="rotation_origin_x" ref="screen.width">0.5</param>
+		<param name="rotation_origin_y" ref="screen.height">0.5</param>
 		
 	</visual>
 </layers>
\ No newline at end of file
--- a/engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -47,6 +47,8 @@
 
 // CONSTANTS
 const TGlxThumbnailRequest::TPriorityMode KGlxDefaultThumbnailPriority = TGlxThumbnailRequest::EPrioritizeQuality;
+const TInt KFavoriteAlbumId = 1 ;
+const TInt KCapturedAlbumId = 2 ;
 
 // ============================ LOCAL FUNCTIONS ==============================
     
@@ -447,7 +449,18 @@
 			for (TInt i = 0; i < selectedCount; i++)
 				{
 				const TMPXItemId& itemId = aPath.IdOfIndex(selection[i]);
-				mediaIdArray.AppendL(TGlxMediaId(itemId));
+				if(itemId.operator ==(KCapturedAlbumId))//captured
+				    {
+                    mediaIdArray.Insert(TGlxMediaId(itemId),0);
+				    }
+				else if(itemId.operator ==(KFavoriteAlbumId))//favourites
+				    {
+                    mediaIdArray.Insert(TGlxMediaId(itemId),0);
+				    }
+				else
+				    {
+                    mediaIdArray.AppendL(TGlxMediaId(itemId));
+				    }
 				}
 			}
 		else // No items are selected; We will use the current item
--- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -67,6 +67,9 @@
 #include "glxdatasourcemds.hrh"
 #include "glxdatasourcemdsutility.h"
 
+// CONSTANTS
+const TInt KGlxCameraAlbumPromotionPosition = 0;
+const TInt KGlxfavoritesAlbumPromotionPosition = 1;
 
 _LIT(KPropertyDefNameCreationDate, "CreationDate");
 
@@ -307,14 +310,39 @@
 	if( aFilterProperties.iPromoteSystemItems )
 		{
 		RArray<TGlxMediaId> list = aFilteredList;
-		/*
-		TInt favoritesIndex = list.Find(DataSource()->FavoritesId());
-		if( KErrNotFound != favoritesIndex )
+		// Here we don't have to push list in cleanup stack as caller function,
+		// CGlxDataSourceTaskMdeIdList::DoHandleListQueryCompletedL is already
+		// doing that.
+		TInt cameraAlbumIndex = list.Find(DataSource()->CameraAlbumId());
+		
+		// If Camera Index is not KErrNotFound, 1st Album should be Captured and 
+		// 2nd should be Favourites(In Albums List View)		
+		
+		if( KErrNotFound != cameraAlbumIndex )
+			{	
+			list.Remove(cameraAlbumIndex);	
+			list.InsertL(DataSource()->CameraAlbumId(), KGlxCameraAlbumPromotionPosition);    			
+
+			TInt favoritesIndex = list.Find(DataSource()->FavoritesId());			
+			if( KErrNotFound != favoritesIndex )
+				{
+				list.Remove(favoritesIndex);
+				list.InsertL(DataSource()->FavoritesId(),KGlxfavoritesAlbumPromotionPosition);		
+				} 
+			}
+		else
 			{
-			list.Remove(favoritesIndex);
-			list.Insert(DataSource()->FavoritesId(), KGlxAlbumPromotionPosition);
+			// In Selection popup, 1st item should be Favourites(from grid view/fullscreen view
+			// and Camera post captured mode) 
+			
+			TInt favoritesIndex = list.Find(DataSource()->FavoritesId());
+			if( KErrNotFound != favoritesIndex )
+				{
+				list.Remove(favoritesIndex);
+				list.InsertL(DataSource()->FavoritesId(),KGlxfavoritesAlbumPromotionPosition - 1);		
+				} 			
 			}
-		*/			
+					
 		DoPostFilterComplete(list, KErrNone);
 		}
 	else
--- a/main/glxapplication.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/main/glxapplication.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -18,6 +18,7 @@
 //include
 #include <qsymbianevent.h>
 #include <oommonitorplugin.h>
+#include <hbinstance.h>
 #include <w32std.h>
 
 //userinclude
@@ -45,6 +46,21 @@
     return HbApplication::symbianEventFilter( aQSEvent );
 }
 
+void GlxApplication::initMattiAutomation()
+{
+    //For Matti Automation 
+    //Monitor the first view ready signal to emit the application ready signal.
+    HbMainWindow *window = hbInstance->allMainWindows().first();
+    connect( window, SIGNAL( viewReady() ), this, SLOT( handleAppReady() ) );    
+}
+
+void GlxApplication::handleAppReady()
+{
+    emit applicationReady();
+    HbMainWindow *window = hbInstance->allMainWindows().first();
+    disconnect( window, SIGNAL( viewReady() ), this, SLOT( handleAppReady() ) ); 
+}
+
 void GlxApplication::cleanUpCache()
 {
     qDebug("GlxApplication::cleanUpCache()");
--- a/main/glxapplication.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/main/glxapplication.h	Thu Sep 02 20:26:45 2010 +0300
@@ -22,22 +22,58 @@
 
 class QSymbianEvent;
 
+/**
+ * Class Description
+ * Custom Glx appliaction class to monitor the low memory situation 
+ */
+
 class GlxApplication: public HbApplication
 {
-
+    Q_OBJECT
 public:
 
+    /**
+     * Constructor
+     */
     GlxApplication( int &argc, char *argv[],
                         Hb::ApplicationFlags flags = Hb::DefaultApplicationFlags );
     
+    /**
+     * Constructor
+     */
     GlxApplication( QApplication::QS60MainApplicationFactory factory,
                         int &argc, 
                         char *argv[],
                         Hb::ApplicationFlags flags = Hb::DefaultApplicationFlags );
     
+    /**
+     * symbianEventFilter()
+     * /// From HbApplication
+     */
     bool symbianEventFilter( const QSymbianEvent *aQSEvent );
     
+    /**
+     * initMattiAutomation() - To monitor the application ready event for matti tool.
+     */
+    void initMattiAutomation();
+    
+signals :
+    /**
+     * applicationReady() - To emit the application ready signal for matti tool.
+     */
+    void applicationReady();
+    
+public slots:
+    /**
+     * handleAppReady() - Call back function to get the notification of application ready.
+     * It is also used for matti tool.
+     */
+    void handleAppReady();
+    
 private :
+    /**
+     * cleanUpCache() - To clear the cache in the low memory situation.
+     */
     void cleanUpCache();
 
 };
--- a/main/main.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/main/main.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -61,13 +61,14 @@
     if(!XQServiceUtil::isService()){
         HbSplashScreen::start();
         stateMgr = new GlxStateManager();
-        app.setApplicationName(GLX_TITLE);          
+        app.setApplicationName( GLX_TITLE );
         stateMgr->launchApplication();  
     }
     else {
         mainWindow = new GlxAiwServiceHandler();
         mainWindow->show();
     }
+    app.initMattiAutomation();
     OstTraceEventStop( EVENT_DUP1__MAIN_STOP, "launch", EVENT_DUP1__MAIN_START );
 
     int ret = app.exec();
--- a/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def	Thu Sep 02 20:26:45 2010 +0300
@@ -73,4 +73,17 @@
 	??1GlxCommandHandlerDelete@@UAE@XZ @ 72 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void)
 	?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 73 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const
 	??0GlxCommandHandlerRotate@@QAE@XZ @ 74 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void)
+	?qt_metacast@GlxCommandHandlerEditImage@@UAEPAXPBD@Z @ 75 NONAME ; void * GlxCommandHandlerEditImage::qt_metacast(char const *)
+	?staticMetaObject@GlxCommandHandlerEditImage@@2UQMetaObject@@B @ 76 NONAME ; struct QMetaObject const GlxCommandHandlerEditImage::staticMetaObject
+	?clearMediaModel@GlxCommandHandlerEditImage@@AAEXXZ @ 77 NONAME ; void GlxCommandHandlerEditImage::clearMediaModel(void)
+	?metaObject@GlxCommandHandlerEditImage@@UBEPBUQMetaObject@@XZ @ 78 NONAME ; struct QMetaObject const * GlxCommandHandlerEditImage::metaObject(void) const
+	?handleOk@GlxCommandHandlerEditImage@@QAEXABVQVariant@@@Z @ 79 NONAME ; void GlxCommandHandlerEditImage::handleOk(class QVariant const &)
+	?getStaticMetaObject@GlxCommandHandlerEditImage@@SAABUQMetaObject@@XZ @ 80 NONAME ; struct QMetaObject const & GlxCommandHandlerEditImage::getStaticMetaObject(void)
+	?trUtf8@GlxCommandHandlerEditImage@@SA?AVQString@@PBD0@Z @ 81 NONAME ; class QString GlxCommandHandlerEditImage::trUtf8(char const *, char const *)
+	?storeItems@GlxCommandHandlerEditImage@@QAEXABVQModelIndex@@HH@Z @ 82 NONAME ; void GlxCommandHandlerEditImage::storeItems(class QModelIndex const &, int, int)
+	?tr@GlxCommandHandlerEditImage@@SA?AVQString@@PBD0H@Z @ 83 NONAME ; class QString GlxCommandHandlerEditImage::tr(char const *, char const *, int)
+	?qt_metacall@GlxCommandHandlerEditImage@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 84 NONAME ; int GlxCommandHandlerEditImage::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?handleError@GlxCommandHandlerEditImage@@QAEXHABVQString@@@Z @ 85 NONAME ; void GlxCommandHandlerEditImage::handleError(int, class QString const &)
+	?trUtf8@GlxCommandHandlerEditImage@@SA?AVQString@@PBD0H@Z @ 86 NONAME ; class QString GlxCommandHandlerEditImage::trUtf8(char const *, char const *, int)
+	?tr@GlxCommandHandlerEditImage@@SA?AVQString@@PBD0@Z @ 87 NONAME ; class QString GlxCommandHandlerEditImage::tr(char const *, char const *)
 
--- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommondialogs.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommondialogs.h	Thu Sep 02 20:26:45 2010 +0300
@@ -27,7 +27,7 @@
 {
 	Q_OBJECT    
 public:
-    GlxTextInputDialog();
+    GlxTextInputDialog(bool disableOkForEmptyText = true);
     ~GlxTextInputDialog();
     QString getText(const QString &label,const QString &text = QString(),bool *ok = 0);
 
@@ -39,6 +39,7 @@
     HbInputDialog* mDialog;
     QEventLoop *mEventLoop;
     bool mResult;
+    bool mDisableOkForEmptyText;
 };
 
 #endif // GLXCOMMONDIALOGS_H
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -47,7 +47,7 @@
     QString title(GLX_DETAILS_DESCRIPTION);
     QString mediaTitle = NULL;
     bool ok = false;    
-    GlxTextInputDialog* dlg = new GlxTextInputDialog();
+    GlxTextInputDialog* dlg = new GlxTextInputDialog(false);
     mediaTitle = dlg->getText(title, mainPane, &ok);
     delete dlg;
 
--- a/ui/commandhandlers/commoncommandhandlers/src/glxcommondialogs.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommondialogs.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -20,10 +20,11 @@
 #include <hbaction.h>
 #include <QEventLoop>
 
-GlxTextInputDialog::GlxTextInputDialog() 
+GlxTextInputDialog::GlxTextInputDialog(bool disableOkForEmptyText) 
     : mDialog ( NULL ),
       mEventLoop ( 0 ),
-      mResult ( false )
+      mResult ( false ),
+      mDisableOkForEmptyText(disableOkForEmptyText)
 {
 }
 
@@ -41,9 +42,10 @@
     mDialog->setPromptText(label);
     mDialog->setInputMode(HbInputDialog::TextInput);
     mDialog->setValue(text);
-    connect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ),
-            this, SLOT( textChanged (const QString &)));
-    
+    if(mDisableOkForEmptyText){
+        connect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ),
+                this, SLOT( textChanged (const QString &)));
+    }
     mDialog->open( this, SLOT( dialogClosed( HbAction* ) ) ); 
     eventLoop.exec( );
     mEventLoop = 0 ;
@@ -55,9 +57,10 @@
     if ( mResult ) {
         retText = mDialog->value().toString().trimmed();
     }
-    
-    disconnect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ),
-                this, SLOT( textChanged (const QString &)));
+    if(mDisableOkForEmptyText){
+        disconnect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ),
+                    this, SLOT( textChanged (const QString &)));
+    }
     delete mDialog;
     mDialog = NULL;
     return retText;
--- a/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def	Thu Sep 02 20:26:45 2010 +0300
@@ -107,4 +107,13 @@
 	_ZTV31GlxCommandHandlerAddToContainer @ 106 NONAME
 	_ZThn8_N25GlxCommandHandlerNewMedia11HandleErrorEi @ 107 NONAME
 	_ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 108 NONAME
+	_ZN26GlxCommandHandlerEditImage10storeItemsERK11QModelIndexii @ 109 NONAME
+	_ZN26GlxCommandHandlerEditImage11handleErrorEiRK7QString @ 110 NONAME
+	_ZN26GlxCommandHandlerEditImage11qt_metacallEN11QMetaObject4CallEiPPv @ 111 NONAME
+	_ZN26GlxCommandHandlerEditImage11qt_metacastEPKc @ 112 NONAME
+	_ZN26GlxCommandHandlerEditImage15clearMediaModelEv @ 113 NONAME
+	_ZN26GlxCommandHandlerEditImage16staticMetaObjectE @ 114 NONAME DATA 16
+	_ZN26GlxCommandHandlerEditImage19getStaticMetaObjectEv @ 115 NONAME
+	_ZN26GlxCommandHandlerEditImage8handleOkERK8QVariant @ 116 NONAME
+	_ZNK26GlxCommandHandlerEditImage10metaObjectEv @ 117 NONAME
 
--- a/ui/detailscustomwidget/detailscustomwidgets/glxdetailstextedit.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/detailscustomwidget/detailscustomwidgets/glxdetailstextedit.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -53,6 +53,7 @@
 {
    setAlignment(Qt::AlignLeft);
    mDesc = new HbEditorInterface(this);
+   clearContextMenuFlag(Hb::ShowTextContextMenuOnLongPress);
    mDesc->setInputConstraints (HbEditorConstraintIgnoreFocus);
 }
 
--- a/ui/inc/glxmodelroles.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/inc/glxmodelroles.h	Thu Sep 02 20:26:45 2010 +0300
@@ -46,7 +46,8 @@
 	GlxDescRole,                         //to get the description of the images
 	GlxRemoveContextRole,                 //to remove the context
 	GlxTempVisualWindowIndex,              //to store the visual index obtained from AM temporarily
-	GlxImageCorruptRole                 //To get the corrupt image status
+	GlxImageCorruptRole,                 //To get the corrupt image status
+	GlxPaintPageFlag
 };
 
 
--- a/ui/inc/glxuistd.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/inc/glxuistd.h	Thu Sep 02 20:26:45 2010 +0300
@@ -77,6 +77,7 @@
  MEDIUM,
  FAST
 }GlxSlideShowDelay;
+
 typedef enum
 {
     NO_VIEW,
@@ -85,6 +86,7 @@
     BOTH_VIEW    
 } GlxViewEffect;
 
+#define DOUBLETAP_TIMEINTERVAL 300
 
 _LIT(KGlxUiUtilitiesResource, "glxuiutilities.rsc");
 
--- a/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/uiengine/model/mediamodel/inc/glxmediamodel.h	Thu Sep 02 20:26:45 2010 +0300
@@ -274,6 +274,7 @@
 	GlxDRMUtilityWrapper* mDRMUtilityWrapper;
 	int mTempVisibleWindowIndex;
 	bool thumbnailPopulatedFlag;
+	bool mPaintPage;
 };
 
 
--- a/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -44,6 +44,7 @@
 	qDebug("GlxMediaModel::GlxMediaModel");
 	
 	thumbnailPopulatedFlag = modelParm.collection() == KGlxCollectionPluginAllImplementationUid ? false : true;
+	mPaintPage = modelParm.collection() == KGlxCollectionPluginAllImplementationUid ? true : false;
 	mMLWrapper = new GlxMLWrapper(modelParm.collection(),0,EGlxFilterImage);
 	mMLWrapper->setContextMode( modelParm.contextMode() );
 	mContextMode = modelParm.contextMode( ) ; 
@@ -199,6 +200,10 @@
         return QVariant();
     }
     
+    if (role == GlxPaintPageFlag) {
+       return mPaintPage;
+    }
+    
     if ( role == GlxDefaultImage ) {
         if(!m_DefaultIcon->isNull()) {
             // this image Creation is Slow. 
--- a/ui/uiengine/model/modelwrapper/inc/glxmodelwrapper.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/uiengine/model/modelwrapper/inc/glxmodelwrapper.h	Thu Sep 02 20:26:45 2010 +0300
@@ -77,6 +77,7 @@
    QAbstractItemModel  *mModel;
    int                  mOriginalRole;
    int                  mConvertRole;
+   bool                 mPaintPage;  // Flag to determine painting First page  Together
 };
 
 #endif /* GLXMODELWRAPPER_H */
--- a/ui/uiengine/model/modelwrapper/src/glxmodelwrapper.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/uiengine/model/modelwrapper/src/glxmodelwrapper.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -21,7 +21,8 @@
 
 GlxModelWrapper::GlxModelWrapper(): mModel ( NULL),
     mOriginalRole(Qt::DecorationRole),
-    mConvertRole(Qt::DecorationRole)
+    mConvertRole(Qt::DecorationRole),
+    mPaintPage(false)
     {
 
     }
@@ -32,6 +33,11 @@
         {
         disConnectFromModel();
         mModel = model;
+        QVariant variant = mModel->data(mModel->index(0,0),GlxPaintPageFlag);
+        if (variant.isValid() &&  variant.canConvert<bool> () )
+            {
+            mPaintPage = variant.value<bool>();
+            }
         connectToModel();
         resetTheModel();
         }	
@@ -175,17 +181,21 @@
     {
     int aStartRow = startIndex.row();
 
+    if(mPaintPage)
+        {
     if((aStartRow  == 14) || (aStartRow+1 == rowCount()))
         {
         emit dataChanged(index(0,0),index(endIndex.row(),0));
+            mPaintPage = false;
         }
     else if(aStartRow  >= 15)
         {
         emit dataChanged(index(aStartRow,0),index(endIndex.row(),0));
         }
+        }
     else
         {
-        // Do Nothing
+        emit dataChanged(index(aStartRow,0),index(endIndex.row(),0));
         }
     }
 
--- a/ui/viewmanagement/bwins/glxviewmanageru.def	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/viewmanagement/bwins/glxviewmanageru.def	Thu Sep 02 20:26:45 2010 +0300
@@ -8,46 +8,45 @@
 	?qt_metacast@GlxViewManager@@UAEPAXPBD@Z @ 7 NONAME ; void * GlxViewManager::qt_metacast(char const *)
 	??_EGlxViewManager@@UAE@I@Z @ 8 NONAME ; GlxViewManager::~GlxViewManager(unsigned int)
 	?addBackSoftKeyAction@GlxViewManager@@QAEXXZ @ 9 NONAME ; void GlxViewManager::addBackSoftKeyAction(void)
-	?applicationReady@GlxViewManager@@IAEXXZ @ 10 NONAME ; void GlxViewManager::applicationReady(void)
-	?findView@GlxViewManager@@AAEPAVGlxView@@H@Z @ 11 NONAME ; class GlxView * GlxViewManager::findView(int)
-	?createActions@GlxViewManager@@AAEXXZ @ 12 NONAME ; void GlxViewManager::createActions(void)
-	?staticMetaObject@GlxViewManager@@2UQMetaObject@@B @ 13 NONAME ; struct QMetaObject const GlxViewManager::staticMetaObject
-	?handleAction@GlxViewManager@@QAEXXZ @ 14 NONAME ; void GlxViewManager::handleAction(void)
-	?handleUserAction@GlxViewManager@@QAEXHH@Z @ 15 NONAME ; void GlxViewManager::handleUserAction(int, int)
-	?metaObject@GlxViewManager@@UBEPBUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const * GlxViewManager::metaObject(void) const
-	?actionTriggered@GlxViewManager@@IAEXH@Z @ 17 NONAME ; void GlxViewManager::actionTriggered(int)
-	?getSubState@GlxViewManager@@AAEHXZ @ 18 NONAME ; int GlxViewManager::getSubState(void)
-	?launchView@GlxViewManager@@QAEXHPAVQAbstractItemModel@@W4GlxEffect@@W4GlxViewEffect@@@Z @ 19 NONAME ; void GlxViewManager::launchView(int, class QAbstractItemModel *, enum GlxEffect, enum GlxViewEffect)
-	?handleMenuAction@GlxViewManager@@QAEXH@Z @ 20 NONAME ; void GlxViewManager::handleMenuAction(int)
-	?externalCommand@GlxViewManager@@IAEXH@Z @ 21 NONAME ; void GlxViewManager::externalCommand(int)
-	??0GlxViewManager@@QAE@XZ @ 22 NONAME ; GlxViewManager::GlxViewManager(void)
-	?exitMarkingMode@GlxViewManager@@QAEXH@Z @ 23 NONAME ; void GlxViewManager::exitMarkingMode(int)
-	?cancelTimer@GlxViewManager@@QAEXXZ @ 24 NONAME ; void GlxViewManager::cancelTimer(void)
-	?setModel@GlxViewManager@@QAEXPAVQAbstractItemModel@@@Z @ 25 NONAME ; void GlxViewManager::setModel(class QAbstractItemModel *)
-	?createToolBar@GlxViewManager@@AAEXXZ @ 26 NONAME ; void GlxViewManager::createToolBar(void)
-	?removeConnection@GlxViewManager@@AAEXXZ @ 27 NONAME ; void GlxViewManager::removeConnection(void)
-	?launchView@GlxViewManager@@QAEXHPAVQAbstractItemModel@@@Z @ 28 NONAME ; void GlxViewManager::launchView(int, class QAbstractItemModel *)
-	?createMarkingModeActions@GlxViewManager@@AAEXXZ @ 29 NONAME ; void GlxViewManager::createMarkingModeActions(void)
-	?qt_metacall@GlxViewManager@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 30 NONAME ; int GlxViewManager::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?deActivateView@GlxViewManager@@AAEXXZ @ 31 NONAME ; void GlxViewManager::deActivateView(void)
-	?destroyView@GlxViewManager@@QAEXH@Z @ 32 NONAME ; void GlxViewManager::destroyView(int)
-	?resolveView@GlxViewManager@@AAEPAVGlxView@@H@Z @ 33 NONAME ; class GlxView * GlxViewManager::resolveView(int)
-	??1GlxViewManager@@UAE@XZ @ 34 NONAME ; GlxViewManager::~GlxViewManager(void)
-	?getSelectionModel@GlxViewManager@@QAEPAVQItemSelectionModel@@H@Z @ 35 NONAME ; class QItemSelectionModel * GlxViewManager::getSelectionModel(int)
-	?addConnection@GlxViewManager@@AAEXXZ @ 36 NONAME ; void GlxViewManager::addConnection(void)
-	?hideProgressDialog@GlxViewManager@@AAEXXZ @ 37 NONAME ; void GlxViewManager::hideProgressDialog(void)
-	?handleReadyView@GlxViewManager@@QAEXXZ @ 38 NONAME ; void GlxViewManager::handleReadyView(void)
-	?orientation@GlxViewManager@@QBE?AW4Orientation@Qt@@XZ @ 39 NONAME ; enum Qt::Orientation GlxViewManager::orientation(void) const
-	?createMarkingModeToolBar@GlxViewManager@@AAEXXZ @ 40 NONAME ; void GlxViewManager::createMarkingModeToolBar(void)
-	?checkMarked@GlxViewManager@@AAEXXZ @ 41 NONAME ; void GlxViewManager::checkMarked(void)
-	?itemSpecificMenuTriggered@GlxViewManager@@QAEXHVQPointF@@@Z @ 42 NONAME ; void GlxViewManager::itemSpecificMenuTriggered(int, class QPointF)
-	?setupItems@GlxViewManager@@QAEXXZ @ 43 NONAME ; void GlxViewManager::setupItems(void)
-	?enterMarkingMode@GlxViewManager@@QAEXH@Z @ 44 NONAME ; void GlxViewManager::enterMarkingMode(int)
-	?actionProcess@GlxViewManager@@QAEXH@Z @ 45 NONAME ; void GlxViewManager::actionProcess(int)
-	?deactivateCurrentView@GlxViewManager@@QAEXXZ @ 46 NONAME ; void GlxViewManager::deactivateCurrentView(void)
-	?trUtf8@GlxViewManager@@SA?AVQString@@PBD0H@Z @ 47 NONAME ; class QString GlxViewManager::trUtf8(char const *, char const *, int)
-	?trUtf8@GlxViewManager@@SA?AVQString@@PBD0@Z @ 48 NONAME ; class QString GlxViewManager::trUtf8(char const *, char const *)
-	?launchApplication@GlxViewManager@@QAEXHPAVQAbstractItemModel@@@Z @ 49 NONAME ; void GlxViewManager::launchApplication(int, class QAbstractItemModel *)
-	?tr@GlxViewManager@@SA?AVQString@@PBD0H@Z @ 50 NONAME ; class QString GlxViewManager::tr(char const *, char const *, int)
-	?activateView@GlxViewManager@@AAEXXZ @ 51 NONAME ; void GlxViewManager::activateView(void)
+	?findView@GlxViewManager@@AAEPAVGlxView@@H@Z @ 10 NONAME ; class GlxView * GlxViewManager::findView(int)
+	?createActions@GlxViewManager@@AAEXXZ @ 11 NONAME ; void GlxViewManager::createActions(void)
+	?staticMetaObject@GlxViewManager@@2UQMetaObject@@B @ 12 NONAME ; struct QMetaObject const GlxViewManager::staticMetaObject
+	?handleAction@GlxViewManager@@QAEXXZ @ 13 NONAME ; void GlxViewManager::handleAction(void)
+	?handleUserAction@GlxViewManager@@QAEXHH@Z @ 14 NONAME ; void GlxViewManager::handleUserAction(int, int)
+	?metaObject@GlxViewManager@@UBEPBUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const * GlxViewManager::metaObject(void) const
+	?actionTriggered@GlxViewManager@@IAEXH@Z @ 16 NONAME ; void GlxViewManager::actionTriggered(int)
+	?getSubState@GlxViewManager@@AAEHXZ @ 17 NONAME ; int GlxViewManager::getSubState(void)
+	?launchView@GlxViewManager@@QAEXHPAVQAbstractItemModel@@W4GlxEffect@@W4GlxViewEffect@@@Z @ 18 NONAME ; void GlxViewManager::launchView(int, class QAbstractItemModel *, enum GlxEffect, enum GlxViewEffect)
+	?handleMenuAction@GlxViewManager@@QAEXH@Z @ 19 NONAME ; void GlxViewManager::handleMenuAction(int)
+	?externalCommand@GlxViewManager@@IAEXH@Z @ 20 NONAME ; void GlxViewManager::externalCommand(int)
+	??0GlxViewManager@@QAE@XZ @ 21 NONAME ; GlxViewManager::GlxViewManager(void)
+	?exitMarkingMode@GlxViewManager@@QAEXH@Z @ 22 NONAME ; void GlxViewManager::exitMarkingMode(int)
+	?cancelTimer@GlxViewManager@@QAEXXZ @ 23 NONAME ; void GlxViewManager::cancelTimer(void)
+	?setModel@GlxViewManager@@QAEXPAVQAbstractItemModel@@@Z @ 24 NONAME ; void GlxViewManager::setModel(class QAbstractItemModel *)
+	?createToolBar@GlxViewManager@@AAEXXZ @ 25 NONAME ; void GlxViewManager::createToolBar(void)
+	?removeConnection@GlxViewManager@@AAEXXZ @ 26 NONAME ; void GlxViewManager::removeConnection(void)
+	?launchView@GlxViewManager@@QAEXHPAVQAbstractItemModel@@@Z @ 27 NONAME ; void GlxViewManager::launchView(int, class QAbstractItemModel *)
+	?createMarkingModeActions@GlxViewManager@@AAEXXZ @ 28 NONAME ; void GlxViewManager::createMarkingModeActions(void)
+	?qt_metacall@GlxViewManager@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 29 NONAME ; int GlxViewManager::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?deActivateView@GlxViewManager@@AAEXXZ @ 30 NONAME ; void GlxViewManager::deActivateView(void)
+	?destroyView@GlxViewManager@@QAEXH@Z @ 31 NONAME ; void GlxViewManager::destroyView(int)
+	?resolveView@GlxViewManager@@AAEPAVGlxView@@H@Z @ 32 NONAME ; class GlxView * GlxViewManager::resolveView(int)
+	??1GlxViewManager@@UAE@XZ @ 33 NONAME ; GlxViewManager::~GlxViewManager(void)
+	?getSelectionModel@GlxViewManager@@QAEPAVQItemSelectionModel@@H@Z @ 34 NONAME ; class QItemSelectionModel * GlxViewManager::getSelectionModel(int)
+	?addConnection@GlxViewManager@@AAEXXZ @ 35 NONAME ; void GlxViewManager::addConnection(void)
+	?hideProgressDialog@GlxViewManager@@AAEXXZ @ 36 NONAME ; void GlxViewManager::hideProgressDialog(void)
+	?handleReadyView@GlxViewManager@@QAEXXZ @ 37 NONAME ; void GlxViewManager::handleReadyView(void)
+	?orientation@GlxViewManager@@QBE?AW4Orientation@Qt@@XZ @ 38 NONAME ; enum Qt::Orientation GlxViewManager::orientation(void) const
+	?createMarkingModeToolBar@GlxViewManager@@AAEXXZ @ 39 NONAME ; void GlxViewManager::createMarkingModeToolBar(void)
+	?checkMarked@GlxViewManager@@AAEXXZ @ 40 NONAME ; void GlxViewManager::checkMarked(void)
+	?itemSpecificMenuTriggered@GlxViewManager@@QAEXHVQPointF@@@Z @ 41 NONAME ; void GlxViewManager::itemSpecificMenuTriggered(int, class QPointF)
+	?setupItems@GlxViewManager@@QAEXXZ @ 42 NONAME ; void GlxViewManager::setupItems(void)
+	?enterMarkingMode@GlxViewManager@@QAEXH@Z @ 43 NONAME ; void GlxViewManager::enterMarkingMode(int)
+	?actionProcess@GlxViewManager@@QAEXH@Z @ 44 NONAME ; void GlxViewManager::actionProcess(int)
+	?deactivateCurrentView@GlxViewManager@@QAEXXZ @ 45 NONAME ; void GlxViewManager::deactivateCurrentView(void)
+	?trUtf8@GlxViewManager@@SA?AVQString@@PBD0H@Z @ 46 NONAME ; class QString GlxViewManager::trUtf8(char const *, char const *, int)
+	?trUtf8@GlxViewManager@@SA?AVQString@@PBD0@Z @ 47 NONAME ; class QString GlxViewManager::trUtf8(char const *, char const *)
+	?launchApplication@GlxViewManager@@QAEXHPAVQAbstractItemModel@@@Z @ 48 NONAME ; void GlxViewManager::launchApplication(int, class QAbstractItemModel *)
+	?tr@GlxViewManager@@SA?AVQString@@PBD0H@Z @ 49 NONAME ; class QString GlxViewManager::tr(char const *, char const *, int)
+	?activateView@GlxViewManager@@AAEXXZ @ 50 NONAME ; void GlxViewManager::activateView(void)
 
--- a/ui/viewmanagement/eabi/glxviewmanageru.def	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/viewmanagement/eabi/glxviewmanageru.def	Thu Sep 02 20:26:45 2010 +0300
@@ -21,33 +21,32 @@
 	_ZN14GlxViewManager15exitMarkingModeEi @ 20 NONAME
 	_ZN14GlxViewManager15externalCommandEi @ 21 NONAME
 	_ZN14GlxViewManager15handleReadyViewEv @ 22 NONAME
-	_ZN14GlxViewManager16applicationReadyEv @ 23 NONAME
-	_ZN14GlxViewManager16enterMarkingModeEi @ 24 NONAME
-	_ZN14GlxViewManager16handleMenuActionEi @ 25 NONAME
-	_ZN14GlxViewManager16handleUserActionEii @ 26 NONAME
-	_ZN14GlxViewManager16removeConnectionEv @ 27 NONAME
-	_ZN14GlxViewManager16staticMetaObjectE @ 28 NONAME DATA 16
-	_ZN14GlxViewManager17getSelectionModelEi @ 29 NONAME
-	_ZN14GlxViewManager17launchApplicationEiP18QAbstractItemModel @ 30 NONAME
-	_ZN14GlxViewManager17updateToolBarIconEi @ 31 NONAME
-	_ZN14GlxViewManager18hideProgressDialogEv @ 32 NONAME
-	_ZN14GlxViewManager19getStaticMetaObjectEv @ 33 NONAME
-	_ZN14GlxViewManager20addBackSoftKeyActionEv @ 34 NONAME
-	_ZN14GlxViewManager20launchProgressDialogEi @ 35 NONAME
-	_ZN14GlxViewManager20updateProgressDialogEi @ 36 NONAME
-	_ZN14GlxViewManager21deactivateCurrentViewEv @ 37 NONAME
-	_ZN14GlxViewManager24createMarkingModeActionsEv @ 38 NONAME
-	_ZN14GlxViewManager24createMarkingModeToolBarEv @ 39 NONAME
-	_ZN14GlxViewManager25itemSpecificMenuTriggeredEi7QPointF @ 40 NONAME
-	_ZN14GlxViewManager8findViewEi @ 41 NONAME
-	_ZN14GlxViewManager8setModelEP18QAbstractItemModel @ 42 NONAME
-	_ZN14GlxViewManagerC1Ev @ 43 NONAME
-	_ZN14GlxViewManagerC2Ev @ 44 NONAME
-	_ZN14GlxViewManagerD0Ev @ 45 NONAME
-	_ZN14GlxViewManagerD1Ev @ 46 NONAME
-	_ZN14GlxViewManagerD2Ev @ 47 NONAME
-	_ZNK14GlxViewManager10metaObjectEv @ 48 NONAME
-	_ZNK14GlxViewManager11orientationEv @ 49 NONAME
-	_ZTI14GlxViewManager @ 50 NONAME
-	_ZTV14GlxViewManager @ 51 NONAME
+	_ZN14GlxViewManager16enterMarkingModeEi @ 23 NONAME
+	_ZN14GlxViewManager16handleMenuActionEi @ 24 NONAME
+	_ZN14GlxViewManager16handleUserActionEii @ 25 NONAME
+	_ZN14GlxViewManager16removeConnectionEv @ 26 NONAME
+	_ZN14GlxViewManager16staticMetaObjectE @ 27 NONAME DATA 16
+	_ZN14GlxViewManager17getSelectionModelEi @ 28 NONAME
+	_ZN14GlxViewManager17launchApplicationEiP18QAbstractItemModel @ 29 NONAME
+	_ZN14GlxViewManager17updateToolBarIconEi @ 30 NONAME
+	_ZN14GlxViewManager18hideProgressDialogEv @ 31 NONAME
+	_ZN14GlxViewManager19getStaticMetaObjectEv @ 32 NONAME
+	_ZN14GlxViewManager20addBackSoftKeyActionEv @ 33 NONAME
+	_ZN14GlxViewManager20launchProgressDialogEi @ 34 NONAME
+	_ZN14GlxViewManager20updateProgressDialogEi @ 35 NONAME
+	_ZN14GlxViewManager21deactivateCurrentViewEv @ 36 NONAME
+	_ZN14GlxViewManager24createMarkingModeActionsEv @ 37 NONAME
+	_ZN14GlxViewManager24createMarkingModeToolBarEv @ 38 NONAME
+	_ZN14GlxViewManager25itemSpecificMenuTriggeredEi7QPointF @ 39 NONAME
+	_ZN14GlxViewManager8findViewEi @ 40 NONAME
+	_ZN14GlxViewManager8setModelEP18QAbstractItemModel @ 41 NONAME
+	_ZN14GlxViewManagerC1Ev @ 42 NONAME
+	_ZN14GlxViewManagerC2Ev @ 43 NONAME
+	_ZN14GlxViewManagerD0Ev @ 44 NONAME
+	_ZN14GlxViewManagerD1Ev @ 45 NONAME
+	_ZN14GlxViewManagerD2Ev @ 46 NONAME
+	_ZNK14GlxViewManager10metaObjectEv @ 47 NONAME
+	_ZNK14GlxViewManager11orientationEv @ 48 NONAME
+	_ZTI14GlxViewManager @ 49 NONAME
+	_ZTV14GlxViewManager @ 50 NONAME
 
--- a/ui/viewmanagement/viewmanager/inc/glxviewmanager.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/viewmanagement/viewmanager/inc/glxviewmanager.h	Thu Sep 02 20:26:45 2010 +0300
@@ -134,7 +134,6 @@
      */
     void actionTriggered(qint32 id);
     void externalCommand(int cmdId);
-    void applicationReady();
 
 public slots:
     /**
@@ -184,7 +183,6 @@
     void itemSpecificMenuTriggered(qint32,QPointF );
     
     void handleReadyView();
-protected:
 	
 private slots:
 
--- a/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -73,8 +73,7 @@
 void GlxViewManager::handleReadyView()
 {
     emit actionTriggered( EGlxCmdSetupItem );
-    emit applicationReady();
-    disconnect(mMainWindow, SIGNAL( viewReady() ), this, SLOT( handleReadyView() ));
+    disconnect( mMainWindow, SIGNAL( viewReady() ), this, SLOT( handleReadyView() ) );
 }
 
 void GlxViewManager::setupItems( )
--- a/ui/views/detailsview/src/glxdetailsview.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/detailsview/src/glxdetailsview.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -525,7 +525,6 @@
         
     if (timevalue.isNull() == FALSE)
         {
-        OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setTime is not NULL" );
         QString timeStringValue = timevalue.toString(timeFormat);
         timestring = hbTrId(GLX_DETAILS_TIME).arg(timeStringValue);
         }
--- a/ui/views/fullscreenview/inc/glxcoverflow.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/fullscreenview/inc/glxcoverflow.h	Thu Sep 02 20:26:45 2010 +0300
@@ -36,8 +36,7 @@
     NO_MOVE,
     TAP_MOVE,
     LEFT_MOVE,
-    RIGHT_MOVE,
-    LONGPRESS_MOVE,
+    RIGHT_MOVE
 } GlxUserMove;
 
 typedef enum
@@ -48,98 +47,299 @@
     ZOOM_START_EVENT
 } GlxCoverFlowEvent;
 
+/**
+ * Class Description
+ * This is cover flow class to show and browse the image in fullscreen mode.
+ */
 class GlxCoverFlow : public HbWidget
 {
 Q_OBJECT
 
 public :
+    /**
+     * Constructor
+     * @param - QGraphicsItem parent of this widget
+     */    
 	GlxCoverFlow (QGraphicsItem *parent = NULL);
+	
+    /**
+     * Destructor
+     */	
 	~GlxCoverFlow ();
-    void setItemSize (QSize &size);
-    void setModel (QAbstractItemModel *model);
-    void indexChanged (int index);
-    void setUiOn(bool uiOn) { mUiOn = uiOn; }
+	
+	/**
+	 * setItemSize() - To set the fullscreen image size.
+	 * @param - size of fullscreen.
+	 */
+    void setItemSize( QSize &size );
+    
+    /**
+     * setModel() - To set the data provider of the widget.
+     * @param - data model pointor 
+     */
+    void setModel( QAbstractItemModel *model );
+    
+    /**
+     * indexChanged() - Call back to get the focus index change.
+     * @param - new focus index.
+     */
+    void indexChanged( int index );
+    
+    /**
+     * setUiOn() - Call back to get the ui on/off status.
+     * @param - ui on/off status
+     */
+    void setUiOn( bool uiOn ) { mUiOn = uiOn; }
+    
+    /**
+     * partiallyClean() - To clean all the item except focus one for improved the
+     * view transition animation.
+     */
     void partiallyClean();
-    void partiallyCreate(QAbstractItemModel *model, QSize itemSize, int posY = 0 );
-	void setCoverFlow();
+    
+    /*
+     * partiallyCreate() - To update the focus item only for improved the view transition
+     * animtaion.
+     * @param - data model pointer
+     * @param - size of fullscreen.
+     * @param - image pos in the screen. 
+     */
+    void partiallyCreate( QAbstractItemModel *model, QSize itemSize, int posY = 0 );
+	
+    /**
+	 * setCoverFlow() - To initialise the coverflow.
+	 */
+    void setCoverFlow();
+    
+    /**
+     * ClearCoverFlow() - To cleanup the memory and connection.
+     */
     void ClearCoverFlow();
-	void setMultitouchFilter(QGraphicsItem* multitouchFilter);
+    
+    /**
+     * setMultitouchFilter(() - To Set the widget who is interested in multi touch
+     * gesture event.
+     * @param - widget pointer
+     */
+	void setMultitouchFilter( QGraphicsItem* multitouchFilter );
 	
-	/*
-     * To get the focus index
+	/**
+     * getFocusIndex() - To return the focus index
+     * @return - focus index.
      */
     int getFocusIndex( );
 
-    /*
-     * To get the full screen icon of the image
+    /**
+     * getIcon() - to retuen the full screen icon of the image
+     * @param  - index of imges which icon is required.
+     * @return - icon of the image.
      */
     HbIcon getIcon( int index );
 		    
 public slots:
-	void zoomStarted(int index);
-	void zoomFinished(int index);
+    /**
+     * zoomStarted() - Call back about user has start the zooming.
+     * @param - focus index.
+     */
+	void zoomStarted( int index );
+	
+	/**
+	 * zoomFinished() - Call back about user has finished the zoom and come back 
+	 * to coverflow.
+	 *  @param - focus index.
+	 */
+	void zoomFinished( int index );
 
 signals :
-    void coverFlowEvent(GlxCoverFlowEvent e);
-    void changeSelectedIndex(const QModelIndex &index);
+    /**
+     * coverFlowEvent() - To emit signal about coverflow event happen like panning, zomming ( For ui off ),
+     * Tap ( for ui on/off ) etc.
+     * @param - type of event
+     */
+    void coverFlowEvent( GlxCoverFlowEvent e );
+    
+    /**
+     * changeSelectedIndex() - To emit the signal about focus inde change
+     * @param - new focus index
+     */
+    void changeSelectedIndex( const QModelIndex &index );
+    
+    /**
+     * autoLeftMoveSignal() - Internal signal to move the next image with transition animation.
+     */
     void autoLeftMoveSignal();
+    
+    /**
+     * autoRightMoveSignal() - Internal signal to move the previous image with transition animation.
+     */
     void autoRightMoveSignal();
-    void doubleTapEventReceived(QPointF position);
+    
+    /**
+     * doubleTapEventReceived() - To emit the signal about double tap happen.
+     * @param - coordinate of double tap postion with respect of view.
+     */
+    void doubleTapEventReceived( QPointF position );
+    
+    /**
+     * moveNextSignal() - Internal signal to handle the buffering logic when user move
+     * to prevoius image.
+     */
+    void moveNextSignal();
+    
+    /**
+     * movePreviousSignal() - Internal signal to handle the buffernig loigc when user move 
+     * to previous image.
+     */
+    void movePreviousSignal();
 
 protected slots:
-    void panGesture ( const QPointF & delta )  ;
-    void longPressGesture(const QPointF &point) ;
-    void dataChanged(QModelIndex startIndex, QModelIndex endIndex);
-    void rowsInserted(const QModelIndex &parent, int start, int end);
-    void rowsRemoved(const QModelIndex &parent, int start, int end);
+    /**
+     * panGesture() - To handle the pan gesture event.
+     * @param -  user move delta postion.
+     */
+    void panGesture ( const QPointF & delta ) ;
+    
+    /**
+     * dataChanged() - call back to monitor the widget data changed.
+     * @param - start index of data changed.
+     * @param - end index of data changed.
+     */
+    void dataChanged( QModelIndex startIndex, QModelIndex endIndex );
+    
+    /**
+     * rowsInserted() - call back of new row inserted in the model.
+     * @param - Items are inserted under parent.
+     * @param - start index of items inserted.
+     * @param - end index of items removed.
+     */    
+    void rowsInserted( const QModelIndex &parent, int start, int end );
+    
+    /**
+     * rowsRemoved() - call back of new row removed in the model.
+     * @param - Items are removed from parent item.
+     * @param - start index of items inserted.
+     * @param - end index of items removed.
+     */    
+    void rowsRemoved( const QModelIndex &parent, int start, int end );
+    
+    /**
+     * modelDestroyed() - call back to monitor the model destroy.
+     */
     void modelDestroyed();
+
+    /**
+     * autoLeftMove() - To play the next image move and bounce back transition animation.
+     */
     void autoLeftMove();
+    
+    /**
+     * autoRightMove() - To play the previous image move and bounce back transition animation.
+     */
     void autoRightMove();
+    
+    /**
+     * moveNextImage() - To Handle user next image move for buffering logic, emit the signal about
+     * new focus index and set some widget properties.
+     */
+    void moveNextImage();
+    
+    /**
+     * movePreviousImage() - To Handle user pervious image move for buffering logic, emit the signal about
+     * new focus index and set some widget properties.
+     */    
+    void movePreviousImage();
 
 protected:
-	void gestureEvent(QGestureEvent *event);
-    void move(int value);
+    /**
+     * gestureEvent() - override function to handle the gesture event.
+     * @param - pointer of QGestureEvent
+     */
+	void gestureEvent( QGestureEvent *event );
+	
+	/**
+	 * move() - Change the postion of items for transition animation.
+	 * @parma - delta move.
+	 */
+    void move( int value );
+    
+    /**
+     * setRows() - set the number of rows.
+     */
     void setRows() ;
+    
+    /**
+     * setStripLen() - set the virtual strip length of coverflow.
+     */
     void setStripLen();
+    
+    /**
+     * calculateIndex() - For cyclic cover flow map the index to actual item index.
+     * @param - index of the index.
+     */
     int calculateIndex(int index);
     
+    /**
+     * loadIconItems() - Set the icon, size and postion of the icon items.
+     */
     void loadIconItems (); 
-    void updateIconItem (qint16 selIndex, qint16 selIconIndex, qint16 deltaX);
     
-    /*
-     * In the case of animated image, it will play the animation for focus image
+    /**
+     * updateIconItem() - Set the icon, size and postion of the a particular item.
+     * It is used to support buffering logic and when user move to next or previous image.
+     * @param - image index.
+     * @param - item index in array.
+     * @param - position of the item.
+     */
+    void updateIconItem ( qint16 selIndex, qint16 selIconIndex, qint16 posX );
+    
+    /**
+     * playAnimation() - In the case of animated image, it will play the animation for focus image
      */
     void playAnimation();
     
-    /*
-     * To stop the animation
+    /**
+     * stopAnimation() - To stop the animation
      */
     void stopAnimation();
     
     /*
-     * clear all the model connection
+     * clearCurrentModel() - clear all the model connection
      */
     void clearCurrentModel();
     
     /*
-     * add the connection to the model
+     * initializeNewModel() - add the connection to the model
      */
     void initializeNewModel();
     
     /*
-     * reset all the data of cover flow
+     * resetCoverFlow() - reset all the data of cover flow
      */    
     void resetCoverFlow();
+    
+    /**
+     * getSubState() - To get the substate of fullscreen state.
+     * @return - return the substate of fullscreen state.
+     */
     int getSubState();
-    void timerEvent(QTimerEvent *event);
     
-    /*
-     * To get the URI of the image
+    /**
+     * timerEvent() - To handle the double tap timer
+     * @param - pointer of QTimerEvent.
+     */
+    void timerEvent( QTimerEvent *event );
+    
+    /**
+     * getUri() - To get the URI of the image.
+     * @param - image index.
+     * @return - return the uri of the image.
      */
     QString getUri( int index );
     
-    /*
-     * To get the GIF file info of the image
+    /**
+     * isAnimatedImage() - To get the GIF file info of the image
+     * @param - image index.
+     * @return - true if it GIF image else false.
      */
     bool isAnimatedImage( int index );
     
@@ -147,7 +347,6 @@
 	HbIconItem *mIconItem[NBR_ICON_ITEM];      //at most contain only five item
     qint16 mSelItemIndex;                    // current full screen index
     qint16 mRows;                        // total number of item  
-    //QModelIndex mIndex;                  //current model index of seleced item
     qint16 mSelIndex;                    // remove once model concept is integreted
     qint32 mStripLen;                    //virtual strip lenght
     qint32 mCurrentPos;                   //current postion in the virtual strip
@@ -161,6 +360,7 @@
 	QGraphicsItem* mMultitouchFilter;
     int mTimerId;
     bool mIsInit;
+    bool mIsAutoMoving;
 };
 
 #endif /* GLXCOVERFLOW_H_ */
--- a/ui/views/fullscreenview/inc/glxfullscreenview.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/fullscreenview/inc/glxfullscreenview.h	Thu Sep 02 20:26:45 2010 +0300
@@ -199,6 +199,12 @@
     void orientChangeAnimFinished( const HbEffect::EffectStatus );
     
     /**
+     * zoomOrientChangeAnimFinished() -  call back when zoom orientation change effect has been finished.
+     * @param - staus of effect
+     */
+     void zoomOrientChangeAnimFinished( const HbEffect::EffectStatus status );
+    
+    /**
      * effectFinished -  call back when ui on\off effect has finished
      * @param - staus of effect
      */
@@ -281,6 +287,11 @@
     void playOrientChangeAnim();
     
     /**
+     * playZoomOrientChangeAnim() - To trigger the custom orientation change animation for zoom image.
+     */
+    void playZoomOrientChangeAnim();
+    
+    /**
      * get the substate of fullscreen state.
      */
     int getSubState();
@@ -298,6 +309,7 @@
     HbGridView          *mImageStrip;
     QTimer              *mUiOffTimer;  //use for ui off after 30 sec
     HbIconItem          *mIconItems[ NBR_ANIM_ITEM ] ;   //temporary item for play the image strip select animation
+    HbIconItem          *mBackGroundItem;
     GlxTvOutWrapper     *mTvOutWrapper;
     HbToolBar           *mFullScreenToolBar; //Fullscreen Toolbar
     //for Zoom
--- a/ui/views/fullscreenview/src/glxcoverflow.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/fullscreenview/src/glxcoverflow.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -51,11 +51,14 @@
        mTimerId( 0 ),
        mIsInit( false )
 {
-   qDebug( "GlxCoverFlow::GlxCoverFlow" );
-   grabGesture( Qt::PanGesture );
-   grabGesture( Qt::TapGesture );
-   connect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ), Qt::QueuedConnection );
-   connect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ), Qt::QueuedConnection );   
+    qDebug( "GlxCoverFlow::GlxCoverFlow" );
+    mIsAutoMoving = FALSE;
+    grabGesture( Qt::PanGesture );
+    grabGesture( Qt::TapGesture );
+    connect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ), Qt::QueuedConnection );
+    connect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ), Qt::QueuedConnection );
+    connect( this, SIGNAL( moveNextSignal() ), this, SLOT( moveNextImage() ), Qt::QueuedConnection );
+    connect( this, SIGNAL( movePreviousSignal() ), this, SLOT( movePreviousImage() ), Qt::QueuedConnection ); 
 }
 
 void GlxCoverFlow::setMultitouchFilter(QGraphicsItem* mtFilter)
@@ -117,7 +120,7 @@
     if(QTapGesture *gesture = static_cast<QTapGesture *>(event->gesture(Qt::TapGesture))) {        
         if (gesture->state() == Qt::GestureFinished) {
             if(!mTimerId) {
-                mTimerId = startTimer(500);
+                mTimerId = startTimer( DOUBLETAP_TIMEINTERVAL );
             }
             else {
                 killTimer(mTimerId);
@@ -137,23 +140,27 @@
                 event->accept(panningGesture);            
             }
             
-            if(hbPanGesture->state() == Qt::GestureFinished) {
-                switch( mMoveDir ) {
-                    case LEFT_MOVE : 
-                        mMoveDir = NO_MOVE;
-                        mBounceBackDeltaX = ( mItemSize.width() >> 2 )  + ( mItemSize.width() >> 3 );
-                        emit autoLeftMoveSignal();
-                        break ;
-                
-                    case RIGHT_MOVE :
-                        mMoveDir = NO_MOVE;
-                        mBounceBackDeltaX = ( mItemSize.width() >> 2 )  + ( mItemSize.width() >> 3 );
-                        emit autoRightMoveSignal();
-                        break;
-                
-                    default:
-                        break;
-                } 
+            if( hbPanGesture->state() == Qt::GestureFinished  ) {
+                if( mIsAutoMoving == FALSE ) {
+                    switch( mMoveDir ) {
+                        case LEFT_MOVE : 
+                            mMoveDir = NO_MOVE;
+                            mBounceBackDeltaX = ( mItemSize.width() >> 2 )  + ( mItemSize.width() >> 3 );
+                            emit autoLeftMoveSignal();
+                            mIsAutoMoving = TRUE;
+                            break ;
+                    
+                        case RIGHT_MOVE :
+                            mMoveDir = NO_MOVE;
+                            mBounceBackDeltaX = ( mItemSize.width() >> 2 )  + ( mItemSize.width() >> 3 );
+                            emit autoRightMoveSignal();
+                            mIsAutoMoving = TRUE;
+                            break;
+                    
+                        default:
+                            break;
+                    } 
+                }
                 event->accept(panningGesture);
             }
         }
@@ -164,9 +171,10 @@
 {
     qDebug("GlxCoverFlow::panGesture deltaX= %d", (int)delta.x());  
    
-    if( !mIsInit || getSubState() == IMAGEVIEWER_S || getSubState() == FETCHER_S ) {
+    if( !mIsInit || getSubState() == IMAGEVIEWER_S || getSubState() == FETCHER_S || mIsAutoMoving == TRUE ) {
         return;
     }
+    
     move( ( int ) delta.x() );    
     if( delta.x() > 0 ) {     
         mMoveDir = RIGHT_MOVE;
@@ -181,12 +189,6 @@
     }
 }
 
-void GlxCoverFlow::longPressGesture(const QPointF &point)
-{
-     qDebug("GlxCoverFlow::longPressGesture x = %d  y = %d", point.x(), point.y());
-     mMoveDir = LONGPRESS_MOVE;
-}
-
 void GlxCoverFlow::dataChanged(QModelIndex startIndex, QModelIndex endIndex)
 {
     Q_UNUSED(endIndex);
@@ -272,23 +274,10 @@
         //for bounce back of first image
         if ( mMoveDir == RIGHT_MOVE ) {
             emit autoRightMoveSignal();
-            return;
         }
-        int selIndex = mCurrentPos / width ;
-        if ( mRows == 1 || selIndex != mSelIndex ) {
-            stopAnimation();
-            mSelIndex = selIndex;
-            mSelItemIndex = ( ++mSelItemIndex ) % NBR_ICON_ITEM;
-            selIndex = ( mSelItemIndex + 2 ) % NBR_ICON_ITEM;
-            updateIconItem( mSelIndex + 2, selIndex, width * 2 ) ;
-            playAnimation();
-			if(!mZoomOn) {
-                emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
-			}
-        }
-        mMoveDir = NO_MOVE;
-        mBounceBackDeltaX = GLX_BOUNCEBACK_DELTA;
-        mSpeed = GLX_COVERFLOW_SPEED;
+        else {
+            emit moveNextSignal();
+        }        
     }   
 }
 
@@ -331,24 +320,53 @@
         //for bounce back of last image
         if ( mMoveDir == LEFT_MOVE ) {
             emit autoLeftMoveSignal();
-            return;
+        }
+        else {
+            emit movePreviousSignal();
+        }
+    }
+}
+
+void GlxCoverFlow::moveNextImage()
+{
+    int width = mItemSize.width() ;
+    int selIndex = mCurrentPos / width ;
+    if ( mRows == 1 || selIndex != mSelIndex ) {
+        stopAnimation() ;
+        mSelIndex = selIndex ;
+        mSelItemIndex = ( ++mSelItemIndex ) % NBR_ICON_ITEM ;
+        selIndex = ( mSelItemIndex + 2 ) % NBR_ICON_ITEM ;
+        updateIconItem( mSelIndex + 2, selIndex, width * 2 ) ;
+        playAnimation() ;
+        if( !mZoomOn ) {
+            emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
         }
-        int selIndex = mCurrentPos / width ;
-        if ( mRows == 1 || selIndex != mSelIndex ) {
-            stopAnimation();
-            mSelIndex = selIndex;
-            mSelItemIndex = ( mSelItemIndex == 0 ) ?  NBR_ICON_ITEM -1 : --mSelItemIndex;
-            selIndex = ( mSelItemIndex + 3 ) % NBR_ICON_ITEM;
-            updateIconItem( mSelIndex - 2, selIndex, - width * 2 ) ;
-            playAnimation();
-			if(!mZoomOn) {
-                emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
-			}
+    }
+    mMoveDir = NO_MOVE;
+    mIsAutoMoving = FALSE;
+    mBounceBackDeltaX = GLX_BOUNCEBACK_DELTA ;
+    mSpeed = GLX_COVERFLOW_SPEED ;
+}
+
+void GlxCoverFlow::movePreviousImage()
+{
+    int width = mItemSize.width();
+    int selIndex = mCurrentPos / width;
+    if ( mRows == 1 || selIndex != mSelIndex ) {
+        stopAnimation();
+        mSelIndex = selIndex;
+        mSelItemIndex = ( mSelItemIndex == 0 ) ?  NBR_ICON_ITEM -1 : --mSelItemIndex;
+        selIndex = ( mSelItemIndex + 3 ) % NBR_ICON_ITEM;
+        updateIconItem( mSelIndex - 2, selIndex, - width * 2 ) ;
+        playAnimation();
+        if(!mZoomOn) {
+            emit changeSelectedIndex ( mModel->index ( mSelIndex, 0 ) ) ;
         }
-        mMoveDir = NO_MOVE;
-        mBounceBackDeltaX = GLX_BOUNCEBACK_DELTA;
-        mSpeed = GLX_COVERFLOW_SPEED;
     }
+    mMoveDir = NO_MOVE;
+    mIsAutoMoving = FALSE;
+    mBounceBackDeltaX = GLX_BOUNCEBACK_DELTA;
+    mSpeed = GLX_COVERFLOW_SPEED;
 }
 
 void GlxCoverFlow::move(int value)
@@ -357,9 +375,9 @@
     QPointF pos(0,0);
 
     for ( qint8 i = 0; i < NBR_ICON_ITEM ; i++ ) {
-        pos.setX( mIconItem[i]->pos().x() + value);
-        pos.setY(mIconItem[i]->pos().y());
-        mIconItem[i]->setPos(pos);
+        pos.setX( mIconItem[i]->pos().x() + value );
+        pos.setY( mIconItem[i]->pos().y() );
+        mIconItem[i]->setPos( pos );
     }
     
     mCurrentPos -= value;
@@ -553,24 +571,23 @@
 	mZoomOn = true;	
 }
 
-void GlxCoverFlow::zoomFinished(int index)
+void GlxCoverFlow::zoomFinished( int index )
 { 
 	mZoomOn = false;
 	playAnimation();
 	indexChanged(index);
 }
 
-void GlxCoverFlow::timerEvent(QTimerEvent *event)
+void GlxCoverFlow::timerEvent( QTimerEvent *event )
 {
-    if(mTimerId == event->timerId())
-    {
-        killTimer(mTimerId);
+    if(mTimerId == event->timerId()) {
+        killTimer( mTimerId );
         mTimerId = 0;
         emit coverFlowEvent( TAP_EVENT );
     }
 }
 
-int GlxCoverFlow::getFocusIndex( )
+int GlxCoverFlow::getFocusIndex()
 {
     QVariant variant = mModel->data( mModel->index( 0, 0 ), GlxFocusIndexRole ) ;
     if ( variant.isValid() && variant.canConvert< int > () ) {
--- a/ui/views/fullscreenview/src/glxfullscreenview.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/fullscreenview/src/glxfullscreenview.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -60,10 +60,11 @@
     mCoverFlow( NULL ) , 
     mImageStrip( NULL ), 
     mUiOffTimer( NULL ),
+    mBackGroundItem( NULL ),
     mTvOutWrapper( NULL ),
     mFullScreenToolBar( NULL ),
 	mZoomWidget( NULL ),
-	mUiOff ( false)
+	mUiOff ( false )
 {
     OstTraceFunctionEntry0( GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY );
     mIconItems[0] = NULL;
@@ -168,7 +169,7 @@
     action->setData( commandId );
     action->setIcon( HbIcon( iconName ) ); 
     action->setObjectName( name );
-    mFullScreenToolBar->addAction( action);
+    mFullScreenToolBar->addAction( action );
     connect(action, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); 
 }
 
@@ -378,7 +379,13 @@
     setModelContext();
     loadViewSection();
     setLayout();
-    playOrientChangeAnim();
+    
+    if ( mZoomWidget->zValue() >= mCoverFlow->zValue() ) {
+        playZoomOrientChangeAnim();
+    }
+    else {
+        playOrientChangeAnim();
+    }
     
     OstTraceFunctionExit0( GLXFULLSCREENVIEW_ORIENTATIONCHANGED_EXIT );
 }
@@ -409,6 +416,7 @@
         else if( getSubState() == IMAGEVIEWER_S){
             setTitle(GLX_IMAGE_VIEWER);
         }
+        mFullScreenToolBar->setOpacity( 1 );
         mFullScreenToolBar->show();
     }
     else {
@@ -574,17 +582,20 @@
     case TAP_EVENT :
         activateUI();
         break ;
-        
+                
+    //hide the ui component without animation  
     case PANNING_START_EVENT :
-        hideUi();
-        break ;
-        
-    //hide the ui component without animation  
     case ZOOM_START_EVENT : {
         HbEffect::EffectStatus e;
         mUiOff = TRUE;
         if( mFullScreenToolBar ) {
-           mFullScreenToolBar->hide();
+            /** 
+             * Browsing has higer priority then playing animation of hiding tool bar
+             * so it is taking time to hide the toolbar during browsing of images 
+             * so set the opacity value to 0 to immediate hide the tool bar 
+             */
+            mFullScreenToolBar->setOpacity( 0 );
+            mFullScreenToolBar->hide();
         }
         setViewFlags( viewFlags() | HbView::ViewTitleBarHidden | HbView::ViewStatusBarHidden );
         effectFinished( e );
@@ -632,6 +643,7 @@
         mIconItems[ i ]->resetTransform();
         mIconItems[ i ]->setVisible( false );
     }
+    mBackGroundItem->setVisible( false );
     
     QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole );    
     if ( variant.isValid() &&  variant.canConvert<int> ()  ) {
@@ -648,10 +660,16 @@
     qDebug( "GlxFullScreenView::LsOrientChangeAnimFinished reason %d ", status.reason );
     mIconItems[ 0 ]->resetTransform();   
     mIconItems[ 0 ]->setVisible( false );
+    mBackGroundItem->setVisible( false );
     mCoverFlow->setVisible( true );
     mZoomWidget->setVisible( true );
 }
 
+void GlxFullScreenView::zoomOrientChangeAnimFinished( const HbEffect::EffectStatus status )
+{
+    mZoomWidget->resetTransform();
+}
+
 void GlxFullScreenView::setLayout()
 {
     OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETLAYOUT_ENTRY );
@@ -752,6 +770,7 @@
 	for ( int i = 0; i < NBR_ANIM_ITEM; i++ ) {
 	    delete mIconItems[ i ] ;
 	}
+	delete mBackGroundItem;
     delete mImageStrip;
     delete mFullScreenToolBar;
     delete mCoverFlow;
@@ -775,13 +794,16 @@
 void GlxFullScreenView::initAnimationItem()
 {
     if( mIconItems[0] == NULL ) {
+        mBackGroundItem = new HbIconItem( mImageStrip->parentItem() );
+        mBackGroundItem->setBrush( QBrush( Qt::black ) );
+        mBackGroundItem->setZValue( mImageStrip->zValue() - 3 );
+        mBackGroundItem->setPos( 0, 0 );
         for( int i = 0; i < NBR_ANIM_ITEM; i++ ) {
             mIconItems[ i ] = new HbIconItem( mImageStrip->parentItem() );
-            mIconItems[ i ]->setBrush( QBrush( Qt::black ) );
             mIconItems[ i ]->setZValue( mImageStrip->zValue() - 2 );
             mIconItems[ i ]->setPos( 0, 0 );
             mIconItems[ i ]->setAlignment( Qt::AlignCenter );
-        }
+        }        
     }
 }
 
@@ -794,6 +816,8 @@
         mIconItems[ i ]->setVisible( true );
         mIconItems[ i ]->setSize( screenSize() );
     }
+    mBackGroundItem->setVisible( true );
+    mBackGroundItem->setSize( screenSize() );
     
     mIconItems[ 0 ]->setIcon( mCoverFlow->getIcon( mCoverFlow->getFocusIndex() ) );    
     mIconItems[ 1 ]->setIcon( mCoverFlow->getIcon( index.row() ) );   
@@ -823,6 +847,9 @@
     mIconItems[ 0 ]->setVisible( true );
     mIconItems[ 0 ]->setIcon( mCoverFlow->getIcon( mCoverFlow->getFocusIndex() ) );
     
+    mBackGroundItem->setVisible( true );
+    mBackGroundItem->setSize( screenSize() );
+    
     mCoverFlow->setVisible( false );
     mZoomWidget->setVisible( false );
     if ( mWindow->orientation() == Qt::Horizontal ) {
@@ -832,6 +859,16 @@
         HbEffect::start( mIconItems[0], QString( "HbIconItem" ), QString( "RotateFSPT" ), this, "orientChangeAnimFinished" );
     }
 }
+
+void GlxFullScreenView::playZoomOrientChangeAnim()
+{
+    if ( mWindow->orientation() == Qt::Horizontal ) {
+        HbEffect::start( mZoomWidget, QString( "HbIconItem" ), QString( "RotateFSLS" ), this, "zoomOrientChangeAnimFinished" );
+    }
+    else {
+        HbEffect::start( mZoomWidget, QString( "HbIconItem" ), QString( "RotateFSPT" ), this, "zoomOrientChangeAnimFinished" );
+    }    
+}
 	
 void GlxFullScreenView::handleToolBarAction()
 {
--- a/ui/views/gridview/src/glxgridview.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/gridview/src/glxgridview.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -249,8 +249,12 @@
 
     if (mMarkingWidget) {
         mMarkingWidget->hide();
-    }        
+    }     
     
+    if (mMarkCheckBox) {
+       mMarkCheckBox->setCheckState(Qt::Unchecked);
+    }
+	
     showHbItems();
 }
 
@@ -368,7 +372,7 @@
         }
     else
         { //handle album tiltle and count display logic here
-        if (count && isItemVisible(Hb::TitleBarItem))
+        if (isItemVisible(Hb::TitleBarItem))
             {
             mAlbumNameHeading->setGeometry(QRectF(0, 0, screenSize.width(),deviceSize.height() / 24));
             QString text = HbParameterLengthLimiter(GLX_ALBUM_NAME_COUNT_LABEL).arg(aTitle).arg(count);            
--- a/ui/views/slideshowview/inc/glxslideshowwidget.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/slideshowview/inc/glxslideshowwidget.h	Thu Sep 02 20:26:45 2010 +0300
@@ -316,6 +316,7 @@
     QList <QGraphicsItem *>  mItemList;
     bool                     mIsPause;
     int                      mSlideShowItemCount;
+    bool                     mIsAutoMoving;
 };
 
 #endif /* GLXSLIDESHOWWIDGET_H */
--- a/ui/views/slideshowview/src/glxslideshowwidget.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/views/slideshowview/src/glxslideshowwidget.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -53,7 +53,8 @@
       mItemIndex( 1 ),  
       mSlideTimer( NULL ), 
       mModel( NULL ), 
-      mSlideShowItemCount( 0 )
+      mSlideShowItemCount( 0 ),
+      mIsAutoMoving ( false )
 {
     TRACER("GlxSlideShowWidget::GlxSlideShowWidget()");
     mSettings = GlxSettingInterface::instance() ; //no owner ship
@@ -350,6 +351,7 @@
     mModel->setData( mModel->index( 0, 0 ), mSelIndex[ mItemIndex ], GlxVisualWindowIndex );
     setNextItemIcon();
     startSlideShow();
+    mIsAutoMoving = false;
     emit indexchanged(); // on left swipe
 }
 
@@ -364,6 +366,7 @@
     mModel->setData( mModel->index( 0, 0 ), mSelIndex[ mItemIndex ], GlxVisualWindowIndex );
     setPreItemIcon();
     startSlideShow();
+    mIsAutoMoving = false;
     emit indexchanged(); // on right swipe
 } 
  
@@ -378,10 +381,10 @@
         }
     }
       
-    if (QPanGesture *panningGesture = qobject_cast<QPanGesture*>(event->gesture(Qt::PanGesture))) {
-        HbPanGesture *hbPanGesture = qobject_cast<HbPanGesture *>(panningGesture);
+    if ( QPanGesture *panningGesture = qobject_cast<QPanGesture*>( event->gesture( Qt::PanGesture ) ) ) {
+        HbPanGesture *hbPanGesture = qobject_cast<HbPanGesture *>( panningGesture );
         if ( hbPanGesture ) {
-            if( hbPanGesture->state() == Qt::GestureFinished ) {
+            if( hbPanGesture->state() == Qt::GestureFinished && mIsAutoMoving == FALSE ) {
                 QPointF delta( hbPanGesture->sceneDelta() );
                 if ( delta.x() > 0 ) {
                     rightGesture( delta.x() );
@@ -464,11 +467,12 @@
     if ( mSlideShowItemCount <= 1 || mEffectEngine->isEffectRuning( mItemList ) ) {
         return ;
     }
-
+    
     mSlideTimer->stop();
     HbEffect::start( mIconItems[mItemIndex], QString("HbIconItem"), move );
     mIconItems[nextIndex]->setPos( posX, mScreenRect.top());
     mIconItems[nextIndex]->setOpacity(1);
+    mIsAutoMoving = true;
     HbEffect::start(mIconItems[nextIndex], QString("HbIconItem"), QString("Move"), this, callBack );    
 }
 
--- a/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h	Thu Sep 02 20:26:45 2010 +0300
@@ -31,10 +31,7 @@
 class GlxImageDecoderWrapper;
 class QTimeLine;
 
-const int MAXZVALUE = 100;
-const int MINZVALUE = 0;
-const int NOOFSTEPS = 20;
-const float MAXDTZOOMIN = 3.5;
+
 
 class GLXZOOMWIDGETSHARED_EXPORT GlxZoomWidget : public HbScrollArea
 {
@@ -152,8 +149,8 @@
     qreal mIncSF;
     //stores the scalingfactor increment applicable for each step of double tap animation
     qreal msfInc;
-    //stores the item size before performing zoomout(zo)
-    QSizeF mzoSize;
+    //stores the item size before performing zoomout or zoomin
+    QSizeF minitSize;
     //counter to track the double tap animation steps
     int mdoubletapSteps;
 };
--- a/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp	Wed Aug 18 09:48:53 2010 +0300
+++ b/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp	Thu Sep 02 20:26:45 2010 +0300
@@ -24,6 +24,12 @@
 #include "glxmodelparm.h"
 #include "glxzoomwidget.h"
 
+const int MAXZVALUE = 100;
+const int MINZVALUE = 0;
+const int NOOFSTEPSZI = 24;
+const int NOOFSTEPSZO = 18;
+const float MAXDTZOOMIN = 3.5;
+
 GlxZoomWidget::GlxZoomWidget(QGraphicsItem *parent):HbScrollArea(parent), 
             mModel(NULL), mMinZValue(MINZVALUE), 
             mMaxZValue(MAXZVALUE), mTimerId(0),
@@ -34,7 +40,7 @@
     grabGesture(Qt::PinchGesture);
     grabGesture(Qt::TapGesture);
     setAcceptTouchEvents(true) ;
-    setFrictionEnabled(false);
+    setFrictionEnabled(true);
     setZValue(mMinZValue);
     //create the child items and background
     mZoomWidget = new QGraphicsWidget(this);
@@ -51,7 +57,8 @@
     //initializing the image decoder
     mImageDecoder = new GlxImageDecoderWrapper;
 
-	
+    setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);
+    setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);
 	//AA: signal and slot to perform double tap animation
     //after every step redraw, signal is emitted to perform the next step
 	connect( this, SIGNAL( stepZoom() ), this, SLOT( animateDoubleTap() ), Qt::QueuedConnection );
@@ -183,7 +190,7 @@
          if(QTapGesture *gesture = static_cast<QTapGesture *>(event->gesture(Qt::TapGesture))) {        
             if (gesture->state() == Qt::GestureFinished) {
                 if(!mTimerId) {
-                    mTimerId = startTimer(500);
+                    mTimerId = startTimer( DOUBLETAP_TIMEINTERVAL );
                 }
             else {
                 killTimer(mTimerId);
@@ -203,13 +210,7 @@
        if (changeFlags & QPinchGesture::ScaleFactorChanged) {
             mPinchGestureOngoing = true;
             mZoomOngoing = true;
-            //bring the zoom widget to foreground
-            setZValue(mMaxZValue);
-            //show the black background
-            mBlackBackgroundItem->setParentItem(parentItem());
-            mBlackBackgroundItem->setZValue(mMaxZValue - 1);
-            mBlackBackgroundItem->show();
-
+            
             //retreive the gesture values
             qreal value = pinchG->scaleFactor() / pinchG->lastScaleFactor();
             QPointF center = pinchG->property("centerPoint").toPointF();
@@ -220,10 +221,15 @@
         }
        if (pinchG->state() == Qt::GestureStarted) {
            emit pinchGestureReceived(mFocusIndex);
+           //bring the zoom widget to foreground
+            setZValue(mMaxZValue);
+            //show the black background
+            mBlackBackgroundItem->setParentItem(parentItem());
+            mBlackBackgroundItem->setZValue(mMaxZValue - 1);
+            mBlackBackgroundItem->show();
        }
 
        if (pinchG->state() == Qt::GestureFinished) {
-           if(mStepCurrentSize != mCurrentSize) {
                //For giving a spring effect when user has zoomed more than normal.
                if(mStepCurrentSize.width() > mMaxScaleDecSize.width())   {
                    //scale the image to limited size
@@ -235,7 +241,7 @@
                mPinchGestureOngoing = false;
                 //finalize the transforms to the geometry else panning will not work
                 finalizeWidgetTransform();
-           }
+       
 //push the Zoom widget to background when zoomed image size nears FS image
            if(mStepCurrentSize.width() <= mMinDecScaleSize.width()*1.3)  {
                mBlackBackgroundItem->hide();
@@ -294,94 +300,79 @@
 //makes sure that the gesture is on the screen center if the image is smaller than the screen
 void GlxZoomWidget::adjustGestureCenter(QPointF & gestureCenter, qreal& zoomFactor)
 {
-    /* commenting this tweak, not necessary, needs to be reimplemented for pinch: IN progress
-    if(zoomFactor > 1 &&zoomFactor > 1.2 )  {
+    
+    //clip zoom factor for pinch zoom. Double tap zoomfactor should never exceed
+    //1.2 or 0.8 in any given step  
+/*    if(zoomFactor > 1.2 )  {
         zoomFactor = 1.2;
     }
-
-    if(zoomFactor < 1 &&zoomFactor < 0.8 )   {
+    if(zoomFactor < 0.7 )   {
         zoomFactor = 0.8;
-    }
-	*/
-    QSizeF requiredSize(mCurrentSize.width()*zoomFactor, mCurrentSize.height()*zoomFactor);
-    //keep smaller image centered
-    if(mCurrentSize.width() <= mWindowSize.width() )
-    {
-        gestureCenter.setX(mWindowSize.width()/2);
+    }*/
+
+    qDebug("AA::adjustGestureCenter::ZoomFactor (%f)",zoomFactor);
+    QPointF itemOriginPos = mZoomWidget->sceneTransform().map(QPointF(0,0)); 
+    QPointF gesCenter = mZoomWidget->sceneTransform().map(gestureCenter); 
 
-    }
-    if(mCurrentSize.height() <= mWindowSize.height())
-    {
-        gestureCenter.setY(mWindowSize.height()/2);
-
+    
+    //keep smaller image centered irrespective of zoomin or zoom out
+    //note, only if the image is smaller than window size, else preserve the 
+    //gesture center. Adjustments need to be done for both height/width
+    //only one of them will be applicable, unless the image is smaller than
+    //fullscreen size on both dimensions
+    if( (mCurrentSize.width() <= mWindowSize.width()))  {
+       //requires adjustment only in portrait orientation 
+       if(mWindowSize.width() > mWindowSize.height())
+           gestureCenter.setX(mWindowSize.width()/2);
     }
-    //maintains the boundary of the edges for zoom out conditions
-    if(zoomFactor < 1) {
-        QPointF itemOriginPos = mZoomWidget->sceneTransform().map(QPointF(0,0));
-        bool hasWidthExceededWindow = mCurrentSize.width() > mWindowSize.width();
-        bool hasHeightExceededWindow = mCurrentSize.height() > mWindowSize.height();
-        if(hasWidthExceededWindow) {
-            bool hasItemCrossedBoundary = false;
-            if(itemOriginPos.x() >= -5)  {
-                //image has crossed left boundry leaving blank space
-                //stick the gesture to the left corner
-                gestureCenter.setX(itemOriginPos.x());
-                hasItemCrossedBoundary = true;
+    //handle the case when CurrentSize is grater than window size
+    //this applies to zoomout flow
+    else  {
+        //when the image is positioned beyond the left edge of the window
+        //clamp the image to left edge
+        if(itemOriginPos.x() >= 0) {
+            gestureCenter.setX(itemOriginPos.x());    
+        }
+        //same applies when the image needs clamping on right edge
+        else if(itemOriginPos.x()+ mCurrentSize.width() <= mWindowSize.width()){
+            gestureCenter.setX(itemOriginPos.x() + mCurrentSize.width());
+        }
+        //else no clamping is required, theg esture center can be preserved
+        //as is for the zoom step
+   }
+        
+    //same logic applied for Y axis
+    if( (mCurrentSize.height() <= mWindowSize.height())  )  {
+        //requires adjustment only in landscape orientation
+        if(mWindowSize.width() < mWindowSize.height())
+                   gestureCenter.setY(mWindowSize.height()/2);
+    }     
+    else  {
+            if(itemOriginPos.y() >= 0) {
+               gestureCenter.setY(itemOriginPos.y());    
             }
-        
-            //Check if the right boundry can be adjusted
-            if(itemOriginPos.x()+ mCurrentSize.width() <= mWindowSize.width()+5) {
-                //Image is before the right boundry leaving blank space
-                gestureCenter.setX(itemOriginPos.x()+ mCurrentSize.width() );
-                hasItemCrossedBoundary = true;
-            }
-            if((mCurrentSize.width() - mWindowSize.width() <= 20) && !hasItemCrossedBoundary) {
-                gestureCenter.setX(mWindowSize.width()/2 + (qAbs(itemOriginPos.x()) - 10));
+            else if(itemOriginPos.y()+ mCurrentSize.height() <= mWindowSize.height()){
+                gestureCenter.setY(itemOriginPos.y() + mCurrentSize.height());
             }
         }
-
-        if(hasHeightExceededWindow) {
-             bool hasItemCrossedBoundary = false;
-            //check if the upper boundry could be adjusted
-            if(itemOriginPos.y() >= -5) {
-                //image has crossed the upper boundry leaving blank space
-                //stick the image to the upper boundry
-                gestureCenter.setY(itemOriginPos.y());
-                hasItemCrossedBoundary = true;
-            }
-            //check if the lower boundry could be adjusted
-            if(itemOriginPos.y()+ mCurrentSize.height() <= mWindowSize.height()+5) {
-                //Image is before the right boundry leaving blank space
-                //stick the image to the right corner
-                gestureCenter.setY(itemOriginPos.y()+ mCurrentSize.height());
-                hasItemCrossedBoundary = true;
-            }
-            if((mCurrentSize.height() - mWindowSize.height() <= 20) && !hasItemCrossedBoundary) {
-                gestureCenter.setY(mWindowSize.height()/2 + (qAbs(itemOriginPos.y()) - 10));
-            }
-        }
+    
+    //special case for images that are smaller on both sides
+    //centering of the gesture is important to prevent movement of the image
+    //while zoom in or out
+    if( (mCurrentSize.height() <= mWindowSize.height()) && (mCurrentSize.width() <= mWindowSize.width()) ) {
+        gestureCenter.setX(mWindowSize.width()/2);
+        gestureCenter.setY(mWindowSize.height()/2);
     }
-    //control the zoom Factor to boundaries
-    if(mCurrentSize.width() > mWindowSize.width() && requiredSize.width() <= mWindowSize.width())
-    {
-        zoomFactor =  mWindowSize.width()/mCurrentSize.width();
-
-    }
-    else if(mCurrentSize.height() > mWindowSize.height() && requiredSize.height() <= mWindowSize.height())
-    {
-        zoomFactor =  mWindowSize.height()/mCurrentSize.height();
-
-    }
-
+        
     //reduce the ZF so as to show a decelerated effect at max/min levels
-
+/*
     if(mCurrentSize.width() > mMaxScaleDecSize.width() && zoomFactor > 1 ) {
         zoomFactor = 1.0 + ((zoomFactor-1.0)/6) ;
     }
         if(mCurrentSize.width() < mMinDecScaleSize.width() && zoomFactor < 1 ) {
         zoomFactor = 1.0 - ((1.0-zoomFactor)/6) ;
     }
-
+*/
 
 }
 
@@ -425,6 +416,7 @@
         mMaxScaleDecSize.scale(mWindowSize*7, Qt::KeepAspectRatio);
         mMinScaleSize = mItemSize* 0.7;
         mMinDecScaleSize = mItemSize;
+        mCurrentSize = mItemSize;
         mZoomItem->setPixmap(targetPixmap);
         finalizeWidgetTransform();
         }
@@ -542,7 +534,7 @@
     mBlackBackgroundItem->setZValue(mMaxZValue - 1);
     mBlackBackgroundItem->show();
     m_AnimRefPoint = animRefPoint;
-    QSizeF requiredSize = mItemSize;
+    QSizeF requiredSize = mMinDecScaleSize;
     //MAXDTZOOMIN size is set to 3.5 times window size
     requiredSize.scale(mWindowSize*MAXDTZOOMIN, Qt::KeepAspectRatio);
 	m_FinalAnimatedScaleFactor = requiredSize.width()/mMinDecScaleSize.width();
@@ -550,9 +542,11 @@
     mIncSF = 1;
     //preserve the size when zoom out was initiated, requried for calculates applicable/req scale factor
     //SF has to always greater than 1 for upscaling, hence range for zoomout is [1,m_FinalAnimatedScaleFactor]
-    msfInc = (m_FinalAnimatedScaleFactor-1)/NOOFSTEPS;
+    msfInc = (m_FinalAnimatedScaleFactor-1)/(NOOFSTEPSZI);
+    //preserve the size when zoom out was initiated, requried for calculates applicable/req scale factor
+    minitSize = mCurrentSize;
     //set the no. of steps for double tap animation 
-    mdoubletapSteps = NOOFSTEPS;
+    mdoubletapSteps = NOOFSTEPSZI;
     animateDoubleTap();
 
 }
@@ -564,12 +558,12 @@
     //initiale variable for double tap animation
     mIncSF = 1;
     //calculate the step increment SF for each step
-    msfInc = (1 - m_FinalAnimatedScaleFactor)/NOOFSTEPS;
+    msfInc = (1 - m_FinalAnimatedScaleFactor)/(NOOFSTEPSZO);
     //preserve the size when zoom out was initiated, requried for calculates applicable/req scale factor
-    mzoSize = mCurrentSize;
+    minitSize = mCurrentSize;
     //set the no. of steps for double tap animation 
     //AA:: the no.of steps are kept the same for zoomin/zoomout, however tweaking them can be considered
-    mdoubletapSteps = NOOFSTEPS;
+    mdoubletapSteps = NOOFSTEPSZO;
     animateDoubleTap();
     //AA
    
@@ -583,17 +577,17 @@
     if(m_FinalAnimatedScaleFactor > 1) {
         //AA::zoomin case
         mIncSF += msfInc;
-        qreal reqSF = (mItemSize.width()*(mIncSF))/mCurrentSize.width();
+        qreal reqSF = (minitSize.width()*(mIncSF))/mCurrentSize.width();
         zoomImage(reqSF, m_AnimRefPoint);
         }
     if(m_FinalAnimatedScaleFactor < 1) {
         //AA::zoomout case
         mIncSF -= msfInc;
-        qreal reqSF = (mzoSize.width()* mIncSF)/mCurrentSize.width();
+        qreal reqSF = (minitSize.width()* mIncSF)/mCurrentSize.width();
         zoomImage(reqSF, m_AnimRefPoint);
         }   
     //check if all steps are done,if not emit signal to continue the animation
-    if(mdoubletapSteps >= 1 ){
+    if(mdoubletapSteps > 1 ){
         mdoubletapSteps -= 1;
         emit stepZoom();    
         }
@@ -627,6 +621,9 @@
         killTimer(mTimerId);
         mTimerId = 0;
     }
+    else {
+        HbScrollArea::timerEvent( event );
+    }
 }
 
 bool GlxZoomWidget::isFocussedItemCorrupt()