コード例 #1
0
ファイル: settings.c プロジェクト: BurntBrunch/rockbox-fft
bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len)
{
    switch (settings[i].flags&F_T_MASK)
    {
        case F_T_CUSTOM:
            settings[i].custom_setting->write_to_cfg(settings[i].setting,
                                                     buf, buf_len);
            break;
        case F_T_INT:
        case F_T_UINT:
#ifdef HAVE_LCD_COLOR
            if (settings[i].flags&F_RGB)
            {
                int colour = *(int*)settings[i].setting;
                snprintf(buf,buf_len,"%02x%02x%02x",
                            (int)RGB_UNPACK_RED(colour),
                            (int)RGB_UNPACK_GREEN(colour),
                            (int)RGB_UNPACK_BLUE(colour));
            }
            else
#endif
            if (settings[i].cfg_vals == NULL)
            {
                snprintf(buf,buf_len,"%d",*(int*)settings[i].setting);
            }
            else
            {
                if (cfg_int_to_string(i, *(int*)settings[i].setting,
                                    buf, buf_len) == false)
                {
                    snprintf(buf,buf_len,"%d",*(int*)settings[i].setting);
                }
                else
                    return false;
            }
            break;
        case F_T_BOOL:
            cfg_int_to_string(i,
                    *(bool*)settings[i].setting==false?0:1, buf, buf_len);
            break;
        case F_T_CHARPTR:
        case F_T_UCHARPTR:
            if (((char*)settings[i].setting)[0]
                && settings[i].filename_setting->prefix)
            {
                snprintf(buf,buf_len,"%s%s%s",
                    settings[i].filename_setting->prefix,
                    (char*)settings[i].setting,
                    settings[i].filename_setting->suffix);
            }
            else strlcpy(buf,(char*)settings[i].setting,
                         settings[i].filename_setting->max_len);
            break;
    } /* switch () */
    return true;
}
コード例 #2
0
ファイル: option_select.c プロジェクト: eisnerd/rockbox
const char *option_get_valuestring(const struct settings_list *setting, 
                                   char *buffer, int buf_len,
                                   intptr_t temp_var)
{
    const char* str = buffer;
    if ((setting->flags & F_BOOL_SETTING) == F_BOOL_SETTING)
    {
        bool val = (bool)temp_var;
        strlcpy(buffer, str(val? setting->bool_setting->lang_yes :
                                 setting->bool_setting->lang_no), buf_len);
    }
#if 0 /* probably dont need this one */
    else if ((setting->flags & F_FILENAME) == F_FILENAME)
    {
        struct filename_setting *info = setting->filename_setting;
        snprintf(buffer, buf_len, "%s%s%s", info->prefix,
                 (char*)temp_var, info->suffix);
    }
#endif
    else if (((setting->flags & F_INT_SETTING) == F_INT_SETTING) ||
             ((setting->flags & F_TABLE_SETTING) == F_TABLE_SETTING))
    {
        const struct int_setting *int_info = setting->int_setting;
        const struct table_setting *tbl_info = setting->table_setting;
        const char *unit;
        const char* (*formatter)(char*, size_t, int, const char*);
        if ((setting->flags & F_INT_SETTING) == F_INT_SETTING)
        {
            formatter = int_info->formatter;
            unit = unit_strings[int_info->unit];
        }
        else
        {
            formatter = tbl_info->formatter;
            unit = unit_strings[tbl_info->unit];
        }
        if (formatter)
            str = formatter(buffer, buf_len, (int)temp_var, unit);
        else
            snprintf(buffer, buf_len, "%d %s", (int)temp_var, unit?unit:"");
    }
    else if ((setting->flags & F_T_SOUND) == F_T_SOUND)
    {
        char sign = ' ';
        const char *unit = sound_unit(setting->sound_setting->setting);
        int val = sound_val2phys(setting->sound_setting->setting, (int)temp_var);
        if (sound_numdecimals(setting->sound_setting->setting))
        {
            int integer, dec;
            if(val < 0)
            {
                sign = '-';
                val = abs(val);
            }
            integer = val / 10;
            dec = val % 10;
            snprintf(buffer, buf_len, "%c%d.%d %s", sign, integer, dec, unit);
        }
        else
            snprintf(buffer, buf_len, "%d %s", val, unit);
    }
    else if ((setting->flags & F_CHOICE_SETTING) == F_CHOICE_SETTING)
    {
        if (setting->flags & F_CHOICETALKS)
        {
            int setting_id;
            const struct choice_setting *info = setting->choice_setting;
            if (info->talks[(int)temp_var] < LANG_LAST_INDEX_IN_ARRAY)
            {
                strlcpy(buffer, str(info->talks[(int)temp_var]), buf_len);
            }
            else
            {
                find_setting(setting->setting, &setting_id);
                cfg_int_to_string(setting_id, (int)temp_var, buffer, buf_len);
            }
        }
        else
        {
            int value = (int)temp_var;
            char *val = P2STR(setting->choice_setting->desc[value]);
            strlcpy(buffer, val, buf_len);
        }
    }
    return str;
}
コード例 #3
0
ファイル: settings.c プロジェクト: TheKeyboardist/interface
void settings_add_to_config(config_t *config)
{

    int i;

    char value[256];

    config_setting_t *root;
    config_setting_t *ps2;
    config_setting_t *group;

    config_setting_t *setting;

    if (config == NULL)
    {
        return;
    }

    root = config_root_setting(config);

    ps2 = config_setting_add(root,"PS2", CONFIG_TYPE_GROUP);
    {

        group = config_setting_add(ps2,"Home",CONFIG_TYPE_GROUP);
        {

            setting = config_setting_add(group,"Partition",CONFIG_TYPE_STRING);
            config_setting_set_string(setting,settings.home.partition);

            setting = config_setting_add(group,"Directory",CONFIG_TYPE_STRING);
            config_setting_set_string(setting,settings.home.directory);

        }

        group = config_setting_add(ps2,"Display", CONFIG_TYPE_GROUP);
        {


            setting = config_setting_add(group,"OffsetX",CONFIG_TYPE_STRING);
            cfg_int_to_string(value,settings.display.x);
            config_setting_set_string(setting,value);

            setting = config_setting_add(group,"OffsetY",CONFIG_TYPE_STRING);
            cfg_int_to_string(value,settings.display.y);
            config_setting_set_string(setting,value);

            setting = config_setting_add(group,"Mode",CONFIG_TYPE_STRING);
            cfg_int_to_string(value,settings.display.mode);
            config_setting_set_string(setting,value);

            setting = config_setting_add(group,"Interlace",CONFIG_TYPE_BOOL);
            config_setting_set_bool(setting,settings.display.interlace);

        }

        group = config_setting_add(ps2,"Sound",CONFIG_TYPE_GROUP);
        {

            setting = config_setting_add(group,"Stereo",CONFIG_TYPE_BOOL);
            config_setting_set_bool(setting,settings.sound.stereo);

            setting = config_setting_add(group,"Volume",CONFIG_TYPE_STRING);
            cfg_int_to_string(value,settings.sound.volume);
            config_setting_set_string(setting,value);

        }

        group = config_setting_add(ps2,"Font",CONFIG_TYPE_GROUP);
        {

            setting = config_setting_add(group,"Height",CONFIG_TYPE_STRING);
            cfg_int_to_string(value,settings.font.height);
            config_setting_set_string(setting,value);

            setting = config_setting_add(group,"Color",CONFIG_TYPE_ARRAY);
            for (i = 0; i < 4; i++)
            {
                cfg_int_to_string(value,settings.font.color[i]);
                config_setting_set_string_elem(setting,-1,value);
            }

            setting = config_setting_add(group,"Highlight",CONFIG_TYPE_ARRAY);
            for (i = 0; i < 4; i++)
            {
                cfg_int_to_string(value,settings.font.highlight[i]);
                config_setting_set_string_elem(setting,-1,value);
            }
        }

        group = config_setting_add(ps2,"Input",CONFIG_TYPE_GROUP);
        {

            setting = config_setting_add(group,"Port",CONFIG_TYPE_STRING);
            cfg_int_to_string(value,settings.input.port);
            config_setting_set_string(setting,value);

            setting = config_setting_add(group,"Slot",CONFIG_TYPE_STRING);
            cfg_int_to_string(value,settings.input.slot);
            config_setting_set_string(setting,value);

            setting = config_setting_add(group,"Confirm",CONFIG_TYPE_STRING);
            if (settings.input.confirm == PAD_CROSS)
            {
                config_setting_set_string(setting,"X");
            }
            else
            {
                config_setting_set_string(setting,"O");
            }

        }

        group = config_setting_add(ps2,"Devices",CONFIG_TYPE_GROUP);
        {

            setting = config_setting_add(group,"Mass",CONFIG_TYPE_BOOL);
            config_setting_set_bool(setting,settings.devices.mass);

            setting = config_setting_add(group,"HDD",CONFIG_TYPE_BOOL);
            config_setting_set_bool(setting,settings.devices.hdd);

        }

    }

}