src/hbplugins/devicedialogs/deviceprogressdialogplugin/hbdeviceprogressdialogplugin.cpp
--- a/src/hbplugins/devicedialogs/deviceprogressdialogplugin/hbdeviceprogressdialogplugin.cpp Wed Aug 18 10:05:37 2010 +0300
+++ b/src/hbplugins/devicedialogs/deviceprogressdialogplugin/hbdeviceprogressdialogplugin.cpp Thu Sep 02 20:44:51 2010 +0300
@@ -70,13 +70,20 @@
{
TRACE_ENTRY
Q_UNUSED(deviceDialogType)
+
+#ifdef Q_OS_SYMBIAN
+ // If show group is higher than normal, a swEvent capability is required
+ if (showLevel(parameters) != NormalLevel) {
+ return (securityInfo["sym-caps"].toInt() >> ECapabilitySwEvent) & 1;
+ } else {
+ return true; // all clients are allowed to use.
+ }
+#else
Q_UNUSED(parameters)
Q_UNUSED(securityInfo)
-
- // This plugin doesn't perform operations that may compromise security. All clients
- // are allowed to use.
+ // All clients are allowed to use.
return true;
- TRACE_EXIT
+#endif // Q_OS_SYMBIAN
}
// Create device dialog widget
@@ -125,13 +132,16 @@
const QVariantMap ¶meters, DeviceDialogInfo *info) const
{
TRACE_ENTRY
- Q_UNUSED(parameters)
Q_UNUSED(deviceDialogType)
+ unsigned int level = static_cast<unsigned int>(showLevel(parameters));
+ if (level > CriticalLevel) {
+ return false;
+ }
+
info->group = GenericDeviceDialogGroup;
- info->flags = NoDeviceDialogFlags;
- info->priority = DefaultPriority;
- TRACE_EXIT
+ info->flags = level == NormalLevel ? NoDeviceDialogFlags : SecurityCheck;
+ info->showLevel = static_cast<ShowLevel>(level);
return true;
}
@@ -163,3 +173,14 @@
TRACE_EXIT
return d->mError;
}
+
+// Search parameters for show group
+int HbDeviceProgressDialogPlugin::showLevel(const QVariantMap ¶meters)
+{
+ int level = 0;
+ const QString propertyName("showLevel");
+ if (parameters.contains(propertyName)) {
+ level = parameters[propertyName].toInt();
+ }
+ return level;
+}