utilityapps/launcher/src/applicationview.cpp
changeset 55 2d9cac8919d3
parent 26 41ebde60981f
--- /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 <hbdocumentloader.h>
+#include <hblistwidget.h>
+#include <qstandarditemmodel.h>
+#include <hbaction.h>
+#include <hbmenu.h>
+#include <qlist.h>
+
+#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<ApplicationView *>(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<QObject*>(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<HbListWidget *>(widget);
+    
+    /* ACTIONS: */
+    //refresh
+    QObject *object= loader.findObject(ACTIONREFRESH);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionRefresh = qobject_cast<HbAction *>(object);
+    
+    // launch applications
+    object= loader.findObject(ACTIONLAUNCHAPPS);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionLaunchApps = qobject_cast<HbAction *>(object);
+
+    // launch and close
+    object= loader.findObject(ACTIONLAUNCHANDCLOSEAPPS);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionLaunchAndCloseApps = qobject_cast<HbAction *>(object);
+    
+    // select all applications
+    object= loader.findObject(ACTIONSELECT);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionSelectAll = qobject_cast<HbAction *>(object);
+    
+    // unselect all applications
+    object= loader.findObject(ACTIONUNSELECT);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionUnselectAll = qobject_cast<HbAction *>(object);
+    
+    // open output view
+    object= loader.findObject(ACTIONOPENOUTPUTVIEW);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionOpenOutputView = qobject_cast<HbAction *>(object);
+    
+    // skip hidden
+    object= loader.findObject(ACTIONSKIPHIDDEN);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionSkipHidden = qobject_cast<HbAction *>(object);
+    
+    // do not skip hidden
+    object= loader.findObject(ACTIONDONTSKIPHIDDEN);
+    Q_ASSERT_X((object != 0), "Launcher", "Invalid launcher.xml file");
+    mActionDontSkipHidden = qobject_cast<HbAction *>(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();
+        }
+}
+
+// ---------------------------------------------------------------------------