diff -r 7d48bed6ce0c -r 987c9837762f satui/satapp/src/satappmenuprovider.cpp --- a/satui/satapp/src/satappmenuprovider.cpp Tue Aug 31 15:45:17 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,347 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides and maintains SAT main view (selection list) -* -*/ - -// qt -#include -#include -#include -#include -// hb -#include -#include -#include -#include -#include -#include -#include -// satapp -#include "satappmenuprovider.h" -#include "satappaction.h" -#include "satappconstant.h" - -// constants -const char *SATAPP_DOCML = ":/xml/satapp.docml"; -const char *SATAPP_SETUPMENU_VIEW = "setupmenu_view"; -const char *SATAPP_SELECTITEM_VIEW = "selectitem_view"; -const char *SATAPP_MENUITEM = "s:ListWidget"; -const char *SATAPP_SELECTITEM = "t:ListWidget"; -const char *SATAPP_SUBTITLE = "t:label"; - - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::SatAppMenuProvider -// ---------------------------------------------------------------------------- -// -SatAppMenuProvider::SatAppMenuProvider(HbMainWindow *window,QObject *parent) - : QObject(parent), mMainWindow(window),mSetupMenuView(0), - mSelectItemView(0),mSoftKeyQuitAction(0),mSoftKeyBackAction(0), - mListWidget(0),mSelectListWidget(0),mSubTitle(0),mCurrentAction(0) -{ - qDebug("SATAPP: SatAppMenuProvider::SatAppMenuProvider"); -} - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::~SatAppMenuProvider -// ---------------------------------------------------------------------------- -// -SatAppMenuProvider::~SatAppMenuProvider() -{ - qDebug("SATAPP: SatAppMenuProvider::~SatAppMenuProvider >"); - resetState(); - // delete all objects created from DOCML. - while (!mObjects.isEmpty()) { - delete mObjects.takeFirst(); - } - // delete actions - delete mSoftKeyQuitAction; - delete mSoftKeyBackAction; - qDebug("SATAPP: SatAppMenuProvider::~SatAppMenuProvider <"); -} - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::takeScreenShot -// ---------------------------------------------------------------------------- -// -QPixmap SatAppMenuProvider::takeScreenShot() -{ - qDebug("SATAPP: SatAppMenuProvider::takeScreenShot"); - return QPixmap::grabWidget(mMainWindow, mMainWindow->rect()); -} - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::loadMainView -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::loadMainView() -{ - qDebug("SATAPP: SatAppMenuProvider::loadMainView >"); - - // create actions - mSoftKeyQuitAction = new HbAction(Hb::QuitNaviAction,this); - mSoftKeyBackAction = new HbAction(Hb::BackNaviAction,this); - - bool docmlLoad = false; - HbDocumentLoader loader; - // ownership of the objects are transferred to caller - mObjects = loader.load(SATAPP_DOCML,&docmlLoad); - Q_ASSERT(docmlLoad); - qDebug("SATAPP: SatAppMenuProvider main view found"); - // load setupmenu view - mSetupMenuView = qobject_cast(loader.findWidget - (SATAPP_SETUPMENU_VIEW)); - // find setupmenu view items - mListWidget = qobject_cast - ( loader.findWidget(SATAPP_MENUITEM )); - // connect setupmenu view menu - HbAction *menuAction = mSetupMenuView->menu()->addAction( - hbTrId("txt_common_menu_exit")); - SAT_ASSERT(connect(menuAction, SIGNAL(triggered()), - mMainWindow, SLOT(close()))); - SAT_ASSERT(connect(mSoftKeyQuitAction, SIGNAL(triggered()), - mMainWindow, SLOT(close()))); - // set this view as current view - mMainWindow->addView(mSetupMenuView); - mMainWindow->setCurrentView(mSetupMenuView); - - // load selectitem view - mSelectItemView = qobject_cast(loader.findWidget - (SATAPP_SELECTITEM_VIEW)); - // find selectitem view items - mSubTitle = qobject_cast - ( loader.findWidget(SATAPP_SUBTITLE) ); - mSelectListWidget = qobject_cast - ( loader.findWidget(SATAPP_SELECTITEM )); - // connect selectitem view menu - HbAction *menuBack = mSelectItemView->menu()->addAction( - hbTrId("txt_common_opt_back")); - SAT_ASSERT(connect(menuBack, SIGNAL(triggered()), - mSoftKeyBackAction, SIGNAL(triggered()))); - HbAction *menuQuit = mSelectItemView->menu()->addAction( - hbTrId("txt_common_menu_exit")); - - SAT_ASSERT(connect(menuQuit, SIGNAL(triggered()), - mMainWindow, SLOT(close()))); - qDebug("SATAPP: SatAppMenuProvider::loadMainView <"); - -} - -// ---------------------------------------------------------------------------- -// switchView -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::switchView() -{ - qDebug("SATAPP: SatAppMenuProvider::switchView >"); - if (mCurrentAction && ESatSelectItemAction == mCurrentAction->action()) { - // switch to select item view - mMainWindow->removeView(mMainWindow->currentView()); - mMainWindow->addView(mSelectItemView); - mMainWindow->setCurrentView(mSelectItemView); - } else { - // switch to main menu view - mMainWindow->removeView(mMainWindow->currentView()); - mMainWindow->addView(mSetupMenuView); - mMainWindow->setCurrentView(mSetupMenuView); - } - qDebug("SATAPP: SatAppMenuProvider::switchView <"); -} - - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::setUpMenu -// constructs a menu in the main SAT application view -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::setUpMenu(SatAppAction &action) -{ - qDebug("SATAPP: SatAppMenuProvider::setUpMenu >"); - if (!mSetupMenuView) { - loadMainView(); - } - resetState(); - mCurrentAction = &action; - switchView(); - action.setResponse(ESatSuccess); - - // The text is the application name - // should be shown on the menu area always - QString text = action.value(KeyText).toString(); - if (!text.isEmpty()) { - mSetupMenuView->setTitle(text); - mSelectItemView->setTitle(text); - } - qDebug() << "SATAPP: SetUpMenu title=" << text; - - // build the menu - QList menu = action.value(KeyMenu).toList(); - mListWidget->clear(); - for(int i = 0; i < menu.count(); i++ ) { - mListWidget->addItem(menu.at(i).toString()); - } - qDebug() << "SATAPP: SetUpMenu menu=" << menu; - - // back-key quits the application - mSetupMenuView->setNavigationAction(mSoftKeyQuitAction); - // completes action with ESatSuccess and selected item - connectItem(); - - qDebug("SATAPP: SatAppMenuProvider::setUpMenu <"); -} - - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::selectItem -// Constructs a SETECT ITEM view -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::selectItem( SatAppAction &action) -{ - qDebug("SATAPP: SatAppMenuProvider::selectItem >"); - - if (!mSetupMenuView) { - loadMainView(); - } - - resetState(); - mCurrentAction = &action; - switchView(); - action.setResponse(ESatSuccess); - - // Set sub title - QString text = action.value(KeyText).toString(); - if (!text.isEmpty()) { - mSubTitle->setPlainText(text); - } else { - mSubTitle->setPlainText(hbTrId("txt_long_caption_sim_services")); - } - qDebug() << "SATAPP: selectItem text=" << text; - - // Set List widget - QList menu = action.value(KeyMenu).toList(); - mSelectListWidget->clear(); - for(int i = 0; i < menu.count(); i++ ) { - mSelectListWidget->addItem(menu.at( i ).toString()); - } - qDebug() << "SATAPP: selectItem menu=" << menu; - - // timeout completes action with ESatNoResponseFromUser - QTimer::singleShot(KDefaultSelectionTimeoutMseconds, - mCurrentAction,SLOT(completeWithNoResponse())); - // back-key completes action with ESatBackwardModeRequestedByUser - mSelectItemView->setNavigationAction(mSoftKeyBackAction); - SAT_ASSERT(connect(mSoftKeyBackAction, SIGNAL(triggered()), - mCurrentAction, SLOT(completeWithBackRequested()))); - SAT_ASSERT(connect(mSelectItemView->menu()->actions().at(1), - SIGNAL(triggered()), - mCurrentAction, SLOT(completeWithSessionTerminated()))); - - // completes action with ESatSuccess and selected item - connectItem(); - - qDebug("SATAPP: SatAppMenuProvider::selectItem <"); -} - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::resetState -// terminates ongoing events and clears the screen -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::resetState() -{ - qDebug("SATAPP: SatAppMenuProvider::resetState >"); - mCurrentAction = 0; - disconnectItem(); - qDebug("SATAPP: SatAppMenuProvider::resetState <"); -} - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::menuItemSelected -// (Menu item selected). -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::menuItemSelected(HbListWidgetItem *item) -{ - qDebug("SATAPP: SatAppMenuProvider::menuItemSelected >"); - Q_ASSERT(mCurrentAction); - if (ESatSetUpMenuAction == mCurrentAction->action()) { - int index = mListWidget->row(item); - mCurrentAction->set(KeySelection,index); - mCurrentAction->set(KeyHelpRequested,false); - mCurrentAction->completeWithSuccess(); - } else if(ESatSelectItemAction == mCurrentAction->action()) { - int index = mSelectListWidget->row(item); - mCurrentAction->set(KeySelection,index); - mCurrentAction->completeWithSuccess(); - } - qDebug("SATAPP: SatAppMenuProvider::menuItemSelected <"); -} - - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::connectItem -// (Connect listwidget item). -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::connectItem() -{ - qDebug("SATAPP: SatAppMenuProvider::connectItem >"); - Q_ASSERT(mCurrentAction); - if (ESatSetUpMenuAction == mCurrentAction->action()) { - SAT_ASSERT(connect( - mListWidget, SIGNAL(activated(HbListWidgetItem *)), - this, SLOT(menuItemSelected(HbListWidgetItem *)))); - SAT_ASSERT(connect( - mListWidget, - SIGNAL(longPressed(HbListWidgetItem *, const QPointF &)), - this, SLOT(menuItemSelected(HbListWidgetItem *)))); - } else if(mCurrentAction->action()== ESatSelectItemAction) { - SAT_ASSERT(connect( - mSelectListWidget, SIGNAL(activated(HbListWidgetItem *)), - this, SLOT(menuItemSelected(HbListWidgetItem *)))); - SAT_ASSERT(connect( - mSelectListWidget, - SIGNAL(longPressed(HbListWidgetItem*, const QPointF &)), - this, SLOT(menuItemSelected(HbListWidgetItem *)))); - } - qDebug("SATAPP: SatAppMenuProvider::connectItem <"); -} - -// ---------------------------------------------------------------------------- -// SatAppMenuProvider::disconnectItem -// (Disconnect listwidget item). -// ---------------------------------------------------------------------------- -// -void SatAppMenuProvider::disconnectItem() -{ - qDebug("SATAPP: SatAppMenuProvider::disconnectItem >"); - // setup menu view - disconnect(mListWidget, SIGNAL( activated(HbListWidgetItem *)), - this, SLOT( menuItemSelected( HbListWidgetItem *))); - disconnect( - mListWidget, SIGNAL(longPressed(HbListWidgetItem*, const QPointF &)), - this, SLOT(menuItemSelected(HbListWidgetItem *))); - // select item view - disconnect(mSelectListWidget, SIGNAL( activated(HbListWidgetItem *)), - this, SLOT( menuItemSelected( HbListWidgetItem *))); - disconnect( - mSelectListWidget, - SIGNAL(longPressed(HbListWidgetItem*, const QPointF &)), - this, SLOT(menuItemSelected(HbListWidgetItem *))); - qDebug("SATAPP: SatAppMenuProvider::disconnectItem <"); -} - -//End of file