static JSBool js_createInt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { js_setting_group_t *jsg = JS_GetPrivate(cx, obj); const char *id; const char *title; int def; int min; int max; int step; const char* unit; JSObject *func; if(!JS_ConvertArguments(cx, argc, argv, "ssiiiiso", &id, &title, &def, &min, &max, &step, &unit, &func)){ return JS_FALSE; } js_setting_t *jss = jss_create(cx, obj, id, rval, func, jsg); if(jss == NULL) return JS_FALSE; jss->jss_s = settings_create_int(jsg->jsg_root, id, _p(title), def, jsg->jsg_store, min, max, step, js_store_update_int, jss, SETTINGS_INITIAL_UPDATE, unit, js_global_pc, js_setting_group_save, jsg); jss->jss_cx = NULL; return JS_TRUE; }
void audio_mode_register(audio_mode_t *am) { prop_t *r; htsmsg_t *m; TAILQ_INSERT_TAIL(&audio_modes, am, am_link); settings_multiopt_add_opt_cstr(audio_settings_current_device, am->am_id, am->am_title, 0); m = htsmsg_store_load("audio/devices/%s", am->am_id); r = settings_add_dir_cstr(audio_settings_root, am->am_title, "sound", NULL, am->am_description, NULL); settings_create_int(r, "delay", _p("Audio/Video sync delay"), 0, m, -1000, 1000, 10, am_set_av_sync, am, SETTINGS_INITIAL_UPDATE, "ms", NULL, NULL, NULL); if(am->am_multich_controls) { settings_create_bool(r, "phantom_center", _p("Phantom center"), 0, m, am_set_phantom_center, am, SETTINGS_INITIAL_UPDATE, NULL, NULL, NULL); settings_create_bool(r, "phantom_lfe", _p("Phantom LFE"), 0, m, am_set_phantom_lfe, am, SETTINGS_INITIAL_UPDATE, NULL, NULL, NULL); settings_create_bool(r, "small_front", _p("Small front speakers"), 0, m, am_set_small_front, am, SETTINGS_INITIAL_UPDATE, NULL, NULL, NULL); settings_create_bool(r, "force_downmix", _p("Force stereo downmix"), 0, m, am_set_force_downmix, am, SETTINGS_INITIAL_UPDATE, NULL, NULL, NULL); settings_create_bool(r, "swap_surround", _p("Swap LFE+center with surround"), 0, m, am_set_swap_surround, am, SETTINGS_INITIAL_UPDATE, NULL, NULL, NULL); } if(m != NULL) htsmsg_destroy(m); }
static JSBool js_createInt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { js_setting_group_t *jsg = JS_GetPrivate(cx, obj); const char *id; const char *title; int def; int min; int max; int step; const char* unit; JSObject *func; JSBool persistent = JS_FALSE; if(!JS_ConvertArguments(cx, argc, argv, "ssiiiiso/b", &id, &title, &def, &min, &max, &step, &unit, &func, &persistent)){ return JS_FALSE; } js_setting_t *jss = jss_create(cx, obj, id, rval, func, jsg, persistent); if(jss == NULL) return JS_FALSE; if(persistent && jsg->jsg_kv_url) def = kv_url_opt_get_int(jsg->jsg_kv_url, KVSTORE_DOMAIN_PLUGIN, id, def); jss->jss_s = settings_create_int(jsg->jsg_root, id, _p(title), def, jsg->jsg_store, min, max, step, js_store_update_int, jss, SETTINGS_INITIAL_UPDATE | jsg->jsg_settings_flags, unit, js_global_pc, js_setting_group_save, jsg); jss->jss_cx = NULL; return JS_TRUE; }
static void init_autostandby(void) { htsmsg_t *store = htsmsg_store_load("runcontrol"); if(store == NULL) store = htsmsg_create_map(); settings_create_int(settings_general, "autostandby", _p("Automatic standby"), 0, store, 0, 60, 5, set_autostandby, NULL, SETTINGS_INITIAL_UPDATE, " min", NULL, runcontrol_save_settings, NULL); last_activity = showtime_get_ts(); prop_subscribe(0, PROP_TAG_NAME("global", "media", "current", "playstatus"), PROP_TAG_CALLBACK_STRING, current_media_playstatus, NULL, NULL); callout_arm(&autostandby_timer, check_autostandby, NULL, 1); }
static void glw_init_settings(glw_root_t *gr, const char *instance, const char *instance_title) { prop_t *r = gr->gr_uii.uii_prop; if(gr->gr_base_size == 0) gr->gr_base_size = 20; gr->gr_settings_instance = strdup(instance); gr->gr_settings_store = htsmsg_store_load("displays/%s", instance); if(gr->gr_settings_store == NULL) gr->gr_settings_store = htsmsg_create_map(); if(instance_title) { char title[256]; snprintf(title, sizeof(title), "Display and user interface on screen %s", instance_title); gr->gr_settings = settings_add_dir_cstr(NULL, title, "display", NULL, NULL); } else { gr->gr_settings = settings_add_dir(NULL, _p("Display and user interface"), "display", NULL, NULL); } gr->gr_prop_size = prop_create(r, "size"); gr->gr_prop_underscan_h = prop_create(r, "underscan_h"); gr->gr_prop_underscan_v = prop_create(r, "underscan_v"); gr->gr_setting_size = settings_create_int(gr->gr_settings, "size", _p("Userinterface size"), 0, gr->gr_settings_store, -10, 30, 1, glw_change_size, gr, SETTINGS_INITIAL_UPDATE, "px", gr->gr_courier, glw_settings_save, gr); gr->gr_setting_underscan_h = settings_create_int(gr->gr_settings, "underscan_h", _p("Horizontal underscan"), 0, gr->gr_settings_store, -100, +100, 1, glw_change_underscan_h, gr, SETTINGS_INITIAL_UPDATE, "px", gr->gr_courier, glw_settings_save, gr); gr->gr_setting_underscan_v = settings_create_int(gr->gr_settings, "underscan_v", _p("Vertical underscan"), 0, gr->gr_settings_store, -100, +100, 1, glw_change_underscan_v, gr, SETTINGS_INITIAL_UPDATE, "px", gr->gr_courier, glw_settings_save, gr); gr->gr_setting_screensaver = settings_create_int(gr->gr_settings, "screensaver", _p("Screensaver delay"), 10, gr->gr_settings_store, 1, 60, 1, glw_set_screensaver_delay, gr, SETTINGS_INITIAL_UPDATE, " min", gr->gr_courier, glw_settings_save, gr); gr->gr_pointer_visible = prop_create(r, "pointerVisible"); gr->gr_is_fullscreen = prop_create(r, "fullscreen"); gr->gr_screensaver_active = prop_create(r, "screensaverActive"); gr->gr_prop_width = prop_create(r, "width"); gr->gr_prop_height = prop_create(r, "height"); prop_set_int(gr->gr_screensaver_active, 0); }
void video_settings_init(void) { htsmsg_t *store; prop_t *s; setting_t *x; s = settings_add_dir(NULL, _p("Video playback"), "video", NULL, _p("Video acceleration and display behaviour"), NULL); if((store = htsmsg_store_load("videoplayback")) == NULL) store = htsmsg_create_map(); #if ENABLE_VDPAU settings_create_bool(s, "vdpau", _p("Enable VDPAU"), 1, store, set_vdpau, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"videoplayback"); x = settings_create_multiopt(s, "vdpau_deinterlace", _p("Preferred VDPAU deinterlacer method"), 0); settings_multiopt_add_opt(x, "2", _p("Temporal/Spatial"), 1); settings_multiopt_add_opt(x, "1", _p("Temporal"), 0); settings_multiopt_add_opt(x, "0", _p("Off"), 0); settings_multiopt_initiate(x, set_vdpau_deinterlace, NULL, NULL, store, settings_generic_save_settings, (void *)"videoplayback"); x = settings_create_multiopt(s, "vdpau_deinterlace_resolution_limit", _p("Maximum resolution for deinterlacer"), 0); settings_multiopt_add_opt(x, "576", _p("576"), 0); settings_multiopt_add_opt(x, "720", _p("720"), 0); settings_multiopt_add_opt(x, "1080", _p("1080"), 0); settings_multiopt_add_opt(x, "0", _p("No limit"), 1); settings_multiopt_initiate(x, set_vdpau_deinterlace_resolution_limit, NULL, NULL, store, settings_generic_save_settings, (void *)"videoplayback"); #endif #if ENABLE_VDA settings_create_bool(s, "vda", _p("Enable VDA"), 1, store, set_vda, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"videoplayback"); #endif settings_create_bool(s, "stretch_horizontal", _p("Stretch video to widescreen"), 0, store, set_stretch_horizontal, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"videoplayback"); settings_create_bool(s, "stretch_fullscreen", _p("Stretch video to fullscreen"), 0, store, set_stretch_fullscreen, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"videoplayback"); settings_create_int(s, "vzoom", _p("Video zoom"), 100, store, 50, 200, 1, set_vzoom, NULL, SETTINGS_INITIAL_UPDATE, "%", NULL, settings_generic_save_settings, (void *)"videoplayback"); video_settings.resume_mode = 1; x = settings_create_multiopt(s, "resumemode", _p("Resume video playback"), 0); settings_multiopt_add_opt(x, "1", _p("Yes"), 1); settings_multiopt_add_opt(x, "0", _p("No"), 0); settings_multiopt_initiate(x, set_video_resumemode, NULL, NULL, store, settings_generic_save_settings, (void *)"videoplayback"); settings_create_int(s, "played_threshold", _p("Count video as played when reaching"), 90, store, 1, 100, 1, set_played_threshold, NULL, SETTINGS_INITIAL_UPDATE, "%", NULL, settings_generic_save_settings, (void *)"videoplayback"); settings_create_bool(s, "continuous_playback", _p("Automatically play next video in list"), 0, store, set_continuous_playback, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"videoplayback"); //---------------------------------------------------------- s = settings_add_dir(NULL, _p("Subtitles"), "subtitle", NULL, _p("Generic settings for video subtitles"), NULL); subtitle_settings_dir = s; if((store = htsmsg_store_load("subtitles")) == NULL) store = htsmsg_create_map(); settings_create_bool(s, "allsubsindir", _p("Include all subtitle files from movie directory"), 0, store, set_subtitle_include_all_subs, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_bool(s, "alwaysselect", _p("Always try to select a subtitle"), 1, store, set_subtitle_always_select, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_divider(s, _p("Subtitle size and positioning")); settings_create_int(s, "scale", _p("Subtitle size"), 100, store, 30, 500, 5, set_subtitle_scale, NULL, SETTINGS_INITIAL_UPDATE, "%", NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_bool(s, "subonvideoframe", _p("Force subtitles to reside on video frame"), 0, store, set_subtitle_align_on_video, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"subtitles"); x = settings_create_multiopt(s, "align", _p("Subtitle position"), 0); settings_multiopt_add_opt(x, "2", _p("Center"), 1); settings_multiopt_add_opt(x, "1", _p("Left"), 0); settings_multiopt_add_opt(x, "3", _p("Right"), 0); settings_multiopt_add_opt(x, "0", _p("Auto"), 0); settings_multiopt_initiate(x,set_subtitle_alignment, NULL, NULL, store, settings_generic_save_settings, (void *)"subtitles"); settings_create_divider(s, _p("Subtitle styling")); settings_create_string(s, "color", _p("Color"), "FFFFFF", store, set_subtitle_color, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_string(s, "shadowcolor", _p("Shadow color"), "000000", store, set_subtitle_shadow_color, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_int(s, "shadowcolorsize", _p("Shadow offset"), 2, store, 0, 10, 1, set_subtitle_shadow_size, NULL, SETTINGS_INITIAL_UPDATE, "px", NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_string(s, "outlinecolor", _p("Outline color"), "000000", store, set_subtitle_outline_color, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_int(s, "shadowoutlinesize", _p("Outline size"), 1, store, 0, 4, 1, set_subtitle_outline_size, NULL, SETTINGS_INITIAL_UPDATE, "px", NULL, settings_generic_save_settings, (void *)"subtitles"); settings_create_bool(s, "styleoverride", _p("Ignore embedded styling"), 0, store, set_subtitle_style_override, NULL, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"subtitles"); }
static void glw_init_settings(glw_root_t *gr, const char *instance) { prop_t *r = gr->gr_prop; if(gr->gr_base_size == 0) gr->gr_base_size = 20; gr->gr_settings_instance = strdup(instance); gr->gr_settings_store = htsmsg_store_load("displays/%s", instance); if(gr->gr_settings_store == NULL) gr->gr_settings_store = htsmsg_create_map(); gr->gr_settings = settings_add_dir(NULL, _p("Display and user interface"), "display", NULL, NULL, NULL); gr->gr_prop_size = prop_create(r, "size"); gr->gr_prop_underscan_h = prop_create(r, "underscan_h"); gr->gr_prop_underscan_v = prop_create(r, "underscan_v"); gr->gr_setting_size = settings_create_int(gr->gr_settings, "size", _p("Userinterface size"), 0, gr->gr_settings_store, -10, 30, 1, glw_change_user_size, gr, SETTINGS_INITIAL_UPDATE, "px", gr->gr_courier, glw_settings_save, gr); gr->gr_setting_underscan_h = settings_create_int(gr->gr_settings, "underscan_h", _p("Horizontal underscan"), 0, gr->gr_settings_store, -100, +100, 1, glw_change_underscan_h, gr, SETTINGS_INITIAL_UPDATE, "px", gr->gr_courier, glw_settings_save, gr); gr->gr_setting_underscan_v = settings_create_int(gr->gr_settings, "underscan_v", _p("Vertical underscan"), 0, gr->gr_settings_store, -100, +100, 1, glw_change_underscan_v, gr, SETTINGS_INITIAL_UPDATE, "px", gr->gr_courier, glw_settings_save, gr); gr->gr_setting_screensaver = settings_create_int(gr->gr_settings, "screensaver", _p("Screensaver delay"), 10, gr->gr_settings_store, 1, 60, 1, glw_set_screensaver_delay, gr, SETTINGS_INITIAL_UPDATE, " min", gr->gr_courier, glw_settings_save, gr); gr->gr_pointer_visible = prop_create(r, "pointerVisible"); gr->gr_is_fullscreen = prop_create(r, "fullscreen"); gr->gr_screensaver_active = prop_create(r, "screensaverActive"); gr->gr_prop_width = prop_create(r, "width"); gr->gr_prop_height = prop_create(r, "height"); prop_set_int(gr->gr_screensaver_active, 0); gr->gr_evsub = prop_subscribe(0, PROP_TAG_CALLBACK, glw_eventsink, gr, PROP_TAG_NAME("ui", "eventSink"), PROP_TAG_ROOT, r, PROP_TAG_COURIER, gr->gr_courier, NULL); }