packages feed

netease-fm-1.2.2: exe/Types.hs

module Types (
  Show1 (..)
, MusicSource (..)
, PlayMode (..)
, isLocal
, requireLogin
, defaultPlayMode

, runCache, runSession, runPlayer
, Cache
, IsSession, SomeSession (..)
, Player, PlayerState (..), isStopped
) where

import FM.FM

class Show1 a where
  show1 :: a -> String

data MusicSource = NetEaseFM
                 | NetEaseDailyRecommendation
                 | NetEasePlayLists
                 | NetEasePlayList Int String
                 | LocalCache
  deriving (Eq, Ord)

data PlayMode = Stream | LoopOne | LoopAll | Shuffle
  deriving (Eq, Ord, Enum, Bounded)

instance Show1 MusicSource where
  show1 NetEaseFM = "网易云音乐私人兆赫"
  show1 NetEaseDailyRecommendation = "网易云音乐每日歌曲推荐"
  show1 NetEasePlayLists = "网易云音乐用户歌单"
  show1 (NetEasePlayList _ title) = title
  show1 LocalCache = "本地缓存"

instance Show1 PlayMode where
  show1 Stream  = "流"
  show1 LoopOne = "单曲循环"
  show1 LoopAll = "列表循环"
  show1 Shuffle = "随机播放"

isLocal :: MusicSource -> Bool
isLocal LocalCache = True
isLocal _ = False

requireLogin :: MusicSource -> Bool
requireLogin LocalCache = False
requireLogin _ = True

defaultPlayMode :: MusicSource -> PlayMode
defaultPlayMode NetEaseFM = Stream
defaultPlayMode _ = LoopAll