summaryrefslogtreecommitdiff
path: root/apps/settings_list.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2008-11-03 11:11:07 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2008-11-03 11:11:07 +0000
commitedcacaa787d770cd5b944c18082b5b80128f7e4e (patch)
treec9c15530510a02327bcd20808ac470304781879e /apps/settings_list.c
parent5395957549c9b04fefa87a0aedb6bc15bf360739 (diff)
downloadrockbox-edcacaa787d770cd5b944c18082b5b80128f7e4e.zip
rockbox-edcacaa787d770cd5b944c18082b5b80128f7e4e.tar.gz
rockbox-edcacaa787d770cd5b944c18082b5b80128f7e4e.tar.bz2
rockbox-edcacaa787d770cd5b944c18082b5b80128f7e4e.tar.xz
FS#9515 - customisable quickscreen. Allows you to choose which setting you want displayed on the quickscreen.
Allows almost every available setting. (change the options in settings > general settings > quickscreen items) Not every setting will work perfectly, some might need aditional handling if the change doesnt take effect straight away (let us know which are problematic so they can be fixed) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18984 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/settings_list.c')
-rw-r--r--apps/settings_list.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 99a4601..7bdf4f4 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -409,6 +409,45 @@ static int32_t jumpscroll_getlang(int value, int unit)
}
#endif /* HAVE_LCD_CHARCELLS */
+#ifdef HAVE_QUICKSCREEN
+int find_setting_by_name(char*name)
+{
+ int i = 0;
+ const struct settings_list *setting;
+ while (i<nb_settings)
+ {
+ setting = &settings[i];
+ if (setting->cfg_name && !strcmp(setting->cfg_name, name))
+ {
+ return i;
+ }
+ i++;
+ }
+ return -1;
+}
+void qs_load_from_cfg(void* var, char*value)
+{
+ *(int*)var = find_setting_by_name(value);
+}
+char* qs_write_to_cfg(void* setting, char*buf, int buf_len)
+{
+ const struct settings_list *var = &settings[*(int*)setting];
+ strncpy(buf, var->cfg_name, buf_len);
+ return buf;
+}
+bool qs_is_changed(void* setting, void* defaultval)
+{
+ int i = *(int*)setting;
+ if (i < 0 || i >= nb_settings)
+ return false;
+ const struct settings_list *var = &settings[i];
+ return var != find_setting(defaultval, NULL);
+}
+void qs_set_default(void* setting, void* defaultval)
+{
+ find_setting(defaultval, (int*)setting);
+}
+#endif
const struct settings_list settings[] = {
/* sound settings */
SOUND_SETTING(F_NO_WRAP,volume, LANG_VOLUME, "volume", SOUND_VOLUME),
@@ -1372,6 +1411,20 @@ const struct settings_list settings[] = {
"touchpad sensitivity", "normal,high", touchpad_set_sensitivity, 2,
ID2P(LANG_NORMAL), ID2P(LANG_HIGH)),
#endif
+#ifdef HAVE_QUICKSCREEN
+ CUSTOM_SETTING(0, qs_item_left, LANG_LEFT,
+ &global_settings.playlist_shuffle, "qs left",
+ qs_load_from_cfg, qs_write_to_cfg,
+ qs_is_changed, qs_set_default),
+ CUSTOM_SETTING(0, qs_item_right, LANG_RIGHT,
+ &global_settings.repeat_mode, "qs right",
+ qs_load_from_cfg, qs_write_to_cfg,
+ qs_is_changed, qs_set_default),
+ CUSTOM_SETTING(0, qs_item_bottom, LANG_BOTTOM,
+ &global_settings.dirfilter, "qs bottom",
+ qs_load_from_cfg, qs_write_to_cfg,
+ qs_is_changed, qs_set_default),
+#endif
};
const int nb_settings = sizeof(settings)/sizeof(*settings);