Re: Gnome3/Gnome-shell Calendar backend



Hi,

On Sun, Mar 20, 2011 at 4:25 PM, Jasper St. Pierre
<jstpierre mecheye net> 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;
  };
};


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]