packages feed

xmms2-client-0.0.4.0: src/XMMS2/Client/Playback.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.Playback
  ( PlaybackStatus (..)
  , SeekMode (..)
  , playbackStop
  , playbackTickle
  , playbackStart
  , playbackPause
  , playbackCurrentId
  , playbackSeekMs
  , playbackSeekSamples
  , playbackPlaytime
  , playbackStatus
  , playbackVolumeSet
  , playbackVolumeGet
  , broadcastPlaybackVolumeChanged
  , broadcastPlaybackStatus
  , broadcastPlaybackCurrentId
  , signalPlaybackPlaytime
  ) where

import Control.Applicative

import XMMS2.Client.Types
import XMMS2.Client.Result

import XMMS2.Client.Bindings.Connection
import XMMS2.Client.Bindings.Playback (PlaybackStatus (..), SeekMode (..))
import qualified XMMS2.Client.Bindings.Playback as B


instance ValueGet PlaybackStatus where
  valueGet v = (toEnum . fromIntegral) <$> getInt v


playbackStop :: Connection -> IO (Result Default ())
playbackStop xmmsc =
  liftResult $ B.playbackStop xmmsc

playbackTickle :: Connection -> IO (Result Default ())
playbackTickle xmmsc =
  liftResult $ B.playbackTickle xmmsc

playbackStart :: Connection -> IO (Result Default ())
playbackStart xmmsc =
  liftResult $ B.playbackStart xmmsc

playbackPause :: Connection -> IO (Result Default ())
playbackPause xmmsc =
  liftResult $ B.playbackPause xmmsc

playbackCurrentId :: Connection -> IO (Result Default Int32)
playbackCurrentId xmmsc =
  liftResult $ B.playbackCurrentId xmmsc

playbackSeekMs :: Connection -> Int32 -> SeekMode -> IO (Result Default ())
playbackSeekMs xmmsc pos whence
  = liftResult $ B.playbackSeekMs xmmsc pos whence

playbackSeekSamples :: Connection -> Int32 -> SeekMode -> IO (Result Default ())
playbackSeekSamples xmmsc pos whence =
  liftResult $ B.playbackSeekSamples xmmsc pos whence

playbackPlaytime :: Connection -> IO (Result Default Int32)
playbackPlaytime xmmsc =
  liftResult $ B.playbackPlaytime xmmsc

playbackStatus :: Connection -> IO (Result Default PlaybackStatus)
playbackStatus xmmsc =
  liftResult $ B.playbackStatus xmmsc

playbackVolumeSet :: Connection -> String -> Int -> IO (Result Default ())
playbackVolumeSet xmmsc chan vol =
  liftResult $ B.playbackVolumeSet xmmsc chan vol

playbackVolumeGet :: Connection -> IO (Result Default (Dict Int32))
playbackVolumeGet xmmsc =
  liftResult $ B.playbackVolumeGet xmmsc


broadcastPlaybackVolumeChanged :: Connection -> IO (Result Broadcast (Dict Int32))
broadcastPlaybackVolumeChanged =
  liftResult . B.broadcastPlaybackVolumeChanged

broadcastPlaybackStatus :: Connection -> IO (Result Broadcast PlaybackStatus)
broadcastPlaybackStatus =
  liftResult . B.broadcastPlaybackStatus

broadcastPlaybackCurrentId :: Connection -> IO (Result Broadcast Int32)
broadcastPlaybackCurrentId =
  liftResult . B.broadcastPlaybackCurrentId


signalPlaybackPlaytime :: Connection -> IO (Result Signal Int32)
signalPlaybackPlaytime =
  liftResult . B.signalPlaybackPlaytime