Hi, On Sun, Mar 20, 2011 at 4:25 PM, Jasper St. Pierre <[email protected]> wrote: > Additionally, take a look at the evolution of the patches that davidz > did, he had two or three different event sources that are now all > gone, and those might be useful to start from.
Right. And if we want to support multiple different calendar servers (and that's a big 'if' I think...), then it should be done in a way so the code for interacting with the calendar server is _out of process_ like it currently is for e-d-s. Anything else (such as relying on a native library in-process) is going to be too risky... we simply cannot trust that the native library is going to do the right thing and not block etc... (at least the e-d-s- libraries didn't). See https://bugzilla.gnome.org/show_bug.cgi?id=641396 for more discussion. FWIW, it's actually very easy to experiment with this today - simply write a small program that implements the org.gnome.Shell.CalendarServer D-Bus interface for the object at /org/gnome/Shell/CalendarServer and owns the name org.gnome.Shell.CalendarServer - see [1] for details. You should be able to write this program in whatever language / platform you like as long as it supports D-Bus. With the way things are set up the gnome-shell process will poke that object whenever the name owner changes. So whenever you restart your calendar server, the UI should instantly be refreshed. Which makes it very easy to develop against.... (My own devious plan, since I don't use Evolution, is to write a program that just pulls the events from the google calendar servers....) David [1] : $ gdbus introspect --session --dest org.gnome.Shell.CalendarServer --object-path /org/gnome/Shell/CalendarServer node /org/gnome/Shell/CalendarServer { interface org.freedesktop.DBus.Properties { methods: Get(in s interface_name, in s property_name, out v value); GetAll(in s interface_name, out a{sv} properties); Set(in s interface_name, in s property_name, in v value); signals: PropertiesChanged(s interface_name, a{sv} changed_properties, as invalidated_properties); properties: }; interface org.freedesktop.DBus.Introspectable { methods: Introspect(out s xml_data); signals: properties: }; interface org.freedesktop.DBus.Peer { methods: Ping(); GetMachineId(out s machine_uuid); signals: properties: }; interface org.gnome.Shell.CalendarServer { methods: GetEvents(in x since, in x until, in b force_reload, out a(sssbxxa{sv}) events); signals: Changed(); properties: readonly x Since = 1298827620; readonly x Until = 1301851620; }; }; _______________________________________________ gnome-shell-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-shell-list
