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 add_multiopt(JSContext *cx, js_setting_t *jss, JSObject *optlist, const char *vdef) { JSIdArray *opts, *opt; int i; if((opts = JS_Enumerate(cx, optlist)) == NULL) return; for(i = 0; i < opts->length; i++) { jsval name, value; if(!JS_IdToValue(cx, opts->vector[i], &name) || !JSVAL_IS_INT(name) || !JS_GetElement(cx, optlist, JSVAL_TO_INT(name), &value) || !JSVAL_IS_OBJECT(value) || (opt = JS_Enumerate(cx, JSVAL_TO_OBJECT(value))) == NULL) continue; if(opt->length >= 2) { jsval id, title, def; if(JS_GetElement(cx, JSVAL_TO_OBJECT(value), 0, &id) && JS_GetElement(cx, JSVAL_TO_OBJECT(value), 1, &title)) { if(opt->length < 3 || !JS_GetElement(cx, JSVAL_TO_OBJECT(value), 2, &def)) def = JSVAL_FALSE; const char *k = JS_GetStringBytes(JS_ValueToString(cx, id)); if(vdef) def = !strcmp(k, vdef) ? JSVAL_TRUE : JSVAL_FALSE; settings_multiopt_add_opt_cstr(jss->jss_s, k, JS_GetStringBytes(JS_ValueToString(cx, title)), def == JSVAL_TRUE); } } JS_DestroyIdArray(cx, opt); } JS_DestroyIdArray(cx, opts); }
void i18n_init(void) { prop_t *s = settings_add_dir(NULL, _p("Languages"), NULL, NULL, _p("Preferred languages")); setting_t *x; int i; htsmsg_t *store = htsmsg_store_load("i18n"); if(store == NULL) store = htsmsg_create_map(); nls_init(s, store); settings_create_info(s, NULL, _p("Language codes should be configured as three character ISO codes, example (eng, swe, fra)")); settings_create_string(s, "audio1", _p("Primary audio language code"), NULL, store, set_lang, &lang_audio[0], SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"i18n"); settings_create_string(s, "audio2", _p("Secondary audio language code"), NULL, store, set_lang, &lang_audio[1], SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"i18n"); settings_create_string(s, "audio3", _p("Tertiary audio language code"), NULL, store, set_lang, &lang_audio[2], SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"i18n"); settings_create_string(s, "subtitle1", _p("Primary subtitle language code"), NULL, store, set_lang, &lang_subtitle[0], SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"i18n"); settings_create_string(s, "subtitle2", _p("Secondary subtitle language code"), NULL, store, set_lang, &lang_subtitle[1], SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"i18n"); settings_create_string(s, "subtitle3", _p("Tertiary subtitle language code"), NULL, store, set_lang, &lang_subtitle[2], SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"i18n"); x = settings_create_multiopt(s, "srt_charset", _p("SRT character set")); const charset_t *cs; for(i = 0; (cs = charset_get_idx(i)) != NULL; i++) settings_multiopt_add_opt_cstr(x, cs->id, cs->title, i == 0); settings_multiopt_initiate(x, set_srt_charset, NULL, NULL, store, settings_generic_save_settings, (void *)"i18n"); }