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