mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-04 14:15:41 +00:00
Fix streams
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user