mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-04 22:25:39 +00:00
Fix streams
This commit is contained in:
@@ -27,6 +27,12 @@ class ScreenObjectsManager:
|
|||||||
def set_touch_object(self, key, add_object):
|
def set_touch_object(self, key, add_object):
|
||||||
self.touch_objects[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):
|
def get_touch_object(self, key):
|
||||||
return self.touch_objects[key]
|
return self.touch_objects[key]
|
||||||
|
|
||||||
|
|||||||
@@ -260,6 +260,10 @@ class ScreenManager():
|
|||||||
self.init_manager(event.size)
|
self.init_manager(event.size)
|
||||||
self.update_type = BaseScreen.update_all
|
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):
|
def open_keyboard(self, input_listener):
|
||||||
self.keyboard = Keyboard(self.size, self.base_size, self,
|
self.keyboard = Keyboard(self.size, self.base_size, self,
|
||||||
self.fonts, input_listener)
|
self.fonts, input_listener)
|
||||||
|
|||||||
@@ -66,15 +66,19 @@ class MainScreen(BaseScreen):
|
|||||||
100, True)
|
100, True)
|
||||||
self.touch_text_manager.set_touch_object("volume", progress)
|
self.touch_text_manager.set_touch_object("volume", progress)
|
||||||
progress.set_value(self.core.playback.volume.get())
|
progress.set_value(self.core.playback.volume.get())
|
||||||
|
self.progress_show = False
|
||||||
|
|
||||||
def should_update(self):
|
def should_update(self):
|
||||||
if len(self.update_keys) > 0:
|
if len(self.update_keys) > 0:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
track_pos_millis = self.core.playback.time_position.get()
|
if self.progress_show:
|
||||||
new_track_pos = track_pos_millis / 1000
|
track_pos_millis = self.core.playback.time_position.get()
|
||||||
if new_track_pos != self.current_track_pos:
|
new_track_pos = track_pos_millis / 1000
|
||||||
return True
|
if new_track_pos != self.current_track_pos:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -89,21 +93,21 @@ class MainScreen(BaseScreen):
|
|||||||
|
|
||||||
elif update_type == BaseScreen.update_partial \
|
elif update_type == BaseScreen.update_partial \
|
||||||
and self.track is not None:
|
and self.track is not None:
|
||||||
track_pos_millis = self.core.playback.time_position.get()
|
if self.progress_show:
|
||||||
new_track_pos = track_pos_millis / 1000
|
track_pos_millis = self.core.playback.time_position.get()
|
||||||
|
new_track_pos = track_pos_millis / 1000
|
||||||
|
|
||||||
if new_track_pos != self.current_track_pos:
|
if new_track_pos != self.current_track_pos:
|
||||||
progress = self.touch_text_manager.get_touch_object(
|
progress = self.touch_text_manager.get_touch_object(
|
||||||
"time_progress")
|
"time_progress")
|
||||||
progress.set_value(track_pos_millis)
|
progress.set_value(track_pos_millis)
|
||||||
self.current_track_pos = new_track_pos
|
self.current_track_pos = new_track_pos
|
||||||
progress.set_text(
|
progress.set_text(
|
||||||
time.strftime('%M:%S', time.gmtime(
|
time.strftime('%M:%S', time.gmtime(
|
||||||
self.current_track_pos)) +
|
self.current_track_pos)) +
|
||||||
"/" + self.track_duration)
|
"/" + self.track_duration)
|
||||||
progress.render(screen)
|
progress.render(screen)
|
||||||
rects.append(progress.rect_in_pos)
|
rects.append(progress.rect_in_pos)
|
||||||
|
|
||||||
for key in self.update_keys:
|
for key in self.update_keys:
|
||||||
object = self.touch_text_manager.get_object(key)
|
object = self.touch_text_manager.get_object(key)
|
||||||
object.update()
|
object.update()
|
||||||
@@ -116,8 +120,39 @@ class MainScreen(BaseScreen):
|
|||||||
x = self.size[1] - self.base_size * 3
|
x = self.size[1] - self.base_size * 3
|
||||||
width = self.size[0] - self.base_size / 2 - x
|
width = self.size[0] - self.base_size / 2 - x
|
||||||
|
|
||||||
self.track_duration = time.strftime('%M:%S', time.gmtime(
|
# Previous track button
|
||||||
track.length / 1000))
|
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
|
# Load all artists
|
||||||
self.artists = []
|
self.artists = []
|
||||||
@@ -155,32 +190,6 @@ class MainScreen(BaseScreen):
|
|||||||
self.update_keys.append("artist_name")
|
self.update_keys.append("artist_name")
|
||||||
self.touch_text_manager.set_object("artist_name", label)
|
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
|
self.track = track
|
||||||
if not self.is_image_in_cache():
|
if not self.is_image_in_cache():
|
||||||
thread = Thread(target=self.download_image)
|
thread = Thread(target=self.download_image)
|
||||||
@@ -189,6 +198,9 @@ class MainScreen(BaseScreen):
|
|||||||
thread = Thread(target=self.load_image)
|
thread = Thread(target=self.load_image)
|
||||||
thread.start()
|
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):
|
def get_artist_string(self):
|
||||||
artists_string = ''
|
artists_string = ''
|
||||||
for artist in self.artists:
|
for artist in self.artists:
|
||||||
|
|||||||
@@ -132,3 +132,6 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
|
|||||||
|
|
||||||
def playlists_loaded(self):
|
def playlists_loaded(self):
|
||||||
self.screen_manager.playlists_loaded()
|
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