diff --git a/mopidy_touchscreen/.idea/workspace.xml b/mopidy_touchscreen/.idea/workspace.xml index d9b37c8..354681e 100644 --- a/mopidy_touchscreen/.idea/workspace.xml +++ b/mopidy_touchscreen/.idea/workspace.xml @@ -26,8 +26,8 @@ - - + + @@ -36,18 +36,28 @@ - + - + + + + + + + + + + + - - + + @@ -63,16 +73,6 @@ - - - - - - - - - - @@ -89,11 +89,11 @@ @@ -676,13 +676,6 @@ - - - - - - - @@ -704,10 +697,10 @@ - + - - + + @@ -720,6 +713,14 @@ + + + + + + + + @@ -728,18 +729,18 @@ - + - - + + - + - - + + diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py index b586bd1..1737c0d 100644 --- a/mopidy_touchscreen/screen_manager.py +++ b/mopidy_touchscreen/screen_manager.py @@ -36,12 +36,12 @@ class ScreenManager(): self.top_bar.fill((0, 0, 0, 128)) #Play/pause - button = TouchAndTextItem(self.fonts['dejavusans']," ll",(0, 0), None) + button = TouchAndTextItem(self.fonts['dejavusans']," ll", (0, 0), None) self.screen_objects_manager.set_touch_object("pause_play", button) x = button.get_right_pos() #Random - button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u2928",(x,0),None) + button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u2928", (x, 0), None) self.screen_objects_manager.set_touch_object("random",button) x = button.get_right_pos() @@ -76,6 +76,8 @@ class ScreenManager(): self.down_bar = pygame.Surface((self.size[0], self.base_size),pygame.SRCALPHA) self.down_bar.fill((0, 0, 0, 128)) + self.options_changed() + def update(self): surface = pygame.Surface(self.size) self.background.draw_background(surface) @@ -110,11 +112,13 @@ class ScreenManager(): elif key == "mute": mute = not self.core.playback.mute.get() self.core.playback.set_mute(mute) - #self.backend.tell({'action':'mute','value':mute}) + self.mute_changed(mute) elif key == "random": - logger.error(self.core.tracklist.random) - self.core.tracklist.random = not self.core.tracklist.random - #self.backend.tell({'action':'random','value':random}) + random = not self.core.tracklist.random.get() + self.core.tracklist.set_random(random) + self.options_changed() + elif key == "repeat": + self.change_repeat_single() elif key == "menu_main": self.current_screen = 0 elif key == "menu_tracklist": @@ -126,12 +130,44 @@ class ScreenManager(): def playback_state_changed(self, old_state, new_state): if new_state == mopidy.core.PlaybackState.PLAYING: - self.screen_objects_manager.get_touch_object("pause_play").set_text(" ll",False) + self.screen_objects_manager.get_touch_object("pause_play").set_text(" ll", True) else: self.screen_objects_manager.get_touch_object("pause_play").set_text(u" \u25B8",True) def mute_changed(self, mute): - self.touch_text_manager.get_touch_object("mute").set_active(mute) + self.screen_objects_manager.get_touch_object("mute").set_active(mute) def tracklist_changed(self): - self.screens[1].tracklist_changed() \ No newline at end of file + self.screens[1].tracklist_changed() + + def options_changed(self): + self.screen_objects_manager.get_touch_object("random").set_active(self.core.tracklist.random.get()) + repeat = self.core.tracklist.repeat.get() + single = self.core.tracklist.single.get() + repeat_button = self.screen_objects_manager.get_touch_object("repeat") + repeat_button.set_active(repeat) + if single: + repeat_button.set_text(u"\u27F21", True) + else: + repeat_button.set_text(u"\u27F2", True) + + def change_repeat_single(self): + repeat = self.core.tracklist.repeat.get() + single = self.core.tracklist.single.get() + if single: + if repeat: + repeat = False + single = False + else: + repeat = True + single = False + else: + if repeat: + repeat = True + single = True + else: + repeat = False + single = True + self.core.tracklist.set_repeat(repeat) + self.core.tracklist.set_single(single) + self.options_changed() diff --git a/mopidy_touchscreen/screen_objects.py b/mopidy_touchscreen/screen_objects.py index f4869d6..18d8b2c 100644 --- a/mopidy_touchscreen/screen_objects.py +++ b/mopidy_touchscreen/screen_objects.py @@ -110,13 +110,13 @@ class TextItem(BaseItem): def render(self, surface): if self.fit_horizontal: - self.box + pass else: self.box = self.font.render(self.text, True, self.color) surface.blit(self.box, self.pos, area=self.rect) - def set_text(self, text, same_size): - if same_size: + def set_text(self, text, change_size): + if change_size: TextItem.__init__(self, self.font, text, self.pos, None) else: TextItem.__init__(self, self.font, text, self.pos, self.size) @@ -140,10 +140,24 @@ class TouchAndTextItem(TouchObject, TextItem): def __init__(self, font, text, pos, size): TextItem.__init__(self, font, text, pos, size) TouchObject.__init__(self, pos, self.size) + self.active_color = (255, 0, 255) + self.active_box = self.font.render(text, True, self.active_color) def update(self): TextItem.update(self) + def render(self, surface): + if self.fit_horizontal: + pass + else: + if self.active: + self.active_box = self.font.render(self.text, True, self.active_color) + else: + self.box = self.font.render(self.text, True, self.color) + if self.active: + surface.blit(self.active_box, self.pos, area=self.rect) + else: + surface.blit(self.box, self.pos, area=self.rect) class Progressbar(TouchObject): diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index d1fe6cd..4c11c34 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/mopidy_touchscreen/touch_screen.py @@ -72,3 +72,9 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): self.screen_manager.tracklist_changed() except: traceback.print_exc() + + def options_changed(self): + try: + self.screen_manager.options_changed() + except: + traceback.print_exc()