void bookmarks_init(void) { htsmsg_field_t *f; htsmsg_t *m, *n, *o; hts_mutex_init(&bookmark_mutex); bookmarks = prop_create(settings_add_dir(NULL, "Bookmarks", "bookmark", NULL), "model"); prop_set_int(prop_create(bookmarks, "mayadd"), 1); prop_subscribe(0, PROP_TAG_CALLBACK, bookmarks_callback, NULL, PROP_TAG_ROOT, prop_create(bookmarks, "nodes"), PROP_TAG_MUTEX, &bookmark_mutex, NULL); if((m = htsmsg_store_load("bookmarks")) != NULL) { n = htsmsg_get_map(m, "nodes"); HTSMSG_FOREACH(f, n) { if((o = htsmsg_get_map_by_field(f)) == NULL) continue; bookmark_load(o); } htsmsg_destroy(m); }
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 = settings_add_dir(settings_apps, _p(title), NULL, icon, desc ? _p(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); jsg->jsg_frozen = 0; return JS_TRUE; }
prop_t * search_get_settings(void) { static prop_t *p; if(p == NULL) p = settings_add_dir(NULL, _p("Search"), "search", NULL, NULL); return p; }
void settings_init(void) { settings_root = prop_create(prop_get_global(), "settings"); settings_nodes = prop_create_root("sources"); prop_nf_create(prop_create(settings_root, "nodes"), settings_nodes, NULL, "node.model.metadata.title", PROP_NF_AUTODESTROY); prop_set_string(prop_create(settings_root, "type"), "settings"); set_title(settings_root, "Global settings"); settings_apps = settings_add_dir(NULL, "Plugins", "settings", NULL); settings_sd = settings_add_dir(NULL, "Autodiscovered services", "settings", NULL); }
void audio_init(void) { audio_fifo_init(&af0, 16000, 8000); htsmsg_t *m = htsmsg_store_load("audio/current"); if(m == NULL) m = htsmsg_create_map(); audio_mastervol_init(); audio_settings_root = settings_add_dir(NULL, _p("Audio output"), "sound", NULL, _p("Select audio output device and related configurations"), "settings:audio"); audio_settings_current_device = settings_create_multiopt(audio_settings_root, "currentdevice", _p("Current output device"), 0); TAILQ_INIT(&audio_modes); #ifdef CONFIG_LIBOGC audio_wii_init(); #endif #if PS3 audio_ps3_init(); #endif int have_pulse_audio __attribute__((unused)) = 0; #ifdef CONFIG_LIBPULSE have_pulse_audio |= audio_pa_init(); #endif #ifdef CONFIG_LIBASOUND audio_alsa_init(have_pulse_audio); #endif #ifdef CONFIG_COREAUDIO audio_coreaudio_init(); #endif audio_dummy_init(); settings_multiopt_initiate(audio_settings_current_device, audio_change_output_device, NULL, NULL, m, settings_generic_save_settings, (void *)"audio/current"); audio_run = 1; hts_thread_create_joinable("audio output", &audio_thread_id, audio_output_thread, NULL, THREAD_PRIO_HIGH); }
void settings_init(void) { prop_t *n, *d, *model; prop_t *s1; settings_root = prop_create(prop_get_global(), "settings"); prop_set_string(prop_create(settings_root, "type"), "settings"); set_title(settings_root, _p("Global settings")); settings_nodes = prop_create_root(NULL); s1 = prop_create_root(NULL); prop_nf_create(s1, settings_nodes, NULL, "node.model.metadata.title", PROP_NF_AUTODESTROY); settings_apps = prop_create_root(NULL); settings_sd = prop_create_root(NULL); prop_concat_t *pc; pc = prop_concat_create(prop_create(settings_root, "nodes"), 0); prop_concat_add_source(pc, s1, NULL); // Applications and plugins n = prop_create(prop_create(settings_apps, "model"), "nodes"); d = prop_create_root(NULL); model = prop_create(d, "model"); set_title(model, _p("Applications and installed plugins")); prop_set_string(prop_create(model, "type"), "divider"); prop_concat_add_source(pc, n, d); d = prop_create_root(NULL); model = prop_create(d, "model"); set_title(model, _p("Discovered media sources")); prop_set_string(prop_create(model, "type"), "divider"); n = prop_create(prop_create(settings_sd, "model"), "nodes"); prop_concat_add_source(pc, n, d); // General settings settings_general = settings_add_dir(NULL, _p("General"), NULL, NULL, _p("System related settings")); }
void settings_init(void) { prop_t *n, *d; prop_t *s1; settings_root = prop_create(prop_get_global(), "settings"); prop_set_string(prop_create(settings_root, "type"), "settings"); set_title2(settings_root, _p("Global settings")); settings_nodes = prop_create_root(NULL); s1 = prop_create_root(NULL); struct prop_nf *pnf; pnf = prop_nf_create(s1, settings_nodes, NULL, PROP_NF_AUTODESTROY); prop_nf_sort(pnf, "node.metadata.title", 0, 0, NULL, 1); settings_apps = prop_create_root(NULL); settings_sd = prop_create_root(NULL); prop_concat_t *pc; pc = prop_concat_create(prop_create(settings_root, "nodes"), 0); prop_concat_add_source(pc, s1, NULL); // Applications and plugins n = prop_create(settings_apps, "nodes"); d = prop_create_root(NULL); set_title2(d, _p("Applications and installed plugins")); prop_set_string(prop_create(d, "type"), "separator"); prop_concat_add_source(pc, n, d); d = prop_create_root(NULL); set_title2(d, _p("Discovered media sources")); prop_set_string(prop_create(d, "type"), "separator"); n = prop_create(settings_sd, "nodes"); prop_concat_add_source(pc, n, d); // General settings settings_general = settings_add_dir(NULL, _p("General"), NULL, NULL, _p("System related settings"), "settings:general"); // Developer settings, only available via its URI init_dev_settings(); }
void audio_init(void) { htsmsg_t *store = htsmsg_store_load("audio2"); if(store == NULL) store = htsmsg_create_map(); prop_t *asettings = settings_add_dir(NULL, _p("Audio settings"), NULL, NULL, _p("Setup audio output"), "settings:audio"); audio_mastervol_init(); audio_class = audio_driver_init(asettings, store); settings_create_separator(asettings, _p("Audio settings during video playback")); gconf.setting_av_volume = setting_create(SETTING_INT, asettings, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Audio gain adjustment during video playback")), SETTING_RANGE(-12, 12), SETTING_UNIT_CSTR("dB"), SETTING_HTSMSG("videovolume", store, "audio2"), SETTING_VALUE_ORIGIN("global"), NULL); gconf.setting_av_sync = setting_create(SETTING_INT, asettings, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Audio delay")), SETTING_RANGE(-5000, 5000), SETTING_STEP(50), SETTING_UNIT_CSTR("ms"), SETTING_HTSMSG("avdelta", store, "audio2"), SETTING_VALUE_ORIGIN("global"), NULL); #if CONFIG_AUDIOTEST audio_test_init(asettings); #endif }
static void init_dev_settings(void) { htsmsg_t *store; if((store = htsmsg_store_load("dev")) == NULL) store = htsmsg_create_map(); settings_dev = settings_add_dir(prop_create_root(NULL), _p("Developer settings"), NULL, NULL, _p("Settings useful for developers"), "settings:dev"); prop_t *r = setting_add(settings_dev, NULL, "info", 0); prop_set_string(prop_create(r, "description"), "Settings for developers. If you don't know what this is, don't touch it"); prop_t *t; t = prop_create_root(NULL); prop_set_string(t, "Enable binrelpace"); settings_create_bool(settings_dev, "binreplace", t, 0, store, settings_generic_set_bool, &gconf.enable_bin_replace, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"dev"); t = prop_create_root(NULL); prop_set_string(t, "Enable omnigrade"); settings_create_bool(settings_dev, "omnigrade", t, 0, store, settings_generic_set_bool, &gconf.enable_omnigrade, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"dev"); }
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"); }
void i18n_init(void) { prop_t *s = settings_add_dir(NULL, _p("Languages"), "i18n", NULL, _p("Preferred languages"), "settings:i18n"); int i; nls_init(s); #ifdef STOS setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Timezone")), SETTING_CALLBACK(set_timezone, NULL), SETTING_STORE("i18n", "timezone"), NULL); #endif setting_create(SETTING_MULTIOPT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Time format")), SETTING_STORE("i18n", "timeformat"), SETTING_WRITE_INT(&gconf.time_format), SETTING_OPTION(gconf.time_format_system ? "0" : NULL, _p("System default")), SETTING_OPTION("1", _p("24 Hour")), SETTING_OPTION("2", _p("12 Hour")), NULL); settings_create_info(s, NULL, _p("Language codes should be configured as three character ISO codes, example (eng, swe, fra)")); setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Primary audio language code")), SETTING_CALLBACK(set_lang, &lang_audio[0]), SETTING_STORE("i18n", "audio1"), NULL); setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Secondary audio language code")), SETTING_CALLBACK(set_lang, &lang_audio[1]), SETTING_STORE("i18n", "audio2"), NULL); setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Tertiary audio language code")), SETTING_CALLBACK(set_lang, &lang_audio[2]), SETTING_STORE("i18n", "audio3"), NULL); setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Primary subtitle language code")), SETTING_CALLBACK(&set_lang, &lang_subtitle[0]), SETTING_STORE("i18n", "subtitle1"), NULL); setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Secondary subtitle language code")), SETTING_CALLBACK(&set_lang, &lang_subtitle[1]), SETTING_STORE("i18n", "subtitle2"), NULL); setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Tertiary subtitle language code")), SETTING_CALLBACK(&set_lang, &lang_subtitle[2]), SETTING_STORE("i18n", "subtitle3"), NULL); const char **optlist = NULL; const charset_t *cs; for(i = 0; (cs = charset_get_idx(i)) != NULL; i++) {} optlist = alloca((i * 2 + 3) * sizeof(const char *)); optlist[0] = "auto"; optlist[1] = "Auto"; for(i = 0; (cs = charset_get_idx(i)) != NULL; i++) { optlist[i * 2 + 2] = cs->id; optlist[i * 2 + 3] = cs->title; } optlist[i * 2 + 2] = NULL; setting_create(SETTING_MULTIOPT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Default character set")), SETTING_STORE("i18n", "default_charset"), SETTING_CALLBACK(set_default_charset, NULL), SETTING_OPTION_LIST(optlist), NULL); setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Ignore 'The' at beginning of words when sorting")), SETTING_STORE("i18n", "skipthe"), SETTING_WRITE_BOOL(&gconf.ignore_the_prefix), NULL); }
void video_settings_init(void) { prop_t *s; s = settings_add_dir(NULL, _p("Video playback"), "video", NULL, _p("Video acceleration and display behaviour"), "settings:video"); #if ENABLE_VDPAU setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Enable VDPAU")), SETTING_VALUE(1), SETTING_WRITE_BOOL(&video_settings.vdpau), SETTING_STORE("videoplayback", "vdpau"), NULL); setting_create(SETTING_MULTIOPT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Preferred VDPAU deinterlacer method")), SETTING_STORE("videoplayback", "vdpau_deinterlace"), SETTING_WRITE_INT(&video_settings.vdpau_deinterlace), SETTING_OPTION("2", _p("Temporal/Spatial")), SETTING_OPTION("1", _p("Temporal")), SETTING_OPTION("0", _p("Off")), NULL); setting_create(SETTING_MULTIOPT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Maximum resolution for deinterlacer")), SETTING_STORE("videoplayback", "vdpau_deinterlace_resolution_limit"), SETTING_WRITE_INT(&video_settings. vdpau_deinterlace_resolution_limit), SETTING_OPTION ("0", _p("No limit")), SETTING_OPTION_CSTR("576", "576"), SETTING_OPTION_CSTR("720", "720"), SETTING_OPTION_CSTR("1080", "1080"), NULL); #endif #if defined(__APPLE__) || defined(__ANDROID__) setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Hardware accelerated decoding")), SETTING_STORE("videoplayback", "videoaccel"), #if defined(__APPLE__) SETTING_VALUE(1), #else SETTING_VALUE(0), #endif SETTING_WRITE_BOOL(&video_settings.video_accel), NULL); #endif video_settings.vzoom_setting = setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Video zoom")), SETTING_UNIT_CSTR("%"), SETTING_RANGE(50, 200), SETTING_VALUE(100), SETTING_STORE("videoplayback", "vzoom"), SETTING_VALUE_ORIGIN("global"), NULL); video_settings.pan_horizontal_setting = setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Horizontal pan")), SETTING_UNIT_CSTR("%"), SETTING_RANGE(-100, 100), SETTING_VALUE(0), SETTING_STORE("videoplayback", "horizontalpan"), SETTING_VALUE_ORIGIN("global"), NULL); video_settings.pan_vertical_setting = setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Vertical pan")), SETTING_UNIT_CSTR("%"), SETTING_RANGE(-100, 100), SETTING_VALUE(0), SETTING_STORE("videoplayback", "verticalpan"), SETTING_VALUE_ORIGIN("global"), NULL); video_settings.scale_horizontal_setting = setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Horizontal scale")), SETTING_UNIT_CSTR("%"), SETTING_RANGE(10, 300), SETTING_VALUE(100), SETTING_STORE("videoplayback", "horizontalscale"), SETTING_VALUE_ORIGIN("global"), NULL); video_settings.scale_vertical_setting = setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Vertical scale")), SETTING_UNIT_CSTR("%"), SETTING_RANGE(10, 300), SETTING_VALUE(100), SETTING_STORE("videoplayback", "verticalscale"), SETTING_VALUE_ORIGIN("global"), NULL); video_settings.stretch_horizontal_setting = setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Stretch video to widescreen")), SETTING_STORE("videoplayback", "stretch_horizontal"), SETTING_VALUE_ORIGIN("global"), NULL); video_settings.stretch_fullscreen_setting = setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Stretch video to fullscreen")), SETTING_STORE("videoplayback", "stretch_fullscreen"), SETTING_VALUE_ORIGIN("global"), NULL); video_settings.vinterpolate_setting = setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Video frame interpolation")), SETTING_STORE("videoplayback", "vinterpolate"), SETTING_VALUE_ORIGIN("global"), SETTING_VALUE(1), NULL); setting_create(SETTING_MULTIOPT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Resume video playback")), SETTING_WRITE_INT(&video_settings.resume_mode), SETTING_STORE("videoplayback", "resumemode"), SETTING_OPTION("2", _p("Ask")), SETTING_OPTION("1", _p("Always")), SETTING_OPTION("0", _p("Never")), NULL); setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Count video as played when reaching")), SETTING_VALUE(90), SETTING_RANGE(1, 100), SETTING_UNIT_CSTR("%"), SETTING_WRITE_INT(&video_settings.played_threshold), SETTING_STORE("videoplayback", "played_threshold"), NULL); setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Automatically play next video in list")), SETTING_STORE("videoplayback", "continuous_playback"), SETTING_WRITE_BOOL(&video_settings.continuous_playback), NULL); setting_create(SETTING_MULTIOPT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Up / Down during video playback controls")), SETTING_WRITE_INT(&video_settings.dpad_up_down_mode), SETTING_STORE("videoplayback", "dpad_up_down_mode"), SETTING_OPTION("0", _p("Master volume")), SETTING_OPTION("1", _p("Per-file volume")), NULL); setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Show clock during playback")), SETTING_STORE("videoplayback", "show_clock"), SETTING_WRITE_PROP(prop_create(prop_create(prop_get_global(), "clock"), "showDuringVideo")), NULL); setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Step when seeking backward")), SETTING_VALUE(15), SETTING_RANGE(3, 60), SETTING_UNIT_CSTR("s"), SETTING_WRITE_INT(&video_settings.seek_back_step), SETTING_STORE("videoplayback", "seekbackstep"), NULL); setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Step when seeking forward")), SETTING_VALUE(30), SETTING_RANGE(3, 60), SETTING_UNIT_CSTR("s"), SETTING_WRITE_INT(&video_settings.seek_fwd_step), SETTING_STORE("videoplayback", "seekfwdstep"), NULL); setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Video buffer size")), SETTING_VALUE(48), SETTING_RANGE(16, gconf.max_video_buffer_size ?: 128), SETTING_UNIT_CSTR("MB"), SETTING_STORE("videoplayback", "videobuffersize"), SETTING_WRITE_INT(&video_settings.video_buffer_size), NULL); }
void torrent_settings_init(void) { prop_t *dir = setting_get_dir("general:filebrowse"); prop_t *s = settings_add_dir(dir, _p("BitTorrent"), NULL, NULL, NULL, "settings:bittorrent"); char defpath[1024]; int freespace = 10; #ifdef STOS freespace = 75; #endif snprintf(defpath, sizeof(defpath), "%s/bittorrentcache", gconf.cache_path); setting_create(SETTING_BOOL, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Enable bittorrent")), SETTING_MUTEX(&bittorrent_mutex), SETTING_WRITE_BOOL(&btg.btg_enabled), SETTING_VALUE(1), SETTING_STORE("bittorrent", "enable"), NULL); setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Max upload speed")), SETTING_MUTEX(&bittorrent_mutex), SETTING_CALLBACK(set_torrent_upload_speed, NULL), SETTING_VALUE(5), SETTING_RANGE(0, 100), SETTING_UNIT_CSTR("Mbit/s"), SETTING_STORE("bittorrent", "uploadspeed"), NULL); setting_create(SETTING_INT, s, SETTINGS_INITIAL_UPDATE, SETTING_TITLE(_p("Max usage of free space for caching torrents")), SETTING_MUTEX(&bittorrent_mutex), SETTING_CALLBACK(set_torrent_free_percentage, NULL), SETTING_VALUE(freespace), SETTING_RANGE(1, 90), SETTING_UNIT_CSTR("%"), SETTING_STORE("bittorrent", "freepercentage"), NULL); setting_create(SETTING_STRING, s, SETTINGS_INITIAL_UPDATE | SETTINGS_DIR, SETTING_TITLE(_p("Torrent cache path")), SETTING_MUTEX(&bittorrent_mutex), SETTING_CALLBACK(set_torrent_cache_path, NULL), SETTING_VALUE(defpath), SETTING_STORE("bittorrent", "path"), NULL); setting_create(SETTING_ACTION, s, 0, SETTING_TITLE(_p("Clear cache")), SETTING_MUTEX(&bittorrent_mutex), SETTING_CALLBACK(torrent_diskio_cache_clear, NULL), NULL); settings_create_separator(s, _p("Status")); btg.btg_torrent_status = prop_create_root(NULL); settings_create_info(s, NULL, btg.btg_torrent_status); btg.btg_disk_status = prop_create_root(NULL); settings_create_info(s, NULL, btg.btg_disk_status); allow_update = 1; torrent_diskio_scan(0); }
} /** * */ static void * libcec_init_thread(void *aux) { htsmsg_t *s = htsmsg_store_load("cec") ?: htsmsg_create_map(); prop_t *set; set = settings_add_dir(NULL, _p("TV Control"), "display", NULL, _p("Configure communications with your TV"), "settings:cec"); libcec_clear_configuration(&cec_config); cec_config.callbacks = &g_callbacks; snprintf(cec_config.strDeviceName, sizeof(cec_config.strDeviceName), "%s", APPNAMEUSER); cec_config.deviceTypes.types[0] = CEC_DEVICE_TYPE_RECORDING_DEVICE; conn = libcec_initialise(&cec_config); if(conn == NULL) { TRACE(TRACE_ERROR, "CEC", "Unable to init libcec");
static void init_dev_settings(void) { htsmsg_t *store; if((store = htsmsg_store_load("dev")) == NULL) store = htsmsg_create_map(); gconf.settings_dev = settings_add_dir(prop_create_root(NULL), _p("Developer settings"), NULL, NULL, _p("Settings useful for developers"), "settings:dev"); prop_t *r = setting_add(gconf.settings_dev, NULL, "info", 0); prop_set_string(prop_create(r, "description"), "Settings for developers. If you don't know what this is, don't touch it"); prop_t *t; t = prop_create_root(NULL); prop_set_string(t, "Experimental features (Use at own risk)"); settings_create_bool(gconf.settings_dev, "experimental", t, 0, store, settings_generic_set_bool, &gconf.enable_experimental, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"dev"); t = prop_create_root(NULL); prop_set_string(t, "Enable binrelpace"); settings_create_bool(gconf.settings_dev, "binreplace", t, 0, store, settings_generic_set_bool, &gconf.enable_bin_replace, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"dev"); t = prop_create_root(NULL); prop_set_string(t, "Enable omnigrade"); settings_create_bool(gconf.settings_dev, "omnigrade", t, 0, store, settings_generic_set_bool, &gconf.enable_omnigrade, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"dev"); t = prop_create_root(NULL); prop_set_string(t, "Debug all HTTP requests"); settings_create_bool(gconf.settings_dev, "httpdebug", t, 0, store, settings_generic_set_bool, &gconf.enable_http_debug, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"dev"); t = prop_create_root(NULL); prop_set_string(t, "Disable HTTP connection reuse"); settings_create_bool(gconf.settings_dev, "nohttpreuse", t, 0, store, settings_generic_set_bool, &gconf.disable_http_reuse, SETTINGS_INITIAL_UPDATE, NULL, settings_generic_save_settings, (void *)"dev"); }
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); }