summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer/mpeg_settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/mpegplayer/mpeg_settings.c')
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 06083df..9e8c153 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -1,4 +1,5 @@
#include "plugin.h"
+#include "helper.h"
#include "lib/configfile.h"
#include "lib/oldmenuapi.h"
@@ -172,6 +173,10 @@ static struct configdata config[] =
{TYPE_INT, 0, 2, &settings.crossfeed, "Crossfeed", NULL, NULL},
{TYPE_INT, 0, 2, &settings.equalizer, "Equalizer", NULL, NULL},
{TYPE_INT, 0, 2, &settings.dithering, "Dithering", NULL, NULL},
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+ {TYPE_INT, -1, INT_MAX, &settings.backlight_brightness,
+ "Backlight brightness", NULL, NULL},
+#endif
};
static const struct opt_items noyes[2] = {
@@ -189,6 +194,10 @@ static const struct opt_items globaloff[2] = {
{ "Use sound setting", -1 },
};
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+#define BACKLIGHT_OPTION_DEFAULT "Use setting"
+#endif
+
static long mpeg_menu_sysevent_id;
void mpeg_menu_sysevent_clear(void)
@@ -252,6 +261,55 @@ static bool mpeg_set_option(const char* string,
return usb;
}
+static bool mpeg_set_int(const char *string, const char *unit,
+ int voice_unit, const int *variable,
+ void (*function)(int), int step,
+ int min,
+ int max,
+ void (*formatter)(char*, size_t, int, const char*))
+{
+ mpeg_menu_sysevent_clear();
+
+ bool usb = rb->set_int(string, unit, voice_unit, variable, function,
+ step, min, max, formatter);
+
+ if (usb)
+ mpeg_menu_sysevent_id = ACTION_STD_CANCEL;
+
+ return usb;
+}
+
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+void mpeg_backlight_update_brightness(int value)
+{
+ if (value >= 0)
+ {
+ value += MIN_BRIGHTNESS_SETTING;
+ backlight_brightness_set(rb, value);
+ }
+ else
+ {
+ backlight_brightness_use_setting(rb);
+ }
+}
+
+static void backlight_brightness_function(int value)
+{
+ mpeg_backlight_update_brightness(value);
+}
+
+static void backlight_brightness_formatter(char *buf, size_t length,
+ int value, const char *input)
+{
+ if (value < 0)
+ rb->strncpy(buf, BACKLIGHT_OPTION_DEFAULT, length);
+ else
+ rb->snprintf(buf, length, "%d", value + MIN_BRIGHTNESS_SETTING);
+
+ (void)input;
+}
+#endif /* HAVE_BACKLIGHT_BRIGHTNESS */
+
/* Sync a particular audio setting to global or mpegplayer forced off */
static void sync_audio_setting(int setting, bool global)
{
@@ -816,6 +874,10 @@ static void display_options(void)
{ "Limit FPS", NULL },
[MPEG_OPTION_SKIP_FRAMES] =
{ "Skip frames", NULL },
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+ [MPEG_OPTION_BACKLIGHT_BRIGHTNESS] =
+ { "Backlight brightness", NULL },
+#endif
};
menu_id = menu_init(rb, items, ARRAYLEN(items),
@@ -856,6 +918,19 @@ static void display_options(void)
noyes, 2, NULL);
break;
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+ case MPEG_OPTION_BACKLIGHT_BRIGHTNESS:
+ result = settings.backlight_brightness;
+ mpeg_backlight_update_brightness(result);
+ mpeg_set_int("Backlight brightness", NULL, -1, &result,
+ backlight_brightness_function, 1, -1,
+ MAX_BRIGHTNESS_SETTING - MIN_BRIGHTNESS_SETTING,
+ backlight_brightness_formatter);
+ settings.backlight_brightness = result;
+ mpeg_backlight_update_brightness(-1);
+ break;
+#endif /* HAVE_BACKLIGHT_BRIGHTNESS */
+
default:
menu_quit = true;
break;
@@ -1057,6 +1132,9 @@ void init_settings(const char* filename)
settings.skipframes = 1; /* Skip frames */
settings.resume_options = MPEG_RESUME_MENU_ALWAYS; /* Enable start menu */
settings.resume_count = -1;
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+ settings.backlight_brightness = -1; /* Use default setting */
+#endif
#if MPEG_OPTION_DITHERING_ENABLED
settings.displayoptions = 0; /* No visual effects */
#endif
@@ -1126,6 +1204,11 @@ void save_settings(void)
++settings.resume_count);
}
+#ifdef HAVE_BACKLIGHT_BRIGHTNESS
+ configfile_update_entry(SETTINGS_FILENAME, "Backlight brightness",
+ settings.backlight_brightness);
+#endif
+
#if MPEG_OPTION_DITHERING_ENABLED
configfile_update_entry(SETTINGS_FILENAME, "Display options",
settings.displayoptions);