devicemgmtdialogsplugin/src/devicemanagementnotifierplugin.cpp
author hgs
Tue, 13 Jul 2010 03:51:25 +0530
changeset 46 b9b00b134b0d
parent 45 0f9fc722d255
child 42 aa33c2cb9a50
permissions -rw-r--r--
201023
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     1
/*
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     3
* All rights reserved.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     8
*
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     9
* Initial Contributors:
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    11
*
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    12
* Contributors:
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    13
*
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    14
* Description: 
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    15
*
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    16
*/
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    17
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    18
#include <QtPlugin>
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    19
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    20
#include <hbdevicedialog.h>
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    21
#include <devicedialogconsts.h>
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    22
#include "devicemanagementnotifierplugin_p.h"
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    23
#include "devicemanagementnotifierwidget_p.h"
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    24
#include "omacppinquerydialog.h"
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    25
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    26
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    27
Q_EXPORT_PLUGIN2(devicemanagementnotifiersplugin, devicemanagementnotifierplugin)
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    28
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    29
// This plugin implements one device dialog type
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    30
static const struct
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    31
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    32
    const char *mTypeString;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    33
    } dialogInfos[] =
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    34
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    35
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    36
        devicedialogtype
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    37
        }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    38
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    39
    };
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    40
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    41
class devicemanagementnotifierpluginprivate
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    42
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    43
public:
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    44
    devicemanagementnotifierpluginprivate() {mError = 0;}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    46
    int mError;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    47
};
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    48
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    49
// Constructor
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    50
devicemanagementnotifierplugin::devicemanagementnotifierplugin()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    51
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    52
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    53
    d = new devicemanagementnotifierpluginprivate;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    54
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    55
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    56
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    57
// Destructor
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    58
devicemanagementnotifierplugin::~devicemanagementnotifierplugin()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    59
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    60
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    61
    delete d;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    62
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    63
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    64
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    65
// Check if client is allowed to use device dialog widget
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    66
bool devicemanagementnotifierplugin::accessAllowed(const QString &deviceDialogType,
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    67
    const QVariantMap &parameters, const QVariantMap &securityInfo) const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    68
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    69
       
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    70
    // This plugin doesn't perform operations that may compromise security.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    71
    // All clients are allowed to use.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    72
    return true;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    73
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    74
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    75
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    76
// Create device dialog widget
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    77
HbDeviceDialogInterface *devicemanagementnotifierplugin::createDeviceDialog(
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    78
        const QString &deviceDialogType, const QVariantMap &parameters)
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    79
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    80
    // Find the dialog key
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    81
    QVariantMap::const_iterator i = parameters.find(keydialog);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    82
    if (i != parameters.end())
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    83
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    84
        int dialogtype = i.value().toInt();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    85
        //Compare the dialog with the constant declared
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    86
        if (dialogtype == EOmaCPPinDialog)
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    87
            {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    88
            // Return specific object for showing appropriate dialog
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    89
            return new omacppinquerydialog(parameters);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    90
            }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    91
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    92
        }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    93
    return new devicemanagementnotifierwidget(parameters);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    94
        
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    95
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    96
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    97
// Return information of device dialog the plugin creates
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    98
bool devicemanagementnotifierplugin::deviceDialogInfo(const QString &deviceDialogType,
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    99
    const QVariantMap &parameters, DeviceDialogInfo *info) const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   100
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   101
    info->group = GenericDeviceDialogGroup;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   102
    info->flags = NoDeviceDialogFlags;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   103
    info->priority = DefaultPriority;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   104
    return true;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   105
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   106
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   107
// Return device dialog types this plugin implements
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   108
QStringList devicemanagementnotifierplugin::deviceDialogTypes() const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   109
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   110
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   111
    QStringList types;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   112
    const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   113
    for(int i = 0; i < numTypes; i++) {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   114
        types.append(dialogInfos[i].mTypeString);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   115
    }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   116
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   117
    return types;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   118
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   119
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   120
// Return plugin flags
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   121
HbDeviceDialogPlugin::PluginFlags devicemanagementnotifierplugin::pluginFlags() const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   122
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   123
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   124
    return NoPluginFlags;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   125
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   126
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   127
// Return last error
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   128
int devicemanagementnotifierplugin::error() const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   129
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   130
    return d->mError;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   131
}