Skip to content

Commit

Permalink
Add upcoming tracks to status bar
Browse files Browse the repository at this point in the history
  • Loading branch information
whomwah committed Jan 19, 2016
1 parent c974751 commit 725d2b0
Show file tree
Hide file tree
Showing 6 changed files with 119 additions and 95 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ gem 'sugarcube', :require => [
'sugarcube-attributedstring',
]
gem "ib"
#gem "kyan_jukebox_websocket_lib", :path => "/Users/duncan/_dev/kyan/gems/kyan_jukebox_websocket_lib"
#gem "kyan_jukebox", :path => "/Users/duncan/_dev/kyan/gems/kyan_jukebox_websocket_lib"
gem "kyan_jukebox", :git => '[email protected]:kyan/kyan_jukebox_websocket_lib.git'
6 changes: 3 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
GIT
remote: [email protected]:kyan/kyan_jukebox_websocket_lib.git
revision: 60178464e15c2465357326aa40906c1e71377de5
revision: 8bfe8b70b4ed6fefb491591d9e62279c262ade7d
specs:
kyan_jukebox (0.2.0)
kyan_jukebox (0.2.3)

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -85,4 +85,4 @@ DEPENDENCIES
sugarcube

BUNDLED WITH
1.10.6
1.11.2
1 change: 1 addition & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Motion::Project::App.setup do |app|

app.info_plist['NSUIElement'] = 1
app.info_plist['NSHumanReadableCopyright'] = 'Copyright © 2016, Kyan Ltd'
app.info_plist['NSAppTransportSecurity'] = { 'NSAllowsArbitraryLoads' => true }

app.pods do
pod 'SocketRocket'
Expand Down
24 changes: 24 additions & 0 deletions app/_views/upcoming_table_view.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
class UpcomingTableView < NSTableView

def init
super.tap do |v|
v.translatesAutoresizingMaskIntoConstraints = false

col2 = NSTableColumn.alloc.initWithIdentifier "col2"
col2.setWidth 20
col2.identifier = :thumb
v.addTableColumn col2

col3 = NSTableColumn.alloc.initWithIdentifier "col3"
col3.setWidth 220
col3.identifier = :title
v.addTableColumn col3

col4 = NSTableColumn.alloc.initWithIdentifier "col4"
col4.setWidth 40
col4.identifier = :duration
v.addTableColumn col4
end
end

end
81 changes: 0 additions & 81 deletions app/_views/upcoming_view.rb

This file was deleted.

100 changes: 90 additions & 10 deletions app/controllers/upcoming_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,108 @@ class UpcomingController < NSViewController

def init
super.tap do |c|
c.init_data
c.build_view

@update_observer = App.notification_center.observe JB_UPDATED do |n|
view.refresh(n.userInfo[:jukebox])
refresh(n.userInfo[:jukebox])
end
end
end

def refresh(jukebox)
@jukebox = jukebox
refresh_tracks
@table_view.reloadData
end

def init_data
@upcoming_tracks = []
end

def build_view
@main_view = UpcomingView.alloc.initWithFrame([[0, 0], [50, 50]])
@main_view.table.setDelegate(self)
@main_view.table.setDataSource(self)
self.setView(@main_view)
@table_view = UpcomingTableView.alloc.init
@table_view.setBoundsOrigin([-10,0]);
@table_view.setBoundsSize([@table_view.bounds.size.width+20, @table_view.bounds.size.height]);
@table_view.delegate = self
@table_view.dataSource = self
self.setView(@table_view)
end

def numberOfRowsInTableView(table_view)
@upcoming_tracks.count
end

def tableView(table_view, objectValueForTableColumn:table_column, row:row)
case table_column.identifier.to_sym
when :thumb
if @upcoming_tracks[row].artwork_url.nil?
NSImage.imageNamed("missing_artwork.png")
else
url = NSURL.URLWithString(@upcoming_tracks[row].artwork_url)
NSImage.alloc.initWithContentsOfURL(url)
end
when :title
str = "#{@upcoming_tracks[row].heading} (#{@upcoming_tracks[row].added_by})"
paragraph = NSMutableParagraphStyle.new
paragraph.setLineBreakMode(NSLineBreakByTruncatingTail)

str.attrd({
'NSParagraphStyle' => paragraph
})
when :duration
@upcoming_tracks[row].eta
end
end

def tableView(table_view, heightOfRow:row)
20
end

def tableView(table_view, viewForTableColumn:table_column, row:row)
tview = table_view.makeViewWithIdentifier(table_column.identifier, owner:self)

case table_column.identifier.to_sym
when :thumb
tview = NSImageView.new.tap do |v|
v.setTranslatesAutoresizingMaskIntoConstraints(false)
v.setEditable(false)
v.setImageScaling(NSImageScaleAxesIndependently)
v.identifier = 'thumbid'
end
when :title
tview = NSTextField.new.tap do |v|
v.frame = CGRectZero
v.font = NSFont.systemFontOfSize(12.0)
v.setEditable(false)
v.setBezeled(false)
v.setDrawsBackground(false)
v.setSelectable(false)
v.identifier = 'titleid'
end
else
tview = NSTextField.new.tap do |v|
v.frame = CGRectZero
v.setEditable(false)
v.setBezeled(false)
v.setAlignment(NSRightTextAlignment)
v.setDrawsBackground(false)
v.setSelectable(false)
v.identifier = 'defaultid'
end
end

def numberOfRowsInTableView
3
tview
end

def tableView(tableView, objectValueForTableColumn:objVal, row:row)
'Hello'
private

def refresh_tracks
@upcoming_tracks = @jukebox.playlist.upcoming_tracks(current_track)[0...5]
end

end
def current_track
return @jukebox.track.file if @jukebox.last_change?(:track)
nil
end
end

0 comments on commit 725d2b0

Please sign in to comment.