diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/viewmanager/src/glxmenumanager.cpp --- a/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -14,60 +14,25 @@ * Description: * */ -#include -#include + +//include #include #include -#include "hbmenu.h" -#include -#include +#include +#include -GlxMenuManager::GlxMenuManager() -{ -} -GlxMenuManager::~GlxMenuManager() +//user include +#include "glxviewids.h" +#include "glxmenumanager.h" +#include "glxcommandhandlers.hrh" +#include "glxmodelparm.h" + +GlxMenuManager::GlxMenuManager(HbMainWindow* mainWindow):mMainWindow(mainWindow) { } -void GlxMenuManager::CreateViewMenu(qint32 viewId,HbMenu* menu,bool empty, int subState) + +GlxMenuManager::~GlxMenuManager() { - Q_UNUSED(empty); - switch(viewId) - { - case GLX_GRIDVIEW_ID: { - qDebug()<<"GRIDVIEW MENU CREATED"; - CreateGridMenu(menu); - } - break; - - case GLX_LISTVIEW_ID: { - qDebug()<<"LISTVIEW MENU CREATED"; - CreateListMenu(menu); - } - break; - case GLX_FULLSCREENVIEW_ID:{ - //image viewer state - if(2 == subState){ - CreateImageViewerMenu(menu); - } - else{ - qDebug()<<"FULLSCREENVIEW MENU CREATED"; - CreateFullscreenMenu(menu); - } - } - break; - - case GLX_DETAILSVIEW_ID: { - //will create details specific menu later - qDebug()<<"DETAILS VIEW MENU CREATE"; - } - - case GLX_SLIDESHOWVIEW_ID : - break; - - default: - break; - - } } void GlxMenuManager::createMarkingModeMenu(HbMenu* menu) @@ -87,103 +52,178 @@ action->setData(EGlxCmdUnMarkAll); action->setVisible(FALSE); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - menu->setVisible(FALSE); action = menu->addAction("Exit"); action->setData(EGlxCmdUnMarkAll); action->setVisible(FALSE); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - menu->setVisible(FALSE); +} + +void GlxMenuManager::addMenu(qint32 viewId, HbMenu* menu) +{ + switch(viewId) { + case GLX_GRIDVIEW_ID: + connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateGridMenu() ) ); + CreateGridMenu( menu ); + break; + + case GLX_LISTVIEW_ID: + CreateListMenu ( menu ); + break; + + case GLX_FULLSCREENVIEW_ID: + connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateFullscreenMenu() ) ); + CreateFullscreenMenu( menu ); + break; + + default: + break; + } +} + +void GlxMenuManager::removeMenu(qint32 viewId, HbMenu* menu) +{ + switch(viewId) { + case GLX_GRIDVIEW_ID: + disconnect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateGridMenu() ) ); + break; + + case GLX_FULLSCREENVIEW_ID: + disconnect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateFullscreenMenu() ) ); + break; + + default: + break; + } } void GlxMenuManager::CreateGridMenu(HbMenu* menu) { qDebug()<<"GlxMenuManager::CreateGridMenu"; HbAction *action = NULL; + action = menu->addAction("Send"); action->setData(EGlxCmdSend); - // action->setVisible(EFalse); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Upload to web"); - action->setData(EGlxCmdUpload); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ action = menu->addAction("Slide Show"); action->setData(EGlxCmdFirstSlideshow); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); + action = menu->addAction("Add to album"); action->setData(EGlxCmdAddToAlbum); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Sort by"); - //action->setData(); + + action = menu->addAction("Remove From Album"); + action->setData(EGlxCmdRemoveFrom); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Setting"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ + action = menu->addAction("Delete"); action->setData(EGlxCmdDelete); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Help"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Exit");*/ } void GlxMenuManager::CreateListMenu(HbMenu* menu) { qDebug()<<"GlxMenuManager::CreateListMenu"; - /*HbAction *action = menu->addAction("Setting"); - //action->setData(); + HbAction *action = NULL; + + action = menu->addAction("New album"); + action->setData(EGlxCmdAddMedia); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Help"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Exit"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ } void GlxMenuManager::CreateFullscreenMenu(HbMenu* menu) { qDebug()<<"GlxMenuManager::CreateFullscreenMenu"; HbAction *action = NULL; + action = menu->addAction("Send"); action->setData(EGlxCmdSend); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); + action = menu->addAction("Slide Show"); action->setData(EGlxCmdSelectSlideshow); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); + action = menu->addAction("Add to album"); action->setData(EGlxCmdAddToAlbum); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Rotate"); + + action = menu->addAction("Rotate"); action->setData(EGlxCmdRotate); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Upload to web"); - action->setData(EGlxCmdUpload); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Use Image"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Print"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Edit"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Details"); - action->setData(EGlxCmdDetailsOption); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Help"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Exit"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ +} + +void GlxMenuManager::setAllActionVisibility( QList actionList, bool visible ) +{ + qDebug() << "GlxMenuManager::setAllActionVisibility count " << actionList.count() << " visible" << visible; + for ( int i = 0 ; i < actionList.count(); i++) { + actionList.at(i)->setVisible(visible); + } +} + +int GlxMenuManager::viewSubState() +{ + QVariant variant = mModel->data( mModel->index(0,0), GlxSubStateRole ); + if ( variant.isValid() && variant.canConvert () ) { + return variant.value() ; + } + return -1; } -void GlxMenuManager::CreateImageViewerMenu(HbMenu* menu) +void GlxMenuManager::updateGridMenu() { + qDebug() << "GlxMenuManager::updateGridMenu"; + + HbMenu *menu = qobject_cast( sender() ); + static bool isAllActionDisable = FALSE; + int rowCount = mModel->rowCount(); + QList actionList = menu->actions(); + + if ( rowCount == 0 && isAllActionDisable == FALSE) { + qDebug() << "GlxMenuManager::updateGridMenu set all visible FALSE"; + setAllActionVisibility( actionList, FALSE ); + isAllActionDisable = TRUE; + } + + if ( rowCount && isAllActionDisable == TRUE ) { + setAllActionVisibility( actionList, TRUE ); + isAllActionDisable = FALSE; + qDebug() << "GlxMenuManager::updateGridMenu set all visible TRUE" ; + } + + if ( rowCount ) { + int state = viewSubState(); + + switch ( state ) { + case ALBUM_ITEM_S : + actionList.at(GlxGridViewRemoveFromAlbum)->setVisible( TRUE ); + break ; + + default : + actionList.at(GlxGridViewRemoveFromAlbum)->setVisible( FALSE ); + break ; + } + } +} + +void GlxMenuManager::updateFullscreenMenu() +{ + HbMenu *menu = qobject_cast( sender() ); + QList actionList = menu->actions(); + static bool isAllActionDisable = FALSE; + int state = viewSubState() ; + + if ( state == IMAGEVIEWER_S && isAllActionDisable == FALSE ) { + setAllActionVisibility( actionList, FALSE ); + isAllActionDisable = TRUE; + } + + if ( state != IMAGEVIEWER_S && isAllActionDisable == TRUE ) { + setAllActionVisibility( actionList, TRUE ); + isAllActionDisable = FALSE; + } } void GlxMenuManager::menuItemSelected() @@ -202,7 +242,7 @@ switch ( viewId ) { case GLX_GRIDVIEW_ID : action = mainMenu->addAction("Send"); - action->setData(EGlxCmdSend); + action->setData(EGlxCmdContextSend); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); action = mainMenu->addAction("Slide Show"); @@ -223,16 +263,17 @@ action->setData(EGlxCmdAlbumSlideShow); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = mainMenu->addAction("Delete"); + action = mainMenu->addAction("Delete"); action->setData(EGlxCmdContextAlbumDelete); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ + connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); break; default: break; } + connect(mMainWindow, SIGNAL(aboutToChangeOrientation ()), mainMenu, SLOT(close())); mainMenu->exec(pos); - + disconnect(mMainWindow, SIGNAL(aboutToChangeOrientation ()), mainMenu, SLOT(close())); delete mainMenu; }