src/hbplugins/devicedialogs/devicenotificationdialogplugin/hbdevicenotificationdialogplugin.cpp
--- a/src/hbplugins/devicedialogs/devicenotificationdialogplugin/hbdevicenotificationdialogplugin.cpp Mon Oct 04 17:49:30 2010 +0300
+++ b/src/hbplugins/devicedialogs/devicenotificationdialogplugin/hbdevicenotificationdialogplugin.cpp Mon Oct 18 18:23:13 2010 +0300
@@ -40,6 +40,7 @@
{"com.nokia.hb.devicenotificationdialog/1.0"}
};
+/// \cond
class HbDeviceNotificationDialogPluginPrivate
{
public:
@@ -47,6 +48,7 @@
int mError;
};
+/// \endcond
// Constructor
HbDeviceNotificationDialogPlugin::HbDeviceNotificationDialogPlugin()
@@ -70,13 +72,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
@@ -109,13 +118,14 @@
{
TRACE_ENTRY
Q_UNUSED(deviceDialogType);
- Q_UNUSED(parameters);
+ unsigned int level = static_cast<unsigned int>(showLevel(parameters));
+ if (level > CriticalLevel) {
+ return false;
+ }
info->group = DeviceNotificationDialogGroup;
- info->flags = NoDeviceDialogFlags;
- info->priority = DefaultPriority;
-
- TRACE_EXIT
+ info->flags = level == NormalLevel ? NoDeviceDialogFlags : SecurityCheck;
+ info->showLevel = static_cast<ShowLevel>(level);
return true;
}
@@ -147,3 +157,14 @@
TRACE_EXIT
return d->mError;
}
+
+// Search parameters for show group
+int HbDeviceNotificationDialogPlugin::showLevel(const QVariantMap ¶meters)
+{
+ int level = NormalLevel;
+ const QString propertyName("showLevel");
+ if (parameters.contains(propertyName)) {
+ level = parameters[propertyName].toInt();
+ }
+ return level;
+}