{-# LANGUAGE OverloadedStrings #-}

{- |
Module      : Network.MPD.Commands.Output
Copyright   : (c) Ben Sinclair 2005-2009, Joachim Fasting 2012
License     : MIT (see LICENSE)

Maintainer  : joachifm@fastmail.fm
Stability   : stable
Portability : unportable

Audio output devices.
-}

module Network.MPD.Commands.Output
    ( disableOutput
    , enableOutput
    , toggleOutput
    , outputs
    ) where

import qualified Network.MPD.Applicative.Internal as A
import qualified Network.MPD.Applicative.Output as A
import           Network.MPD.Core
import           Network.MPD.Commands.Types

-- | Turn off an output device.
disableOutput :: MonadMPD m => Int -> m ()
disableOutput :: forall (m :: * -> *). MonadMPD m => Int -> m ()
disableOutput = Command () -> m ()
forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand (Command () -> m ()) -> (Int -> Command ()) -> Int -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Command ()
A.disableOutput

-- | Turn on an output device.
enableOutput :: MonadMPD m => Int -> m ()
enableOutput :: forall (m :: * -> *). MonadMPD m => Int -> m ()
enableOutput = Command () -> m ()
forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand (Command () -> m ()) -> (Int -> Command ()) -> Int -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Command ()
A.enableOutput

-- | Toggle output device.
toggleOutput :: MonadMPD m => Int -> m ()
toggleOutput :: forall (m :: * -> *). MonadMPD m => Int -> m ()
toggleOutput = Command () -> m ()
forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand (Command () -> m ()) -> (Int -> Command ()) -> Int -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Command ()
A.toggleOutput

-- | Retrieve information for all output devices.
outputs :: MonadMPD m => m [Device]
outputs :: forall (m :: * -> *). MonadMPD m => m [Device]
outputs = Command [Device] -> m [Device]
forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand Command [Device]
A.outputs