⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 settings.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
📖 第 1 页 / 共 5 页
字号:
                options[global_settings.rec_channels]);    }    fprintf(fd,            "rec mic gain: %d\r\nrec left gain: %d\r\nrec right gain: %d\r\n",            global_settings.rec_mic_gain,            global_settings.rec_left_gain,            global_settings.rec_right_gain);    fprintf(fd, "editable recordings: %s\r\n",            boolopt[global_settings.rec_editable]);    fprintf(fd, "prerecording time: %d\r\n",            global_settings.rec_prerecord_time);    {        static char* options[] = {rec_base_directory, "current"};        fprintf(fd, "rec directory: %s\r\n",                options[global_settings.rec_directory]);    }#endif    fprintf(fd, "#\r\n# Bookmarking\r\n#\r\n");    {        fprintf(fd, "autoload bookmarks: %s\r\n",                triopt[global_settings.autoloadbookmark]);    }    {        static char* options[] = {"off", "on", "ask","recent only - on", "recent only - ask"};        fprintf(fd, "autocreate bookmarks: %s\r\n",                options[global_settings.autocreatebookmark]);    }    {        static char* options[] = {"off", "on", "unique only"};        fprintf(fd, "UseMRB: %s\r\n", options[global_settings.usemrb]);    }    fprintf(fd, "#\r\n# Playlists\r\n#\r\n");    {        fprintf(fd, "recursive directory insert: %s\r\n",                triopt[global_settings.recursive_dir_insert]);    }    fprintf(fd, "#\r\n# Playlist viewer\r\n#\r\n");    {        fprintf(fd, "playlist viewer icons: %s\r\n",            boolopt[global_settings.playlist_viewer_icons]);        fprintf(fd, "playlist viewer indices: %s\r\n",            boolopt[global_settings.playlist_viewer_indices]);        {            static char* options[] = {"track name", "full path"};            fprintf(fd, "playlist viewer track display: %s\r\n",                options[global_settings.playlist_viewer_track_display]);        }    }    close(fd);    lcd_clear_display();    lcd_puts(0,0,str(LANG_SETTINGS_SAVED1));    lcd_puts(0,1,str(LANG_SETTINGS_SAVED2));    lcd_update();    sleep(HZ);    return true;}/* * reset all settings to their default value  */void settings_reset(void) {            DEBUGF( "settings_reset()\n" );    global_settings.volume      = mpeg_sound_default(SOUND_VOLUME);    global_settings.balance     = mpeg_sound_default(SOUND_BALANCE);    global_settings.bass        = mpeg_sound_default(SOUND_BASS);    global_settings.treble      = mpeg_sound_default(SOUND_TREBLE);    global_settings.loudness    = mpeg_sound_default(SOUND_LOUDNESS);    global_settings.bass_boost  = mpeg_sound_default(SOUND_SUPERBASS);    global_settings.avc         = mpeg_sound_default(SOUND_AVC);    global_settings.channel_config = mpeg_sound_default(SOUND_CHANNELS);    global_settings.rec_quality = 5;    global_settings.rec_source = 0;    /* 0=mic */    global_settings.rec_frequency = 0; /* 0=44.1kHz */    global_settings.rec_channels = 0;  /* 0=Stereo */    global_settings.rec_mic_gain = 8;    global_settings.rec_left_gain = 2; /* 0dB */    global_settings.rec_right_gain = 2; /* 0dB */    global_settings.rec_editable = false;    global_settings.rec_prerecord_time = 0;    global_settings.rec_directory = 0; /* rec_base_directory */    global_settings.resume      = RESUME_ASK;    global_settings.contrast    = lcd_default_contrast();    global_settings.invert      = DEFAULT_INVERT_SETTING;    global_settings.flip_display= false;    global_settings.poweroff    = DEFAULT_POWEROFF_SETTING;    global_settings.backlight_timeout   = DEFAULT_BACKLIGHT_TIMEOUT_SETTING;    global_settings.invert_cursor = DEFAULT_INVERT_CURSOR_SETTING;    global_settings.backlight_on_when_charging   =         DEFAULT_BACKLIGHT_ON_WHEN_CHARGING_SETTING;#ifdef HAVE_LIION    global_settings.battery_capacity = 2200; /* mAh */#else    global_settings.battery_capacity = 1500; /* mAh */#endif    global_settings.trickle_charge = true;    global_settings.dirfilter   = SHOW_MUSIC;    global_settings.sort_case   = false;    global_settings.statusbar   = true;    global_settings.scrollbar   = true;    global_settings.repeat_mode = REPEAT_ALL;    global_settings.playlist_shuffle = false;    global_settings.discharge    = 0;    global_settings.timeformat   = 0;    global_settings.volume_type  = 0;    global_settings.battery_type = 0;    global_settings.scroll_speed = 8;    global_settings.bidir_limit  = 50;#ifdef HAVE_LCD_CHARCELLS    global_settings.jump_scroll  = 0;    global_settings.jump_scroll_delay  = 50;#endif        global_settings.scroll_delay = 100;    global_settings.scroll_step  = 6;    global_settings.ff_rewind_min_step = DEFAULT_FF_REWIND_MIN_STEP;    global_settings.ff_rewind_accel = DEFAULT_FF_REWIND_ACCEL_SETTING;    global_settings.resume_index = -1;    global_settings.resume_first_index = 0;    global_settings.resume_offset = -1;    global_settings.resume_seed = -1;    global_settings.disk_spindown = 5;    global_settings.disk_poweroff = false;    global_settings.buffer_margin = 0;    global_settings.browse_current = false;    global_settings.play_selected = true;    global_settings.peak_meter_release = 8;    global_settings.peak_meter_hold = 3;    global_settings.peak_meter_clip_hold = 16;    global_settings.peak_meter_dbfs = true;    global_settings.peak_meter_min = 60;    global_settings.peak_meter_max = 0;    global_settings.peak_meter_performance = false;    global_settings.wps_file[0] = 0;    global_settings.font_file[0] = 0;    global_settings.lang_file[0] = 0;    global_settings.runtime = 0;    global_settings.topruntime = 0;    global_settings.autocreatebookmark = BOOKMARK_NO;    global_settings.autoloadbookmark = BOOKMARK_NO;    global_settings.usemrb = BOOKMARK_NO;    global_settings.fade_on_stop = true;    global_settings.caption_backlight = false;    global_settings.car_adapter_mode = false;    global_settings.max_files_in_dir = 400;    global_settings.max_files_in_playlist = 10000;    global_settings.show_icons = true;    global_settings.recursive_dir_insert = RECURSE_OFF;    global_settings.line_in = false;    global_settings.playlist_viewer_icons = true;    global_settings.playlist_viewer_indices = true;    global_settings.playlist_viewer_track_display = 0;}bool set_bool(char* string, bool* variable ){    return set_bool_options(string, variable, str(LANG_SET_BOOL_YES),                             str(LANG_SET_BOOL_NO), NULL);}/* wrapper to convert from int param to bool param in set_option */static void (*boolfunction)(bool);void bool_funcwrapper(int value){    if (value)        boolfunction(true);    else        boolfunction(false);}bool set_bool_options(char* string, bool* variable,                      char* yes_str, char* no_str, void (*function)(bool)){    char* names[] = { no_str, yes_str };    bool result;    boolfunction = function;    result = set_option(string, variable, BOOL, names, 2,                         function ? bool_funcwrapper : NULL);    return result;}bool set_int(char* string,              char* unit,             int* variable,             void (*function)(int),             int step,             int min,             int max ){    bool done = false;    int button;    int org_value=*variable;#ifdef HAVE_LCD_BITMAP    if(global_settings.statusbar)        lcd_setmargins(0, STATUSBAR_HEIGHT);    else        lcd_setmargins(0, 0);#endif    lcd_clear_display();    lcd_puts_scroll(0, 0, string);    while (!done) {        char str[32];        snprintf(str,sizeof str,"%d %s  ", *variable, unit);        lcd_puts(0, 1, str);#ifdef HAVE_LCD_BITMAP        status_draw(true);#endif        lcd_update();        button = button_get_w_tmo(HZ/2);        switch(button) {#ifdef HAVE_RECORDER_KEYPAD            case BUTTON_UP:            case BUTTON_UP | BUTTON_REPEAT:#else            case BUTTON_RIGHT:            case BUTTON_RIGHT | BUTTON_REPEAT:#endif                *variable += step;                break;#ifdef HAVE_RECORDER_KEYPAD            case BUTTON_DOWN:            case BUTTON_DOWN | BUTTON_REPEAT:#else            case BUTTON_LEFT:            case BUTTON_LEFT | BUTTON_REPEAT:#endif                *variable -= step;                break;#ifdef HAVE_RECORDER_KEYPAD            case BUTTON_LEFT:            case BUTTON_PLAY:#else            case BUTTON_PLAY:#endif                done = true;                break;#ifdef HAVE_RECORDER_KEYPAD            case BUTTON_OFF:#else            case BUTTON_STOP:            case BUTTON_MENU:#endif                if (*variable != org_value) {                    *variable=org_value;                    lcd_stop_scroll();                    lcd_puts(0, 0, str(LANG_MENU_SETTING_CANCEL));                    lcd_update();                    sleep(HZ/2);                }                done = true;                break;            case SYS_USB_CONNECTED:                usb_screen();                return true;        }        if(*variable > max )            *variable = max;        if(*variable < min )            *variable = min;        if ( function && button != BUTTON_NONE)            function(*variable);    }    lcd_stop_scroll();    return false;}/* NOTE: the 'type' parameter specifies the actual type of the variable   that 'variable' points to. not the value within. Only variables with   type 'bool' should use parameter BOOL.   The type separation is necessary since int and bool are fundamentally   different and bit-incompatible types and can not share the same access   code. */bool set_option(char* string, void* variable, enum optiontype type,                char* options[], int numoptions, void (*function)(int)){    bool done = false;    int button;    int* intvar = (int*)variable;    bool* boolvar = (bool*)variable;    int oldval = 0;    if (type==INT)        oldval=*intvar;    else        oldval=*boolvar;#ifdef HAVE_LCD_BITMAP    if(global_settings.statusbar)        lcd_setmargins(0, STATUSBAR_HEIGHT);    else        lcd_setmargins(0, 0);#endif    lcd_clear_display();    lcd_puts_scroll(0, 0, string);    while ( !done ) {        lcd_puts(0, 1, options[type==INT ? *intvar : (int)*boolvar]);#ifdef HAVE_LCD_BITMAP        status_draw(true);#endif        lcd_update();        button = button_get_w_tmo(HZ/2);        switch (button) {#ifdef HAVE_RECORDER_KEYPAD            case BUTTON_UP:            case BUTTON_UP | BUTTON_REPEAT:#else            case BUTTON_RIGHT:            case BUTTON_RIGHT | BUTTON_REPEAT:#endif                if (type == INT) {                    if ( *intvar < (numoptions-1) )                        (*intvar)++;                    else                        (*intvar) -= (numoptions-1);                }                else                    *boolvar = !*boolvar;                break;#ifdef HAVE_RECORDER_KEYPAD            case BUTTON_DOWN:            case BUTTON_DOWN | BUTTON_REPEAT:#else            case BUTTON_LEFT:            case BUTTON_LEFT | BUTTON_REPEAT:#endif                if (type == INT) {                    if ( *intvar > 0 )                        (*intvar)--;                    else                        (*intvar) += (numoptions-1);                }                else                    *boolvar = !*boolvar;               

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -