Jelajahi Sumber

Changed options to menu screen

9and3r 10 tahun lalu
induk
melakukan
211f4cf6a8

+ 6 - 17
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

+ 16 - 66
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:

+ 43 - 10
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)