summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-12-06 12:02:49 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-12-06 12:02:49 +0000
commit565191ad502d1505d388d138b4d0e5df4a5e2500 (patch)
tree0f8c1bdfb45dbb24343a216ca6e2d73c5bc022c0
parenta55982d130c45ebb1b227296943b4173b61ce17d (diff)
downloadrockbox-565191ad502d1505d388d138b4d0e5df4a5e2500.tar.gz
rockbox-565191ad502d1505d388d138b4d0e5df4a5e2500.zip
Add a shortcut type 'shutdown' which will turn off the player
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31157 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/shortcuts.c18
-rw-r--r--apps/shortcuts.h1
-rw-r--r--manual/main_menu/main.tex3
3 files changed, 22 insertions, 0 deletions
diff --git a/apps/shortcuts.c b/apps/shortcuts.c
index 554184948c..e9fa71eeef 100644
--- a/apps/shortcuts.c
+++ b/apps/shortcuts.c
@@ -51,6 +51,7 @@ static const char * const type_strings[SHORTCUT_TYPE_COUNT] = {
[SHORTCUT_BROWSER] = "browse",
[SHORTCUT_PLAYLISTMENU] = "playlist menu",
[SHORTCUT_SEPARATOR] = "separator",
+ [SHORTCUT_SHUTDOWN] = "shutdown",
};
struct shortcut {
@@ -138,6 +139,7 @@ static bool verify_shortcut(struct shortcut* sc)
return sc->u.setting != NULL;
case SHORTCUT_DEBUGITEM:
case SHORTCUT_SEPARATOR:
+ case SHORTCUT_SHUTDOWN:
default:
break;
}
@@ -258,6 +260,7 @@ int readline_cb(int n, char *buf, void *parameters)
sc->u.setting = find_setting_by_cfgname(value, NULL);
break;
case SHORTCUT_SEPARATOR:
+ case SHORTCUT_SHUTDOWN:
break;
}
}
@@ -310,6 +313,11 @@ static const char * shortcut_menu_get_name(int selected_item, void * data,
return sc->name[0] ? sc->name : P2STR(ID2P(sc->u.setting->lang_id));
else if (sc->type == SHORTCUT_SEPARATOR)
return sc->name;
+ else if (sc->type == SHORTCUT_SHUTDOWN && sc->name[0] == '\0')
+ {
+ /* No translation support as only soft_shutdown has LANG_SHUTDOWN defined */
+ return type_strings[SHORTCUT_SHUTDOWN];
+ }
return sc->name[0] ? sc->name : sc->u.path;
}
@@ -341,6 +349,8 @@ static enum themable_icons shortcut_menu_get_icon(int selected_item, void * data
return Icon_Menu_functioncall;
case SHORTCUT_PLAYLISTMENU:
return Icon_Playlist;
+ case SHORTCUT_SHUTDOWN:
+ return Icon_System_menu;
default:
break;
}
@@ -413,6 +423,14 @@ int do_shortcut_menu(void *ignored)
case SHORTCUT_DEBUGITEM:
run_debug_screen(sc->u.path);
break;
+ case SHORTCUT_SHUTDOWN:
+#if CONFIG_CHARGING
+ if (charger_inserted())
+ charging_splash();
+ else
+#endif
+ sys_poweroff();
+ break;
case SHORTCUT_UNDEFINED:
default:
break;
diff --git a/apps/shortcuts.h b/apps/shortcuts.h
index d36b2a90fb..c18834a66f 100644
--- a/apps/shortcuts.h
+++ b/apps/shortcuts.h
@@ -32,6 +32,7 @@ enum shortcut_type {
SHORTCUT_BROWSER,
SHORTCUT_PLAYLISTMENU,
SHORTCUT_SEPARATOR,
+ SHORTCUT_SHUTDOWN,
SHORTCUT_TYPE_COUNT
};
diff --git a/manual/main_menu/main.tex b/manual/main_menu/main.tex
index 223ef2bd8d..2fa3366ada 100644
--- a/manual/main_menu/main.tex
+++ b/manual/main_menu/main.tex
@@ -280,6 +280,7 @@ settings. With a shortcut,
\item A setting can be configured (any which can be added to the
\setting{Quick Screen})
\item A debug menu item can be displayed (useful for developers mostly)
+ \item A shortcut to shutdown the player
\end{itemize}
\note{Shortcuts into the database are not possible}
@@ -309,6 +310,8 @@ Available types are:
\item[debug] \config{data} is the name of the debug menu item to display
\item[separator] \config{data} is ignored; \config{name} can be used to display text,
or left blank to make the list more accessible with visual gaps
+\item[shutdown] \config{data} is ignored; \config{name} can be used to display text,
+ Causes the player to turn off.
\end{description}
If the name/icon items are not specified, a sensible default will be used.