diff -r 819e59dfc032 -r 2d9cac8919d3 utilityapps/launcher/src/applicationview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/utilityapps/launcher/src/applicationview.cpp Mon Oct 18 16:30:05 2010 +0300 @@ -0,0 +1,299 @@ +/* +* 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: +* +*/ + +#include +#include +#include +#include +#include +#include + +#include "applicationview.h" +#include "launchermainwindow.h" +#include "enginewrapper.h" +#include "notifications.h" +#include "commonActions.h" +#include "outputview.h" + + + + +// xml definition of view +const char *APPLICATIONVIEW_XML = ":/xml/applicationview.xml"; + +// name of the application view object in the xml file. +const char *APPLICATIONVIEW = "applicationview"; +const char *LISTVIEW = "applicationList"; +const char *ACTIONREFRESH = "actionRefresh"; +const char *ACTIONLAUNCHAPPS = "actionLaunchApps"; +const char *ACTIONLAUNCHANDCLOSEAPPS = "actionLaunchAppsAndClose"; +const char *ACTIONSELECT = "actionSelectAll"; +const char *ACTIONUNSELECT = "actionUnselectAll"; +const char *ACTIONOPENOUTPUTVIEW = "actionOpenOutputView"; +const char *ACTIONSKIPHIDDEN = "actionSkipHidden"; +const char *ACTIONDONTSKIPHIDDEN = "actionDontSkipHidden"; + +// --------------------------------------------------------------------------- + +ApplicationView* ApplicationView::create(HbDocumentLoader &loader, CommonActions *commonActions, EngineWrapper *engine) +{ + + // Load xml-file + bool ok = false; + qDebug("QTLauncher::load xml"); + loader.load(APPLICATIONVIEW_XML, &ok); + + // Load Application View: + QGraphicsWidget *widget = loader.findWidget(APPLICATIONVIEW); + Q_ASSERT_X(ok && (widget != 0), "Launcher", "Invalid launcher.xml file"); + ApplicationView *applicationView = qobject_cast(widget); + + // Set enginewrappers pointer to applicationview and initialize it + applicationView->setEngine(engine); + applicationView->init(loader, commonActions); + + return applicationView; +} + +// --------------------------------------------------------------------------- + +ApplicationView::ApplicationView() + : mEngine(0), + mActionRefresh(0), + mActionLaunchApps(0), + mActionLaunchAndCloseApps(0), + mActionSkipHidden(0), + mActionDontSkipHidden(0), + mActionSelectAll(0), + mActionUnselectAll(0), + mActionOpenOutputView(0) +{ +} + +// --------------------------------------------------------------------------- + +void ApplicationView::setEngine(EngineWrapper *engine) +{ + mEngine = engine; +} + +// --------------------------------------------------------------------------- + +ApplicationView::~ApplicationView() +{ + if(mActionRefresh) + mActionRefresh->deleteLater(); + if(mActionLaunchApps) + mActionLaunchApps->deleteLater(); + if(mActionLaunchAndCloseApps) + mActionLaunchAndCloseApps->deleteLater(); + if(mActionSkipHidden) + mActionSkipHidden->deleteLater(); + if(mActionDontSkipHidden) + mActionDontSkipHidden->deleteLater(); + if(mActionSelectAll) + mActionSelectAll->deleteLater(); + if(mActionUnselectAll) + mActionUnselectAll->deleteLater(); + if(mActionOpenOutputView) + mActionOpenOutputView->deleteLater(); +} + +// --------------------------------------------------------------------------- + +void ApplicationView::init(HbDocumentLoader &loader, CommonActions *commonActions) +{ + // Load items from xml file + loadItemsFromXml(loader); + + // Set actions checkable and select "Skip hidden & embed" + mActionSkipHidden->setCheckable(true); + mActionSkipHidden->setChecked(true); + mActionDontSkipHidden->setCheckable(true); + + commonActions->addActionsToMenu(menu()); + + // Set list widget settings + mApplicationList->setClampingStyle(HbScrollArea::BounceBackClamping); + mApplicationList->setSelectionMode(HbAbstractItemView::MultiSelection); + + // Refresh application list + refreshAppList(); + + // Connect signals and slots + connectSignalsAndSlots(); + +} + +// --------------------------------------------------------------------------- + +void ApplicationView::refreshAppList() +{ + // Clear list + + mApplicationList->clear(); + QStringList apps; + + // show wait dialog + QObject *dialog = static_cast(Notifications::showWaitDialog("Initializing")); + + // Get application list from engine + if(!mEngine->listOfAllApps(apps)) { + Notifications::showErrorNote("Unable to refresh list"); + } + + // Format values to list widget + int i = 0; + while(i < apps.size()) { + mApplicationList->addItem(/*HbIcon(":/gfx/check.svg"),*/apps.at(i)); + i++; + } + mApplicationList->selectAll(); + + // remove the wait dialog + delete dialog; +} + +// --------------------------------------------------------------------------- + +void ApplicationView::connectSignalsAndSlots() +{ + // Actions + connect(mActionRefresh, SIGNAL(triggered()), this, SLOT(refreshAppList())); + connect(mActionLaunchApps, SIGNAL(triggered()), this, SLOT(launchSelectedApplications())); + connect(mActionLaunchAndCloseApps, SIGNAL(triggered()), this, SLOT(launchAndCloseSelectedApplications())); + connect(mActionSelectAll, SIGNAL(triggered()), this, SLOT(selectAllItems())); + connect(mActionUnselectAll, SIGNAL(triggered()), this, SLOT(unselectAllItems())); + connect(mActionSkipHidden, SIGNAL(triggered()), this, SLOT(launchOptionsSkipHidden())); + connect(mActionDontSkipHidden, SIGNAL(triggered()), this, SLOT(launchOptionsDontSkipHidden())); + connect(mActionOpenOutputView, SIGNAL(triggered()), this, SLOT(openOutputView())); +} + +// --------------------------------------------------------------------------- + + +void ApplicationView::loadItemsFromXml(HbDocumentLoader &loader) +{ + + // List widget: + QGraphicsWidget *widget = loader.findWidget(LISTVIEW); + Q_ASSERT_X((widget != 0), "Launcher", "Invalid launcher.xml file"); + mApplicationList = qobject_cast(widget); + + /* ACTIONS: */ + //refresh + QObject *object= loader.findObject(ACTIONREFRESH); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionRefresh = qobject_cast(object); + + // launch applications + object= loader.findObject(ACTIONLAUNCHAPPS); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionLaunchApps = qobject_cast(object); + + // launch and close + object= loader.findObject(ACTIONLAUNCHANDCLOSEAPPS); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionLaunchAndCloseApps = qobject_cast(object); + + // select all applications + object= loader.findObject(ACTIONSELECT); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionSelectAll = qobject_cast(object); + + // unselect all applications + object= loader.findObject(ACTIONUNSELECT); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionUnselectAll = qobject_cast(object); + + // open output view + object= loader.findObject(ACTIONOPENOUTPUTVIEW); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionOpenOutputView = qobject_cast(object); + + // skip hidden + object= loader.findObject(ACTIONSKIPHIDDEN); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionSkipHidden = qobject_cast(object); + + // do not skip hidden + object= loader.findObject(ACTIONDONTSKIPHIDDEN); + Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file"); + mActionDontSkipHidden = qobject_cast(object); + +} + +// --------------------------------------------------------------------------- + +void ApplicationView::launchSelectedApplications() +{ + QModelIndexList list = mApplicationList->selectionModel()->selectedIndexes(); + mEngine->startAppLaunching(list, false); +} + +// --------------------------------------------------------------------------- + +void ApplicationView::launchAndCloseSelectedApplications() +{ + QModelIndexList list = mApplicationList->selectionModel()->selectedIndexes(); + mEngine->startAppLaunching(list, true); +} + +// --------------------------------------------------------------------------- + +void ApplicationView::selectAllItems() +{ + mApplicationList->selectAll(); +} + +// --------------------------------------------------------------------------- + +void ApplicationView::unselectAllItems() +{ + mApplicationList->clearSelection(); +} +// --------------------------------------------------------------------------- + +void ApplicationView::launchOptionsSkipHidden() +{ + mActionSkipHidden->setChecked(true); + mActionDontSkipHidden->setChecked(false); + mEngine->setSkipHiddenAndEmbedOnly(true); +} + +// --------------------------------------------------------------------------- + +void ApplicationView::launchOptionsDontSkipHidden() +{ + mActionSkipHidden->setChecked(false); + mActionDontSkipHidden->setChecked(true); + mEngine->setSkipHiddenAndEmbedOnly(false); +} + +// --------------------------------------------------------------------------- + +void ApplicationView::openOutputView() +{ + qDebug("OpenOutputView"); + LauncherMainWindow *pMainWindow = static_cast< LauncherMainWindow * >( mainWindow() ); + if( pMainWindow ) + { + pMainWindow->openOutputView(); + } +} + +// ---------------------------------------------------------------------------