homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp Tue Aug 31 15:06:34 2010 +0300
@@ -0,0 +1,172 @@
+/*
+* 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: Menu Application Library state.
+ *
+*/
+#include <QScopedPointer>
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hbinstance.h>
+#include <qstatemachine.h>
+#include <hbaction.h>
+#include <qpluginloader.h>
+
+#include "hsdomainmodel_global.h"
+#include "hsapp_defs.h"
+#include "hsmenuevent.h"
+#include "hsviewappsettingsstate.h"
+#include "hsmenuentryremovedhandler.h"
+#include "caentry.h"
+#include "canotifier.h"
+#include "canotifierfilter.h"
+
+#include "hsmenuservice.h"
+
+/*!
+ \class HsViewAppSettingsState
+ \ingroup HsViewAppSettingsState
+ \brief State for showing Application Settings HbView from provided plugin
+ */
+
+/*!
+ \var HsViewAppSettingsState::mView
+ View.
+ Owned.
+ */
+
+/*!
+ \var HsViewAppSettingsState::mPreviousView
+ Previous view.
+ Not owned.
+ */
+
+/*!
+ \var HsViewAppSettingsState::mActionConfirm
+ Confirm action. Owned.
+ */
+
+/*!
+ Constructor
+ \param parent Parent state.
+ \retval void
+ */
+HsViewAppSettingsState::HsViewAppSettingsState(QState *parent) :
+ QState(parent),
+ mView(0),
+ mPreviousView(0),
+ mActionConfirm(0)
+{
+ construct();
+}
+
+/*!
+ Constructs contained objects.
+ */
+void HsViewAppSettingsState::construct()
+{
+ setObjectName("/ViewAppSettingsState");
+ if (this->parent()) {
+ setObjectName(this->parent()->objectName() + objectName());
+ }
+}
+
+/*!
+ Destructor.
+ */
+HsViewAppSettingsState::~HsViewAppSettingsState()
+{
+}
+
+/*!
+ onEntry method invoked on entering the state
+ \param event: event
+ \retval void
+ */
+void HsViewAppSettingsState::onEntry(QEvent *event)
+{
+ HSMENUTEST_FUNC_ENTRY("HsViewAppSettingsState::onEntry");
+ QState::onEntry(event);
+ qDebug("CollectionState::onEntry()");
+ HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
+ QVariantMap data = menuEvent->data();
+
+ const int entryId = data.value(Hs::itemIdKey).toInt();
+ QSharedPointer<const CaEntry> entry = CaService::instance()->getEntry(entryId);
+
+ QString pluginPath;
+ pluginPath = pluginPath.append("/resource/qt/plugins/appsettings/")
+ .append(entry->attribute(Hs::appSettingsPlugin)).append(".qtplugin");
+ QPluginLoader loader(pluginPath);
+ mView = qobject_cast<HbView *>(loader.instance());
+
+ mActionConfirm = new HbAction(Hb::ConfirmNaviAction, mView);
+ connect(mActionConfirm, SIGNAL(triggered()), SIGNAL(exit()));
+
+ if (mView) {
+ QScopedPointer<HsMenuEntryRemovedHandler> entryObserver(
+ new HsMenuEntryRemovedHandler(entryId, this, SIGNAL(exit())));
+
+ entryObserver.take()->setParent(mView);
+
+ QObject::connect(this, SIGNAL(initialize(QString)), mView, SLOT(initialize(QString)));
+ mView->setParent(this);
+ emit initialize(entry->attribute(Hs::applicationUidEntryKey));
+ // Add View to main window
+ HbMainWindow *hbMainWindow = mainWindow();
+ // add confirm action
+ mView->setNavigationAction(mActionConfirm);
+
+ hbMainWindow->addView(mView);
+ // record the current view in order to activate it once done
+ mPreviousView = hbMainWindow->currentView();
+ hbMainWindow->setCurrentView(mView);
+ hbMainWindow->show();
+ }
+
+
+ HSMENUTEST_FUNC_EXIT("HsViewAppSettingsState::onEntry");
+}
+
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT (only returns HbMainWindow)
+/*!
+ Returns pointer to tha main window.
+ \return Pointer to the main window.
+ */
+HbMainWindow *HsViewAppSettingsState::mainWindow() const
+{
+ return HbInstance::instance()->allMainWindows().value(0);
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+
+void HsViewAppSettingsState::onExit(QEvent *event)
+{
+
+ QState::onExit(event);
+ // Remove mView from main window and restore previous view.
+ HbMainWindow *hbMainWindow = mainWindow();
+ hbMainWindow->setCurrentView(mPreviousView);
+ hbMainWindow->removeView(mView);
+
+
+ delete mActionConfirm;
+ mActionConfirm = NULL;
+ delete mView;
+ mView = NULL;
+}