# HG changeset patch # User hgs # Date 1282566976 -19800 # Node ID 383b67fbdb1124f6ae88a2b8b84c254aee7c0357 # Parent 0f0f3f26f78793d82e5c5f161e909346015d4ceb 201033 diff -r 0f0f3f26f787 -r 383b67fbdb11 data/rotatefslandscape.fxml --- a/data/rotatefslandscape.fxml Fri Aug 06 20:44:25 2010 +0530 +++ b/data/rotatefslandscape.fxml Mon Aug 23 18:06:16 2010 +0530 @@ -9,8 +9,8 @@ -60 0 - 0.5 - 0.5 + 0.5 + 0.5 diff -r 0f0f3f26f787 -r 383b67fbdb11 data/rotatefsprotrait.fxml --- a/data/rotatefsprotrait.fxml Fri Aug 06 20:44:25 2010 +0530 +++ b/data/rotatefsprotrait.fxml Mon Aug 23 18:06:16 2010 +0530 @@ -9,8 +9,8 @@ 60 0 - 0.5 - 0.5 + 0.5 + 0.5 \ No newline at end of file diff -r 0f0f3f26f787 -r 383b67fbdb11 engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp --- a/engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/engine/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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 diff -r 0f0f3f26f787 -r 383b67fbdb11 engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsidlist.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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 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 diff -r 0f0f3f26f787 -r 383b67fbdb11 main/glxapplication.cpp --- a/main/glxapplication.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/main/glxapplication.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -18,6 +18,7 @@ //include #include #include +#include #include //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()"); diff -r 0f0f3f26f787 -r 383b67fbdb11 main/glxapplication.h --- a/main/glxapplication.h Fri Aug 06 20:44:25 2010 +0530 +++ b/main/glxapplication.h Mon Aug 23 18:06:16 2010 +0530 @@ -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(); }; diff -r 0f0f3f26f787 -r 383b67fbdb11 main/main.cpp --- a/main/main.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/main/main.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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(); diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/commandhandlers/bwins/glxcommoncommandhandlersu.def --- a/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def Mon Aug 23 18:06:16 2010 +0530 @@ -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 *) diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/commandhandlers/commoncommandhandlers/inc/glxcommondialogs.h --- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommondialogs.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommondialogs.h Mon Aug 23 18:06:16 2010 +0530 @@ -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 diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp --- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlercomment.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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; diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/commandhandlers/commoncommandhandlers/src/glxcommondialogs.cpp --- a/ui/commandhandlers/commoncommandhandlers/src/glxcommondialogs.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommondialogs.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -20,10 +20,11 @@ #include #include -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; diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/commandhandlers/eabi/glxcommoncommandhandlersu.def --- a/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def Mon Aug 23 18:06:16 2010 +0530 @@ -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 diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/detailscustomwidget/detailscustomwidgets/glxdetailstextedit.cpp --- a/ui/detailscustomwidget/detailscustomwidgets/glxdetailstextedit.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/detailscustomwidget/detailscustomwidgets/glxdetailstextedit.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -53,6 +53,7 @@ { setAlignment(Qt::AlignLeft); mDesc = new HbEditorInterface(this); + clearContextMenuFlag(Hb::ShowTextContextMenuOnLongPress); mDesc->setInputConstraints (HbEditorConstraintIgnoreFocus); } diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/inc/glxmodelroles.h --- a/ui/inc/glxmodelroles.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/inc/glxmodelroles.h Mon Aug 23 18:06:16 2010 +0530 @@ -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 }; diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/inc/glxuistd.h --- a/ui/inc/glxuistd.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/inc/glxuistd.h Mon Aug 23 18:06:16 2010 +0530 @@ -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"); diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/uiengine/model/mediamodel/inc/glxmediamodel.h --- a/ui/uiengine/model/mediamodel/inc/glxmediamodel.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/uiengine/model/mediamodel/inc/glxmediamodel.h Mon Aug 23 18:06:16 2010 +0530 @@ -274,6 +274,7 @@ GlxDRMUtilityWrapper* mDRMUtilityWrapper; int mTempVisibleWindowIndex; bool thumbnailPopulatedFlag; + bool mPaintPage; }; diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/uiengine/model/mediamodel/src/glxmediamodel.cpp --- a/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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. diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/uiengine/model/modelwrapper/inc/glxmodelwrapper.h --- a/ui/uiengine/model/modelwrapper/inc/glxmodelwrapper.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/uiengine/model/modelwrapper/inc/glxmodelwrapper.h Mon Aug 23 18:06:16 2010 +0530 @@ -77,6 +77,7 @@ QAbstractItemModel *mModel; int mOriginalRole; int mConvertRole; + bool mPaintPage; // Flag to determine painting First page Together }; #endif /* GLXMODELWRAPPER_H */ diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/uiengine/model/modelwrapper/src/glxmodelwrapper.cpp --- a/ui/uiengine/model/modelwrapper/src/glxmodelwrapper.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/uiengine/model/modelwrapper/src/glxmodelwrapper.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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 () ) + { + mPaintPage = variant.value(); + } 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)); } } diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/viewmanagement/bwins/glxviewmanageru.def --- a/ui/viewmanagement/bwins/glxviewmanageru.def Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/viewmanagement/bwins/glxviewmanageru.def Mon Aug 23 18:06:16 2010 +0530 @@ -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) diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/viewmanagement/eabi/glxviewmanageru.def --- a/ui/viewmanagement/eabi/glxviewmanageru.def Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/viewmanagement/eabi/glxviewmanageru.def Mon Aug 23 18:06:16 2010 +0530 @@ -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 diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/viewmanagement/viewmanager/inc/glxviewmanager.h --- a/ui/viewmanagement/viewmanager/inc/glxviewmanager.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/viewmanagement/viewmanager/inc/glxviewmanager.h Mon Aug 23 18:06:16 2010 +0530 @@ -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: diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/viewmanagement/viewmanager/src/glxviewmanager.cpp --- a/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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( ) diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/detailsview/src/glxdetailsview.cpp --- a/ui/views/detailsview/src/glxdetailsview.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/detailsview/src/glxdetailsview.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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); } diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/fullscreenview/inc/glxcoverflow.h --- a/ui/views/fullscreenview/inc/glxcoverflow.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/fullscreenview/inc/glxcoverflow.h Mon Aug 23 18:06:16 2010 +0530 @@ -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_ */ diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/fullscreenview/inc/glxfullscreenview.h --- a/ui/views/fullscreenview/inc/glxfullscreenview.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/fullscreenview/inc/glxfullscreenview.h Mon Aug 23 18:06:16 2010 +0530 @@ -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 diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/fullscreenview/src/glxcoverflow.cpp --- a/ui/views/fullscreenview/src/glxcoverflow.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/fullscreenview/src/glxcoverflow.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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(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 > () ) { diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/fullscreenview/src/glxfullscreenview.cpp --- a/ui/views/fullscreenview/src/glxfullscreenview.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/fullscreenview/src/glxfullscreenview.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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 () ) { @@ -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() { diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/gridview/src/glxgridview.cpp --- a/ui/views/gridview/src/glxgridview.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/gridview/src/glxgridview.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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); diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/slideshowview/inc/glxslideshowwidget.h --- a/ui/views/slideshowview/inc/glxslideshowwidget.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/slideshowview/inc/glxslideshowwidget.h Mon Aug 23 18:06:16 2010 +0530 @@ -316,6 +316,7 @@ QList mItemList; bool mIsPause; int mSlideShowItemCount; + bool mIsAutoMoving; }; #endif /* GLXSLIDESHOWWIDGET_H */ diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/views/slideshowview/src/glxslideshowwidget.cpp --- a/ui/views/slideshowview/src/glxslideshowwidget.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/views/slideshowview/src/glxslideshowwidget.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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(event->gesture(Qt::PanGesture))) { - HbPanGesture *hbPanGesture = qobject_cast(panningGesture); + if ( QPanGesture *panningGesture = qobject_cast( event->gesture( Qt::PanGesture ) ) ) { + HbPanGesture *hbPanGesture = qobject_cast( 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 ); } diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/widgets/glxzoomwidget/inc/glxzoomwidget.h --- a/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/widgets/glxzoomwidget/inc/glxzoomwidget.h Mon Aug 23 18:06:16 2010 +0530 @@ -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; }; diff -r 0f0f3f26f787 -r 383b67fbdb11 ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp --- a/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp Fri Aug 06 20:44:25 2010 +0530 +++ b/ui/widgets/glxzoomwidget/src/glxzoomwidget.cpp Mon Aug 23 18:06:16 2010 +0530 @@ -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(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()