packages feed

xmms2-client-0.0.5.0: src/XMMS2/Client/Bindings/Playlist.chs

-- -*-haskell-*-
--  XMMS2 client library.
--
--  Author:  Oleg Belozeorov
--  Created: 3 Sep. 2009
--
--  Copyright (C) 2009-2010 Oleg Belozeorov
--
--  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 3 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.
--

module XMMS2.Client.Bindings.Playlist
  ( PlaylistChangedActions (..)
  , playlistAddURL
  , playlistAddId
  , playlistAddEncoded
  , playlistAddIdlist
  , playlistAddCollection
  , playlistRemoveEntry
  , playlistClear
  , playlistListEntries
  , playlistSort
  , playlistSetNext
  , playlistSetNextRel
  , playlistMoveEntry
  , playlistCurrentPos
  , playlistCurrentActive
  , playlistInsertFull
  , playlistInsertURL
  , playlistInsertId
  , playlistInsertEncoded
  , playlistInsertCollection
  , playlistRAdd
  , playlistRAddEncoded
  , playlistRInsert
  , playlistRInsertEncoded
  , broadcastPlaylistChanged
  , broadcastPlaylistCurrentPos
  , broadcastPlaylistLoaded
  ) where

#include <xmmsclient/xmmsclient.h>

{# context prefix = "xmmsc" #}

import XMMS2.Utils

{# import XMMS2.Client.Bindings.Types.Value #}
{# import XMMS2.Client.Bindings.Types.Coll #}
{# import XMMS2.Client.Bindings.Connection #}
{# import XMMS2.Client.Bindings.Result #}
{# import XMMS2.Client.Bindings.Coll #}


{# enum xmms_playlist_changed_actions_t as PlaylistChangedActions
 { underscoreToCase
 } with prefix = "XMMS_"
 deriving (Eq, Show) #}


{# fun playlist_add_url as playlistAddURL
 { withConnection*   `Connection'   ,
   withMaybeCString* `Maybe String' ,
   withCString*      `String'
 } -> `Result' takeResult* #}

{# fun playlist_add_id as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int32'
 } -> `Result' takeResult* #}

{# fun playlist_add_encoded as ^
 { withConnection*   `Connection'   ,
   withMaybeCString* `Maybe String' ,
   withCString*      `String'
 } -> `Result' takeResult* #}

{# fun playlist_add_idlist as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , withColl*         `Coll'
 } -> `Result' takeResult* #}

{# fun playlist_add_collection as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , withColl*         `Coll'
 , withValue*        `Value'
 } -> `Result' takeResult* #}

{# fun playlist_remove_entry as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 } -> `Result' takeResult* #}

{# fun playlist_clear as ^
 { withConnection*   `Connection'   ,
   withMaybeCString* `Maybe String'
 } -> `Result' takeResult* #}

{# fun playlist_list_entries as ^
 { withConnection*   `Connection'   ,
   withMaybeCString* `Maybe String'
 } -> `Result' takeResult* #}

{# fun playlist_sort as ^
 { withConnection* `Connection'
 , withMaybeCString* `Maybe String'
 , withValue*      `Value'
 } -> `Result' takeResult* #}

{# fun playlist_set_next as ^
 { withConnection* `Connection' ,
   cIntConv        `Int32'
 } -> `Result' takeResult* #}

{# fun playlist_set_next_rel as ^
 { withConnection* `Connection' ,
   cIntConv        `Int32'
 } -> `Result' takeResult* #}

{# fun playlist_move_entry as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , cIntConv          `Int'
 } -> `Result' takeResult* #}

{# fun playlist_current_pos as ^
 { withConnection*   `Connection' ,
   withMaybeCString* `Maybe String'
 } -> `Result' takeResult* #}

{# fun playlist_current_active as ^
 { withConnection*   `Connection'
 } -> `Result' takeResult* #}

{# fun playlist_insert_full as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , withCString*      `String'
 , withValue*        `Value'
 } -> `Result' takeResult* #}

{# fun playlist_insert_url as playlistInsertURL
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , withCString*      `String'
 } -> `Result' takeResult* #}

{# fun playlist_insert_id as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , cIntConv          `Int32'
 } -> `Result' takeResult* #}

{# fun playlist_insert_encoded as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , withCString*      `String'
 } -> `Result' takeResult* #}

{# fun playlist_insert_collection as ^
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , withColl*         `Coll'
 , withValue*        `Value'
 } -> `Result' takeResult* #}

{# fun playlist_radd as playlistRAdd
 { withConnection*   `Connection'   ,
   withMaybeCString* `Maybe String' ,
   withCString*      `String'
 } -> `Result' takeResult* #}

{# fun playlist_radd_encoded as playlistRAddEncoded
 { withConnection*   `Connection'   ,
   withMaybeCString* `Maybe String' ,
   withCString*      `String'
 } -> `Result' takeResult* #}

{# fun playlist_rinsert as playlistRInsert
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , withCString*      `String'
 } -> `Result' takeResult* #}

{# fun playlist_rinsert_encoded as playlistRInsertEncoded
 { withConnection*   `Connection'
 , withMaybeCString* `Maybe String'
 , cIntConv          `Int'
 , withCString*      `String'
 } -> `Result' takeResult* #}


{# fun broadcast_playlist_changed as ^
 { withConnection*   `Connection'
 } -> `Result' takeResult* #}

{# fun broadcast_playlist_current_pos as ^
 { withConnection*   `Connection'
 } -> `Result' takeResult* #}

{# fun broadcast_playlist_loaded as ^
 { withConnection*   `Connection'
 } -> `Result' takeResult* #}