// License: BSD // Copyright (C) 2011 Thomas d'Otreppe using System; using System.Collections.Generic; using NDesk.DBus; using org.freedesktop; namespace NewStationNotify { public class Notification { public Notification () { } /// /// Shows a notification on the screen. This has been tested on a N900 and will probably not work with anything else but it can be used as a base. /// public static void Notify(String BSSID, String staMac) { Bus bus = Bus.Session; Notifications nf = bus.GetObject ("org.freedesktop.Notifications", new ObjectPath ("/org/freedesktop/Notifications")); Dictionary hints = new Dictionary (); if (string.IsNullOrEmpty(BSSID)) { nf.Notify ("Notification", 0, "control_bluetooth_paired", "New unassociated station", staMac, new string[0], hints, 0); } else { nf.Notify ("Notification", 0, "control_bluetooth_paired", "New associated station", staMac + " (AP: " + BSSID + ")", new string[0], hints, 0); } /* // Ugly hack for the N900 to notify the user since this can't be done with dbus-send // because it does not support empty array. StreamWriter sw = new StreamWriter("/home/user/notify.py"); if (string.IsNullOrEmpty(BSSID)) { sw.WriteLine("import dbus\n" + "bus = dbus.SessionBus()\n" + "proxy = bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications')\n" + "interface = dbus.Interface(proxy,dbus_interface='org.freedesktop.Notifications')\n" + "interface.Notify('Notification', 0, 'control_bluetooth_paired', 'New unassociated station', '{0}', [], {{}}, 0)", staMac); } else { sw.WriteLine("import dbus\n" + "bus = dbus.SessionBus()\n" + "proxy = bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications')\n" + "interface = dbus.Interface(proxy,dbus_interface='org.freedesktop.Notifications')\n" + "interface.Notify('Notification', 0, 'control_bluetooth_paired', 'New associated station', '{0} is associated to {1}', [], {{}}, 0)", staMac, BSSID); } sw.Close(); Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = "/usr/bin/python"; p.StartInfo.Arguments = "/home/user/notify.py"; p.Start(); p.WaitForExit(); FileInfo f = new FileInfo("/home/user/notify.py"); f.Delete(); */ } } }