From 211f4cf6a8f00d22a04a4fa5d7378e6b8ac5e3d0 Mon Sep 17 00:00:00 2001 From: 9and3r <9and3r@gmail.com> Date: Sun, 24 May 2015 15:45:17 +0200 Subject: [PATCH] Changed options to menu screen --- mopidy_touchscreen/screen_manager.py | 23 ++----- mopidy_touchscreen/screens/main_screen.py | 82 +++++------------------ mopidy_touchscreen/screens/menu_screen.py | 53 ++++++++++++--- 3 files changed, 65 insertions(+), 93 deletions(-) diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py index ad6e99b..c812739 100644 --- a/mopidy_touchscreen/screen_manager.py +++ b/mopidy_touchscreen/screen_manager.py @@ -67,7 +67,7 @@ class ScreenManager(): LibraryScreen(size, self.base_size, self, self.fonts), PlaylistScreen(size, self.base_size, self, self.fonts), - MenuScreen(size, self.base_size, self, self.fonts)] + MenuScreen(size, self.base_size, self, self.fonts, self.core)] except: traceback.print_exc() self.track = None @@ -119,10 +119,6 @@ class ScreenManager(): center=True) self.down_bar_objects.set_touch_object("menu_5", button) - # Down bar Solid - self.down_bar_solid = pygame.Surface( - (self.size[0], self.size[1] - self.base_size)) - # Down bar self.down_bar = pygame.Surface( (self.size[0], self.size[1] - self.base_size), @@ -131,9 +127,11 @@ class ScreenManager(): self.options_changed() self.mute_changed(self.core.playback.mute.get()) - self.playback_state_changed(self.core.playback.state.get(), - self.core.playback.state.get()) + playback_state = self.core.playback.state.get() + self.playback_state_changed(playback_state, + playback_state) self.screens[menu_index].check_connection() + self.change_screen(self.current_screen) self.update_type = BaseScreen.update_all @@ -230,7 +228,7 @@ class ScreenManager(): self.update_type = BaseScreen.update_all def options_changed(self): - self.screens[main_screen_index].options_changed() + self.screens[menu_index].options_changed() self.update_type = BaseScreen.update_all def change_screen(self, new_screen): @@ -254,15 +252,6 @@ class ScreenManager(): self.screens[playlist_index].playlists_loaded() self.update_type = BaseScreen.update_all - def set_connection(self, connection, loading): - self.screens[main_screen_index].set_connection(connection, - loading) - self.update_type = BaseScreen.update_all - - def check_connection(self): - self.screens[menu_index].check_connection() - self.update_type = BaseScreen.update_all - def search(self, query, mode): self.screens[search_index].search(query, mode) self.update_type = BaseScreen.update_all diff --git a/mopidy_touchscreen/screens/main_screen.py b/mopidy_touchscreen/screens/main_screen.py index 1e89f71..f5735f5 100644 --- a/mopidy_touchscreen/screens/main_screen.py +++ b/mopidy_touchscreen/screens/main_screen.py @@ -54,30 +54,6 @@ class MainScreen(BaseScreen): self.touch_text_manager.set_touch_object("pause_play", button) x = button.get_right_pos() - # Random - button = TouchAndTextItem(self.fonts['icon'], u"\ue629 ", - (x, 0), None) - self.touch_text_manager.set_touch_object("random", button) - x = button.get_right_pos() - - # Repeat - button = TouchAndTextItem(self.fonts['icon'], u"\ue626", - (x, 0), None) - self.touch_text_manager.set_touch_object("repeat", button) - x = button.get_right_pos() - - # Single - button = TouchAndTextItem(self.fonts['base'], " 1 ", (x, 0), - None) - self.touch_text_manager.set_touch_object("single", button) - x = button.get_right_pos() - - # Internet - button = TouchAndTextItem(self.fonts['icon'], u"\ue602 ", - (x, 0), None) - self.touch_text_manager.set_touch_object("internet", button) - x = button.get_right_pos() - # Mute button = TouchAndTextItem(self.fonts['icon'], u"\ue61f ", (x, 0), None) @@ -151,7 +127,9 @@ class MainScreen(BaseScreen): # Track name label = TextItem(self.fonts['base'], MainScreen.get_track_name(track), - (x, (self.size[1]-self.base_size*3)/2 - self.base_size*0.5), (width, -1)) + (x, (self.size[1]-self.base_size*3)/2 + - self.base_size*0.5), + (width, -1)) if not label.fit_horizontal: self.update_keys.append("track_name") self.touch_text_manager.set_object("track_name", label) @@ -159,7 +137,9 @@ class MainScreen(BaseScreen): # Album name label = TextItem(self.fonts['base'], MainScreen.get_track_album_name - (track), (x, (self.size[1]-self.base_size*3)/2 + self.base_size*0.5), + (track), + (x, (self.size[1]-self.base_size*3)/2 + + self.base_size*0.5), (width, -1)) if not label.fit_horizontal: self.update_keys.append("album_name") @@ -168,7 +148,8 @@ class MainScreen(BaseScreen): # Artist label = TextItem(self.fonts['base'], self.get_artist_string(), - (x, (self.size[1]-self.base_size*3)/2 + self.base_size*1.5), + (x, (self.size[1]-self.base_size*3)/2 + + self.base_size*1.5), (width, -1)) if not label.fit_horizontal: self.update_keys.append("artist_name") @@ -392,18 +373,6 @@ class MainScreen(BaseScreen): mute = not self.core.playback.mute.get() self.core.playback.set_mute(mute) self.mute_changed(mute) - elif key == "random": - random = not self.core.tracklist.random.get() - self.core.tracklist.set_random(random) - self.options_changed() - elif key == "repeat": - self.core.tracklist.set_repeat( - not self.core.tracklist.repeat.get()) - elif key == "single": - self.core.tracklist.set_single( - not self.core.tracklist.single.get()) - elif key == "internet": - self.manager.check_connection() def change_volume(self, event): manager = self.touch_text_manager @@ -411,7 +380,14 @@ class MainScreen(BaseScreen): pos = event.current_pos value = volume.get_pos_value(pos) self.core.playback.volume = value - self.volume_changed(value) + + def playback_state_changed(self, old_state, new_state): + if new_state == mopidy.core.PlaybackState.PLAYING: + self.touch_text_manager.get_touch_object( + "pause_play").set_text(u"\ue616", False) + else: + self.touch_text_manager.get_touch_object( + "pause_play").set_text(u"\ue615", False) def volume_changed(self, volume): if not self.core.playback.mute.get(): @@ -434,14 +410,6 @@ class MainScreen(BaseScreen): self.touch_text_manager.get_touch_object("volume").set_value( volume) - def options_changed(self): - self.touch_text_manager.get_touch_object("random").set_active( - self.core.tracklist.random.get()) - self.touch_text_manager.get_touch_object("repeat").set_active( - self.core.tracklist.repeat.get()) - self.touch_text_manager.get_touch_object("single").set_active( - self.core.tracklist.single.get()) - def mute_changed(self, mute): self.touch_text_manager.get_touch_object("mute").set_active( not mute) @@ -451,24 +419,6 @@ class MainScreen(BaseScreen): else: self.volume_changed(self.core.playback.volume.get()) - def playback_state_changed(self, old_state, new_state): - if new_state == mopidy.core.PlaybackState.PLAYING: - self.touch_text_manager.get_touch_object( - "pause_play").set_text(u"\ue616", False) - else: - self.touch_text_manager.get_touch_object( - "pause_play").set_text(u"\ue615", False) - - def set_connection(self, connection, loading): - internet = self.touch_text_manager.get_touch_object( - "internet") - if loading: - internet.set_text(u"\ue627", None) - internet.set_active(False) - else: - internet.set_text(u"\ue602", None) - internet.set_active(connection) - @staticmethod def get_track_name(track): if track.name is None: diff --git a/mopidy_touchscreen/screens/menu_screen.py b/mopidy_touchscreen/screens/menu_screen.py index 8b87f81..49b70af 100644 --- a/mopidy_touchscreen/screens/menu_screen.py +++ b/mopidy_touchscreen/screens/menu_screen.py @@ -7,12 +7,14 @@ from ..graphic_utils import ListView class MenuScreen(BaseScreen): - def __init__(self, size, base_size, manager, fonts): + def __init__(self, size, base_size, manager, fonts, core): BaseScreen.__init__(self, size, base_size, manager, fonts) self.ip = None + self.core = core self.list = ListView((0, 0), size, base_size, fonts['base']) - self.list_items = ["Exit Mopidy", "Shutdown", "Restart", "IP: "] + self.list_items = ["Random", "Repeat", "Single", "Consume", + "Exit Mopidy", "Shutdown", "Restart", "IP: "] self.list.set_list(self.list_items) @@ -27,30 +29,61 @@ class MenuScreen(BaseScreen): clicked = self.list.touch_event(event) if clicked is not None: if clicked == 0: - os.system("pkill mopidy") + random = not self.core.tracklist.random.get() + self.core.tracklist.set_random(random) elif clicked == 1: + repeat = not self.core.tracklist.repeat.get() + self.core.tracklist.set_repeat(repeat) + elif clicked == 2: + single = not self.core.tracklist.single.get() + self.core.tracklist.set_single(single) + elif clicked == 3: + consume = not self.core.tracklist.consume.get() + self.core.tracklist.set_consume(consume) + elif clicked == 4: + os.system("pkill mopidy") + elif clicked == 5: if os.system("gksu -- shutdown now -h") != 0: os.system("sudo shutdown now -h") - elif clicked == 2: + elif clicked == 6: if os.system("gksu -- shutdown -r now") != 0: os.system("sudo shutdown -r now") - elif clicked == 3: + elif clicked == 7: self.check_connection() # Will check internet connection def check_connection(self): try: - self.manager.set_connection(False, True) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) self.ip = s.getsockname()[0] s.close() - self.list_items[3] = "IP: " + self.ip + self.list_items[7] = "IP: " + self.ip self.list.set_list(self.list_items) - self.manager.set_connection(True, False) except socket.error: s.close() self.ip = None - self.list_items[3] = "IP: No internet" + self.list_items[7] = "IP: No internet" self.list.set_list(self.list_items) - self.manager.set_connection(False, False) + + def options_changed(self): + active = [] + if self.core.tracklist.random.get(): + active.append(0) + if self.core.tracklist.repeat.get(): + active.append(1) + if self.core.tracklist.single.get(): + active.append(2) + if self.core.tracklist.consume.get(): + active.append(3) + self.list.set_active(active) + + def set_connection(self, connection, loading): + internet = self.touch_text_manager.get_touch_object( + "internet") + if loading: + internet.set_text(u"\ue627", None) + internet.set_active(False) + else: + internet.set_text(u"\ue602", None) + internet.set_active(connection)