devicemgmtdialogsplugin/src/devicemanagementnotifierplugin.cpp
author hgs
Fri, 17 Sep 2010 19:58:05 +0530
changeset 62 03849bd79877
parent 47 d316aecb87fd
child 67 fdbfe0a95492
permissions -rw-r--r--
201037
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"
47
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    25
#include "fotadevicedialogs.h"
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    26
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    27
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    28
Q_EXPORT_PLUGIN2(devicemanagementnotifiersplugin, devicemanagementnotifierplugin)
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    29
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    30
// This plugin implements one device dialog type
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    31
static const struct
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    32
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    33
    const char *mTypeString;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    34
    } dialogInfos[] =
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    35
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    36
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    37
        devicedialogtype
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
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    42
class devicemanagementnotifierpluginprivate
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    43
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    44
public:
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    45
    devicemanagementnotifierpluginprivate() {mError = 0;}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    46
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    47
    int mError;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    48
};
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    49
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    50
// Constructor
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    51
devicemanagementnotifierplugin::devicemanagementnotifierplugin()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    52
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    53
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    54
    d = new devicemanagementnotifierpluginprivate;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    55
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    56
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    57
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    58
// Destructor
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    59
devicemanagementnotifierplugin::~devicemanagementnotifierplugin()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    60
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    61
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    62
    delete d;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    63
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    64
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    65
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    66
// Check if client is allowed to use device dialog widget
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    67
bool devicemanagementnotifierplugin::accessAllowed(const QString &deviceDialogType,
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    68
    const QVariantMap &parameters, const QVariantMap &securityInfo) const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    69
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    70
       
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    71
    // This plugin doesn't perform operations that may compromise security.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    72
    // All clients are allowed to use.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    73
    return true;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    74
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    75
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    76
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    77
// Create device dialog widget
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    78
HbDeviceDialogInterface *devicemanagementnotifierplugin::createDeviceDialog(
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    79
        const QString &deviceDialogType, const QVariantMap &parameters)
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    80
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    81
    // Find the dialog key
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    82
    QVariantMap::const_iterator i = parameters.find(keydialog);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    83
    if (i != parameters.end())
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    84
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    85
        int dialogtype = i.value().toInt();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    86
        //Compare the dialog with the constant declared
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    87
        if (dialogtype == EOmaCPPinDialog)
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    88
            {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    89
            // Return specific object for showing appropriate dialog
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    90
            return new omacppinquerydialog(parameters);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    91
            }
47
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    92
           
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    93
        if (dialogtype >= EFwDLNeedMoreMemory && dialogtype <= EFwUpdResumeUpdate)
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    94
            {
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    95
            // Return specific object for showing appropriate dialog
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    96
            return new fotadevicedialogs(parameters);
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    97
            }
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    98
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    99
        }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   100
    return new devicemanagementnotifierwidget(parameters);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   101
        
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   102
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   103
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   104
// Return information of device dialog the plugin creates
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   105
bool devicemanagementnotifierplugin::deviceDialogInfo(const QString &deviceDialogType,
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   106
    const QVariantMap &parameters, DeviceDialogInfo *info) const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   107
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   108
    info->group = GenericDeviceDialogGroup;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   109
    info->flags = NoDeviceDialogFlags;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   110
    info->priority = DefaultPriority;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   111
    return true;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   112
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   113
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   114
// Return device dialog types this plugin implements
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   115
QStringList devicemanagementnotifierplugin::deviceDialogTypes() const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   116
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   117
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   118
    QStringList types;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   119
    const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   120
    for(int i = 0; i < numTypes; i++) {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   121
        types.append(dialogInfos[i].mTypeString);
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 types;
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 plugin flags
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   128
HbDeviceDialogPlugin::PluginFlags devicemanagementnotifierplugin::pluginFlags() const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   129
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   130
    
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   131
    return NoPluginFlags;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   132
}
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   133
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   134
// Return last error
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   135
int devicemanagementnotifierplugin::error() const
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   136
{
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   137
    return d->mError;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   138
}