<?xml version="1.0" ?>
<node name="/Channel_Dispatcher_Interface_Operation_List"
  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">

  <tp:copyright>Copyright (C) 2008 Collabora Ltd.</tp:copyright>
  <tp:copyright>Copyright (C) 2008 Nokia Corporation</tp:copyright>
  <tp:license xmlns="http://www.w3.org/1999/xhtml">
    <p>This library is free software; you can redistribute it and/or
      modify it under the terms of the GNU Lesser General Public
      License as published by the Free Software Foundation; either
      version 2.1 of the License, or (at your option) any later version.</p>

    <p>This library is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      Lesser General Public License for more details.</p>

    <p>You should have received a copy of the GNU Lesser General Public
      License along with this library; if not, write to the Free Software
      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
      USA.</p>
  </tp:license>

  <interface name="org.freedesktop.Telepathy.ChannelDispatcher.Interface.OperationList"
    tp:causes-havoc="not yet final">

    <tp:requires interface="org.freedesktop.Telepathy.ChannelDispatcher"/>

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
      <p>This interface allows users of the ChannelDispatcher to enumerate
        all the pending dispatch operations, with change notification.</p>

      <tp:rationale>
        <p>The existence of the
          <tp:member-ref>DispatchOperations</tp:member-ref> property allows a
          newly started approver to pick up existing dispatch operations.</p>

        <p>This is on a separate interface so clients that aren't interested
          in doing this aren't woken up by its signals.</p>
      </tp:rationale>
    </tp:docstring>

    <tp:struct name="Dispatch_Operation_Details"
      array-name="Dispatch_Operation_Details_List">

      <tp:docstring>
        Details of a channel dispatch operation.
      </tp:docstring>

      <tp:member name="Channel_Dispatch_Operation" type="o">
        <tp:docstring>
          The object path of the
          <tp:dbus-ref
            namespace="org.freedesktop.Telepathy">ChannelDispatchOperation</tp:dbus-ref>.
        </tp:docstring>
      </tp:member>

      <tp:member name="Properties" type="a{sv}"
        tp:type="Qualified_Property_Value_Map">
        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
          <p>Properties of the channel dispatch operation.</p>

          <p>Connection managers MUST NOT include properties in this mapping
            if their values can change. Clients MUST ignore properties
            that appear in this mapping if their values can change.</p>

          <tp:rationale>
            <p>The rationale is the same as for
              <tp:type-ref>Channel_Details</tp:type-ref>.</p>
          </tp:rationale>

          <p>Each dictionary MUST contain at least the following keys:</p>
          <ul>
            <li><tp:dbus-ref>org.freedesktop.Telepathy.ChannelDispatchOperation.Interfaces</tp:dbus-ref></li>
            <li><tp:dbus-ref>org.freedesktop.Telepathy.ChannelDispatchOperation.Connection</tp:dbus-ref></li>
            <li><tp:dbus-ref>org.freedesktop.Telepathy.ChannelDispatchOperation.Account</tp:dbus-ref></li>
            <li><tp:dbus-ref>org.freedesktop.Telepathy.ChannelDispatchOperation.PossibleHandlers</tp:dbus-ref></li>
          </ul>
        </tp:docstring>
      </tp:member>
    </tp:struct>

    <property
      name="DispatchOperations" tp:name-for-bindings="Dispatch_Operations"
      type="a(oa{sv})" tp:type="Dispatch_Operation_Details[]" access="read">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>The list of ChannelDispatchOperation objects currently being
          processed. Change notification is via the
          <tp:member-ref>NewDispatchOperation</tp:member-ref> and
          <tp:member-ref>DispatchOperationFinished</tp:member-ref> signals.</p>
      </tp:docstring>
    </property>

    <signal name="NewDispatchOperation"
      tp:name-for-bindings="New_Dispatch_Operation">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>Emitted when a dispatch operation is added to
          <tp:member-ref>DispatchOperations</tp:member-ref>.</p>
      </tp:docstring>

      <arg name="Dispatch_Operation" type="o">
        <tp:docstring>
          The dispatch operation that was created.
        </tp:docstring>
      </arg>

      <arg name="Properties"
        type="a{sv}" tp:type="Qualified_Property_Value_Map">
        <tp:docstring>
          The same properties that would appear in the Properties member of
          <tp:type-ref>Dispatch_Operation_Details</tp:type-ref>.
        </tp:docstring>
      </arg>
    </signal>

    <signal name="DispatchOperationFinished"
      tp:name-for-bindings="Dispatch_Operation_Finished">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        Emitted when a dispatch operation finishes (i.e. exactly once per
        emission of <tp:dbus-ref
          namespace="org.freedesktop.Telepathy">ChannelDispatchOperation.Finished</tp:dbus-ref>).

        <tp:rationale>
          Strictly speaking this is redundant with
          ChannelDispatchOperation.Finished, but it provides full
          change-notification for the
          <tp:member-ref>DispatchOperations</tp:member-ref> property.
        </tp:rationale>
      </tp:docstring>

      <arg name="Dispatch_Operation" type="o">
        <tp:docstring>
          The dispatch operation that was closed.
        </tp:docstring>
      </arg>
    </signal>

  </interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
