From c0be9136a50b5684dabb1f7a07b5194694f0165d Mon Sep 17 00:00:00 2001 From: Rudis Muiznieks Date: Wed, 28 Dec 2022 11:26:30 -0600 Subject: [PATCH] ability to back out of music menus --- menu.py | 6 ++++++ plugin/music/__init__.py | 4 ++-- plugin/music/player.py | 6 ++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/menu.py b/menu.py index 931a03c..021e676 100644 --- a/menu.py +++ b/menu.py @@ -8,6 +8,7 @@ class MenuType(Enum): CMD = auto() EXIT_CMD = auto() PLUGIN = auto() + BACK = auto() @dataclass class MenuItem: @@ -16,6 +17,8 @@ class MenuItem: data: dict class Menu: + STR_BACK = "BACK" + def __init__( self, config: list[MenuItem], cinput: ControlInput, graphics: Graphics): self._top_index = 0 @@ -65,6 +68,9 @@ class Menu: elif pressed == Button.BTN_A or pressed == Button.DIR_L: if len(self._menu_path) > 0: self._selected_index = self._menu_path.pop() + else: + return MenuItem(self.STR_BACK, MenuType.BACK, {}) + self._cur_menu = self._menu for i in range(0, len(self._menu_path)): diff --git a/plugin/music/__init__.py b/plugin/music/__init__.py index c46ba43..7a12775 100644 --- a/plugin/music/__init__.py +++ b/plugin/music/__init__.py @@ -31,11 +31,11 @@ def create_directory_menu(directory: str, dirname: str, is_resume: bool): return MenuItem(dirname, MenuType.SUB_MENU, {"sub_menu": dir_menu}) else: if is_resume: - return MenuItem(dirname, MenuType.CMD, { + return MenuItem(dirname.lstrip("_"), MenuType.CMD, { "dir": directory, "mode": "resume"}) else: - return MenuItem(dirname, MenuType.SUB_MENU, { + return MenuItem(dirname.lstrip("_"), MenuType.SUB_MENU, { "sub_menu": [ MenuItem("Play", MenuType.CMD, { "dir": directory, diff --git a/plugin/music/player.py b/plugin/music/player.py index 23fc945..5523bf9 100644 --- a/plugin/music/player.py +++ b/plugin/music/player.py @@ -1,4 +1,4 @@ -from menu import Menu +from menu import Menu, MenuType from cinput import ControlInput from graphics import Graphics @@ -10,4 +10,6 @@ class MusicPlayer: def run(self): while True: - self._menu.get_selection() + item = self._menu.get_selection() + if item.menu_type == MenuType.BACK: + return