class XiamiRadio::View::Player
Public Class Methods
new()
click to toggle source
# File lib/xiami_radio/view/player.rb, line 8 def initialize init_screen noecho stdscr.keypad true curs_set 0 start_color init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK) init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK) end
Public Instance Methods
listen_on(player)
click to toggle source
# File lib/xiami_radio/view/player.rb, line 27 def listen_on(player) Thread.start do while (key = getch) case key when KEY_LEFT player.rewind when KEY_RIGHT player.forward when KEY_DOWN player.next when 'l' XiamiRadio::Notice.push player.track.fav when ' ' player.toggle else # end end end end
refresh(track, position)
click to toggle source
# File lib/xiami_radio/view/player.rb, line 19 def refresh(track, position) render_title_line track render_progress_line (position / track.duration), track.downloader.progress render_info_line track, position render_msg_line Curses.refresh end
Also aliased as: curses_refresh
Private Instance Methods
render_info_line(track, position)
click to toggle source
# File lib/xiami_radio/view/player.rb, line 69 def render_info_line(track, position) setpos(2, 0) clrtoeol addstr("#{track.reason.content}") addstr(": #{track.reason.title} ") unless track.reason.title.nil? addstr("- #{track.reason.artist} ") unless track.reason.artist.nil? addstr(" 播放进度: ") attron(color_pair(COLOR_CYAN)|A_NORMAL) { addstr(" #{sec_2_min position} / #{sec_2_min track.duration} ") } end
render_msg_line(msg = XiamiRadio::Notice.shift)
click to toggle source
# File lib/xiami_radio/view/player.rb, line 81 def render_msg_line(msg = XiamiRadio::Notice.shift) setpos(3, 0) clrtoeol addstr(msg || '') end
render_progress_line(play_rate, dawnload_rate)
click to toggle source
# File lib/xiami_radio/view/player.rb, line 61 def render_progress_line(play_rate, dawnload_rate) d_cols = [(dawnload_rate * cols).round, cols].min p_cols = [(play_rate * cols).round, d_cols].min setpos(1, 0) clrtoeol addstr('_' * p_cols + '#' * (d_cols - p_cols) + ' ' * (cols - d_cols)) end
render_title_line(track)
click to toggle source
# File lib/xiami_radio/view/player.rb, line 49 def render_title_line(track) setpos(0, 0) clrtoeol addstr('Now is playing ') attron(color_pair(COLOR_RED)|A_NORMAL) { addstr(" #{track.title} - #{track.artist} ") } if User.instance.login? track.grade? ? addstr(' 已收藏 ') : addstr(' 按"L"加入收藏 ') end end
sec_2_min(sec)
click to toggle source
# File lib/xiami_radio/view/player.rb, line 87 def sec_2_min(sec) Time.at(sec).utc.strftime('%M:%S') end