launcher/src/applicationview.cpp
changeset 55 2d9cac8919d3
parent 53 819e59dfc032
child 56 392f7045e621
equal deleted inserted replaced
53:819e59dfc032 55:2d9cac8919d3
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include <hbdocumentloader.h>
       
    19 #include <hblistwidget.h>
       
    20 #include <qstandarditemmodel.h>
       
    21 #include <hbaction.h>
       
    22 #include <hbmenu.h>
       
    23 #include <qlist.h>
       
    24 
       
    25 #include "applicationview.h"
       
    26 #include "launchermainwindow.h"
       
    27 #include "enginewrapper.h"
       
    28 #include "notifications.h"
       
    29 #include "commonActions.h"
       
    30 #include "outputview.h"
       
    31 
       
    32 
       
    33 
       
    34 
       
    35 // xml definition of view
       
    36 const char *APPLICATIONVIEW_XML = ":/xml/applicationview.xml";
       
    37 
       
    38 // name of the application view object in the xml file.
       
    39 const char *APPLICATIONVIEW = "applicationview";
       
    40 const char *LISTVIEW = "applicationList";
       
    41 const char *ACTIONREFRESH = "actionRefresh";
       
    42 const char *ACTIONLAUNCHAPPS = "actionLaunchApps";
       
    43 const char *ACTIONLAUNCHANDCLOSEAPPS = "actionLaunchAppsAndClose";
       
    44 const char *ACTIONSELECT = "actionSelectAll";
       
    45 const char *ACTIONUNSELECT = "actionUnselectAll";
       
    46 const char *ACTIONOPENOUTPUTVIEW = "actionOpenOutputView";
       
    47 const char *ACTIONSKIPHIDDEN = "actionSkipHidden";
       
    48 const char *ACTIONDONTSKIPHIDDEN = "actionDontSkipHidden";
       
    49 
       
    50 // ---------------------------------------------------------------------------
       
    51 
       
    52 ApplicationView* ApplicationView::create(HbDocumentLoader &loader, CommonActions *commonActions, EngineWrapper *engine)
       
    53 {
       
    54     
       
    55     // Load xml-file
       
    56     bool ok = false;
       
    57     qDebug("QTLauncher::load xml");
       
    58     loader.load(APPLICATIONVIEW_XML, &ok);
       
    59     
       
    60     // Load Application View:
       
    61     QGraphicsWidget *widget = loader.findWidget(APPLICATIONVIEW);
       
    62     Q_ASSERT_X(ok && (widget != 0), "Launcher", "Invalid launcher.xml file");
       
    63     ApplicationView *applicationView = qobject_cast<ApplicationView *>(widget);
       
    64       
       
    65     // Set enginewrappers pointer to applicationview and initialize it
       
    66     applicationView->setEngine(engine);
       
    67     applicationView->init(loader, commonActions);
       
    68     
       
    69     return applicationView;    
       
    70 }
       
    71 
       
    72 // ---------------------------------------------------------------------------
       
    73 
       
    74 ApplicationView::ApplicationView()  
       
    75     :   mEngine(0),
       
    76         mActionRefresh(0),
       
    77         mActionLaunchApps(0),
       
    78         mActionLaunchAndCloseApps(0),
       
    79         mActionSkipHidden(0),
       
    80         mActionDontSkipHidden(0),
       
    81         mActionSelectAll(0),
       
    82         mActionUnselectAll(0),
       
    83         mActionOpenOutputView(0)
       
    84 {
       
    85 }
       
    86 
       
    87 // ---------------------------------------------------------------------------
       
    88 
       
    89 void ApplicationView::setEngine(EngineWrapper *engine)
       
    90 {
       
    91     mEngine = engine;
       
    92 }
       
    93 
       
    94 // ---------------------------------------------------------------------------
       
    95 
       
    96 ApplicationView::~ApplicationView()
       
    97 {
       
    98     if(mActionRefresh)
       
    99         mActionRefresh->deleteLater();
       
   100     if(mActionLaunchApps)
       
   101         mActionLaunchApps->deleteLater();
       
   102     if(mActionLaunchAndCloseApps)
       
   103         mActionLaunchAndCloseApps->deleteLater();
       
   104     if(mActionSkipHidden)
       
   105         mActionSkipHidden->deleteLater();
       
   106     if(mActionDontSkipHidden)
       
   107         mActionDontSkipHidden->deleteLater();
       
   108     if(mActionSelectAll)
       
   109         mActionSelectAll->deleteLater();
       
   110     if(mActionUnselectAll)
       
   111         mActionUnselectAll->deleteLater();
       
   112     if(mActionOpenOutputView)
       
   113         mActionOpenOutputView->deleteLater();
       
   114 }
       
   115 
       
   116 // ---------------------------------------------------------------------------
       
   117 
       
   118 void ApplicationView::init(HbDocumentLoader &loader, CommonActions *commonActions)
       
   119 {
       
   120     // Load items from xml file
       
   121     loadItemsFromXml(loader);
       
   122     
       
   123     // Set actions checkable and select "Skip hidden & embed"
       
   124     mActionSkipHidden->setCheckable(true);
       
   125     mActionSkipHidden->setChecked(true);
       
   126     mActionDontSkipHidden->setCheckable(true);
       
   127     
       
   128     commonActions->addActionsToMenu(menu());
       
   129     
       
   130     // Set list widget settings
       
   131     mApplicationList->setClampingStyle(HbScrollArea::BounceBackClamping);
       
   132     mApplicationList->setSelectionMode(HbAbstractItemView::MultiSelection);
       
   133     
       
   134     // Refresh application list
       
   135     refreshAppList();
       
   136     
       
   137     // Connect signals and slots
       
   138     connectSignalsAndSlots();
       
   139    
       
   140 }
       
   141 
       
   142 // ---------------------------------------------------------------------------
       
   143 
       
   144 void ApplicationView::refreshAppList()
       
   145 {
       
   146     // Clear list
       
   147 
       
   148     mApplicationList->clear();
       
   149     QStringList apps;
       
   150 
       
   151     // show wait dialog
       
   152     QObject *dialog =  static_cast<QObject*>(Notifications::showWaitDialog("Initializing"));
       
   153 
       
   154     // Get application list from engine
       
   155     if(!mEngine->listOfAllApps(apps)) {
       
   156         Notifications::showErrorNote("Unable to refresh list");
       
   157     }
       
   158     
       
   159     // Format values to list widget
       
   160     int i = 0;
       
   161     while(i < apps.size()) {
       
   162         mApplicationList->addItem(/*HbIcon(":/gfx/check.svg"),*/apps.at(i));
       
   163         i++;
       
   164     }
       
   165     mApplicationList->selectAll();
       
   166     
       
   167     // remove the wait dialog
       
   168     delete dialog;
       
   169 }
       
   170 
       
   171 // ---------------------------------------------------------------------------
       
   172 
       
   173 void ApplicationView::connectSignalsAndSlots()
       
   174 {
       
   175     // Actions
       
   176     connect(mActionRefresh, SIGNAL(triggered()), this, SLOT(refreshAppList()));
       
   177     connect(mActionLaunchApps, SIGNAL(triggered()), this, SLOT(launchSelectedApplications()));
       
   178     connect(mActionLaunchAndCloseApps, SIGNAL(triggered()), this, SLOT(launchAndCloseSelectedApplications()));
       
   179     connect(mActionSelectAll, SIGNAL(triggered()), this, SLOT(selectAllItems()));
       
   180     connect(mActionUnselectAll, SIGNAL(triggered()), this, SLOT(unselectAllItems()));
       
   181     connect(mActionSkipHidden, SIGNAL(triggered()), this, SLOT(launchOptionsSkipHidden()));
       
   182     connect(mActionDontSkipHidden, SIGNAL(triggered()), this, SLOT(launchOptionsDontSkipHidden()));
       
   183     connect(mActionOpenOutputView, SIGNAL(triggered()), this, SLOT(openOutputView()));
       
   184 }
       
   185 
       
   186 // ---------------------------------------------------------------------------
       
   187 
       
   188 
       
   189 void ApplicationView::loadItemsFromXml(HbDocumentLoader &loader)
       
   190 {
       
   191     
       
   192     // List widget:
       
   193     QGraphicsWidget *widget = loader.findWidget(LISTVIEW);
       
   194     Q_ASSERT_X((widget != 0), "Launcher", "Invalid launcher.xml file");
       
   195     mApplicationList = qobject_cast<HbListWidget *>(widget);
       
   196     
       
   197     /* ACTIONS: */
       
   198     //refresh
       
   199     QObject *object= loader.findObject(ACTIONREFRESH);
       
   200     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   201     mActionRefresh = qobject_cast<HbAction *>(object);
       
   202     
       
   203     // launch applications
       
   204     object= loader.findObject(ACTIONLAUNCHAPPS);
       
   205     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   206     mActionLaunchApps = qobject_cast<HbAction *>(object);
       
   207 
       
   208     // launch and close
       
   209     object= loader.findObject(ACTIONLAUNCHANDCLOSEAPPS);
       
   210     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   211     mActionLaunchAndCloseApps = qobject_cast<HbAction *>(object);
       
   212     
       
   213     // select all applications
       
   214     object= loader.findObject(ACTIONSELECT);
       
   215     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   216     mActionSelectAll = qobject_cast<HbAction *>(object);
       
   217     
       
   218     // unselect all applications
       
   219     object= loader.findObject(ACTIONUNSELECT);
       
   220     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   221     mActionUnselectAll = qobject_cast<HbAction *>(object);
       
   222     
       
   223     // open output view
       
   224     object= loader.findObject(ACTIONOPENOUTPUTVIEW);
       
   225     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   226     mActionOpenOutputView = qobject_cast<HbAction *>(object);
       
   227     
       
   228     // skip hidden
       
   229     object= loader.findObject(ACTIONSKIPHIDDEN);
       
   230     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   231     mActionSkipHidden = qobject_cast<HbAction *>(object);
       
   232     
       
   233     // do not skip hidden
       
   234     object= loader.findObject(ACTIONDONTSKIPHIDDEN);
       
   235     Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
       
   236     mActionDontSkipHidden = qobject_cast<HbAction *>(object);
       
   237     
       
   238 }
       
   239 
       
   240 // ---------------------------------------------------------------------------
       
   241 
       
   242 void ApplicationView::launchSelectedApplications()
       
   243 {
       
   244     QModelIndexList list = mApplicationList->selectionModel()->selectedIndexes();
       
   245     mEngine->startAppLaunching(list, false);
       
   246 }
       
   247 
       
   248 // ---------------------------------------------------------------------------
       
   249 
       
   250 void ApplicationView::launchAndCloseSelectedApplications()
       
   251 {
       
   252     QModelIndexList list = mApplicationList->selectionModel()->selectedIndexes();
       
   253     mEngine->startAppLaunching(list, true);
       
   254 }
       
   255 
       
   256 // ---------------------------------------------------------------------------
       
   257 
       
   258 void ApplicationView::selectAllItems()
       
   259 {
       
   260     mApplicationList->selectAll();
       
   261 }
       
   262 
       
   263 // ---------------------------------------------------------------------------
       
   264 
       
   265 void ApplicationView::unselectAllItems()
       
   266 {
       
   267     mApplicationList->clearSelection();
       
   268 }
       
   269 // ---------------------------------------------------------------------------
       
   270 
       
   271 void ApplicationView::launchOptionsSkipHidden()
       
   272 {
       
   273     mActionSkipHidden->setChecked(true);
       
   274     mActionDontSkipHidden->setChecked(false);
       
   275     mEngine->setSkipHiddenAndEmbedOnly(true);
       
   276 }
       
   277 
       
   278 // ---------------------------------------------------------------------------
       
   279 
       
   280 void ApplicationView::launchOptionsDontSkipHidden()
       
   281 {
       
   282     mActionSkipHidden->setChecked(false);
       
   283     mActionDontSkipHidden->setChecked(true);
       
   284     mEngine->setSkipHiddenAndEmbedOnly(false);
       
   285 }
       
   286 
       
   287 // ---------------------------------------------------------------------------
       
   288 
       
   289 void ApplicationView::openOutputView()
       
   290 {
       
   291     qDebug("OpenOutputView");
       
   292     LauncherMainWindow *pMainWindow = static_cast< LauncherMainWindow * >( mainWindow() );
       
   293     if( pMainWindow )
       
   294         {
       
   295         pMainWindow->openOutputView();
       
   296         }
       
   297 }
       
   298 
       
   299 // ---------------------------------------------------------------------------