<?xml version="1.0" encoding="UTF-8" ?>

<!--
 - Audacious: A cross-platform multimedia player
 - Copyright (c) 2007 Ben Tucker
 -
 - This program is free software; you can redistribute it and/or modify
 - it under the terms of the GNU General Public License as published by
 - the Free Software Foundation; under version 3 of the License.
 -
 - This program 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 General Public License for more details.
 -
 - You should have received a copy of the GNU General Public License
 - along with this program.  If not, see <http://www.gnu.org/licenses>.
 -->

<!--
    Defined:
    CMD_GET_VERSION //CHANGED: now it returns audacious version instead of protocol version.
    CMD_PLAY
    CMD_PAUSE
    CMD_STOP
    CMD_IS_PLAYING
    CMD_GET_PLAYLIST_POS
    CMD_SET_PLAYLIST_POS
    CMD_GET_PLAYLIST_LENGTH
    CMD_PLAYLIST_CLEAR
    CMD_GET_OUTPUT_TIME
    CMD_JUMP_TO_TIME
    CMD_GET_PLAYLIST_FILE
    CMD_GET_PLAYLIST_TITLE
    CMD_GET_PLAYLIST_TIME
    CMD_PLAYLIST_PREV
    CMD_PLAYLIST_NEXT
    CMD_TOGGLE_REPEAT
    CMD_TOGGLE_SHUFFLE
    CMD_PLAYLIST_ADD_URL_STRING
    CMD_PLAYLIST_DELETE
    CMD_IS_REPEAT
    CMD_IS_SHUFFLE
    CMD_GET_VOLUME
    CMD_SET_VOLUME
    CMD_GET_BALANCE
    CMD_IS_EQ_WIN
    CMD_IS_PL_WIN
    CMD_IS_MAIN_WIN
    CMD_PL_WIN_TOGGLE
    CMD_EQ_WIN_TOGGLE
    CMD_MAIN_WIN_TOGGLE
    CMD_QUIT
    CMD_EJECT
    CMD_GET_INFO
    CMD_PLAYLIST_GET_TUPLE_DATA
    CMD_IS_ADVANCE
    CMD_TOGGLE_ADVANCE
    CMD_SHOW_PREFS_BOX
    CMD_SHOW_ABOUT_BOX
    CMD_SHOW_JTF_BOX

    Newly defined:
    CMD_PLAY_PAUSE
    CMD_ACTIVATE
    CMD_GET_SKIN
    CMD_SET_SKIN
    CMD_GET_INFO
    CMD_TOGGLE_AOT
    CMD_GET_PLAYQUEUE_LENGTH
    CMD_PLAYQUEUE_ADD
    CMD_PLAYQUEUE_REMOVE
    CMD_PLAYQUEUE_CLEAR
    CMD_PLAYQUEUE_GET_LIST_POS //CHANGED: get list position by queue position
    CMD_PLAYQUEUE_GET_QUEUE_POS //CHANGED: get queue position by list postion
    CMD_PLAYQUEUE_IS_QUEUED
    CMD_PLAYLIST_INS_URL_STRING
    CMD_PLAYLIST_ENQUEUE_TO_TEMP
    CMD_PLAYLIST_ADD

    Remaining:
    CMD_PLAYLIST_INS //unnecessary?
    CMD_GET_EQ_DATA //obsolete
    CMD_SET_EQ_DATA //obsolete
    CMD_GET_EQ
    CMD_GET_EQ_PREAMP
    CMD_GET_EQ_BAND
    CMD_SET_EQ
    CMD_SET_EQ_PREAMP
    CMD_SET_EQ_BAND
-->

<node name="/">
    <!-- Audacious General Information -->
    <interface name="org.atheme.audacious">
        <!-- Audacious version -->
        <method name="Version">
            <arg type="s" direction="out" name="version"/>
        </method>

        <!-- Quit Audacious -->
        <method name="Quit">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Open files (Eject) -->
        <method name="Eject">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Main window visibility -->
        <method name="MainWinVisible">
            <arg type="b" direction="out" name="is_main_win"/>
        </method>

        <!-- Toggle main window visibility -->
        <method name="ShowMainWin">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="b" name="show"/>
        </method>

        <!-- Equalizer visibility -->
        <method name="EqualizerVisible">
            <arg type="b" direction="out" name="is_eq_win"/>
        </method>

        <!-- Toggle equalizer visibility -->
        <method name="ShowEqualizer">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="b" name="show"/>
        </method>

        <!-- Playlist visibility -->
        <method name="PlaylistVisible">
            <arg type="b" direction="out" name="is_pl_win"/>
        </method>

        <!-- Toggle playlist visibility -->
        <method name="ShowPlaylist">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="b" name="show"/>
        </method>

        <!-- Playback Information/Manipulation -->
        <!-- Begin or resume playback -->
        <method name="Play">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Pause playback -->
        <method name="Pause">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Stop playback -->
        <method name="Stop">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Is playback playing? -->
        <method name="Playing">
            <!-- Return true if playing, false otherwise -->
            <arg type="b" direction="out" name="is_playing"/>
        </method>

        <!-- Is playback paused? -->
        <method name="Paused">
            <!-- Return true if paused, false otherwise -->
            <arg type="b" direction="out" name="is_paused"/>
        </method>

        <!-- Is playback stopped? -->
        <method name="Stopped">
            <!-- Return true if stopped, false otherwise -->
            <arg type="b" direction="out" name="is_stopped"/>
        </method>

        <!-- What is the playback status? -->
        <method name="Status">
            <!-- Return the status as a string: -->
            <!-- one of {"playing" "paused" "stopped"} -->
            <arg type="s" direction="out" name="status"/>
        </method>

        <!-- What is the bitrate, frequency, and number of channels of the -->
        <!-- current audio format? -->
        <method name="Info">
            <arg type="i" direction="out" name="rate"/>
            <arg type="i" direction="out" name="freq"/>
            <arg type="i" direction="out" name="nch"/>
        </method>

        <!-- What is the current output position? -->
        <method name="Time">
            <!-- Position of song, in ms -->
            <arg type="u" direction="out" name="time"/>
        </method>

        <!-- Seek to some absolute position in the current song -->
        <method name="Seek">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Position of song, in ms, to seek to -->
            <arg type="u" name="pos"/>
        </method>

        <!-- What is the playback volume? -->
        <method name="Volume">
            <!-- Volume of the left channel -->
            <arg type="i" direction="out" name="vl"/>
            <!-- Volume of the right channel -->
            <arg type="i" direction="out" name="vr"/>
        </method>

        <!-- Set the playback volume -->
        <method name="SetVolume">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Volume of the left channel -->
            <arg type="i" name="vl"/>
            <!-- Volume of the right channel -->
            <arg type="i" name="vr"/>
        </method>

        <!-- Get the playback balance -->
        <method name="Balance">
            <!-- Balance between left and right channels -->
            <arg type="i" direction="out" name="balance"/>
        </method>

        <!-- Playlist Information/Manipulation -->
        <!-- Playlist position -->
        <method name="Position">
            <!-- Return position of current song in current playlist -->
            <arg type="u" direction="out" name="pos"/>
        </method>

        <!-- Skip ahead one song in the current playlist -->
        <method name="Advance">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Skip backwards one song in the current playlist -->
        <method name="Reverse">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Playlist length -->
        <method name="Length">
            <!-- Return length of current playlist -->
            <arg type="i" direction="out" name="length"/>
        </method>

        <!-- Get a song's title -->
        <method name="SongTitle">
            <!-- Song position in the playlist -->
            <arg type="u" name="pos"/>

            <!-- Return title of desired song -->
            <arg type="s" direction="out" name="title"/>
        </method>

        <!-- Get a song's filename -->
        <method name="SongFilename">
            <!-- Song position in the playlist -->
            <arg type="u" name="pos"/>

            <!-- Return filename of desired song -->
            <arg type="s" direction="out" name="filename"/>
        </method>

        <!-- Get the length of some song, in seconds -->
        <method name="SongLength">
            <!-- Song position in the playlist -->
            <arg type="u" name="pos"/>

            <!-- Return length, in seconds, of desired song -->
            <arg type="i" direction="out" name="length"/>
        </method>

        <!-- Get the length of some song, in frames -->
        <method name="SongFrames">
            <!-- Song position in the playlist -->
            <arg type="u" name="pos"/>

            <!-- Return length, in frames, of desired song -->
            <arg type="i" direction="out" name="length"/>
        </method>

        <!-- Get the value of a tuple field of some song -->
        <method name="SongTuple">
            <!-- Song position in the playlist -->
            <arg type="u" name="pos"/>

            <!-- Tuple name -->
            <arg type="s" name="tuple"/>

            <!-- Return tuple value -->
            <arg type="v" direction="out" name="value"/>
        </method>

        <!-- Jump to some position in the playlist -->
        <method name="Jump">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Song position to jump to -->
            <arg type="u" name="pos"/>
        </method>

        <!-- Add some file to the current playlist -->
        <method name="Add">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- File to add -->
            <arg type="s" name="file"/>
        </method>

        <!-- Add some URL to the current playlist -->
        <method name="AddUrl">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- URL to add -->
            <arg type="s" name="url"/>
        </method>

        <!-- Delete some song from the playlist -->
        <method name="Delete">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Position of song to delete -->
            <arg type="u" name="pos"/>
        </method>

        <!-- Clear the playlist -->
        <method name="Clear">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Query auto-advance status -->
        <method name="AutoAdvance">
            <arg type="b" direction="out" name="is_advance"/>
        </method>

        <!-- Toggle auto-advance -->
        <method name="ToggleAutoAdvance">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Query repeat status -->
        <method name="Repeat">
            <arg type="b" direction="out" name="is_repeat"/>
        </method>

        <!-- Toggle repeat -->
        <method name="ToggleRepeat">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Query shuffle status -->
        <method name="Shuffle">
            <arg type="b" direction="out" name="is_shuffle"/>
        </method>

        <!-- Toggle shuffle -->
        <method name="ToggleShuffle">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Show preferences window -->
        <method name="ShowPrefsBox">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Show about window -->
        <method name="ShowAboutBox">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Show jump to file window -->
        <method name="ShowJtfBox">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Either play or pause -->
        <method name="PlayPause">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Activate -->
        <method name="Activate">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <!-- Playqueue get playlist pos -->
        <method name="QueueGetListPos">
            <arg type="u" name="qpos"/>
            <arg type="u" direction="out" name="pos"/>
        </method>

        <!-- Playqueue get playqueue pos -->
        <method name="QueueGetQueuePos">
            <arg type="u" name="pos"/>
            <arg type="u" direction="out" name="qpos"/>
        </method>

        <!-- Get skin -->
        <method name="GetSkin">
            <!-- Return filename of desired song -->
            <arg type="s" direction="out" name="skin"/>
        </method>

        <!-- Set skin -->
        <method name="SetSkin">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Return filename of desired song -->
            <arg type="s" name="skin"/>
        </method>

        <!-- Get Info -->
        <method name="GetInfo">
            <arg type="i" direction="out" name="rate"/>
            <arg type="i" direction="out" name="freq"/>
            <arg type="i" direction="out" name="nch"/>
        </method>

        <method name="ToggleAot">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="b" name="ontop"/>
        </method>

        <method name="GetPlayqueueLength">
            <arg type="i" direction="out" name="length"/>
        </method>

        <method name="PlaylistInsUrlString">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="s" name="url"/>
            <arg type="i" name="pos"/>
        </method>

        <method name="PlaylistAdd">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="s" name="list"/>
        </method>

        <method name="PlayqueueAdd">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="i" name="pos"/>
        </method>

        <method name="PlayqueueRemove">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="i" name="pos"/>
        </method>

        <method name="PlayqueueClear">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

        <method name="PlayqueueIsQueued">
            <arg type="i" name="pos"/>
            <arg type="b" direction="out" name="is_queued"/>
        </method>

        <method name="PlaylistEnqueueToTemp">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="s" name="url"/>
        </method>

    </interface>
</node>
