From 6233ee3f145f72bab0c65b6f4a0bf65c30fce352 Mon Sep 17 00:00:00 2001 From: Ander <9and3r@gmail.com> Date: Sat, 20 Dec 2014 15:13:15 +0100 Subject: [PATCH] Input events fixes --- mopidy_touchscreen/screen_manager.py | 33 ++++++++++------------------ mopidy_touchscreen/touch_screen.py | 12 +++++----- 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py index b2cf8ec..8218507 100644 --- a/mopidy_touchscreen/screen_manager.py +++ b/mopidy_touchscreen/screen_manager.py @@ -51,9 +51,7 @@ class ScreenManager(): traceback.print_exc() self.track = None self.input_manager = InputManager(size) - self.top_bar_objects = ScreenObjectsManager() self.down_bar_objects = ScreenObjectsManager() - self.selected_zone = self.top_bar_objects self.dirty_area = [] self.screen_changed = True @@ -115,14 +113,12 @@ class ScreenManager(): self.screens[menu_index].check_connection() self.change_screen(library_index) - def update(self): surface = pygame.Surface(self.size) surface.fill([200, 200, 200]) self.screens[self.current_screen].update(surface, self.screen_changed) surface.blit(self.down_bar, (0, self.base_size * 7)) - self.top_bar_objects.render(surface) self.down_bar_objects.render(surface) self.screen_changed = False return surface @@ -138,24 +134,15 @@ class ScreenManager(): def event(self, event): event = self.input_manager.event(event) if event is not None: - if event.type == InputManager.click: - objects = self.top_bar_objects.get_touch_objects_in_pos( - event.current_pos) - objects.extend( - self.down_bar_objects.get_touch_objects_in_pos( - event.current_pos)) - self.click_on_objects(objects, event) - elif event.type == InputManager.key and event.direction == InputManager.enter: - objects = [self.selected_zone.selected_key] - self.click_on_objects(objects, event) - elif event.type == InputManager.key: - if event.direction == InputManager.enter: - logger.error(self.selected_zone.selected_key) - self.click_on_objects( - [self.selected_zone.selected_key], event) - else: - self.change_selection(event, None) - self.screens[self.current_screen].touch_event(event) + if not self.manage_event(event): + self.screens[self.current_screen].touch_event(event) + + def manage_event(self, event): + if event.type == InputManager.click: + objects = self.down_bar_objects.get_touch_objects_in_pos(event.current_pos) + return self.click_on_objects(objects, event) + else: + return False def volume_changed(self, volume): self.screens[main_screen_index].volume_changed(volume) @@ -187,6 +174,8 @@ class ScreenManager(): for key in objects: if key[:-1] == "menu_": self.change_screen(int(key[-1:])) + return True + return False def playlists_loaded(self): self.screens[playlist_index].playlists_loaded() diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index 4424d33..b88d1f7 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/mopidy_touchscreen/touch_screen.py @@ -18,10 +18,10 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): super(TouchScreen, self).__init__() self.core = core self.running = False - self.cursor = config['touchscreen']['cursor'] - self.cache_dir = config['touchscreen']['cache_dir'] + self.cursor = config['touchscreen']['cursor'] + self.cache_dir = config['touchscreen']['cache_dir'] self.fullscreen = config['touchscreen']['fullscreen'] - self.screen_size = (config['touchscreen']['screen_width'], + self.screen_size = (config['touchscreen']['screen_width'], config['touchscreen']['screen_height']) os.environ["SDL_FBDEV"] = config['touchscreen']['sdl_fbdev'] os.environ["SDL_MOUSEDRV"] = config['touchscreen'][ @@ -29,13 +29,13 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): os.environ["SDL_MOUSEDEV"] = config['touchscreen'][ 'sdl_mousedev'] pygame.init() - if self.fullscreen: + if self.fullscreen: self.screen = pygame.display.set_mode(self.screen_size, pygame.FULLSCREEN) else: self.screen = pygame.display.set_mode(self.screen_size) - pygame.mouse.set_visible(self.cursor) - self.screen_manager = ScreenManager(self.screen_size, + pygame.mouse.set_visible(self.cursor) + self.screen_manager = ScreenManager(self.screen_size, self.core, self.cache_dir)