Fix streams

This commit is contained in:
9and3r
2015-07-11 00:21:06 +02:00
parent 643f1c4e8c
commit ca7f01091a
4 changed files with 70 additions and 45 deletions

View File

@@ -27,6 +27,12 @@ class ScreenObjectsManager:
def set_touch_object(self, key, add_object):
self.touch_objects[key] = add_object
def delete_touch_object(self, key):
try:
del self.touch_objects[key]
except KeyError:
pass
def get_touch_object(self, key):
return self.touch_objects[key]

View File

@@ -260,6 +260,10 @@ class ScreenManager():
self.init_manager(event.size)
self.update_type = BaseScreen.update_all
def stream_title_changed(self, title):
self.screens[main_screen_index].stream_title_changed(title)
self.update_type = BaseScreen.update_all
def open_keyboard(self, input_listener):
self.keyboard = Keyboard(self.size, self.base_size, self,
self.fonts, input_listener)

View File

@@ -66,15 +66,19 @@ class MainScreen(BaseScreen):
100, True)
self.touch_text_manager.set_touch_object("volume", progress)
progress.set_value(self.core.playback.volume.get())
self.progress_show = False
def should_update(self):
if len(self.update_keys) > 0:
return True
else:
track_pos_millis = self.core.playback.time_position.get()
new_track_pos = track_pos_millis / 1000
if new_track_pos != self.current_track_pos:
return True
if self.progress_show:
track_pos_millis = self.core.playback.time_position.get()
new_track_pos = track_pos_millis / 1000
if new_track_pos != self.current_track_pos:
return True
else:
return False
else:
return False
@@ -89,21 +93,21 @@ class MainScreen(BaseScreen):
elif update_type == BaseScreen.update_partial \
and self.track is not None:
track_pos_millis = self.core.playback.time_position.get()
new_track_pos = track_pos_millis / 1000
if self.progress_show:
track_pos_millis = self.core.playback.time_position.get()
new_track_pos = track_pos_millis / 1000
if new_track_pos != self.current_track_pos:
progress = self.touch_text_manager.get_touch_object(
"time_progress")
progress.set_value(track_pos_millis)
self.current_track_pos = new_track_pos
progress.set_text(
if new_track_pos != self.current_track_pos:
progress = self.touch_text_manager.get_touch_object(
"time_progress")
progress.set_value(track_pos_millis)
self.current_track_pos = new_track_pos
progress.set_text(
time.strftime('%M:%S', time.gmtime(
self.current_track_pos)) +
"/" + self.track_duration)
progress.render(screen)
rects.append(progress.rect_in_pos)
self.current_track_pos)) +
"/" + self.track_duration)
progress.render(screen)
rects.append(progress.rect_in_pos)
for key in self.update_keys:
object = self.touch_text_manager.get_object(key)
object.update()
@@ -116,8 +120,39 @@ class MainScreen(BaseScreen):
x = self.size[1] - self.base_size * 3
width = self.size[0] - self.base_size / 2 - x
self.track_duration = time.strftime('%M:%S', time.gmtime(
track.length / 1000))
# Previous track button
button = TouchAndTextItem(self.fonts['icon'], u"\ue61c",
(0, self.size[1] - self.base_size * 2), None)
self.touch_text_manager.set_touch_object("previous", button)
size_1 = button.get_right_pos()
size_2 = self.fonts['icon'].size(u"\ue61d")[0]
button = TouchAndTextItem(self.fonts['icon'], u"\ue61d",
(self.size[0] - size_2,
self.size[1] - self.base_size * 2),
None)
self.touch_text_manager.set_touch_object("next", button)
if track.length:
self.track_duration = time.strftime('%M:%S', time.gmtime(
track.length / 1000))
# Progress
progress = Progressbar(self.fonts['base'],
time.strftime('%M:%S', time.gmtime(
0)) + "/" + time.strftime(
'%M:%S', time.gmtime(0)),
(size_1, self.size[1] - self.base_size * 2),
(
self.size[0] - size_1 - size_2,
self.base_size),
track.length, False)
self.touch_text_manager.set_touch_object("time_progress",
progress)
self.progress_show = True
else:
self.progress_show = False
self.touch_text_manager.delete_touch_object("time_progress")
# Load all artists
self.artists = []
@@ -155,32 +190,6 @@ class MainScreen(BaseScreen):
self.update_keys.append("artist_name")
self.touch_text_manager.set_object("artist_name", label)
# Previous track button
button = TouchAndTextItem(self.fonts['icon'], u"\ue61c",
(0, self.size[1] - self.base_size * 2), None)
self.touch_text_manager.set_touch_object("previous", button)
size_1 = button.get_right_pos()
size_2 = self.fonts['icon'].size(u"\ue61d")[0]
button = TouchAndTextItem(self.fonts['icon'], u"\ue61d",
(self.size[0] - size_2,
self.size[1] - self.base_size * 2),
None)
self.touch_text_manager.set_touch_object("next", button)
# Progress
progress = Progressbar(self.fonts['base'],
time.strftime('%M:%S', time.gmtime(
0)) + "/" + time.strftime(
'%M:%S', time.gmtime(0)),
(size_1, self.size[1] - self.base_size * 2),
(
self.size[0] - size_1 - size_2,
self.base_size),
track.length, False)
self.touch_text_manager.set_touch_object("time_progress",
progress)
self.track = track
if not self.is_image_in_cache():
thread = Thread(target=self.download_image)
@@ -189,6 +198,9 @@ class MainScreen(BaseScreen):
thread = Thread(target=self.load_image)
thread.start()
def stream_title_changed(self, title):
self.touch_text_manager.get_object("track_name").set_text(title, False)
def get_artist_string(self):
artists_string = ''
for artist in self.artists:

View File

@@ -132,3 +132,6 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
def playlists_loaded(self):
self.screen_manager.playlists_loaded()
def stream_title_changed(self, title):
self.screen_manager.stream_title_changed(title)