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

<!--
 * objects.xml
 * Copyright 2007 Ben Tucker
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions, and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions, and the following disclaimer in the documentation
 *    provided with the distribution.
 *
 * This software is provided "as is" and without any warranty, express or
 * implied. In no event shall the authors be liable for any damages arising from
 * the use of this software.
 -->

<!--
    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
    CMD_GET_EQ //CHANGED: now these functions use double due to dbus-glib restriction
    CMD_GET_EQ_PREAMP
    CMD_GET_EQ_BAND //NOTE: GArray is used for bands
    CMD_SET_EQ
    CMD_SET_EQ_PREAMP
    CMD_SET_EQ_BAND

    Obsolete:
    CMD_PLAYLIST_INS //unnecessary?
    CMD_GET_EQ_DATA //obsolete
    CMD_SET_EQ_DATA //obsolete

-->

<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>

        <!-- Get names of available 'standard' tuple fields -->
        <method name="GetTupleFields">
            <!-- Return array of tuple field names -->
            <arg type="as" direction="out" name="fields"/>
        </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>

        <!-- Add a list of files -->
        <method name="AddList">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Array of filenames to add -->
            <arg type="as" name="filenames"/>
        </method>

        <!-- Open a list of files -->
        <method name="OpenList">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Array of filenames to open -->
            <arg type="as" name="filenames"/>
        </method>

        <!-- Open a list of files in a temporary playlist -->
        <method name="OpenListToTemp">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <!-- Array of filenames to open -->
            <arg type="as" name="filenames"/>
        </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>

        <!-- Query stop-after-song status -->
        <method name="StopAfter">
            <arg type="b" direction="out" name="is_stopping"/>
        </method>

        <!-- Toggle stop-after-song -->
        <method name="ToggleStopAfter">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
        </method>

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

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

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

        <!-- Show filebrowser -->
        <method name="ShowFilebrowser">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="b" name="show"/>
        </method>

        <!-- Either play or pause -->
        <method name="PlayPause">
            <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 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>

        <!-- equalizer -->
        <method name="GetEq">
            <arg type="d" direction="out" name="preamp"/>
            <arg type="ad" direction="out" name="bands"/>
        </method>

        <method name="GetEqPreamp">
            <arg type="d" direction="out" name="preamp"/>
        </method>

        <method name="GetEqBand">
            <arg type="i" name="band"/>
            <arg type="d" direction="out" name="value"/>
        </method>

        <method name="SetEq">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="d" name="preamp"/>
            <arg type="ad" name="bands"/>
        </method>

        <method name="SetEqPreamp">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="d" name="preamp"/>
        </method>

        <method name="SetEqBand">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="i" name="band"/>
            <arg type="d" name="value"/>
        </method>

       <!-- Activate/Deactivate Equalizer -->
        <method name="EqualizerActivate">
            <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
            <arg type="b" name="active"/>
        </method>

        <method name="GetActivePlaylistName">
            <arg type="s" direction="out" name="plname" />
        </method>
    </interface>
</node>
