summaryrefslogtreecommitdiff
path: root/bass_player.rb
diff options
context:
space:
mode:
Diffstat (limited to 'bass_player.rb')
-rw-r--r--bass_player.rb36
1 files changed, 28 insertions, 8 deletions
diff --git a/bass_player.rb b/bass_player.rb
index 6cb73c4..9d8b00c 100644
--- a/bass_player.rb
+++ b/bass_player.rb
@@ -10,7 +10,8 @@ module BassPlayer
property(:title) { '' }
property(:duration) { '' }
- property(:current_song) { 0 }
+ property(:current_song) { '' }
+ property(:current_segment) { '' }
property(:model) { QML::ArrayModel.new(:title, :duration) }
property(:part_model) {
QML::ArrayModel.new(:name, :from, :to)
@@ -48,14 +49,18 @@ module BassPlayer
end
end
- def song_selected(song)
- puts "Selected song: #{song}"
- unless song.nil?
- self.current_song = model[song][:title]
- puts "Setting current song to #{self.current_song}"
+ def song_selected(row)
+ unless row.nil?
+ self.current_song = model[row][:title]
end
+
+ # Clear current segment
+ self.current_segment = nil
+
+ # Update model
+ song = Song.first(title: self.current_song)
part_model.clear
- parts = Song.first(title: self.current_song).parts.map do |part|
+ parts = song.parts.map do |part|
{
name: part.name,
from: ms_to_time(part.from),
@@ -66,12 +71,21 @@ module BassPlayer
for part in parts
part_model << part
end
+ return {
+ path: song.path,
+ duration: song.duration
+ }
+ end
+
+ def segment_selected(row)
+ song = Song.first(title: self.current_song)
+ self.current_segment = song.parts[row.to_i].to_hash
end
def add_segment(name, from, to)
song = Song.first(title: current_song)
Part.create(
- name: name, from: from, to: to,
+ name: name, from: parse_time(from), to: parse_time(to),
song_id: song.id
)
song_selected(nil)
@@ -81,6 +95,12 @@ module BassPlayer
retval = Time.at(ms/1000).utc.strftime("%H:%M:%S")
return retval
end
+
+ def parse_time(string)
+ # Parses a string of the form '3:12' to milliseconds
+ min, sec = string.split(':').map(&:to_i)
+ return ((min * 60) + sec) * 1000
+ end
end
end