diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py index 1968fd1..b478a02 100644 --- a/mopidy_touchscreen/screen_manager.py +++ b/mopidy_touchscreen/screen_manager.py @@ -26,11 +26,16 @@ menu_index = 5 class ScreenManager(): def __init__(self, size, core, cache): - self.size = size self.core = core + self.cache = cache self.fonts = {} self.background = DynamicBackground() - self.current_screen = 0 + self.current_screen = library_index + self.init_manager(size) + + + def init_manager(self, size): + self.size = size self.base_size = self.size[1] / 8 font = resource_filename( Requirement.parse("mopidy-touchscreen"), @@ -41,7 +46,7 @@ class ScreenManager(): try: self.screens = [ SearchScreen(size, self.base_size, self, self.fonts), - MainScreen(size, self.base_size, self, self.fonts, cache, core, self.background), + MainScreen(size, self.base_size, self, self.fonts, self.cache, self.core, self.background), Tracklist(size, self.base_size, self, self.fonts), LibraryScreen(size, self.base_size, self, self.fonts), PlaylistScreen(size, self.base_size, self, self.fonts), @@ -109,7 +114,7 @@ class ScreenManager(): self.playback_state_changed(self.core.playback.state.get(), self.core.playback.state.get()) self.screens[menu_index].check_connection() - self.change_screen(library_index) + self.change_screen(self.current_screen) def update(self): surface = pygame.Surface(self.size) @@ -184,3 +189,6 @@ class ScreenManager(): def search(self, query, mode): self.screens[search_index].search(query, mode) + + def resize(self, event): + self.init_manager(event.size) diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index 581baf0..5b7a92b 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/mopidy_touchscreen/touch_screen.py @@ -32,11 +32,7 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): os.environ["SDL_PATH_DSP"] = config['touchscreen']['sdl_path_dsp'] pygame.init() pygame.display.set_caption("Mopidy-Touchscreen") - if self.fullscreen: - self.screen = pygame.display.set_mode(self.screen_size, - pygame.FULLSCREEN) - else: - self.screen = pygame.display.set_mode(self.screen_size) + self.get_display_surface(self.screen_size) pygame.mouse.set_visible(self.cursor) self.screen_manager = ScreenManager(self.screen_size, self.core, @@ -56,6 +52,13 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): pins['enter'] = config['touchscreen']['gpio_enter'] self.gpio_manager = GPIOManager(pins) + def get_display_surface(self, size): + if self.fullscreen: + self.screen = pygame.display.set_mode(size, + pygame.FULLSCREEN) + else: + self.screen = pygame.display.set_mode(size, pygame.RESIZABLE) + def start_thread(self): clock = pygame.time.Clock() while self.running: @@ -67,6 +70,9 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): self.running = False elif event.type == pygame.KEYUP and event.key == pygame.K_q: self.running = False + elif event.type == pygame.VIDEORESIZE: + self.get_display_surface(event.size) + self.screen_manager.resize(event) else: self.screen_manager.event(event) pygame.quit()