xmms2-client-0.0.6.0: src/XMMS2/Client/Medialib.hs
-- -*-haskell-*-
-- XMMS2 client library.
--
-- Author: Oleg Belozeorov
-- Created: 15 Feb. 2010
--
-- 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.Medialib
( BrowseEntry (..)
, medialibAddEntry
, medialibAddEntryFull
, medialibAddEntryEncoded
, medialibGetInfo
, medialibImportPath
, medialibImportPathEncoded
, medialibRehash
, medialibGetId
, medialibGetIdEncoded
, medialibRemoveEntry
, medialibMoveEntry
, medialibEntryPropertySet
, medialibEntryPropertyRemove
, xformMediaBrowse
, xformMediaBrowseEncoded
, broadcastMedialibEntryChanged
, broadcastMedialibEntryAdded
) where
import Control.Applicative
import Control.Monad
import XMMS2.Client.Types
import XMMS2.Client.Result
import XMMS2.Client.Bindings.Connection
import qualified XMMS2.Client.Bindings.Medialib as B
data BrowseEntry
= BrowseEntry
{ entryPath :: EncodedURL
, entryIsDir :: Bool
}
instance ValueGet BrowseEntry where
valueGet v = do
dict <- valueGet v
maybe (fail "not a browse entry") return $ do
path <- lookupString "realpath" dict <|> lookupString "path" dict
dirp <- (1 ==) <$> lookupInt32 "isdir" dict
return BrowseEntry { entryPath = path, entryIsDir = dirp }
medialibAddEntry
:: Connection
-> URL
-> IO (Result Default ())
medialibAddEntry xmmsc url =
liftResult $ B.medialibAddEntry xmmsc url
medialibAddEntryFull
:: Connection
-> URL
-> Dict String
-> IO (Result Default ())
medialibAddEntryFull xmmsc url args =
liftResult $ B.medialibAddEntryFull xmmsc url =<< valueNew args
medialibAddEntryEncoded
:: Connection
-> EncodedURL
-> IO (Result Default ())
medialibAddEntryEncoded xmmsc url =
liftResult $ B.medialibAddEntryEncoded xmmsc url
medialibGetInfo
:: Connection
-> MediaId
-> IO (Result Default PropDict)
medialibGetInfo xmmsc id =
liftResult $ B.medialibGetInfo xmmsc id
medialibImportPath
:: Connection
-> URL
-> IO (Result Default ())
medialibImportPath xmmsc url =
liftResult $ B.medialibImportPath xmmsc url
medialibImportPathEncoded
:: Connection
-> EncodedURL
-> IO (Result Default ())
medialibImportPathEncoded xmmsc url =
liftResult $ B.medialibImportPathEncoded xmmsc url
medialibRehash
:: Connection
-> MediaId
-> IO (Result Default ())
medialibRehash xmmsc id =
liftResult $ B.medialibRehash xmmsc id
medialibGetId
:: Connection
-> URL
-> IO (Result Default MediaId)
medialibGetId xmmsc url =
liftResult $ B.medialibGetId xmmsc url
medialibGetIdEncoded
:: Connection
-> EncodedURL
-> IO (Result Default MediaId)
medialibGetIdEncoded xmmsc url =
liftResult $ B.medialibGetIdEncoded xmmsc url
medialibRemoveEntry
:: Connection
-> MediaId
-> IO (Result Default ())
medialibRemoveEntry xmmsc id =
liftResult $ B.medialibRemoveEntry xmmsc id
medialibMoveEntry
:: Connection
-> MediaId
-> EncodedURL
-> IO (Result Default ())
medialibMoveEntry xmmsc id url =
liftResult $ B.medialibMoveEntry xmmsc id url
medialibEntryPropertySet
:: Connection
-> MediaId
-> Maybe String
-> String
-> Property
-> IO (Result Default ())
medialibEntryPropertySet xmmsc id (Just src) key (PropInt32 val) =
liftResult $ B.medialibEntryPropertySetIntWithSource xmmsc id src key val
medialibEntryPropertySet xmmsc id Nothing key (PropInt32 val) =
liftResult $ B.medialibEntryPropertySetInt xmmsc id key val
medialibEntryPropertySet xmmsc id (Just src) key (PropString val) =
liftResult $ B.medialibEntryPropertySetStrWithSource xmmsc id src key val
medialibEntryPropertySet xmmsc id Nothing key (PropString val) =
liftResult $ B.medialibEntryPropertySetStr xmmsc id key val
medialibEntryPropertyRemove
:: Connection
-> MediaId
-> Maybe String
-> String
-> IO (Result Default ())
medialibEntryPropertyRemove xmmsc id (Just src) key =
liftResult $ B.medialibEntryPropertyRemoveWithSource xmmsc id src key
medialibEntryPropertyRemove xmmsc id Nothing key =
liftResult $ B.medialibEntryPropertyRemove xmmsc id key
xformMediaBrowse
:: Connection
-> URL
-> IO (Result Default [BrowseEntry])
xformMediaBrowse xmmsc url =
liftResult $ B.xformMediaBrowse xmmsc url
xformMediaBrowseEncoded
:: Connection
-> EncodedURL
-> IO (Result Default [BrowseEntry])
xformMediaBrowseEncoded xmmsc url =
liftResult $ B.xformMediaBrowseEncoded xmmsc url
broadcastMedialibEntryChanged
:: Connection
-> IO (Result Broadcast MediaId)
broadcastMedialibEntryChanged =
liftResult . B.broadcastMedialibEntryChanged
broadcastMedialibEntryAdded
:: Connection
-> IO (Result Broadcast MediaId)
broadcastMedialibEntryAdded =
liftResult . B.broadcastMedialibEntryAdded