Пример #1
0
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);
  }
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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);
}
Пример #5
0
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);
}
Пример #6
0
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"));
}
Пример #7
0
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();
}
Пример #8
0
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
}
Пример #9
0
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");


}
Пример #10
0
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");
}
Пример #11
0
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);
}
Пример #12
0
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);
}
Пример #13
0
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);
}
Пример #14
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");
Пример #15
0
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");


}
Пример #16
0
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);
}
Пример #17
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");
}
Пример #18
0
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);
}