diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py index 337d728..e1932fc 100644 --- a/mopidy_touchscreen/screen_manager.py +++ b/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 diff --git a/mopidy_touchscreen/screens/base_screen.py b/mopidy_touchscreen/screens/base_screen.py index 483e39f..58149a1 100644 --- a/mopidy_touchscreen/screens/base_screen.py +++ b/mopidy_touchscreen/screens/base_screen.py @@ -11,3 +11,6 @@ class BaseScreen(): def event(self, event): pass + + def change_screen(self, direction): + return False diff --git a/mopidy_touchscreen/screens/search_screen.py b/mopidy_touchscreen/screens/search_screen.py index 286437f..9015d18 100644 --- a/mopidy_touchscreen/screens/search_screen.py +++ b/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