void ui_restore_view(void) { if(old_view_type<DB_DVBS_INVALID_VIEW) { if(old_view_type == DB_DVBS_FAV_TV ||old_view_type == DB_DVBS_FAV_RADIO) { ui_dbase_set_pg_view_id(ui_dbase_create_view((dvbs_view_t)old_view_type, old_group - DB_DVBS_MAX_SAT - 1, NULL)); } else { ui_dbase_set_pg_view_id(ui_dbase_create_view((dvbs_view_t)old_view_type, old_group_context, NULL)); } #if 0 if (0 == db_dvbs_get_count(ui_dbase_create_view(get_pg_type()?DB_DVBS_ALL_TV:DB_DVBS_ALL_RADIO, 0, NULL))) { if (0 == db_dvbs_get_count(ui_dbase_create_view(get_pg_type()?DB_DVBS_ALL_RADIO:DB_DVBS_ALL_TV, 0, NULL))) { old_view_type = DB_DVBS_INVALID_VIEW; old_group = 0; old_mode = CURN_MODE_NONE; } else { old_view_type = DB_DVBS_ALL_RADIO; old_group = 0; old_mode = CURN_MODE_RADIO; } } #endif } else { ui_dbase_set_pg_view_id(ui_dbase_create_view(DB_DVBS_ALL_TV, 0, NULL)); } sys_status_set_curn_group((u16)old_group); sys_status_set_curn_prog_mode(old_mode); sys_status_save(); }
char *get_pg_type(json_typeid type, char *value) { json_typeid arr_elt_type; char *arr_elt_pg_type; char *buffer; jsmntok_t *tokens; assert(value); arr_elt_type = NONE; switch (type) { case STRING: return STRING_TYPE; case INTEGER: return INTEGER_TYPE; case FLOAT: return FLOAT_TYPE; case BOOLEAN: return BOOLEAN_TYPE; case DOCUMENT: return DOCUMENT_TYPE; case ARRAY: tokens = jsmn_tokenize(value); assert(tokens->type == JSMN_ARRAY); arr_elt_type = jsmn_get_type(tokens + 1, value); arr_elt_pg_type = get_pg_type(arr_elt_type, jsmntok_to_str(tokens + 1, value)); buffer = (char*)calloc(1, strlen(arr_elt_pg_type) + 2 + 1); sprintf(buffer, "%s%s", arr_elt_pg_type, ARRAY_TYPE); return buffer; case NONE: return NULL_TYPE; default: fprintf(stderr, "document: invalid type id on serialization"); } }