class Sc20XX::Controllers::TrackController
Handles the navigation thru the current track list
Public Class Methods
new(view, client)
click to toggle source
Calls superclass method
Sc20XX::Controllers::Controller::new
# File lib/sc20XX/controllers/track_controller.rb, line 12 def initialize(view, client) super(view) @client = client events.on(:key) do |key| case key when :enter @view.select events.trigger(:select, current_track) when :up, :k @view.up when :down, :j @view.down @tracks.load_more if @view.bottom? when :u user = fetch_user_with_message('Change to soundcloud user: ') unless user.nil? @client.current_user = user @tracks.collection_to_load = :user @tracks.clear_and_replace end when :f @client.current_user = fetch_user_with_message('Change to SoundCloud user\'s favourites: ') if @client.current_user.nil? unless @client.current_user.nil? @tracks.collection_to_load = :favorites @tracks.clear_and_replace end when :s @view.clear @client.current_user = fetch_user_with_message('Change to SoundCloud user: ') if @client.current_user.nil? unless @client.current_user.nil? set = UI::Input.getstr('Change to SoundCloud playlist: ') set_request = @client.resolve(@client.current_user.permalink + '/sets/' + set) if set_request.nil? UI::Input.error("No such set/playlist '#{set}' for #{@client.current_user.username}") @client.current_user = nil else @tracks.playlist = Models::Playlist.new(set_request) @tracks.collection_to_load = :playlist @tracks.clear_and_replace end end end end end
Public Instance Methods
bind_to(tracks)
click to toggle source
# File lib/sc20XX/controllers/track_controller.rb, line 74 def bind_to(tracks) @tracks = tracks @view.bind_to(tracks) end
current_track()
click to toggle source
# File lib/sc20XX/controllers/track_controller.rb, line 70 def current_track @tracks[@view.current] end
fetch_user_with_message(message_to_display)
click to toggle source
# File lib/sc20XX/controllers/track_controller.rb, line 59 def fetch_user_with_message(message_to_display) permalink = UI::Input.getstr(message_to_display) user_hash = @client.resolve(permalink) if user_hash Models::User.new(user_hash) else UI::Input.error("No such user '#{permalink}'. Use u to try again.") nil end end
load()
click to toggle source
# File lib/sc20XX/controllers/track_controller.rb, line 79 def load @tracks.load end
next_track()
click to toggle source
# File lib/sc20XX/controllers/track_controller.rb, line 83 def next_track @view.down @view.select events.trigger(:select, current_track) end