+
+ # Is MPD server playing?
+ fun playing: Bool do return state == "play"
+
+ # Is MPD server stopped?
+ fun stopped: Bool do return state == "stop"
+
+ # Time elapsed within the current song.
+ var elapsed: nullable Int
+
+ # TODO comment
+ var time_at: nullable Int
+
+ # Total time of the current song.
+ var time_total: nullable Int
+
+ # Get the cursor position on the song duration.
+ fun time_ratio: nullable Float do
+ if time_at == null or time_total == null then return null
+ return time_at.to_f / time_total.to_f
+ end
+
+ redef fun to_s do
+ var vol = "unknown"
+ if volume != null then vol = volume.to_s
+
+ var time_at = time_at
+ var time_total = time_total
+ var elapsed = elapsed
+ if time_at != null and time_total != null and elapsed != null then
+ return "volume: {vol}\nstate: {state}\nelapsed: {elapsed}\ntime_[at|total]: {time_at}:{time_total}\ntime_ratio: {time_ratio.as(not null)}"
+ else
+ return "volume: {vol}\nstate: {state}"
+ end
+ end