[rygel/wip/acl: 30/30] Add simple dialog
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/wip/acl: 30/30] Add simple dialog
- Date: Sun, 1 Jun 2014 16:25:23 +0000 (UTC)
commit b0789bccaa3d6afcf0a4501cb1caaaff00092528
Author: Jens Georg <mail jensge org>
Date: Sun Jun 1 18:24:43 2014 +0200
Add simple dialog
Signed-off-by: Jens Georg <mail jensge org>
src/rygel/rygel-acl.vala | 24 ++++++++++++++++++++----
src/rygel/rygel-user-config.vala | 1 +
src/ui/rygel-acl-provider.vala | 28 +++++++++++++++++++++++++---
3 files changed, 46 insertions(+), 7 deletions(-)
---
diff --git a/src/rygel/rygel-acl.vala b/src/rygel/rygel-acl.vala
index f1c294f..9949962 100644
--- a/src/rygel/rygel-acl.vala
+++ b/src/rygel/rygel-acl.vala
@@ -66,11 +66,27 @@ internal class Rygel.Acl : GLib.Object, GUPnP.Acl
return false;
}
+ message ("Querying ACL for %s on %s by %s %s",
+ path,
+ device != null ? device.udn : "none",
+ agent ?? "Unknown",
+ address);
+
try {
- var allowed = yield provider.is_allowed (new HashTable<string,
- string> (null, null),
- new HashTable<string,
- string> (null, null),
+ var device_hash = new HashTable<string, string> (str_hash, str_equal);
+ if (device != null) {
+ device_hash["FriendlyName"] = device.get_friendly_name ();
+ device_hash["UDN"] = device.udn;
+ device_hash["Type"] = device.device_type;
+ }
+
+ var service_hash = new HashTable<string, string> (str_hash, str_equal);
+ if (service != null) {
+ service_hash["Type"] = service.service_type;
+ }
+
+ var allowed = yield provider.is_allowed (device_hash,
+ service_hash,
path,
address,
agent);
diff --git a/src/rygel/rygel-user-config.vala b/src/rygel/rygel-user-config.vala
index 532c19b..5ab5d9e 100644
--- a/src/rygel/rygel-user-config.vala
+++ b/src/rygel/rygel-user-config.vala
@@ -217,6 +217,7 @@ public class Rygel.UserConfig : GLib.Object, Configuration {
if (UserConfig.config == null) {
var path = Path.build_filename (Environment.get_user_config_dir (),
CONFIG_FILE);
+
UserConfig.config = new UserConfig (path);
}
diff --git a/src/ui/rygel-acl-provider.vala b/src/ui/rygel-acl-provider.vala
index 3ce9e42..8f4be04 100644
--- a/src/ui/rygel-acl-provider.vala
+++ b/src/ui/rygel-acl-provider.vala
@@ -1,3 +1,5 @@
+using Gtk;
+
[DBus (name = "org.gnome.Rygel1.AclProvider1")]
public interface Rygel.IAclProvider : Object {
public abstract async bool is_allowed (GLib.HashTable<string, string> device,
@@ -18,14 +20,34 @@ public class Rygel.AclProvider : IAclProvider, Object {
Idle.add (() => { is_allowed.callback (); return false; });
yield;
- message ("=======> Request");
-
if (device.size () == 0 || service.size () == 0) {
+ message ("Nothing to decide on, passing true");
return true;
}
- return true;
+ var dialog = new MessageDialog (null, 0, MessageType.QUESTION,
+ ButtonsType.YES_NO, "%s from %s is trying to access %s. Allow?",
+ agent, address, device["FriendlyName"]);
+
+ var area = dialog.get_message_area ();
+
+ var remember = new CheckButton.with_label ("Remember decision");
+ (area as Box).pack_end (remember);
+ remember.show ();
+
+ bool result = false;
+ dialog.response.connect ((id) => {
+ if (id == ResponseType.YES) {
+ result = true;
+ }
+
+ dialog.destroy ();
+ });
+
+ dialog.run ();
+
+ return result;
}
private void on_bus_aquired (DBusConnection connection) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]