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 void sd_add_service(service_instance_t *si, const char *title, const char *url, const char *contents, int probe, const char *description) { si->si_probe = probe; if(si->si_settings == NULL) { char tmp[100]; si->si_url = strdup(url); snprintf(tmp, sizeof(tmp), "sd/%s", url); remove_bad_chars(tmp+3); si->si_settings_path = strdup(tmp); si->si_settings_store = htsmsg_store_load(tmp) ?: htsmsg_create_map(); si->si_settings = settings_add_dir_cstr(gconf.settings_sd, title, NULL, NULL, description, NULL); si->si_setting_enabled = settings_create_bool(si->si_settings, "enabled", _p("Enabled"), 1, si->si_settings_store, NULL, NULL, SETTINGS_INITIAL_UPDATE, NULL, sd_settings_saver, si); si->si_setting_title = settings_create_string(si->si_settings, "title", _p("Name"), title, si->si_settings_store, NULL, NULL, SETTINGS_INITIAL_UPDATE, NULL, sd_settings_saver, si); si->si_setting_type = settings_create_string(si->si_settings, "type", _p("Type"), contents, si->si_settings_store, NULL, NULL, SETTINGS_INITIAL_UPDATE, NULL, sd_settings_saver, si); }
JSBool js_createSettings(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { const char *title; const char *icon = NULL; const char *desc = NULL; char spath[URL_MAX]; if(!JS_ConvertArguments(cx, argc, argv, "s/ss", &title, &icon, &desc)) return JS_FALSE; js_plugin_t *jsp = JS_GetPrivate(cx, obj); snprintf(spath, sizeof(spath), "plugins/%s", jsp->jsp_id); js_setting_group_t *jsg = calloc(1, sizeof(js_setting_group_t)); JSObject *robj; jsg->jsg_refcount = 2; LIST_INSERT_HEAD(&jsp->jsp_setting_groups, jsg, jsg_link); jsg->jsg_frozen = 1; jsg->jsg_spath = strdup(spath); jsg->jsg_store = htsmsg_store_load(spath) ?: htsmsg_create_map(); jsg->jsg_root_owner = 1; jsg->jsg_root = prop_ref_inc(settings_add_dir_cstr(gconf.settings_apps, title, NULL, icon, desc, NULL)); robj = JS_NewObjectWithGivenProto(cx, &setting_group_class, NULL, obj); jsg->jsg_val = *rval = OBJECT_TO_JSVAL(robj); JS_AddNamedRoot(cx, &jsg->jsg_val, "jsg"); JS_SetPrivate(cx, robj, jsg); JS_DefineFunctions(cx, robj, setting_functions); jsval val = OBJECT_TO_JSVAL(js_object_from_prop(cx, jsg->jsg_root)); JS_SetProperty(cx, robj, "properties", &val); jsg->jsg_frozen = 0; return JS_TRUE; }
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); }