Преглед на файлове

Search screen tabs change with keyboard

Ander преди 10 години
родител
ревизия
474831a4ff
променени са 3 файла, в които са добавени 23 реда и са изтрити 7 реда
  1. 8 5
      mopidy_touchscreen/screen_manager.py
  2. 3 0
      mopidy_touchscreen/screens/base_screen.py
  3. 12 2
      mopidy_touchscreen/screens/search_screen.py

+ 8 - 5
mopidy_touchscreen/screen_manager.py

@@ -160,11 +160,14 @@ class ScreenManager():
             return self.click_on_objects(objects, event)
         else:
             if event.type == InputManager.key:
-                if event.direction == InputManager.right:
-                    self.change_screen(self.current_screen+1)
-                    return True
-                elif event.direction == InputManager.left:
-                    self.change_screen(self.current_screen-1)
+                dir = event.direction
+                if dir == InputManager.right or dir == InputManager.left:
+                    if not self.screens[self.current_screen]\
+                            .change_screen(dir):
+                        if dir == InputManager.right:
+                            self.change_screen(self.current_screen+1)
+                        else:
+                            self.change_screen(self.current_screen-1)
                     return True
             return False
 

+ 3 - 0
mopidy_touchscreen/screens/base_screen.py

@@ -11,3 +11,6 @@ class BaseScreen():
 
     def event(self, event):
         pass
+
+    def change_screen(self, direction):
+        return False

+ 12 - 2
mopidy_touchscreen/screens/search_screen.py

@@ -59,8 +59,7 @@ class SearchScreen(BaseScreen):
             (self.size[0], self.base_size * 2),
             pygame.SRCALPHA)
         self.top_bar.fill((0, 0, 0, 128))
-
-        self.mode = -100
+        self.mode = -1
         self.set_mode(mode=mode_track_name)
         self.set_query("")
 
@@ -133,3 +132,14 @@ class SearchScreen(BaseScreen):
                         self.search(mode=2)
         else:
             self.list_view.touch_event(touch_event)
+
+    def change_screen(self, direction):
+        if direction == InputManager.right:
+            if self.mode < 2:
+                self.set_mode(self.mode+1)
+                return True
+        elif direction == InputManager.left:
+            if self.mode > 0:
+                self.set_mode(self.mode-1)
+                return True
+        return False