瀏覽代碼

Input events fixes

Ander 11 年之前
父節點
當前提交
6233ee3f14
共有 2 個文件被更改,包括 17 次插入28 次删除
  1. 11 22
      mopidy_touchscreen/screen_manager.py
  2. 6 6
      mopidy_touchscreen/touch_screen.py

+ 11 - 22
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()

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