diff --git a/apps/plugins/lib/playback_control.c b/apps/plugins/lib/playback_control.c index 7c28230..6ff7a63 100644 --- a/apps/plugins/lib/playback_control.c +++ b/apps/plugins/lib/playback_control.c @@ -116,3 +116,42 @@ bool playback_control(struct viewport parent[NB_SCREENS]) parentvp = parent; return rb->do_menu(&playback_control_menu, NULL, parent, false) == MENU_ATTACHED_USB; } + +enum pbc_or_quit_ret +playback_control_or_quit(struct viewport parent[NB_SCREENS]) +{ + MENUITEM_STRINGLIST(pbc_or_quit_menu, "Really quit?", NULL, + "Playback Control", + "Resume", + "Quit"); + + int selection = 2; + + while(1) + { + selection = rb->do_menu(&pbc_or_quit_menu, &selection, parent, false); + + switch (selection) + { + case 0: + /* if the usb was plugged in during playback_control, + * the plugin should quit */ + if (playback_control(parent)) + return PBC_OR_QUIT_USB_CONNECTED; + + break; + + case GO_TO_PREVIOUS: + case GO_TO_ROOT: + case 1: + default: + return PBC_OR_QUIT_RESUME; + + case 2: + return PBC_OR_QUIT_QUIT; + + case MENU_ATTACHED_USB: + return PBC_OR_QUIT_USB_CONNECTED; + } + } +} diff --git a/apps/plugins/lib/playback_control.h b/apps/plugins/lib/playback_control.h index 4371961..169d379 100644 --- a/apps/plugins/lib/playback_control.h +++ b/apps/plugins/lib/playback_control.h @@ -32,4 +32,17 @@ void playback_control_init(struct viewport parent[NB_SCREENS]); /* Use this if your menu still uses the old menu api */ bool playback_control(struct viewport parent[NB_SCREENS]); +enum pbc_or_quit_ret +{ + PBC_OR_QUIT_RESUME, + PBC_OR_QUIT_QUIT, + PBC_OR_QUIT_USB_CONNECTED +}; + +/* Use this in plugins to add an optional Playback Control menu + instead of directly quitting. +*/ +enum pbc_or_quit_ret +playback_control_or_quit(struct viewport parent[NB_SCREENS]); + #endif /* __PLAYBACK_CONTROL_H__ */