setting_t * settings_create_int(prop_t *parent, const char *id, prop_t *title, int initial, htsmsg_t *store, int min, int max, int step, prop_callback_int_t *cb, void *opaque, int flags, const char *unit, prop_courier_t *pc, settings_saver_t *saver, void *saver_opaque) { setting_t *s = setting_create_leaf(parent, title, "integer", "value", flags); prop_sub_t *sub; s->s_id = strdup(id); s->s_callback = cb; s->s_opaque = opaque; if(store != NULL) initial = htsmsg_get_s32_or_default(store, id, initial); prop_set_int_clipping_range(s->s_val, min, max); prop_set_int(prop_create(s->s_root, "min"), min); prop_set_int(prop_create(s->s_root, "max"), max); prop_set_int(prop_create(s->s_root, "step"), step); prop_set_string(prop_create(s->s_root, "unit"), unit); prop_set_int(s->s_val, initial); s->s_min = min; s->s_max = max; if(flags & SETTINGS_INITIAL_UPDATE) settings_int_callback(s, initial); sub = prop_subscribe(PROP_SUB_NO_INITIAL_UPDATE, PROP_TAG_CALLBACK_INT, settings_int_callback, s, PROP_TAG_ROOT, s->s_val, PROP_TAG_COURIER, pc, NULL); s->s_sub = sub; s->s_store = store; s->s_saver = saver; s->s_saver_opaque = saver_opaque; return s; }
static void init_sleeptimer(prop_t *rc) { const int maxtime = 180; sleeptime_prop = prop_create(rc, "sleepTime"); prop_set_int(sleeptime_prop, 60); prop_set_int_clipping_range(sleeptime_prop, 0, maxtime); prop_set(rc, "sleepTimeMax", PROP_SET_INT, maxtime); prop_set(rc, "sleepTimeStep", PROP_SET_INT, 5); sleeptime_sub = prop_subscribe(0, PROP_TAG_CALLBACK_INT, update_sleeptime, NULL, PROP_TAG_ROOT, sleeptime_prop, NULL); prop_subscribe(PROP_SUB_NO_INITIAL_UPDATE, PROP_TAG_NAME("global", "runcontrol", "sleepTimer"), PROP_TAG_CALLBACK_INT, update_sleeptimer, NULL, NULL); }