coreapplicationuis/hbdeviceinputdialogplugin/src/hbdeviceinputdialogplugin.cpp
changeset 65 8a530a83576a
equal deleted inserted replaced
56:11a052f4b02e 65:8a530a83576a
       
     1 /****************************************************************************
       
     2  * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0""
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description:  
       
    15  ***************************************************************************/
       
    16 
       
    17 #include <QtPlugin>
       
    18 
       
    19 #include <hbdevicedialog.h>
       
    20 //#include <hbdevicedialogtrace_p.h>
       
    21 #include "hbdeviceinputdialogplugin_p.h"
       
    22 #include "hbdeviceinputdialogwidget_p.h"
       
    23 #include "hbdeviceinputdialogpluginerrors_p.h"
       
    24 
       
    25 Q_EXPORT_PLUGIN2(deviceinputdialogplugin, HbDeviceInputDialogPlugin)
       
    26 
       
    27 // This plugin implements one device dialog type
       
    28 static const struct {
       
    29     const char *mTypeString;
       
    30 } dialogInfos[] = {
       
    31     {"com.nokia.hb.deviceinputdialog/1.0"}
       
    32 };
       
    33 
       
    34 class HbDeviceInputDialogPluginPrivate
       
    35 {
       
    36 public:
       
    37     HbDeviceInputDialogPluginPrivate() {mError = NoError;}
       
    38 
       
    39     int mError;
       
    40 };
       
    41 
       
    42 // Constructor
       
    43 HbDeviceInputDialogPlugin::HbDeviceInputDialogPlugin()
       
    44 {
       
    45     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::Constructor:Begin") ) );
       
    46     d = new HbDeviceInputDialogPluginPrivate;
       
    47     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::Constructor:End") ) );
       
    48 }
       
    49 
       
    50 // Destructor
       
    51 HbDeviceInputDialogPlugin::~HbDeviceInputDialogPlugin()
       
    52 {
       
    53     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::Destructor:Begin") ) );
       
    54     delete d;
       
    55     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::Destructor:End") ) );
       
    56 }
       
    57 
       
    58 // Check if client is allowed to use device dialog widget
       
    59 bool HbDeviceInputDialogPlugin::accessAllowed(const QString &deviceDialogType,
       
    60     const QVariantMap &parameters, const QVariantMap &securityInfo) const
       
    61 {
       
    62     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::AccessAllowed:Begin") ) );
       
    63     Q_UNUSED(deviceDialogType)
       
    64     Q_UNUSED(parameters)
       
    65     Q_UNUSED(securityInfo)
       
    66 
       
    67     // This plugin doesn't perform operations that may compromise security.
       
    68     // All clients are allowed to use.
       
    69     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::AccessAllowed:End") ) );    
       
    70     return true;
       
    71 
       
    72 }
       
    73 
       
    74 // Create device dialog widget
       
    75 HbDeviceDialogInterface *HbDeviceInputDialogPlugin::createDeviceDialog(const QString &deviceDialogType, const QVariantMap &parameters)
       
    76 {
       
    77     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::createDeviceDialog:Begin") ) );
       
    78     d->mError = NoError;
       
    79 
       
    80     HbDeviceDialogInterface *ret(0);
       
    81     int i(0);
       
    82     const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
       
    83     for(i = 0; i < numTypes; i++) {
       
    84         if (dialogInfos[i].mTypeString == deviceDialogType) {
       
    85             break;
       
    86         }
       
    87     }
       
    88     if (i < numTypes) {
       
    89         QVariantMap params = parameters;
       
    90         HbDeviceInputDialogWidget *deviceDialog = new HbDeviceInputDialogWidget(params);
       
    91         d->mError = deviceDialog->deviceDialogError();
       
    92         if (d->mError != NoError) {
       
    93             delete deviceDialog;
       
    94             deviceDialog = 0;
       
    95         }
       
    96         ret = deviceDialog;
       
    97     } else {
       
    98         d->mError = UnknownDeviceDialogError;
       
    99         ret = 0;
       
   100     }
       
   101     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::createDeviceDialog:End") ) );
       
   102     return ret;
       
   103 }
       
   104 
       
   105 // Return information of device dialog the plugin creates
       
   106 bool HbDeviceInputDialogPlugin::deviceDialogInfo(const QString &deviceDialogType, const QVariantMap &parameters, DeviceDialogInfo *info) const
       
   107 {
       
   108     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::deviceDialogInfo:Begin") ) );
       
   109     Q_UNUSED(parameters)
       
   110     Q_UNUSED(deviceDialogType)
       
   111 
       
   112     info->group = GenericDeviceDialogGroup;
       
   113     info->flags = NoDeviceDialogFlags;
       
   114     info->priority = DefaultPriority;
       
   115     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::deviceDialogInfo:End") ) );
       
   116     return true;
       
   117     
       
   118 }
       
   119 
       
   120 // Return device dialog types this plugin implements
       
   121 QStringList HbDeviceInputDialogPlugin::deviceDialogTypes() const
       
   122 {
       
   123     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::deviceDialogTypes:Begin") ) );
       
   124     QStringList types;
       
   125     const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
       
   126     for(int i = 0; i < numTypes; i++) {
       
   127         types.append(dialogInfos[i].mTypeString);
       
   128     }
       
   129     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::deviceDialogTypes:End") ) );
       
   130     return types;
       
   131 }
       
   132 
       
   133 // Return plugin flags
       
   134 HbDeviceDialogPlugin::PluginFlags HbDeviceInputDialogPlugin::pluginFlags() const
       
   135 {
       
   136     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::pluginFlags:Begin") ) );
       
   137     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::pluginFlags:End") ) );
       
   138     return NoPluginFlags;
       
   139 }
       
   140 
       
   141 // Return last error
       
   142 int HbDeviceInputDialogPlugin::error() const
       
   143 {
       
   144     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::error:Begin") ) );
       
   145     TRACES( RDebug::Print( _L("HbDeviceInputDialogPlugin::error:End") ) );
       
   146     return d->mError;
       
   147 }