--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp Tue Aug 31 15:30:51 2010 +0300
@@ -0,0 +1,200 @@
+/*
+* Copyright (c) 2009 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 "tsdevicedialogplugin.h"
+
+#include <QTranslator>
+#include <QCoreApplication>
+#include <QLocale>
+#include <QtPlugin>
+
+#include <QValueSpacePublisher>
+#include <QServiceManager>
+
+#include <HbDeviceDialog>
+#include <HbMainWindow>
+
+#include <tspropertydefs.h>
+
+#include "tsdevicedialogcontainer.h"
+#include "tstasksgrid.h"
+#include "tstasksgriditem.h"
+#include "tsdocumentloader.h"
+#include "tsmodel.h"
+
+QTM_USE_NAMESPACE
+
+/*!
+ \class TsDeviceDialogPlugin
+ \ingroup group_tsdevicedialogplugin
+ \brief TaskSwitcher Device Dialog Plug-in.
+ */
+
+namespace
+{
+ const char KTranslationPath[] = "resource/qt/translations";
+ const char KTsDialogType[] = "com.nokia.taskswitcher.tsdevicedialogplugin/1.0";
+ const char KActivityManaged [] = "com.nokia.qt.activities.ActivityManager";
+}
+
+/*!
+ Constructor.
+ */
+TsDeviceDialogPlugin::TsDeviceDialogPlugin()
+:
+mModel(0),
+mStorage(0),
+mTriedToLoadTranslation(false)
+{
+}
+
+TsDeviceDialogPlugin::~TsDeviceDialogPlugin()
+{
+ delete mModel;
+}
+/*!
+ \reimp
+ */
+bool TsDeviceDialogPlugin::accessAllowed(const QString &deviceDialogType,
+ const QVariantMap ¶meters,
+ const QVariantMap &securityInfo) const
+{
+ Q_UNUSED(deviceDialogType)
+ Q_UNUSED(parameters)
+ Q_UNUSED(securityInfo)
+
+ // This plugin doesn't perform operations that may compromise security.
+ // All clients are allowed to use it.
+ return true;
+}
+
+/*!
+ \reimp
+ */
+HbDeviceDialogInterface *
+TsDeviceDialogPlugin::createDeviceDialog(const QString &deviceDialogType,
+ const QVariantMap ¶meters)
+{
+ Q_UNUSED(parameters)
+ HbDeviceDialogInterface *dialogInterface(0);
+ if (deviceDialogType == QString(KTsDialogType)) {
+ // lazy loading of translation
+ if (!mTriedToLoadTranslation) {
+ mTriedToLoadTranslation = true;
+
+ QTranslator *translator = new QTranslator(this);
+ QString translationFile =
+ QString("taskswitcher_%1").arg(QLocale::system().name());
+
+ bool translationLoaded(false);
+ #ifdef Q_OS_SYMBIAN
+ translationLoaded =
+ translator->load(translationFile,
+ QString("z:/") + KTranslationPath);
+ if (!translationLoaded) {
+ translationLoaded =
+ translator->load(translationFile,
+ QString("c:/") + KTranslationPath);
+ }
+ #else
+ translationLoaded =
+ translator->load(translationFile,
+ QString(KTranslationPath));
+ #endif //Q_OS_SYMBIAN
+
+ Q_ASSERT(translationLoaded);
+ qApp->installTranslator(translator);
+ }
+
+ // lazy loading of model
+ if (!mModel) {
+ mStorage = new TsTaskMonitor(this);
+
+ QServiceManager serviceManager;
+ QObject *activityManager(serviceManager.loadInterface(KActivityManaged));
+ if (activityManager) {
+ activityManager->setParent(this); //make it autodestructed
+ } else {
+ activityManager = this; //activity plugin is not present. provide invalid instance because its not critical functionality.
+ //QMetaObject::invokeMethod is safe to use in such a case.
+ }
+ mModel = new TsModel(*mStorage, *activityManager);
+ }
+
+ // ensure the dismiss request property is set to false
+
+ QValueSpacePublisher dismissRequestPublisher(TsProperty::KTsPath);
+ dismissRequestPublisher.setValue(TsProperty::KDismissRequestPath, static_cast<int>(false));
+ dismissRequestPublisher.sync();
+
+
+ // create device dialog
+ dialogInterface = new TsDeviceDialogContainer(mModel);
+ }
+ return dialogInterface;
+}
+
+/*!
+ \reimp
+ */
+bool TsDeviceDialogPlugin::deviceDialogInfo(const QString &deviceDialogType,
+ const QVariantMap ¶meters,
+ DeviceDialogInfo *info) const
+{
+ Q_UNUSED(parameters)
+ Q_UNUSED(deviceDialogType)
+
+ info->group = GenericDeviceDialogGroup;
+ info->flags = SingleInstance;
+ info->priority = DefaultPriority;
+
+ return true;
+}
+
+/*!
+ \reimp
+ */
+QStringList TsDeviceDialogPlugin::deviceDialogTypes() const
+{
+ return QStringList(QString(KTsDialogType));
+}
+
+/*!
+ \reimp
+ */
+HbDeviceDialogPlugin::PluginFlags TsDeviceDialogPlugin::pluginFlags() const
+{
+ return PluginFlags(PreloadPlugin | KeepPluginLoaded);
+}
+
+/*!
+ \reimp
+ */
+int TsDeviceDialogPlugin::error() const
+{
+ return 0;
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+
+Q_EXPORT_PLUGIN2(tsdevicedialogplugin, TsDeviceDialogPlugin)
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT