<?xml version="1.0"?>
<!--
 Copyright (C) 2018 Igalia S.L.

 SPDX-License-Identifier: LGPL-2.1-or-later

 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.

 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.

 You should have received a copy of the GNU Lesser General Public
 License along with this library. If not, see <http://www.gnu.org/licenses/>.

 Author: Patrick Griffis <pgriffis@igalia.com>
-->

<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
  <!--
    org.freedesktop.portal.Settings:
    @short_description: Settings interface

    This interface provides read-only access to a small number of standardized
    host settings required for toolkits similar to XSettings. It is not for
    general purpose settings.

    Implementations can provide keys not listed below; they are entirely
    implementation details that are undocumented. If you are a toolkit and want
    to use this please open an issue.

    Currently the interface provides the following standardized keys:

    * ``org.freedesktop.appearance`` ``color-scheme`` (``u``)

      Indicates the system's preferred color scheme.
      Supported values are:

        * ``0``: No preference
        * ``1``: Prefer dark appearance
        * ``2``: Prefer light appearance

      Unknown values should be treated as ``0`` (no preference).

    * ``org.freedesktop.appearance`` ``accent-color`` (``(ddd)``)

      Indicates the system's preferred accent color as a tuple of RGB values in
      the sRGB color space, in the range [0,1]. Out-of-range RGB values should
      be treated as an unset accent color.

    * ``org.freedesktop.appearance``  ``contrast`` (``u``)

      Indicates the system's preferred contrast level.
      Supported values are:

        * ``0``: No preference (normal contrast)
        * ``1``: Higher contrast

      Unknown values should be treated as ``0`` (no preference).

    This documentation describes version 2 of this interface.
  -->
  <interface name="org.freedesktop.portal.Settings">

    <!--
      ReadAll:
      @namespaces: List of namespaces to filter results by, supports simple globbing explained below.
      @value: Dictionary of namespaces to its keys and values.

      If @namespaces is an empty array or contains an empty string it matches all. Globbing is supported but only for
      trailing sections, e.g. "org.example.*".
    -->
    <method name="ReadAll">
      <arg type="as" name="namespaces" direction="in"/>
      <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QMap&lt;QString,QVariantMap&gt;"/>
      <arg type="a{sa{sv}}" name="value" direction="out"/>
    </method>

    <!--
      Read:
      @namespace: Namespace to look up @key in.
      @key: The key to get.
      @value: The value @key is set to.

      Reads a single value. Returns an error on any unknown namespace or key.

      Deprecated, use ReadOne instead. The value argument was intended to have
      the value inside one layer of variant as it is in ReadOne, for example
      `&lt;string "hello"&gt;` in GVariant text notation; but it is actually
      returned inside two layers of variant, for example
      `&lt;&lt;string "hello"&gt;&gt;`.
    -->
    <method name="Read">
      <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
      <arg type="s" name="namespace" direction="in"/>
      <arg type="s" name="key" direction="in"/>
      <arg type="v" name="value" direction="out"/>
    </method>

    <!--
      ReadOne:
      @namespace: Namespace to look up @key in.
      @key: The key to get.
      @value: The value @key is set to.

      Reads a single value which may be any valid DBus type. Returns an error on any unknown namespace or key.

      This method was added in version 2.
    -->
    <method name="ReadOne">
      <arg type="s" name="namespace" direction="in"/>
      <arg type="s" name="key" direction="in"/>
      <arg type="v" name="value" direction="out"/>
    </method>

    <!--
      SettingChanged:
      @namespace: Namespace of changed setting.
      @key: The key of changed setting.
      @value: The new value.

      Emitted when a setting changes.
    -->
    <signal name="SettingChanged">
      <arg type="s" name="namespace" direction="out"/>
      <arg type="s" name="key" direction="out"/>
      <arg type="v" name="value" direction="out"/>
    </signal>

    <property name="version" type="u" access="read"/>
  </interface>
</node>
