coreapplicationuis/devicepowermenuplugin/src/hbdevicepowermenuplugin.cpp
author hgs
Tue, 29 Jun 2010 10:40:11 +0300
changeset 46 eea20ed08f4b
permissions -rw-r--r--
201025_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     1
/*
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     8
 *
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    11
 *
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    12
 * Contributors:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    13
 *
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    14
 * Description:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    15
 *
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    16
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    17
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    18
//System includes
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    19
#include <QtPlugin>
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    20
#include <hbdevicedialog.h>
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    21
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    22
//user includes
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    23
#include "hbdevicepowermenuplugin_p.h"
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    24
#include "hbdevicepowermenuwidegt_p.h"
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    25
#include "hbdevicepowermenupluginerrors_p.h"
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    26
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    27
//SysAp's Secure UID
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    28
const quint32 KSecureUid = 0x100058F3;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    29
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    30
Q_EXPORT_PLUGIN2(devicepowermenuplugin, HbDevicePowerMenuPlugin)
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    31
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    32
// This plugin implements a device dialog type
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    33
static const struct 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    34
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    35
    const char *mTypeString;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    36
	} dialogInfos[] = {{"com.nokia.hb.devicepowermenu/1.0"}};
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    37
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    38
class HbDevicePowerMenuPluginPrivate
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    39
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    40
public:
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    41
    HbDevicePowerMenuPluginPrivate() {mError = NoError;}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    42
    int mError;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    43
	};
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    44
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    45
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    46
 * Constructor
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    47
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    48
HbDevicePowerMenuPlugin::HbDevicePowerMenuPlugin()
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    49
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    50
    TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::Constructor:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    51
    d = new HbDevicePowerMenuPluginPrivate;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    52
    TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::Constructor:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    53
	}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    54
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    55
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    56
 * Destructor
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    57
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    58
HbDevicePowerMenuPlugin::~HbDevicePowerMenuPlugin()
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    59
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    60
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::Destructor:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    61
    delete d;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    62
    TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::Destructor:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    63
	}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    64
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    65
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    66
 * This method is Pure Virtual in HbDeviceDialogPlugin 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    67
 * Checks if client is allowed to use device dialog widget
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    68
 * Its a customized widget for Sysap, and allows only Sysap to use this plugin
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    69
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    70
bool HbDevicePowerMenuPlugin::accessAllowed(const QString &deviceDialogType, const QVariantMap &parameters, const QVariantMap &securityInfo) const
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    71
    {
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    72
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::accessAllowed:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    73
    Q_UNUSED(deviceDialogType)
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    74
    Q_UNUSED(parameters)
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    75
    TBool secured(false);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    76
    quint32 secUid = static_cast<quint32>(securityInfo.value("sym-secureId").toInt());
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    77
    if (secUid == KSecureUid )
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    78
	    {
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    79
        secured = true;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    80
	    }
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    81
    TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::accessAllowed:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    82
    return secured;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    83
    }
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    84
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    85
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    86
 * Creates device dialog widget
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    87
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    88
HbDeviceDialogInterface *HbDevicePowerMenuPlugin::createDeviceDialog(const QString &deviceDialogType, const QVariantMap &parameters)
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    89
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    90
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::createDeviceDialog:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    91
    d->mError = NoError;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    92
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    93
    HbDeviceDialogInterface *ret(NULL);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    94
    if (dialogInfos[0].mTypeString == deviceDialogType) 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    95
		{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    96
		 QVariantMap params = parameters;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    97
		 HbDevicePowerMenuWidget *powMenu = new HbDevicePowerMenuWidget(params);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    98
		 d->mError = powMenu->deviceDialogError();
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
    99
		 if (d->mError != NoError) 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   100
			 {
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   101
			 delete powMenu;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   102
			 powMenu = NULL;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   103
			 }
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   104
		 ret = powMenu;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   105
		} 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   106
    else 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   107
		{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   108
		 d->mError = UnknownDeviceDialogError;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   109
		 ret = NULL;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   110
		}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   111
    TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::createDeviceDialog:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   112
    return ret;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   113
	}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   114
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   115
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   116
 * Return information of device dialog the plugin creates
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   117
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   118
bool HbDevicePowerMenuPlugin::deviceDialogInfo(const QString &deviceDialogType, const QVariantMap &parameters, DeviceDialogInfo *info) const
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   119
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   120
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::deviceDialogInfo:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   121
    Q_UNUSED(parameters)
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   122
    Q_UNUSED(deviceDialogType)
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   123
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   124
    info->group = GenericDeviceDialogGroup;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   125
    info->flags = SecurityCheck;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   126
    info->priority = DefaultPriority;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   127
    TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::deviceDialogInfo:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   128
    return true;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   129
	}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   130
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   131
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   132
 * Return device dialog types this plugin implements
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   133
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   134
QStringList HbDevicePowerMenuPlugin::deviceDialogTypes() const
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   135
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   136
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::deviceDialogTypes:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   137
	QStringList types;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   138
	const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   139
	for(int i = 0; i < numTypes; i++) 
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   140
		{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   141
		types.append(dialogInfos[i].mTypeString);
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   142
		}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   143
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::deviceDialogTypes:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   144
	return types;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   145
	}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   146
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   147
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   148
 * Return plugin flags
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   149
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   150
HbDeviceDialogPlugin::PluginFlags HbDevicePowerMenuPlugin::pluginFlags() const
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   151
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   152
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::pluginFlags:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   153
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::pluginFlags:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   154
	return NoPluginFlags;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   155
	}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   156
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   157
/**
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   158
 * Return last error
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   159
 */
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   160
int HbDevicePowerMenuPlugin::error() const
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   161
	{
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   162
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::error:Begin") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   163
	TRACES( RDebug::Print( _L("HbDevicePowerMenuPlugin::error:End") ) );
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   164
	return d->mError;
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   165
	}
eea20ed08f4b 201025_02
hgs
parents:
diff changeset
   166