diff options
-rw-r--r-- | .gitignore | 74 | ||||
-rw-r--r-- | apps/SOURCES | 2 | ||||
-rw-r--r-- | apps/action.c | 113 | ||||
-rw-r--r-- | apps/action.h | 11 | ||||
-rw-r--r-- | apps/alarm_menu.c | 161 | ||||
-rw-r--r-- | apps/buffering.c | 109 | ||||
-rw-r--r-- | apps/buffering.h | 7 | ||||
-rw-r--r-- | apps/core_keymap.c | 146 | ||||
-rw-r--r-- | apps/core_keymap.h | 72 | ||||
-rw-r--r-- | apps/cuesheet.c | 101 | ||||
-rw-r--r-- | apps/debug_menu.c | 143 | ||||
-rw-r--r-- | apps/features.txt | 4 | ||||
-rw-r--r-- | apps/filetree.c | 83 | ||||
-rw-r--r-- | apps/filetypes.c | 5 | ||||
-rw-r--r-- | apps/gui/bitmap/list.c | 176 | ||||
-rw-r--r-- | apps/gui/folder_select.c | 2 | ||||
-rw-r--r-- | apps/gui/list.c | 26 | ||||
-rw-r--r-- | apps/gui/list.h | 53 | ||||
-rw-r--r-- | apps/gui/option_select.c | 62 | ||||
-rw-r--r-- | apps/gui/option_select.h | 9 | ||||
-rw-r--r-- | apps/gui/quickscreen.c | 24 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_backdrops.c | 18 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_engine.c | 33 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_engine.h | 2 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 245 | ||||
-rw-r--r-- | apps/gui/statusbar-skinned.c | 7 | ||||
-rw-r--r-- | apps/gui/statusbar-skinned.h | 2 | ||||
-rw-r--r-- | apps/gui/statusbar.c | 12 | ||||
-rw-r--r-- | apps/gui/statusbar.h | 3 | ||||
-rw-r--r-- | apps/gui/viewport.c | 2 | ||||
-rw-r--r-- | apps/gui/wps.c | 4 | ||||
-rw-r--r-- | apps/iap/iap-core.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-agptekrocker.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-c200.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-clip.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-creativezv.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-creativezvm.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-e200.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-erosq.c | 4 | ||||
-rw-r--r-- | apps/keymaps/keymap-fiiom3k.c | 45 | ||||
-rw-r--r-- | apps/keymaps/keymap-fiiom3klinux.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-fuze.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-fuzeplus.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-gigabeat-s.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-gigabeat.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-h10.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-h1x0_h3x0.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-hdd1630.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-hdd6330.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-hm60x.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-hm801.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-ihifi.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-ihifi770.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-ihifi800.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-m200.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-ma.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-meizu-m6sl.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-mini2440.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-mr100.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-mr500.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-nwz.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-nwza860.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-sa9200.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-touchscreen.c | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-xduoox20.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-xduoox3.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-xduoox3ii.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-yh8xx_yh9xx.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-zen.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-zenxfi3.c | 1 | ||||
-rw-r--r-- | apps/lang/arabic.lang | 21 | ||||
-rw-r--r-- | apps/lang/basque.lang | 19 | ||||
-rw-r--r-- | apps/lang/bulgarian.lang | 23 | ||||
-rw-r--r-- | apps/lang/catala.lang | 19 | ||||
-rw-r--r-- | apps/lang/chinese-simp.lang | 921 | ||||
-rw-r--r-- | apps/lang/chinese-trad.lang | 3400 | ||||
-rw-r--r-- | apps/lang/czech.lang | 30 | ||||
-rw-r--r-- | apps/lang/dansk.lang | 19 | ||||
-rw-r--r-- | apps/lang/deutsch.lang | 23 | ||||
-rw-r--r-- | apps/lang/english-us.lang | 106 | ||||
-rw-r--r-- | apps/lang/english.lang | 422 | ||||
-rw-r--r-- | apps/lang/espanol.lang | 19 | ||||
-rw-r--r-- | apps/lang/finnish.lang | 19 | ||||
-rw-r--r-- | apps/lang/francais.lang | 23 | ||||
-rw-r--r-- | apps/lang/galego.lang | 19 | ||||
-rw-r--r-- | apps/lang/greek.lang | 23 | ||||
-rw-r--r-- | apps/lang/hebrew.lang | 21 | ||||
-rw-r--r-- | apps/lang/hrvatski.lang | 19 | ||||
-rw-r--r-- | apps/lang/italiano.lang | 611 | ||||
-rw-r--r-- | apps/lang/japanese.lang | 23 | ||||
-rw-r--r-- | apps/lang/korean.lang | 19 | ||||
-rw-r--r-- | apps/lang/latviesu.lang | 17 | ||||
-rw-r--r-- | apps/lang/lietuviu.lang | 19 | ||||
-rw-r--r-- | apps/lang/magyar.lang | 19 | ||||
-rw-r--r-- | apps/lang/nederlands.lang | 276 | ||||
-rw-r--r-- | apps/lang/norsk-nynorsk.lang | 19 | ||||
-rw-r--r-- | apps/lang/norsk.lang | 23 | ||||
-rw-r--r-- | apps/lang/polski.lang | 291 | ||||
-rw-r--r-- | apps/lang/portugues-brasileiro.lang | 19 | ||||
-rw-r--r-- | apps/lang/portugues.lang | 21 | ||||
-rw-r--r-- | apps/lang/romaneste.lang | 19 | ||||
-rw-r--r-- | apps/lang/russian.lang | 30 | ||||
-rw-r--r-- | apps/lang/slovak.lang | 947 | ||||
-rw-r--r-- | apps/lang/slovenscina.lang | 19 | ||||
-rw-r--r-- | apps/lang/srpski.lang | 32 | ||||
-rw-r--r-- | apps/lang/svenska.lang | 21 | ||||
-rw-r--r-- | apps/lang/tagalog.lang | 19 | ||||
-rw-r--r-- | apps/lang/thai.lang | 19 | ||||
-rw-r--r-- | apps/lang/turkce.lang | 6762 | ||||
-rw-r--r-- | apps/lang/ukrainian.lang | 19 | ||||
-rw-r--r-- | apps/lang/vlaams.lang | 25 | ||||
-rw-r--r-- | apps/lang/walon.lang | 19 | ||||
-rw-r--r-- | apps/main.c | 17 | ||||
-rw-r--r-- | apps/menu.c | 2 | ||||
-rw-r--r-- | apps/menus/display_menu.c | 3 | ||||
-rw-r--r-- | apps/menus/playback_menu.c | 48 | ||||
-rw-r--r-- | apps/menus/playlist_menu.c | 7 | ||||
-rw-r--r-- | apps/menus/radio_menu.c | 6 | ||||
-rw-r--r-- | apps/menus/recording_menu.c | 4 | ||||
-rw-r--r-- | apps/menus/settings_menu.c | 21 | ||||
-rw-r--r-- | apps/menus/theme_menu.c | 19 | ||||
-rw-r--r-- | apps/menus/time_menu.c | 8 | ||||
-rw-r--r-- | apps/misc.c | 38 | ||||
-rw-r--r-- | apps/misc.h | 1 | ||||
-rw-r--r-- | apps/onplay.c | 329 | ||||
-rw-r--r-- | apps/onplay.h | 3 | ||||
-rw-r--r-- | apps/open_plugin.c | 2 | ||||
-rw-r--r-- | apps/pcmbuf.c | 2 | ||||
-rw-r--r-- | apps/playback.c | 93 | ||||
-rw-r--r-- | apps/playback.h | 3 | ||||
-rw-r--r-- | apps/playlist.c | 121 | ||||
-rw-r--r-- | apps/playlist_viewer.c | 32 | ||||
-rw-r--r-- | apps/plugin.c | 40 | ||||
-rw-r--r-- | apps/plugin.h | 20 | ||||
-rw-r--r-- | apps/plugins/CATEGORIES | 4 | ||||
-rw-r--r-- | apps/plugins/SOURCES | 8 | ||||
-rw-r--r-- | apps/plugins/SOURCES.app_build | 1 | ||||
-rw-r--r-- | apps/plugins/battery_bench.c | 18 | ||||
-rw-r--r-- | apps/plugins/chessbox/chessbox.c | 3 | ||||
-rw-r--r-- | apps/plugins/chopper.c | 25 | ||||
-rw-r--r-- | apps/plugins/credits.c | 26 | ||||
-rw-r--r-- | apps/plugins/imageviewer/gif/gif.c | 16 | ||||
-rw-r--r-- | apps/plugins/imageviewer/gif/gif_decoder.c | 45 | ||||
-rw-r--r-- | apps/plugins/imageviewer/gif/gif_decoder.h | 1 | ||||
-rw-r--r-- | apps/plugins/imageviewer/imageviewer.c | 36 | ||||
-rw-r--r-- | apps/plugins/imageviewer/imageviewer_button.h | 2 | ||||
-rw-r--r-- | apps/plugins/keyremap.c | 2131 | ||||
-rw-r--r-- | apps/plugins/lastfm_scrobbler.c | 617 | ||||
-rw-r--r-- | apps/plugins/lib/SOURCES | 1 | ||||
-rw-r--r-- | apps/plugins/lib/action_helper.h | 2 | ||||
-rwxr-xr-x | apps/plugins/lib/action_helper.pl | 2 | ||||
-rw-r--r-- | apps/plugins/lib/button_helper.h | 2 | ||||
-rwxr-xr-x | apps/plugins/lib/button_helper.pl | 5 | ||||
-rw-r--r-- | apps/plugins/lib/printcell_helper.c | 528 | ||||
-rw-r--r-- | apps/plugins/lib/printcell_helper.h | 45 | ||||
-rwxr-xr-x | apps/plugins/lua/rbdefines_helper.pl | 2 | ||||
-rw-r--r-- | apps/plugins/lua/rocklib.c | 1 | ||||
-rw-r--r-- | apps/plugins/mpegplayer/mpeg_misc.c | 1 | ||||
-rw-r--r-- | apps/plugins/multiboot_select.c | 346 | ||||
-rw-r--r-- | apps/plugins/pictureflow/pictureflow.c | 1118 | ||||
-rw-r--r-- | apps/plugins/plugin_crt0.c | 3 | ||||
-rw-r--r-- | apps/plugins/properties.c | 236 | ||||
-rw-r--r-- | apps/plugins/rb_info.c | 110 | ||||
-rw-r--r-- | apps/plugins/solitaire.c | 3 | ||||
-rw-r--r-- | apps/plugins/test_kbd.c | 46 | ||||
-rw-r--r-- | apps/plugins/viewers.config | 3 | ||||
-rw-r--r-- | apps/rbcodec_helpers.c | 10 | ||||
-rw-r--r-- | apps/recorder/albumart.c | 2 | ||||
-rw-r--r-- | apps/recorder/jpeg_load.c | 15 | ||||
-rw-r--r-- | apps/recorder/jpeg_load.h | 7 | ||||
-rw-r--r-- | apps/recorder/keyboard.c | 183 | ||||
-rw-r--r-- | apps/recorder/pcm_record.c | 55 | ||||
-rw-r--r-- | apps/recorder/peakmeter.c | 2 | ||||
-rw-r--r-- | apps/recorder/recording.c | 261 | ||||
-rw-r--r-- | apps/root_menu.c | 4 | ||||
-rw-r--r-- | apps/screens.c | 37 | ||||
-rw-r--r-- | apps/screens.h | 6 | ||||
-rw-r--r-- | apps/scrobbler.c | 287 | ||||
-rw-r--r-- | apps/settings.c | 3 | ||||
-rw-r--r-- | apps/settings.h | 35 | ||||
-rw-r--r-- | apps/settings_list.c | 52 | ||||
-rw-r--r-- | apps/shortcuts.c | 31 | ||||
-rw-r--r-- | apps/tagcache.c | 127 | ||||
-rw-r--r-- | apps/tagcache.h | 12 | ||||
-rw-r--r-- | apps/tagnavi.config | 8 | ||||
-rw-r--r-- | apps/tagtree.c | 106 | ||||
-rw-r--r-- | apps/talk.c | 9 | ||||
-rw-r--r-- | apps/tree.c | 8 | ||||
-rw-r--r-- | bootloader/SOURCES | 7 | ||||
-rw-r--r-- | bootloader/iaudio_coldfire.c | 6 | ||||
-rw-r--r-- | bootloader/iriver_h1x0.c | 4 | ||||
-rw-r--r-- | bootloader/iriver_h300.c | 4 | ||||
-rw-r--r-- | bootloader/mpio_hd200_hd300.c | 6 | ||||
-rw-r--r-- | bootloader/x1000.c | 501 | ||||
-rw-r--r-- | bootloader/x1000/boot.c | 252 | ||||
-rw-r--r-- | bootloader/x1000/gui.c | 237 | ||||
-rw-r--r-- | bootloader/x1000/install.c | 81 | ||||
-rw-r--r-- | bootloader/x1000/main.c | 99 | ||||
-rw-r--r-- | bootloader/x1000/recovery.c | 206 | ||||
-rw-r--r-- | bootloader/x1000/utils.c | 340 | ||||
-rw-r--r-- | bootloader/x1000/x1000bootloader.h | 203 | ||||
-rw-r--r-- | docs/CREDITS | 4 | ||||
-rw-r--r-- | docs/PLUGIN_API | 27 | ||||
-rw-r--r-- | firmware/SOURCES | 20 | ||||
-rw-r--r-- | firmware/asm/thread.h | 10 | ||||
-rw-r--r-- | firmware/backlight.c | 1 | ||||
-rw-r--r-- | firmware/buflib.c | 6 | ||||
-rw-r--r-- | firmware/common/dir.c | 93 | ||||
-rw-r--r-- | firmware/common/dircache.c | 13 | ||||
-rw-r--r-- | firmware/common/disk.c | 18 | ||||
-rw-r--r-- | firmware/common/file.c | 21 | ||||
-rw-r--r-- | firmware/common/file_internal.c | 108 | ||||
-rw-r--r-- | firmware/common/fileobj_mgr.c | 103 | ||||
-rw-r--r-- | firmware/common/inflate.c | 34 | ||||
-rw-r--r-- | firmware/common/multiboot.c | 113 | ||||
-rw-r--r-- | firmware/common/pathfuncs.c | 78 | ||||
-rw-r--r-- | firmware/common/rb-loader.c | 95 | ||||
-rw-r--r-- | firmware/common/rb_namespace.c | 341 | ||||
-rw-r--r-- | firmware/common/zip.c | 4 | ||||
-rw-r--r-- | firmware/drivers/audio/ak4376.c | 22 | ||||
-rw-r--r-- | firmware/drivers/audio/x1000-codec.c | 286 | ||||
-rw-r--r-- | firmware/drivers/axp-pmu.c | 202 | ||||
-rw-r--r-- | firmware/drivers/fat.c | 2 | ||||
-rw-r--r-- | firmware/drivers/lcd-1bit-vert.c | 1 | ||||
-rw-r--r-- | firmware/drivers/lcd-2bit-horz.c | 1 | ||||
-rw-r--r-- | firmware/drivers/lcd-2bit-vert.c | 1 | ||||
-rw-r--r-- | firmware/drivers/lcd-2bit-vi.c | 1 | ||||
-rw-r--r-- | firmware/drivers/lcd-bitmap-common.c | 34 | ||||
-rw-r--r-- | firmware/drivers/lcd-color-common.c | 19 | ||||
-rw-r--r-- | firmware/drivers/rds.c | 37 | ||||
-rw-r--r-- | firmware/drivers/tuner/si4700.c | 29 | ||||
-rw-r--r-- | firmware/export/ak4376.h | 8 | ||||
-rw-r--r-- | firmware/export/audiohw.h | 13 | ||||
-rw-r--r-- | firmware/export/axp-pmu.h | 6 | ||||
-rw-r--r-- | firmware/export/config.h | 17 | ||||
-rw-r--r-- | firmware/export/config/erosqnative.h | 13 | ||||
-rw-r--r-- | firmware/export/config/fiiom3k.h | 22 | ||||
-rw-r--r-- | firmware/export/config/gigabeats.h | 3 | ||||
-rw-r--r-- | firmware/export/config/sansaclipplus.h | 1 | ||||
-rw-r--r-- | firmware/export/config/sansaclipzip.h | 1 | ||||
-rw-r--r-- | firmware/export/config/sansae200.h | 1 | ||||
-rw-r--r-- | firmware/export/config/sansafuze.h | 1 | ||||
-rw-r--r-- | firmware/export/config/sansafuzeplus.h | 1 | ||||
-rw-r--r-- | firmware/export/config/sansafuzev2.h | 1 | ||||
-rw-r--r-- | firmware/export/config/shanlingq1.h | 13 | ||||
-rw-r--r-- | firmware/export/lcd.h | 11 | ||||
-rw-r--r-- | firmware/export/linuxboot.h | 192 | ||||
-rw-r--r-- | firmware/export/mi4-loader.h | 22 | ||||
-rw-r--r-- | firmware/export/multiboot.h | 30 | ||||
-rw-r--r-- | firmware/export/mv.h | 4 | ||||
-rw-r--r-- | firmware/export/pathfuncs.h | 7 | ||||
-rw-r--r-- | firmware/export/powermgmt.h | 20 | ||||
-rw-r--r-- | firmware/export/rbpaths.h | 3 | ||||
-rw-r--r-- | firmware/export/screendump.h | 14 | ||||
-rw-r--r-- | firmware/export/si4700.h | 8 | ||||
-rw-r--r-- | firmware/export/system.h | 4 | ||||
-rw-r--r-- | firmware/export/x1000-codec.h | 184 | ||||
-rw-r--r-- | firmware/export/x1000.h | 60 | ||||
-rw-r--r-- | firmware/include/buflib.h | 6 | ||||
-rw-r--r-- | firmware/include/dircache_redirect.h | 69 | ||||
-rw-r--r-- | firmware/include/file_internal.h | 32 | ||||
-rw-r--r-- | firmware/include/fileobj_mgr.h | 5 | ||||
-rw-r--r-- | firmware/include/fs_defines.h | 6 | ||||
-rw-r--r-- | firmware/include/inflate.h | 24 | ||||
-rw-r--r-- | firmware/include/rb-loader.h | 20 | ||||
-rw-r--r-- | firmware/include/rb_namespace.h | 79 | ||||
-rw-r--r-- | firmware/kernel/include/mutex.h | 5 | ||||
-rw-r--r-- | firmware/kernel/include/queue.h | 3 | ||||
-rw-r--r-- | firmware/kernel/pthread/corelock.c | 18 | ||||
-rw-r--r-- | firmware/kernel/pthread/mutex.c | 21 | ||||
-rw-r--r-- | firmware/kernel/pthread/thread.c | 204 | ||||
-rw-r--r-- | firmware/linuxboot.c | 336 | ||||
-rw-r--r-- | firmware/powermgmt.c | 616 | ||||
-rw-r--r-- | firmware/rolo.c | 17 | ||||
-rw-r--r-- | firmware/target/arm/as3525/lcd-ssd1303.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx233/creative-zen/lcd-zenmozaic.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/imx233/creative-zen/lcd-zenv.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx233/creative-zen/lcd-zenxfistyle.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx233/creative-zenxfi2/lcd-zenxfi2.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx233/creative-zenxfi3/lcd-zenxfi3.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx233/debug-imx233.c | 6 | ||||
-rw-r--r-- | firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx233/sony-nwz/lcd-nwze360.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx233/sony-nwz/lcd-nwze370.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/imx31/gigabeat-s/fmradio-i2c-gigabeat-s.c | 49 | ||||
-rw-r--r-- | firmware/target/arm/ipod/lcd-gray.c | 9 | ||||
-rw-r--r-- | firmware/target/arm/lcd-ssd1815.c | 6 | ||||
-rw-r--r-- | firmware/target/arm/olympus/mrobe-100/lcd-mr100.c | 6 | ||||
-rw-r--r-- | firmware/target/arm/pp/mi4-loader.c | 89 | ||||
-rw-r--r-- | firmware/target/arm/rk27xx/lcdif-rk27xx.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/s5l8700/debug-s5l8700.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/s5l8700/yps3/lcd-yps3.c | 11 | ||||
-rw-r--r-- | firmware/target/arm/s5l8702/debug-s5l8702.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/samsung/yh920/lcd-yh920.c | 3 | ||||
-rw-r--r-- | firmware/target/coldfire/debug-coldfire.c | 5 | ||||
-rw-r--r-- | firmware/target/coldfire/iaudio/m3/lcd-m3.c | 6 | ||||
-rw-r--r-- | firmware/target/coldfire/iaudio/m5/lcd-m5.c | 6 | ||||
-rw-r--r-- | firmware/target/coldfire/iriver/h100/lcd-h100.c | 6 | ||||
-rw-r--r-- | firmware/target/coldfire/mpio/hd300/lcd-hd300.c | 3 | ||||
-rw-r--r-- | firmware/target/hosted/ibasso/pcm-ibasso.c | 2 | ||||
-rw-r--r-- | firmware/target/hosted/ibasso/sysfs-ibasso.c | 2 | ||||
-rw-r--r-- | firmware/target/hosted/rolo.c | 16 | ||||
-rw-r--r-- | firmware/target/hosted/sdl/sim-ui-defines.h | 8 | ||||
-rw-r--r-- | firmware/target/hosted/system-hosted.c | 1 | ||||
-rw-r--r-- | firmware/target/hosted/usb-hiby.c | 4 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/xduoo_x3/lcd-xduoo_x3.c | 6 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/app.lds | 18 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/boot-x1000.c | 280 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/boot-x1000.h | 38 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/clk-x1000.c | 59 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/crt0.S | 126 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/debug-x1000.c | 6 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/erosqnative/lcd-erosqnative.c | 23 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c | 25 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/erosqnative/spl-erosqnative.c | 63 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c | 129 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c | 23 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c | 116 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/installer-x1000.c | 2 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/lcd-x1000.h | 8 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/nand-x1000.c | 17 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/nand-x1000.h | 3 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/pcm-x1000.c | 179 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/shanlingq1/audiohw-shanlingq1.c | 4 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c | 23 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/shanlingq1/spl-shanlingq1.c | 116 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/spl-nand-x1000.c | 50 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/spl-x1000.c | 224 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/spl-x1000.h | 24 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/spl.lds | 6 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/system-x1000.c | 1 | ||||
-rw-r--r-- | firmware/usbstack/usb_storage.c | 7 | ||||
-rw-r--r-- | lib/arm_support/support-arm.S | 51 | ||||
-rw-r--r-- | lib/rbcodec/codecs/libm4a/demux.c | 31 | ||||
-rw-r--r-- | lib/rbcodec/codecs/libm4a/m4a.c | 148 | ||||
-rw-r--r-- | lib/rbcodec/codecs/libm4a/m4a.h | 1 | ||||
-rw-r--r-- | lib/rbcodec/dsp/tdspeed.c | 9 | ||||
-rw-r--r-- | lib/rbcodec/dsp/tdspeed.h | 1 | ||||
-rw-r--r-- | lib/rbcodec/metadata/aac.c | 2 | ||||
-rw-r--r-- | lib/rbcodec/metadata/asap.c | 19 | ||||
-rw-r--r-- | lib/rbcodec/metadata/asf.c | 81 | ||||
-rw-r--r-- | lib/rbcodec/metadata/id3tags.c | 15 | ||||
-rw-r--r-- | lib/rbcodec/metadata/metadata.c | 38 | ||||
-rw-r--r-- | lib/rbcodec/metadata/metadata.h | 1 | ||||
-rw-r--r-- | lib/rbcodec/metadata/metadata_common.c | 90 | ||||
-rw-r--r-- | lib/rbcodec/metadata/metadata_common.h | 4 | ||||
-rw-r--r-- | lib/rbcodec/metadata/mp4.c | 21 | ||||
-rw-r--r-- | lib/rbcodec/metadata/replaygain.c | 31 | ||||
-rw-r--r-- | lib/skin_parser/skin_buffer.c | 4 | ||||
-rw-r--r-- | lib/unwarminder/backtrace-unwarminder.c | 3 | ||||
-rw-r--r-- | lib/x1000-installer/src/xf_nandio.c | 2 | ||||
-rw-r--r-- | lib/x1000-installer/src/xf_package.c | 2 | ||||
-rw-r--r-- | lib/x1000-installer/test_lib/core_alloc.c | 7 | ||||
-rw-r--r-- | lib/x1000-installer/test_lib/core_alloc.h | 10 | ||||
-rwxr-xr-x | manual/advanced_topics/main.tex | 8 | ||||
-rw-r--r-- | manual/appendix/config_file_options.tex | 16 | ||||
-rw-r--r-- | manual/appendix/file_formats.tex | 153 | ||||
-rw-r--r-- | manual/configure_rockbox/bookmarking.tex | 9 | ||||
-rwxr-xr-x | manual/configure_rockbox/display_options.tex | 6 | ||||
-rw-r--r-- | manual/configure_rockbox/playback_options.tex | 32 | ||||
-rw-r--r-- | manual/configure_rockbox/playlist_options.tex | 6 | ||||
-rw-r--r-- | manual/configure_rockbox/sound_settings.tex | 61 | ||||
-rwxr-xr-x | manual/configure_rockbox/system_options.tex | 107 | ||||
-rw-r--r-- | manual/configure_rockbox/time_and_date.tex | 5 | ||||
-rw-r--r-- | manual/getting_started/installation.tex | 21 | ||||
-rw-r--r-- | manual/getting_started/jztool_install.tex | 3 | ||||
-rw-r--r-- | manual/main_menu/main.tex | 16 | ||||
-rw-r--r-- | manual/platform/erosqnative.tex | 28 | ||||
-rw-r--r-- | manual/platform/keymap-erosqnative.tex | 118 | ||||
-rw-r--r-- | manual/platform/keymap-fiiom3k.tex | 34 | ||||
-rw-r--r-- | manual/platform/keymap-xduoox3.tex | 4 | ||||
-rw-r--r-- | manual/plugins/pictureflow.tex | 119 | ||||
-rw-r--r-- | manual/plugins/text_viewer.tex | 5 | ||||
-rw-r--r-- | manual/preamble.tex | 20 | ||||
-rw-r--r-- | manual/rockbox_interface/browsing_and_playing.tex | 14 | ||||
-rw-r--r-- | manual/rockbox_interface/main.tex | 22 | ||||
-rw-r--r-- | manual/rockbox_interface/wps.tex | 32 | ||||
-rw-r--r-- | manual/working_with_playlists/main.tex | 38 | ||||
-rw-r--r-- | rbutil/ipodpatcher/ipodpatcher.pro | 47 | ||||
-rw-r--r-- | rbutil/rbutil.pro | 83 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/progressloggerinterface.h | 60 | ||||
-rw-r--r-- | rbutil/rbutilqt/dmgbuild.cfg | 9 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt-lang.qrc | 19 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pri | 229 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pro | 248 | ||||
-rw-r--r-- | rbutil/rbutilqt/test/test-compareversion.cpp | 145 | ||||
-rw-r--r-- | rbutil/rbutilqt/test/test-compareversion.pro | 37 | ||||
-rw-r--r-- | rbutil/rbutilqt/test/test-httpget.pro | 31 | ||||
-rw-r--r-- | rbutil/rbutilqt/test/test-playerbuildinfo.pro | 35 | ||||
-rw-r--r-- | rbutil/rbutilqt/test/test-rockboxinfo.pro | 30 | ||||
-rw-r--r-- | rbutil/sansapatcher/sansapatcher.pro | 38 | ||||
-rw-r--r-- | tools/builds.pm | 11 | ||||
-rwxr-xr-x | tools/configure | 13 | ||||
-rwxr-xr-x | tools/genlang | 10 | ||||
-rw-r--r-- | tools/rbspeex/rbspeex.c | 2 | ||||
-rwxr-xr-x | tools/rockboxdev.sh | 2 | ||||
-rw-r--r-- | uisimulator/bitmaps/UI-fiiom3k.bmp | bin | 676310 -> 913878 bytes | |||
-rw-r--r-- | uisimulator/buttonmap/fiio-m3k.c | 22 | ||||
-rw-r--r-- | uisimulator/common/filesystem-sim.c | 2 | ||||
-rw-r--r-- | uisimulator/common/powermgmt-sim.c | 56 | ||||
-rw-r--r-- | utils/CMakeLists.txt | 395 | ||||
-rw-r--r-- | utils/bspatch/LICENSE (renamed from rbutil/bspatch/LICENSE) | 0 | ||||
-rw-r--r-- | utils/bspatch/Makefile (renamed from rbutil/bspatch/Makefile) | 0 | ||||
-rw-r--r-- | utils/bspatch/bspatch.c (renamed from rbutil/bspatch/bspatch.c) | 0 | ||||
-rw-r--r-- | utils/bspatch/bspatch.h (renamed from rbutil/bspatch/bspatch.h) | 0 | ||||
-rw-r--r-- | utils/bspatch/main.c (renamed from rbutil/bspatch/main.c) | 0 | ||||
-rw-r--r-- | utils/bzip2/LICENSE (renamed from rbutil/bzip2/LICENSE) | 0 | ||||
-rw-r--r-- | utils/bzip2/Makefile (renamed from rbutil/bzip2/Makefile) | 0 | ||||
-rw-r--r-- | utils/bzip2/blocksort.c (renamed from rbutil/bzip2/blocksort.c) | 0 | ||||
-rw-r--r-- | utils/bzip2/bzlib.c (renamed from rbutil/bzip2/bzlib.c) | 0 | ||||
-rw-r--r-- | utils/bzip2/bzlib.h (renamed from rbutil/bzip2/bzlib.h) | 0 | ||||
-rw-r--r-- | utils/bzip2/bzlib_private.h (renamed from rbutil/bzip2/bzlib_private.h) | 0 | ||||
-rw-r--r-- | utils/bzip2/compress.c (renamed from rbutil/bzip2/compress.c) | 0 | ||||
-rw-r--r-- | utils/bzip2/crctable.c (renamed from rbutil/bzip2/crctable.c) | 0 | ||||
-rw-r--r-- | utils/bzip2/decompress.c (renamed from rbutil/bzip2/decompress.c) | 0 | ||||
-rw-r--r-- | utils/bzip2/huffman.c (renamed from rbutil/bzip2/huffman.c) | 0 | ||||
-rw-r--r-- | utils/bzip2/randtable.c (renamed from rbutil/bzip2/randtable.c) | 0 | ||||
-rw-r--r-- | utils/chinachippatcher/Makefile (renamed from rbutil/chinachippatcher/Makefile) | 0 | ||||
-rw-r--r-- | utils/chinachippatcher/chinachip.c (renamed from rbutil/chinachippatcher/chinachip.c) | 0 | ||||
-rw-r--r-- | utils/chinachippatcher/chinachip.h (renamed from rbutil/chinachippatcher/chinachip.h) | 0 | ||||
-rw-r--r-- | utils/chinachippatcher/main.c (renamed from rbutil/chinachippatcher/main.c) | 0 | ||||
-rwxr-xr-x | utils/cmake/QtTest.cmake | 134 | ||||
-rwxr-xr-x | utils/cmake/QtTestAddTests.cmake | 102 | ||||
-rw-r--r-- | utils/cmake/deploy.cmake | 219 | ||||
-rw-r--r-- | utils/cmake/download.cmake | 47 | ||||
-rw-r--r-- | utils/cmake/gitversion.cmake | 58 | ||||
-rwxr-xr-x | utils/common/deploy-themeeditor.py | 62 | ||||
-rwxr-xr-x | utils/common/deploy.py | 677 | ||||
-rwxr-xr-x | utils/common/gitscraper.py | 17 | ||||
-rwxr-xr-x | utils/common/tarball-rbutil.py (renamed from utils/common/deploy-rbutil.py) | 87 | ||||
-rw-r--r-- | utils/e200rpatcher/Makefile (renamed from rbutil/e200rpatcher/Makefile) | 0 | ||||
-rw-r--r-- | utils/e200rpatcher/README (renamed from rbutil/e200rpatcher/README) | 0 | ||||
-rw-r--r-- | utils/e200rpatcher/e200rpatcher.c (renamed from rbutil/e200rpatcher/e200rpatcher.c) | 0 | ||||
-rw-r--r-- | utils/e200rpatcher/e200rpatcher.manifest (renamed from rbutil/e200rpatcher/e200rpatcher.manifest) | 0 | ||||
-rw-r--r-- | utils/e200rpatcher/e200rpatcher.rc (renamed from rbutil/e200rpatcher/e200rpatcher.rc) | 0 | ||||
-rw-r--r-- | utils/ibassoboot/jni/Android.mk (renamed from rbutil/ibassoboot/jni/Android.mk) | 0 | ||||
-rw-r--r-- | utils/ibassoboot/jni/chooser.bmp (renamed from rbutil/ibassoboot/jni/chooser.bmp) | bin | 230454 -> 230454 bytes | |||
-rw-r--r-- | utils/ibassoboot/jni/ibassodualboot.c (renamed from rbutil/ibassoboot/jni/ibassodualboot.c) | 0 | ||||
-rw-r--r-- | utils/ibassoboot/jni/qdbmp.c (renamed from rbutil/ibassoboot/jni/qdbmp.c) | 0 | ||||
-rw-r--r-- | utils/ibassoboot/jni/qdbmp.h (renamed from rbutil/ibassoboot/jni/qdbmp.h) | 0 | ||||
-rw-r--r-- | utils/ibassoboot/jni/rbmissing.bmp (renamed from rbutil/ibassoboot/jni/rbmissing.bmp) | bin | 230454 -> 230454 bytes | |||
-rw-r--r-- | utils/ibassoboot/jni/usb.bmp (renamed from rbutil/ibassoboot/jni/usb.bmp) | bin | 230454 -> 230454 bytes | |||
-rw-r--r-- | utils/ipodpatcher/Makefile (renamed from rbutil/ipodpatcher/Makefile) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/arc4.c (renamed from rbutil/ipodpatcher/arc4.c) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/arc4.h (renamed from rbutil/ipodpatcher/arc4.h) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/fat32format.c (renamed from rbutil/ipodpatcher/fat32format.c) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodio-posix.c (renamed from rbutil/ipodpatcher/ipodio-posix.c) | 1 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodio-win32-scsi.c (renamed from rbutil/ipodpatcher/ipodio-win32-scsi.c) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodio-win32.c (renamed from rbutil/ipodpatcher/ipodio-win32.c) | 1 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodio.h (renamed from rbutil/ipodpatcher/ipodio.h) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodpatcher-aupd.c | 398 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodpatcher.c (renamed from rbutil/ipodpatcher/ipodpatcher.c) | 355 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodpatcher.h (renamed from rbutil/ipodpatcher/ipodpatcher.h) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodpatcher.manifest (renamed from rbutil/ipodpatcher/ipodpatcher.manifest) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/ipodpatcher.rc (renamed from rbutil/ipodpatcher/ipodpatcher.rc) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/main.c (renamed from rbutil/ipodpatcher/main.c) | 0 | ||||
-rw-r--r-- | utils/ipodpatcher/parttypes.h (renamed from rbutil/ipodpatcher/parttypes.h) | 0 | ||||
-rw-r--r-- | utils/jztool/Makefile (renamed from rbutil/jztool/Makefile) | 0 | ||||
-rw-r--r-- | utils/jztool/README.md (renamed from rbutil/jztool/README.md) | 0 | ||||
-rw-r--r-- | utils/jztool/include/jztool.h (renamed from rbutil/jztool/include/jztool.h) | 0 | ||||
-rw-r--r-- | utils/jztool/jztool.c (renamed from rbutil/jztool/jztool.c) | 0 | ||||
-rw-r--r-- | utils/jztool/src/buffer.c (renamed from rbutil/jztool/src/buffer.c) | 0 | ||||
-rw-r--r-- | utils/jztool/src/context.c (renamed from rbutil/jztool/src/context.c) | 0 | ||||
-rw-r--r-- | utils/jztool/src/device_info.c (renamed from rbutil/jztool/src/device_info.c) | 0 | ||||
-rw-r--r-- | utils/jztool/src/identify_file.c (renamed from rbutil/jztool/src/identify_file.c) | 0 | ||||
-rw-r--r-- | utils/jztool/src/jztool_private.h (renamed from rbutil/jztool/src/jztool_private.h) | 0 | ||||
-rw-r--r-- | utils/jztool/src/ucl_unpack.c (renamed from rbutil/jztool/src/ucl_unpack.c) | 0 | ||||
-rw-r--r-- | utils/jztool/src/usb.c (renamed from rbutil/jztool/src/usb.c) | 0 | ||||
-rw-r--r-- | utils/jztool/src/x1000.c (renamed from rbutil/jztool/src/x1000.c) | 99 | ||||
-rw-r--r-- | utils/libtools.make (renamed from rbutil/libtools.make) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/.gitignore (renamed from rbutil/mkamsboot/.gitignore) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/Makefile (renamed from rbutil/mkamsboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/README (renamed from rbutil/mkamsboot/README) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/dualboot.c (renamed from rbutil/mkamsboot/dualboot.c) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/dualboot.h (renamed from rbutil/mkamsboot/dualboot.h) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/dualboot/.gitignore (renamed from rbutil/mkamsboot/dualboot/.gitignore) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/dualboot/Makefile (renamed from rbutil/mkamsboot/dualboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/dualboot/bin2c.c (renamed from rbutil/mkamsboot/dualboot/bin2c.c) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/dualboot/dualboot.S (renamed from rbutil/mkamsboot/dualboot/dualboot.S) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/dualboot/nrv2e_d8.S (renamed from rbutil/mkamsboot/dualboot/nrv2e_d8.S) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/main.c (renamed from rbutil/mkamsboot/main.c) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/md5.c (renamed from rbutil/mkamsboot/md5.c) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/md5.h (renamed from rbutil/mkamsboot/md5.h) | 0 | ||||
-rw-r--r-- | utils/mkamsboot/mkamsboot.c (renamed from rbutil/mkamsboot/mkamsboot.c) | 2 | ||||
-rw-r--r-- | utils/mkamsboot/mkamsboot.h (renamed from rbutil/mkamsboot/mkamsboot.h) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/Makefile (renamed from rbutil/mkimxboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/dualboot.c (renamed from rbutil/mkimxboot/dualboot.c) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/dualboot.h (renamed from rbutil/mkimxboot/dualboot.h) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/dualboot/Makefile (renamed from rbutil/mkimxboot/dualboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/dualboot/bin2c.c (renamed from rbutil/mkimxboot/dualboot/bin2c.c) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/dualboot/config.h (renamed from rbutil/mkimxboot/dualboot/config.h) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/dualboot/dualboot.c (renamed from rbutil/mkimxboot/dualboot/dualboot.c) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/dualboot/dualboot.lds (renamed from rbutil/mkimxboot/dualboot/dualboot.lds) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/main.c (renamed from rbutil/mkimxboot/main.c) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/md5.c (renamed from rbutil/mkimxboot/md5.c) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/md5.h (renamed from rbutil/mkimxboot/md5.h) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/mkimxboot.c (renamed from rbutil/mkimxboot/mkimxboot.c) | 0 | ||||
-rw-r--r-- | utils/mkimxboot/mkimxboot.h (renamed from rbutil/mkimxboot/mkimxboot.h) | 0 | ||||
-rw-r--r-- | utils/mkmpioboot/Makefile (renamed from rbutil/mkmpioboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkmpioboot/main.c (renamed from rbutil/mkmpioboot/main.c) | 0 | ||||
-rw-r--r-- | utils/mkmpioboot/mkmpioboot.c (renamed from rbutil/mkmpioboot/mkmpioboot.c) | 0 | ||||
-rw-r--r-- | utils/mkmpioboot/mkmpioboot.h (renamed from rbutil/mkmpioboot/mkmpioboot.h) | 0 | ||||
-rw-r--r-- | utils/mknwzboot/Makefile (renamed from rbutil/mknwzboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mknwzboot/install_script.sh (renamed from rbutil/mknwzboot/install_script.sh) | 0 | ||||
-rw-r--r-- | utils/mknwzboot/main.c (renamed from rbutil/mknwzboot/main.c) | 0 | ||||
-rw-r--r-- | utils/mknwzboot/mknwzboot.c (renamed from rbutil/mknwzboot/mknwzboot.c) | 0 | ||||
-rw-r--r-- | utils/mknwzboot/mknwzboot.h (renamed from rbutil/mknwzboot/mknwzboot.h) | 0 | ||||
-rw-r--r-- | utils/mknwzboot/uninstall_script.sh (renamed from rbutil/mknwzboot/uninstall_script.sh) | 0 | ||||
-rw-r--r-- | utils/mkrk27boot/Makefile (renamed from rbutil/mkrk27boot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkrk27boot/ata-sim.c (renamed from rbutil/mkrk27boot/ata-sim.c) | 0 | ||||
-rw-r--r-- | utils/mkrk27boot/autoconf.h (renamed from rbutil/mkrk27boot/autoconf.h) | 0 | ||||
-rw-r--r-- | utils/mkrk27boot/main.c (renamed from rbutil/mkrk27boot/main.c) | 0 | ||||
-rw-r--r-- | utils/mkrk27boot/mkrk27boot.c (renamed from rbutil/mkrk27boot/mkrk27boot.c) | 0 | ||||
-rw-r--r-- | utils/mkrk27boot/mkrk27boot.h (renamed from rbutil/mkrk27boot/mkrk27boot.h) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/.gitignore (renamed from rbutil/mks5lboot/.gitignore) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/Makefile (renamed from rbutil/mks5lboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/README (renamed from rbutil/mks5lboot/README) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot.c (renamed from rbutil/mks5lboot/dualboot.c) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot.h (renamed from rbutil/mks5lboot/dualboot.h) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot/.gitignore (renamed from rbutil/mks5lboot/dualboot/.gitignore) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot/Makefile (renamed from rbutil/mks5lboot/dualboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot/autoconf.h (renamed from rbutil/mks5lboot/dualboot/autoconf.h) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot/bin2c.c (renamed from rbutil/mks5lboot/dualboot/bin2c.c) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot/dualboot.c (renamed from rbutil/mks5lboot/dualboot/dualboot.c) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot/dualboot.lds (renamed from rbutil/mks5lboot/dualboot/dualboot.lds) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/dualboot/init.S (renamed from rbutil/mks5lboot/dualboot/init.S) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/ipoddfu.c (renamed from rbutil/mks5lboot/ipoddfu.c) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/main.c (renamed from rbutil/mks5lboot/main.c) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/mkdfu.c (renamed from rbutil/mks5lboot/mkdfu.c) | 0 | ||||
-rw-r--r-- | utils/mks5lboot/mks5lboot.h (renamed from rbutil/mks5lboot/mks5lboot.h) | 0 | ||||
-rw-r--r-- | utils/mktccboot/Makefile (renamed from rbutil/mktccboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mktccboot/README (renamed from rbutil/mktccboot/README) | 0 | ||||
-rw-r--r-- | utils/mktccboot/main.c (renamed from rbutil/mktccboot/main.c) | 0 | ||||
-rw-r--r-- | utils/mktccboot/mktccboot.c (renamed from rbutil/mktccboot/mktccboot.c) | 0 | ||||
-rw-r--r-- | utils/mktccboot/mktccboot.h (renamed from rbutil/mktccboot/mktccboot.h) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/Makefile (renamed from rbutil/mkzenboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/dualboot.c (renamed from rbutil/mkzenboot/dualboot.c) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/dualboot.h (renamed from rbutil/mkzenboot/dualboot.h) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/dualboot/Makefile (renamed from rbutil/mkzenboot/dualboot/Makefile) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/dualboot/bin2c.c (renamed from rbutil/mkzenboot/dualboot/bin2c.c) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/dualboot/config.h (renamed from rbutil/mkzenboot/dualboot/config.h) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/dualboot/dualboot.c (renamed from rbutil/mkzenboot/dualboot/dualboot.c) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/dualboot/dualboot.lds (renamed from rbutil/mkzenboot/dualboot/dualboot.lds) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/main.c (renamed from rbutil/mkzenboot/main.c) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/md5.c (renamed from rbutil/mkzenboot/md5.c) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/md5.h (renamed from rbutil/mkzenboot/md5.h) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/mkzenboot.c (renamed from rbutil/mkzenboot/mkzenboot.c) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/mkzenboot.h (renamed from rbutil/mkzenboot/mkzenboot.h) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/utils.c (renamed from rbutil/mkzenboot/utils.c) | 0 | ||||
-rw-r--r-- | utils/mkzenboot/utils.h (renamed from rbutil/mkzenboot/utils.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/CMakeLists.txt | 437 | ||||
-rw-r--r-- | utils/rbutilqt/INSTALL (renamed from rbutil/rbutilqt/INSTALL) | 37 | ||||
-rw-r--r-- | utils/rbutilqt/Info.plist (renamed from rbutil/rbutilqt/Info.plist) | 4 | ||||
-rw-r--r-- | utils/rbutilqt/Makefile.libs (renamed from rbutil/rbutilqt/Makefile.libs) | 20 | ||||
-rw-r--r-- | utils/rbutilqt/RockboxUtility.desktop (renamed from rbutil/rbutilqt/RockboxUtility.desktop) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/aboutbox.ui (renamed from rbutil/rbutilqt/aboutbox.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/archiveutil.cpp (renamed from rbutil/rbutilqt/base/archiveutil.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/archiveutil.h (renamed from rbutil/rbutilqt/base/archiveutil.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/autodetection.cpp (renamed from rbutil/rbutilqt/base/autodetection.cpp) | 10 | ||||
-rw-r--r-- | utils/rbutilqt/base/autodetection.h (renamed from rbutil/rbutilqt/base/autodetection.h) | 5 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallams.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallams.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallams.h (renamed from rbutil/rbutilqt/base/bootloaderinstallams.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallbase.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallbase.cpp) | 65 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallbase.h (renamed from rbutil/rbutilqt/base/bootloaderinstallbase.h) | 15 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallbspatch.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallbspatch.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallbspatch.h (renamed from rbutil/rbutilqt/base/bootloaderinstallbspatch.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallchinachip.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallchinachip.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallchinachip.h (renamed from rbutil/rbutilqt/base/bootloaderinstallchinachip.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallfile.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallfile.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallfile.h (renamed from rbutil/rbutilqt/base/bootloaderinstallfile.h) | 1 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallhelper.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallhelper.cpp) | 20 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallhelper.h (renamed from rbutil/rbutilqt/base/bootloaderinstallhelper.h) | 1 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallhex.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallhex.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallhex.h (renamed from rbutil/rbutilqt/base/bootloaderinstallhex.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallimx.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallimx.cpp) | 1 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallimx.h (renamed from rbutil/rbutilqt/base/bootloaderinstallimx.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallipod.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallipod.cpp) | 44 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallipod.h (renamed from rbutil/rbutilqt/base/bootloaderinstallipod.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallmi4.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallmi4.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallmi4.h (renamed from rbutil/rbutilqt/base/bootloaderinstallmi4.h) | 1 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallmpio.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallmpio.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallmpio.h (renamed from rbutil/rbutilqt/base/bootloaderinstallmpio.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstalls5l.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstalls5l.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstalls5l.h (renamed from rbutil/rbutilqt/base/bootloaderinstalls5l.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallsansa.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstallsansa.cpp) | 55 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstallsansa.h (renamed from rbutil/rbutilqt/base/bootloaderinstallsansa.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstalltcc.cpp (renamed from rbutil/rbutilqt/base/bootloaderinstalltcc.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/bootloaderinstalltcc.h (renamed from rbutil/rbutilqt/base/bootloaderinstalltcc.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderbase.cpp (renamed from rbutil/rbutilqt/base/encoderbase.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderbase.h (renamed from rbutil/rbutilqt/base/encoderbase.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderexe.cpp (renamed from rbutil/rbutilqt/base/encoderexe.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderexe.h (renamed from rbutil/rbutilqt/base/encoderexe.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderlame.cpp (renamed from rbutil/rbutilqt/base/encoderlame.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderlame.h (renamed from rbutil/rbutilqt/base/encoderlame.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderrbspeex.cpp (renamed from rbutil/rbutilqt/base/encoderrbspeex.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encoderrbspeex.h (renamed from rbutil/rbutilqt/base/encoderrbspeex.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encttssettings.cpp (renamed from rbutil/rbutilqt/base/encttssettings.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/encttssettings.h (renamed from rbutil/rbutilqt/base/encttssettings.h) | 3 | ||||
-rw-r--r-- | utils/rbutilqt/base/httpget.cpp (renamed from rbutil/rbutilqt/base/httpget.cpp) | 29 | ||||
-rw-r--r-- | utils/rbutilqt/base/httpget.h (renamed from rbutil/rbutilqt/base/httpget.h) | 8 | ||||
-rw-r--r-- | utils/rbutilqt/base/mspackutil.cpp (renamed from rbutil/rbutilqt/base/mspackutil.cpp) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/mspackutil.h (renamed from rbutil/rbutilqt/base/mspackutil.h) | 4 | ||||
-rw-r--r-- | utils/rbutilqt/base/playerbuildinfo.cpp (renamed from rbutil/rbutilqt/base/playerbuildinfo.cpp) | 52 | ||||
-rw-r--r-- | utils/rbutilqt/base/playerbuildinfo.h (renamed from rbutil/rbutilqt/base/playerbuildinfo.h) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/progressloglevels.h (renamed from apps/scrobbler.h) | 16 | ||||
-rw-r--r-- | utils/rbutilqt/base/rbsettings.cpp (renamed from rbutil/rbutilqt/base/rbsettings.cpp) | 1 | ||||
-rw-r--r-- | utils/rbutilqt/base/rbsettings.h (renamed from rbutil/rbutilqt/base/rbsettings.h) | 1 | ||||
-rw-r--r-- | utils/rbutilqt/base/rockboxinfo.cpp (renamed from rbutil/rbutilqt/base/rockboxinfo.cpp) | 70 | ||||
-rw-r--r-- | utils/rbutilqt/base/rockboxinfo.h (renamed from rbutil/rbutilqt/base/rockboxinfo.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/system.cpp (renamed from rbutil/rbutilqt/base/system.cpp) | 9 | ||||
-rw-r--r-- | utils/rbutilqt/base/system.h (renamed from rbutil/rbutilqt/base/system.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/talkfile.cpp (renamed from rbutil/rbutilqt/base/talkfile.cpp) | 17 | ||||
-rw-r--r-- | utils/rbutilqt/base/talkfile.h (renamed from rbutil/rbutilqt/base/talkfile.h) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/talkgenerator.cpp (renamed from rbutil/rbutilqt/base/talkgenerator.cpp) | 38 | ||||
-rw-r--r-- | utils/rbutilqt/base/talkgenerator.h (renamed from rbutil/rbutilqt/base/talkgenerator.h) | 6 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsbase.cpp (renamed from rbutil/rbutilqt/base/ttsbase.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsbase.h (renamed from rbutil/rbutilqt/base/ttsbase.h) | 4 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttscarbon.cpp (renamed from rbutil/rbutilqt/base/ttscarbon.cpp) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttscarbon.h (renamed from rbutil/rbutilqt/base/ttscarbon.h) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsespeak.h (renamed from rbutil/rbutilqt/base/ttsespeak.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsespeakng.h (renamed from rbutil/rbutilqt/base/ttsespeakng.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsexes.cpp (renamed from rbutil/rbutilqt/base/ttsexes.cpp) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsexes.h (renamed from rbutil/rbutilqt/base/ttsexes.h) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsfestival.cpp (renamed from rbutil/rbutilqt/base/ttsfestival.cpp) | 98 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsfestival.h (renamed from rbutil/rbutilqt/base/ttsfestival.h) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsflite.h (renamed from rbutil/rbutilqt/base/ttsflite.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsmimic.h (renamed from rbutil/rbutilqt/base/ttsmimic.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsmssp.h (renamed from rbutil/rbutilqt/base/ttsmssp.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttssapi.cpp (renamed from rbutil/rbutilqt/base/ttssapi.cpp) | 4 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttssapi.h (renamed from rbutil/rbutilqt/base/ttssapi.h) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttssapi4.h (renamed from rbutil/rbutilqt/base/ttssapi4.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsswift.h (renamed from rbutil/rbutilqt/base/ttsswift.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/uninstall.cpp (renamed from rbutil/rbutilqt/base/uninstall.cpp) | 20 | ||||
-rw-r--r-- | utils/rbutilqt/base/uninstall.h (renamed from rbutil/rbutilqt/base/uninstall.h) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/base/utils.cpp (renamed from rbutil/rbutilqt/base/utils.cpp) | 48 | ||||
-rw-r--r-- | utils/rbutilqt/base/utils.h (renamed from rbutil/rbutilqt/base/utils.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/base/voicefile.cpp (renamed from rbutil/rbutilqt/base/voicefile.cpp) | 14 | ||||
-rw-r--r-- | utils/rbutilqt/base/voicefile.h (renamed from rbutil/rbutilqt/base/voicefile.h) | 4 | ||||
-rw-r--r-- | utils/rbutilqt/base/zipinstaller.cpp (renamed from rbutil/rbutilqt/base/zipinstaller.cpp) | 13 | ||||
-rw-r--r-- | utils/rbutilqt/base/zipinstaller.h (renamed from rbutil/rbutilqt/base/zipinstaller.h) | 15 | ||||
-rw-r--r-- | utils/rbutilqt/base/ziputil.cpp (renamed from rbutil/rbutilqt/base/ziputil.cpp) | 3 | ||||
-rw-r--r-- | utils/rbutilqt/base/ziputil.h (renamed from rbutil/rbutilqt/base/ziputil.h) | 4 | ||||
-rw-r--r-- | utils/rbutilqt/changelog.txt (renamed from rbutil/rbutilqt/changelog.txt) | 8 | ||||
-rw-r--r-- | utils/rbutilqt/configure.cpp (renamed from rbutil/rbutilqt/configure.cpp) | 40 | ||||
-rw-r--r-- | utils/rbutilqt/configure.h (renamed from rbutil/rbutilqt/configure.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/configurefrm.ui (renamed from rbutil/rbutilqt/configurefrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/createvoicefrm.ui (renamed from rbutil/rbutilqt/createvoicefrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/createvoicewindow.cpp (renamed from rbutil/rbutilqt/createvoicewindow.cpp) | 14 | ||||
-rw-r--r-- | utils/rbutilqt/createvoicewindow.h (renamed from rbutil/rbutilqt/createvoicewindow.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/dmgbuild.cfg | 17 | ||||
-rw-r--r-- | utils/rbutilqt/encttscfggui.cpp (renamed from rbutil/rbutilqt/encttscfggui.cpp) | 275 | ||||
-rw-r--r-- | utils/rbutilqt/encttscfggui.h (renamed from rbutil/rbutilqt/encttscfggui.h) | 16 | ||||
-rw-r--r-- | utils/rbutilqt/gui/backupdialog.cpp (renamed from rbutil/rbutilqt/gui/backupdialog.cpp) | 17 | ||||
-rw-r--r-- | utils/rbutilqt/gui/backupdialog.h (renamed from rbutil/rbutilqt/gui/backupdialog.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/backupdialogfrm.ui (renamed from rbutil/rbutilqt/gui/backupdialogfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/changelog.cpp (renamed from rbutil/rbutilqt/gui/changelog.cpp) | 12 | ||||
-rw-r--r-- | utils/rbutilqt/gui/changelog.h (renamed from rbutil/rbutilqt/gui/changelog.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/changelogfrm.ui (renamed from rbutil/rbutilqt/gui/changelogfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/comboboxviewdelegate.cpp (renamed from rbutil/rbutilqt/gui/comboboxviewdelegate.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/comboboxviewdelegate.h (renamed from rbutil/rbutilqt/gui/comboboxviewdelegate.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/infowidget.cpp (renamed from rbutil/rbutilqt/gui/infowidget.cpp) | 52 | ||||
-rw-r--r-- | utils/rbutilqt/gui/infowidget.h (renamed from rbutil/rbutilqt/gui/infowidget.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/infowidgetfrm.ui (renamed from rbutil/rbutilqt/gui/infowidgetfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/gui/selectiveinstallwidget.cpp (renamed from rbutil/rbutilqt/gui/selectiveinstallwidget.cpp) | 90 | ||||
-rw-r--r-- | utils/rbutilqt/gui/selectiveinstallwidget.h (renamed from rbutil/rbutilqt/gui/selectiveinstallwidget.h) | 1 | ||||
-rw-r--r-- | utils/rbutilqt/gui/selectiveinstallwidgetfrm.ui (renamed from rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/audio-input-microphone.svg (renamed from rbutil/rbutilqt/icons/audio-input-microphone.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/audio-volume-high.svg (renamed from rbutil/rbutilqt/icons/audio-volume-high.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/dialog-error.svg (renamed from rbutil/rbutilqt/icons/dialog-error.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/dialog-information.svg (renamed from rbutil/rbutilqt/icons/dialog-information.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/dialog-warning.svg (renamed from rbutil/rbutilqt/icons/dialog-warning.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/document-save.svg (renamed from rbutil/rbutilqt/icons/document-save.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/edit-clear.svg (renamed from rbutil/rbutilqt/icons/edit-clear.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/edit-find.svg (renamed from rbutil/rbutilqt/icons/edit-find.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/go-next.svg (renamed from rbutil/rbutilqt/icons/go-next.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/input-gaming.svg (renamed from rbutil/rbutilqt/icons/input-gaming.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/media-eject.svg (renamed from rbutil/rbutilqt/icons/media-eject.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/multimedia-player.svg (renamed from rbutil/rbutilqt/icons/multimedia-player.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/network-idle.svg (renamed from rbutil/rbutilqt/icons/network-idle.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/package-x-generic.svg (renamed from rbutil/rbutilqt/icons/package-x-generic.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/players/archosfmrecorder-small.png (renamed from rbutil/rbutilqt/icons/players/archosfmrecorder-small.png) | bin | 7028 -> 7028 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/archosondiofm-small.png (renamed from rbutil/rbutilqt/icons/players/archosondiofm-small.png) | bin | 4902 -> 4902 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/archosondiosp-small.png (renamed from rbutil/rbutilqt/icons/players/archosondiosp-small.png) | bin | 4896 -> 4896 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/archosplayer-small.png (renamed from rbutil/rbutilqt/icons/players/archosplayer-small.png) | bin | 4760 -> 4760 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/archosrecorder-small.png (renamed from rbutil/rbutilqt/icons/players/archosrecorder-small.png) | bin | 5252 -> 5252 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/archosrecorderv2-small.png (renamed from rbutil/rbutilqt/icons/players/archosrecorderv2-small.png) | bin | 7028 -> 7028 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/cowond2-small.png (renamed from rbutil/rbutilqt/icons/players/cowond2-small.png) | bin | 2944 -> 2944 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/fonts-small.png (renamed from rbutil/rbutilqt/icons/players/fonts-small.png) | bin | 4908 -> 4908 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/gigabeatfx-small.png (renamed from rbutil/rbutilqt/icons/players/gigabeatfx-small.png) | bin | 2264 -> 2264 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/gigabeats-small.png (renamed from rbutil/rbutilqt/icons/players/gigabeats-small.png) | bin | 3388 -> 3388 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/gogearhdd1630-small.png (renamed from rbutil/rbutilqt/icons/players/gogearhdd1630-small.png) | bin | 2567 -> 2567 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/gogearhdd6330-small.png (renamed from rbutil/rbutilqt/icons/players/gogearhdd6330-small.png) | bin | 2226 -> 2226 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/gogearsa9200-small.png (renamed from rbutil/rbutilqt/icons/players/gogearsa9200-small.png) | bin | 2181 -> 2181 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/hifimanhm60x-small.png (renamed from rbutil/rbutilqt/icons/players/hifimanhm60x-small.png) | bin | 4605 -> 4605 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/hifimanhm801-small.png (renamed from rbutil/rbutilqt/icons/players/hifimanhm801-small.png) | bin | 7125 -> 7125 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/iaudiom3-small.png (renamed from rbutil/rbutilqt/icons/players/iaudiom3-small.png) | bin | 2261 -> 2261 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/iaudiom5-small.png (renamed from rbutil/rbutilqt/icons/players/iaudiom5-small.png) | bin | 2843 -> 2843 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/iaudiox5-small.png (renamed from rbutil/rbutilqt/icons/players/iaudiox5-small.png) | bin | 2845 -> 2845 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipod1g2g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod1g2g-small.png) | bin | 5243 -> 5243 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipod3g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod3g-small.png) | bin | 3377 -> 3377 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipod4g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod4g-small.png) | bin | 2581 -> 2581 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipod6g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod6g-small.png) | bin | 2833 -> 2833 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipodcolor-small.png (renamed from rbutil/rbutilqt/icons/players/ipodcolor-small.png) | bin | 2520 -> 2520 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipodmini1g-small.png (renamed from rbutil/rbutilqt/icons/players/ipodmini1g-small.png) | bin | 2316 -> 2316 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipodnano1g-small.png (renamed from rbutil/rbutilqt/icons/players/ipodnano1g-small.png) | bin | 2190 -> 2190 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipodnano2g-small.png (renamed from rbutil/rbutilqt/icons/players/ipodnano2g-small.png) | bin | 2270 -> 2270 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/ipodvideo-small.png (renamed from rbutil/rbutilqt/icons/players/ipodvideo-small.png) | bin | 2771 -> 2771 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/iriverh10-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh10-small.png) | bin | 3182 -> 3182 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/iriverh100-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh100-small.png) | bin | 3606 -> 3606 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/iriverh10_5gb-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh10_5gb-small.png) | bin | 2631 -> 2631 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/iriverh300-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh300-small.png) | bin | 3180 -> 3180 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/mpiohd200-small.png (renamed from rbutil/rbutilqt/icons/players/mpiohd200-small.png) | bin | 16883 -> 16883 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/mpiohd300-small.png (renamed from rbutil/rbutilqt/icons/players/mpiohd300-small.png) | bin | 14701 -> 14701 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/mrobe100-small.png (renamed from rbutil/rbutilqt/icons/players/mrobe100-small.png) | bin | 1987 -> 1987 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/mrobe500-small.png (renamed from rbutil/rbutilqt/icons/players/mrobe500-small.png) | bin | 3075 -> 3075 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/samsungyh820-small.png (renamed from rbutil/rbutilqt/icons/players/samsungyh820-small.png) | bin | 3225 -> 3225 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/samsungyh920-small.png (renamed from rbutil/rbutilqt/icons/players/samsungyh920-small.png) | bin | 3358 -> 3358 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/samsungyh925-small.png (renamed from rbutil/rbutilqt/icons/players/samsungyh925-small.png) | bin | 3447 -> 3447 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/samsungypr0-small.png (renamed from rbutil/rbutilqt/icons/players/samsungypr0-small.png) | bin | 3038 -> 3038 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansac200-small.png (renamed from rbutil/rbutilqt/icons/players/sansac200-small.png) | bin | 3625 -> 3625 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansaclip-small.png (renamed from rbutil/rbutilqt/icons/players/sansaclip-small.png) | bin | 5843 -> 5843 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansaclipplus-small.png (renamed from rbutil/rbutilqt/icons/players/sansaclipplus-small.png) | bin | 4542 -> 4542 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansaclipzip-small.png (renamed from rbutil/rbutilqt/icons/players/sansaclipzip-small.png) | bin | 7640 -> 7640 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansaconnect-small.png (renamed from rbutil/rbutilqt/icons/players/sansaconnect-small.png) | bin | 6603 -> 6603 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansae200-small.png (renamed from rbutil/rbutilqt/icons/players/sansae200-small.png) | bin | 3901 -> 3901 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansafuze-small.png (renamed from rbutil/rbutilqt/icons/players/sansafuze-small.png) | bin | 4937 -> 4937 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/sansafuzeplus-small.png (renamed from rbutil/rbutilqt/icons/players/sansafuzeplus-small.png) | bin | 6753 -> 6753 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/source-small.png (renamed from rbutil/rbutilqt/icons/players/source-small.png) | bin | 4908 -> 4908 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/vibe500-small.png (renamed from rbutil/rbutilqt/icons/players/vibe500-small.png) | bin | 2891 -> 2891 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/vx747-small.png (renamed from rbutil/rbutilqt/icons/players/vx747-small.png) | bin | 2732 -> 2732 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/players/vx777-small.png (renamed from rbutil/rbutilqt/icons/players/vx777-small.png) | bin | 2445 -> 2445 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/preferences-desktop-font.svg (renamed from rbutil/rbutilqt/icons/preferences-desktop-font.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/preferences-desktop-locale.svg (renamed from rbutil/rbutilqt/icons/preferences-desktop-locale.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/preferences-desktop-theme.svg (renamed from rbutil/rbutilqt/icons/preferences-desktop-theme.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/preferences-system.svg (renamed from rbutil/rbutilqt/icons/preferences-system.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/process-stop.svg (renamed from rbutil/rbutilqt/icons/process-stop.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/rbutilqt.icns (renamed from rbutil/rbutilqt/icons/rbutilqt.icns) | bin | 180474 -> 180474 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/rockbox.ico (renamed from rbutil/rbutilqt/icons/rockbox.ico) | bin | 100082 -> 100082 bytes | |||
-rw-r--r-- | utils/rbutilqt/icons/system-installer.svg (renamed from rbutil/rbutilqt/icons/system-installer.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/system-search.svg (renamed from rbutil/rbutilqt/icons/system-search.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/user-trash-full.svg (renamed from rbutil/rbutilqt/icons/user-trash-full.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/view-refresh.svg (renamed from rbutil/rbutilqt/icons/view-refresh.svg) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/icons/wizard.jpg (renamed from rbutil/rbutilqt/icons/wizard.jpg) | bin | 16221 -> 16221 bytes | |||
-rw-r--r-- | utils/rbutilqt/installtalkfrm.ui (renamed from rbutil/rbutilqt/installtalkfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/installtalkwindow.cpp (renamed from rbutil/rbutilqt/installtalkwindow.cpp) | 16 | ||||
-rw-r--r-- | utils/rbutilqt/installtalkwindow.h (renamed from rbutil/rbutilqt/installtalkwindow.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/irivertools/h100sums.h (renamed from rbutil/rbutilqt/irivertools/h100sums.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/irivertools/h120sums.h (renamed from rbutil/rbutilqt/irivertools/h120sums.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/irivertools/h300sums.h (renamed from rbutil/rbutilqt/irivertools/h300sums.h) | 0 | ||||
-rwxr-xr-x | utils/rbutilqt/irivertools/mksums.pl (renamed from rbutil/rbutilqt/irivertools/mksums.pl) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/lame/lame.h (renamed from rbutil/rbutilqt/lame/lame.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_cs.ts (renamed from rbutil/rbutilqt/lang/rbutil_cs.ts) | 1371 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_de.ts (renamed from rbutil/rbutilqt/lang/rbutil_de.ts) | 684 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_fi.ts (renamed from rbutil/rbutilqt/lang/rbutil_fi.ts) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_fr.ts (renamed from rbutil/rbutilqt/lang/rbutil_fr.ts) | 1460 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_gr.ts (renamed from rbutil/rbutilqt/lang/rbutil_gr.ts) | 1469 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_he.ts (renamed from rbutil/rbutilqt/lang/rbutil_he.ts) | 1468 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_it.ts (renamed from rbutil/rbutilqt/lang/rbutil_it.ts) | 1463 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_ja.ts (renamed from rbutil/rbutilqt/lang/rbutil_ja.ts) | 1464 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_nl.ts (renamed from rbutil/rbutilqt/lang/rbutil_nl.ts) | 1462 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_pl.ts (renamed from rbutil/rbutilqt/lang/rbutil_pl.ts) | 1460 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_pt.ts (renamed from rbutil/rbutilqt/lang/rbutil_pt.ts) | 1463 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_pt_BR.ts (renamed from rbutil/rbutilqt/lang/rbutil_pt_BR.ts) | 438 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_ru.ts (renamed from rbutil/rbutilqt/lang/rbutil_ru.ts) | 436 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_tr.ts (renamed from rbutil/rbutilqt/lang/rbutil_tr.ts) | 876 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_zh_CN.ts (renamed from rbutil/rbutilqt/lang/rbutil_zh_CN.ts) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutil_zh_TW.ts (renamed from rbutil/rbutilqt/lang/rbutil_zh_TW.ts) | 1464 | ||||
-rw-r--r-- | utils/rbutilqt/lang/rbutilqt-lang.qrc | 19 | ||||
-rwxr-xr-x | utils/rbutilqt/langstats.py (renamed from rbutil/rbutilqt/langstats.py) | 39 | ||||
-rw-r--r-- | utils/rbutilqt/logger/LICENSE.LGPL (renamed from rbutil/rbutilqt/logger/LICENSE.LGPL) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/README.ROCKBOX (renamed from rbutil/rbutilqt/logger/README.ROCKBOX) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/include/AbstractAppender.h (renamed from rbutil/rbutilqt/logger/include/AbstractAppender.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/include/AbstractStringAppender.h (renamed from rbutil/rbutilqt/logger/include/AbstractStringAppender.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/include/ConsoleAppender.h (renamed from rbutil/rbutilqt/logger/include/ConsoleAppender.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/include/CuteLogger_global.h (renamed from rbutil/rbutilqt/logger/include/CuteLogger_global.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/include/FileAppender.h (renamed from rbutil/rbutilqt/logger/include/FileAppender.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/include/Logger.h (renamed from rbutil/rbutilqt/logger/include/Logger.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/include/OutputDebugAppender.h (renamed from rbutil/rbutilqt/logger/include/OutputDebugAppender.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/logger.pri (renamed from rbutil/rbutilqt/logger/logger.pri) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/src/AbstractAppender.cpp (renamed from rbutil/rbutilqt/logger/src/AbstractAppender.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/src/AbstractStringAppender.cpp (renamed from rbutil/rbutilqt/logger/src/AbstractStringAppender.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/src/ConsoleAppender.cpp (renamed from rbutil/rbutilqt/logger/src/ConsoleAppender.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/src/FileAppender.cpp (renamed from rbutil/rbutilqt/logger/src/FileAppender.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/logger/src/Logger.cpp (renamed from rbutil/rbutilqt/logger/src/Logger.cpp) | 6 | ||||
-rw-r--r-- | utils/rbutilqt/logger/src/OutputDebugAppender.cpp (renamed from rbutil/rbutilqt/logger/src/OutputDebugAppender.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/main.cpp (renamed from rbutil/rbutilqt/main.cpp) | 9 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/COPYING.LIB (renamed from rbutil/rbutilqt/mspack/COPYING.LIB) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/README.ROCKBOX (renamed from rbutil/rbutilqt/mspack/README.ROCKBOX) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/cab.h (renamed from rbutil/rbutilqt/mspack/cab.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/cabc.c (renamed from rbutil/rbutilqt/mspack/cabc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/cabd.c (renamed from rbutil/rbutilqt/mspack/cabd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/chm.h (renamed from rbutil/rbutilqt/mspack/chm.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/chmc.c (renamed from rbutil/rbutilqt/mspack/chmc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/chmd.c (renamed from rbutil/rbutilqt/mspack/chmd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/des.h (renamed from rbutil/rbutilqt/mspack/des.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/hlp.h (renamed from rbutil/rbutilqt/mspack/hlp.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/hlpc.c (renamed from rbutil/rbutilqt/mspack/hlpc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/hlpd.c (renamed from rbutil/rbutilqt/mspack/hlpd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/kwaj.h (renamed from rbutil/rbutilqt/mspack/kwaj.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/kwajc.c (renamed from rbutil/rbutilqt/mspack/kwajc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/kwajd.c (renamed from rbutil/rbutilqt/mspack/kwajd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/lit.h (renamed from rbutil/rbutilqt/mspack/lit.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/litc.c (renamed from rbutil/rbutilqt/mspack/litc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/litd.c (renamed from rbutil/rbutilqt/mspack/litd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/lzss.h (renamed from rbutil/rbutilqt/mspack/lzss.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/lzssd.c (renamed from rbutil/rbutilqt/mspack/lzssd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/lzx.h (renamed from rbutil/rbutilqt/mspack/lzx.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/lzxc.c (renamed from rbutil/rbutilqt/mspack/lzxc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/lzxd.c (renamed from rbutil/rbutilqt/mspack/lzxd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/mspack.h (renamed from rbutil/rbutilqt/mspack/mspack.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/mszip.h (renamed from rbutil/rbutilqt/mspack/mszip.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/mszipc.c (renamed from rbutil/rbutilqt/mspack/mszipc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/mszipd.c (renamed from rbutil/rbutilqt/mspack/mszipd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/qtm.h (renamed from rbutil/rbutilqt/mspack/qtm.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/qtmd.c (renamed from rbutil/rbutilqt/mspack/qtmd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/readbits.h (renamed from rbutil/rbutilqt/mspack/readbits.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/readhuff.h (renamed from rbutil/rbutilqt/mspack/readhuff.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/sha.h (renamed from rbutil/rbutilqt/mspack/sha.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/system-mspack.c (renamed from rbutil/rbutilqt/mspack/system-mspack.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/system-mspack.h (renamed from rbutil/rbutilqt/mspack/system-mspack.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/szdd.h (renamed from rbutil/rbutilqt/mspack/szdd.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/szddc.c (renamed from rbutil/rbutilqt/mspack/szddc.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/mspack/szddd.c (renamed from rbutil/rbutilqt/mspack/szddd.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/msvc/Makefile (renamed from rbutil/rbutilqt/msvc/Makefile) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/msvc/README (renamed from rbutil/rbutilqt/msvc/README) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/msvc/inttypes.h (renamed from rbutil/rbutilqt/msvc/inttypes.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/msvc/stdbool.h (renamed from rbutil/rbutilqt/msvc/stdbool.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/msvc/stdint.h (renamed from rbutil/rbutilqt/msvc/stdint.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/preview.cpp (renamed from rbutil/rbutilqt/preview.cpp) | 2 | ||||
-rw-r--r-- | utils/rbutilqt/preview.h (renamed from rbutil/rbutilqt/preview.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/previewfrm.ui (renamed from rbutil/rbutilqt/previewfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/progressloggerfrm.ui (renamed from rbutil/rbutilqt/progressloggerfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/progressloggergui.cpp (renamed from rbutil/rbutilqt/progressloggergui.cpp) | 16 | ||||
-rw-r--r-- | utils/rbutilqt/progressloggergui.h (renamed from rbutil/rbutilqt/progressloggergui.h) | 24 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/LICENSE.LGPL (renamed from rbutil/rbutilqt/quazip/LICENSE.LGPL) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/README.ROCKBOX (renamed from rbutil/rbutilqt/quazip/README.ROCKBOX) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/ioapi.h (renamed from rbutil/rbutilqt/quazip/ioapi.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/minizip_crypt.h (renamed from rbutil/rbutilqt/quazip/minizip_crypt.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/qioapi.cpp (renamed from rbutil/rbutilqt/quazip/qioapi.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazip.cpp (renamed from rbutil/rbutilqt/quazip/quazip.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazip.h (renamed from rbutil/rbutilqt/quazip/quazip.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazip.pri (renamed from rbutil/rbutilqt/quazip/quazip.pri) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazip_global.h (renamed from rbutil/rbutilqt/quazip/quazip_global.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazipfile.cpp (renamed from rbutil/rbutilqt/quazip/quazipfile.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazipfile.h (renamed from rbutil/rbutilqt/quazip/quazipfile.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazipfileinfo.cpp (renamed from rbutil/rbutilqt/quazip/quazipfileinfo.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazipfileinfo.h (renamed from rbutil/rbutilqt/quazip/quazipfileinfo.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazipnewinfo.cpp (renamed from rbutil/rbutilqt/quazip/quazipnewinfo.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/quazipnewinfo.h (renamed from rbutil/rbutilqt/quazip/quazipnewinfo.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/unzip.c (renamed from rbutil/rbutilqt/quazip/unzip.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/unzip.h (renamed from rbutil/rbutilqt/quazip/unzip.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/zip.c (renamed from rbutil/rbutilqt/quazip/zip.c) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/quazip/zip.h (renamed from rbutil/rbutilqt/quazip/zip.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/rbutil.ini (renamed from rbutil/rbutilqt/rbutil.ini) | 26 | ||||
-rw-r--r-- | utils/rbutilqt/rbutilqt-win.qrc (renamed from rbutil/rbutilqt/rbutilqt-win.qrc) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/rbutilqt.cpp (renamed from rbutil/rbutilqt/rbutilqt.cpp) | 173 | ||||
-rw-r--r-- | utils/rbutilqt/rbutilqt.h (renamed from rbutil/rbutilqt/rbutilqt.h) | 5 | ||||
-rw-r--r-- | utils/rbutilqt/rbutilqt.manifest (renamed from rbutil/rbutilqt/rbutilqt.manifest) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/rbutilqt.qrc (renamed from rbutil/rbutilqt/rbutilqt.qrc) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/rbutilqt.rc (renamed from rbutil/rbutilqt/rbutilqt.rc) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/rbutilqtfrm.ui (renamed from rbutil/rbutilqt/rbutilqtfrm.ui) | 40 | ||||
-rw-r--r-- | utils/rbutilqt/sysinfo.cpp (renamed from rbutil/rbutilqt/sysinfo.cpp) | 6 | ||||
-rw-r--r-- | utils/rbutilqt/sysinfo.h (renamed from rbutil/rbutilqt/sysinfo.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/sysinfofrm.ui (renamed from rbutil/rbutilqt/sysinfofrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/systrace.cpp (renamed from rbutil/rbutilqt/systrace.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/systrace.h (renamed from rbutil/rbutilqt/systrace.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/systracefrm.ui (renamed from rbutil/rbutilqt/systracefrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/test/stubs/Logger.h (renamed from rbutil/rbutilqt/test/stubs/Logger.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/test/stubs/stubs-compareversion.cpp (renamed from rbutil/rbutilqt/test/stubs/stubs-compareversion.cpp) | 7 | ||||
-rw-r--r-- | utils/rbutilqt/test/stubs/stubs-playerbuildinfo.cpp (renamed from rbutil/rbutilqt/test/stubs/stubs-playerbuildinfo.cpp) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/test/stubs/stubs-talkgenerator.cpp | 104 | ||||
-rw-r--r-- | utils/rbutilqt/test/test-compareversion.cpp | 148 | ||||
-rw-r--r-- | utils/rbutilqt/test/test-httpget.cpp (renamed from rbutil/rbutilqt/test/test-httpget.cpp) | 69 | ||||
-rw-r--r-- | utils/rbutilqt/test/test-playerbuildinfo.cpp (renamed from rbutil/rbutilqt/test/test-playerbuildinfo.cpp) | 61 | ||||
-rw-r--r-- | utils/rbutilqt/test/test-rockboxinfo.cpp (renamed from rbutil/rbutilqt/test/test-rockboxinfo.cpp) | 17 | ||||
-rw-r--r-- | utils/rbutilqt/test/test-talkgenerator.cpp | 83 | ||||
-rw-r--r-- | utils/rbutilqt/test/test-talkgenerator.qrc | 5 | ||||
-rw-r--r-- | utils/rbutilqt/test/tests.pri (renamed from rbutil/rbutilqt/test/tests.pri) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/themesinstallfrm.ui (renamed from rbutil/rbutilqt/themesinstallfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/themesinstallwindow.cpp (renamed from rbutil/rbutilqt/themesinstallwindow.cpp) | 80 | ||||
-rw-r--r-- | utils/rbutilqt/themesinstallwindow.h (renamed from rbutil/rbutilqt/themesinstallwindow.h) | 14 | ||||
-rw-r--r-- | utils/rbutilqt/uninstallfrm.ui (renamed from rbutil/rbutilqt/uninstallfrm.ui) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/uninstallwindow.cpp (renamed from rbutil/rbutilqt/uninstallwindow.cpp) | 12 | ||||
-rw-r--r-- | utils/rbutilqt/uninstallwindow.h (renamed from rbutil/rbutilqt/uninstallwindow.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/version.h (renamed from rbutil/rbutilqt/version.h) | 8 | ||||
-rw-r--r-- | utils/rbutilqt/zlib/zconf.h (renamed from rbutil/rbutilqt/zlib/zconf.h) | 0 | ||||
-rw-r--r-- | utils/rbutilqt/zlib/zlib.h (renamed from rbutil/rbutilqt/zlib/zlib.h) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/Makefile (renamed from rbutil/sansapatcher/Makefile) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/README (renamed from rbutil/sansapatcher/README) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/main.c (renamed from rbutil/sansapatcher/main.c) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/parttypes.h (renamed from rbutil/sansapatcher/parttypes.h) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/sansaio-posix.c (renamed from rbutil/sansapatcher/sansaio-posix.c) | 1 | ||||
-rw-r--r-- | utils/sansapatcher/sansaio-win32.c (renamed from rbutil/sansapatcher/sansaio-win32.c) | 1 | ||||
-rw-r--r-- | utils/sansapatcher/sansaio.h (renamed from rbutil/sansapatcher/sansaio.h) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/sansapatcher.c (renamed from rbutil/sansapatcher/sansapatcher.c) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/sansapatcher.h (renamed from rbutil/sansapatcher/sansapatcher.h) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/sansapatcher.manifest (renamed from rbutil/sansapatcher/sansapatcher.manifest) | 0 | ||||
-rw-r--r-- | utils/sansapatcher/sansapatcher.rc (renamed from rbutil/sansapatcher/sansapatcher.rc) | 0 | ||||
-rw-r--r-- | utils/themeeditor/CMakeLists.txt | 150 | ||||
-rw-r--r-- | utils/themeeditor/Info.plist | 2 | ||||
-rw-r--r-- | utils/themeeditor/RockboxThemeEditor.desktop | 12 | ||||
-rw-r--r-- | utils/themeeditor/dmgbuild.cfg | 17 | ||||
-rw-r--r-- | utils/themeeditor/resources/rbthemeeditor.svg | 71 | ||||
-rw-r--r-- | utils/themeeditor/themeeditor.pro | 221 | ||||
-rw-r--r-- | utils/tools/Makefile (renamed from rbutil/tools/Makefile) | 0 | ||||
-rw-r--r-- | utils/tools/bin2c.c (renamed from rbutil/tools/bin2c.c) | 0 |
907 files changed, 36022 insertions, 20767 deletions
diff --git a/.gitignore b/.gitignore index 93253775a8..5db3eaed58 100644 --- a/.gitignore +++ b/.gitignore @@ -60,45 +60,45 @@ __pycache__ /firmware/test/buflib/test_shrink_startchanged /firmware/test/buflib/test_shrink_unaligned -# /rbutil/ -/rbutil/Makefile -/rbutil/rbutil - -# /rbutil/ipodpatcher/ -/rbutil/ipodpatcher/ipodpatcher - -# /rbutil/chinachippatcher/ -/rbutil/chinachippatcher/chinachip - -# /rbutil/bspatch/ -/rbutil/bspatch/bspatch - -# /rbutil/rbutilqt/ -/rbutil/rbutilqt/build -/rbutil/rbutilqt/RockboxUtility -/rbutil/rbutilqt/RockboxUtility.* -/rbutil/rbutilqt/Makefile -/rbutil/rbutilqt/*.qm -/rbutil/rbutilqt/release -/rbutil/rbutilqt/debug -/rbutil/rbutilqt/*.Debug -/rbutil/rbutilqt/*.Release -/rbutil/rbutilqt/tags -/rbutil/rbutilqt/.qmake.stash - -# /rbutil/rbutilqt/lang/ -/rbutil/rbutilqt/lang/*.qm +# /utils/ +/utils/Makefile +/utils/rbutil + +# /utils/ipodpatcher/ +/utils/ipodpatcher/ipodpatcher + +# /utils/chinachippatcher/ +/utils/chinachippatcher/chinachip + +# /utils/bspatch/ +/utils/bspatch/bspatch + +# /utils/rbutilqt/ +/utils/rbutilqt/build +/utils/rbutilqt/RockboxUtility +/utils/rbutilqt/RockboxUtility.* +/utils/rbutilqt/Makefile +/utils/rbutilqt/*.qm +/utils/rbutilqt/release +/utils/rbutilqt/debug +/utils/rbutilqt/*.Debug +/utils/rbutilqt/*.Release +/utils/rbutilqt/tags +/utils/rbutilqt/.qmake.stash + +# /utils/rbutilqt/lang/ +/utils/rbutilqt/lang/*.qm # More rbutil -/rbutil/*/buildposix -/rbutil/*/uninstall_script.[ch] -/rbutil/*/install_script.[ch] -/rbutil/mkimxboot/mkimxboot -/rbutil/mknwzboot/mknwzboot -/rbutil/mkzenboot/mkzenboot -/rbutil/sansapatcher/sansapatcher -/rbutil/jztool/jztool -/rbutil/tools/bin2c +/utils/*/buildposix +/utils/*/uninstall_script.[ch] +/utils/*/install_script.[ch] +/utils/mkimxboot/mkimxboot +/utils/mknwzboot/mknwzboot +/utils/mkzenboot/mkzenboot +/utils/sansapatcher/sansapatcher +/utils/jztool/jztool +/utils/tools/bin2c # /tools/ /tools/bdf2bmp diff --git a/apps/SOURCES b/apps/SOURCES index 1628524805..444951bbcb 100644 --- a/apps/SOURCES +++ b/apps/SOURCES @@ -7,6 +7,7 @@ alarm_menu.c #endif abrepeat.c bookmark.c +core_keymap.c debug_menu.c filetypes.c language.c @@ -57,7 +58,6 @@ tree.c tagtree.c #endif filetree.c -scrobbler.c #ifdef IPOD_ACCESSORY_PROTOCOL iap/iap-core.c iap/iap-lingo0.c diff --git a/apps/action.c b/apps/action.c index b31c4fa927..9ef10936f2 100644 --- a/apps/action.c +++ b/apps/action.c @@ -69,6 +69,10 @@ static action_last_t action_last = .tick = 0, .wait_for_release = false, +#ifndef DISABLE_ACTION_REMAP + .core_keymap = NULL, +#endif + #ifdef HAVE_TOUCHSCREEN .ts_data = 0, .ts_short_press = false, @@ -499,7 +503,7 @@ static inline int action_code_worker(action_last_t *last, int *end ) { int ret = ACTION_UNKNOWN; - int i = 0; + int i = *end; unsigned int found = 0; while (cur->items[i].button_code != BUTTON_NONE) { @@ -585,10 +589,8 @@ static inline int get_next_context(const struct button_mapping *items, int i) */ static inline void action_code_lookup(action_last_t *last, action_cur_t *cur) { - int action = ACTION_NONE; + int action, i; int context = cur->context; - int i = 0; - cur->is_prebutton = false; #ifdef HAVE_LOCKED_ACTIONS @@ -598,6 +600,41 @@ static inline void action_code_lookup(action_last_t *last, action_cur_t *cur) context |= CONTEXT_LOCKED; #endif +#ifndef DISABLE_ACTION_REMAP + bool check_remap = (last->core_keymap != NULL); + /* attempt to look up the button in user supplied remap */ + if(check_remap && (context & CONTEXT_PLUGIN) == 0) + { +#if 0 /*Disable the REMOTE context for remap for now (BUTTON_REMOTE != 0)*/ + if ((cur->button & BUTTON_REMOTE) != 0) + { + context |= CONTEXT_REMOTE; + } +#endif + cur->items = last->core_keymap; + i = 0; + action = ACTION_UNKNOWN; + /* check the lut at the beginning for the desired context */ + while (cur->items[i].button_code != BUTTON_NONE) + { + if (cur->items[i].action_code == CORE_CONTEXT_REMAP(context)) + { + i = cur->items[i].button_code; + action = action_code_worker(last, cur, &i); + if (action != ACTION_UNKNOWN) + { + cur->action = action; + return; + } + } + i++; + } + } +#endif + + i = 0; + action = ACTION_NONE; + /* attempt to look up the button in the in-built keymaps */ for(;;) { /* logf("context = %x",context); */ @@ -609,9 +646,13 @@ static inline void action_code_lookup(action_last_t *last, action_cur_t *cur) #endif if ((context & CONTEXT_PLUGIN) && cur->get_context_map) + { cur->items = cur->get_context_map(context); + } else + { cur->items = get_context_mapping(context); + } if (cur->items != NULL) { @@ -1150,6 +1191,70 @@ int get_action(int context, int timeout) return action; } +int action_set_keymap(struct button_mapping* core_keymap, int count) +{ + +#ifdef DISABLE_ACTION_REMAP + count = -1; +#else + if (count > 0 && core_keymap != NULL) /* saf-tey checks :) */ + { + int i = 0; + struct button_mapping* entry = &core_keymap[count - 1]; + if (entry->action_code != (int) CONTEXT_STOPSEARCHING || + entry->button_code != BUTTON_NONE) /* check for sentinel at end*/ + { + count = -1; + } + + while (count > 0 && /* check the lut at the beginning for invalid offsets */ + (entry = &core_keymap[i])->action_code != (int) CONTEXT_STOPSEARCHING) + { + + if ((entry->action_code & CONTEXT_REMAPPED) == CONTEXT_REMAPPED) + { + int firstbtn = entry->button_code; + int endpos = firstbtn + entry->pre_button_code; + if (firstbtn > count || firstbtn < i || endpos > count) + { + /* offset out of bounds */ + count = -2; + break; + } + + if (core_keymap[endpos].button_code != BUTTON_NONE) + { + /* stop sentinel is not at end of action lut*/ + count = -3; + } + } + else /* something other than a context remap in the lut */ + { + count = -4; + break; + } + + i++; + + if (i >= count) /* no sentinel in the lut */ + { + count = -5; + break; + } + } + + if (count <= 0) + core_keymap = NULL; + } + else +#endif + { + core_keymap = NULL; + } + action_last.core_keymap = core_keymap; + return count; +} + int get_custom_action(int context,int timeout, const struct button_mapping* (*get_context_map)(int)) { diff --git a/apps/action.h b/apps/action.h index f94dd3086c..35f08a3dbd 100644 --- a/apps/action.h +++ b/apps/action.h @@ -28,10 +28,13 @@ #define TIMEOUT_NOBLOCK 0 #define CONTEXT_STOPSEARCHING 0xFFFFFFFF + #define CONTEXT_REMOTE 0x80000000 /* | this against another context to get remote buttons for that context */ #define CONTEXT_CUSTOM 0x40000000 /* | this against anything to get your context number */ #define CONTEXT_CUSTOM2 0x20000000 /* as above */ #define CONTEXT_PLUGIN 0x10000000 /* for plugins using get_custom_action */ +#define CONTEXT_REMAPPED 0x08000000 /* marker for key remap context table */ +#define CORE_CONTEXT_REMAP(context) (CONTEXT_REMAPPED | context) #ifdef HAVE_LOCKED_ACTIONS #define CONTEXT_LOCKED 0x04000000 /* flag to use alternate keymap when screen is locked */ #endif @@ -245,7 +248,6 @@ enum { ACTION_SETTINGS_DEC, ACTION_SETTINGS_DECREPEAT, ACTION_SETTINGS_DECBIGSTEP, - ACTION_SETTINGS_RESET, ACTION_SETTINGS_SET, /* Used by touchscreen targets */ /* bookmark screen */ @@ -416,6 +418,10 @@ typedef struct bool repeated; bool wait_for_release; +#ifndef DISABLE_ACTION_REMAP + struct button_mapping* core_keymap; +#endif + #ifdef HAVE_TOUCHSCREEN bool ts_short_press; int ts_data; @@ -442,6 +448,9 @@ bool action_userabort(int timeout); /* no other code should need this apart from action.c */ const struct button_mapping* get_context_mapping(int context); +/* load a key map to allow buttons for actions to be remapped see: core_keymap */ +int action_set_keymap(struct button_mapping* core_button_map, int count); + /* returns the status code variable from action.c for the button just pressed If button != NULL it will be set to the actual button code */ #define ACTION_REMOTE 0x1 /* remote was pressed */ diff --git a/apps/alarm_menu.c b/apps/alarm_menu.c index 62b54a84bb..67f8d1e8dd 100644 --- a/apps/alarm_menu.c +++ b/apps/alarm_menu.c @@ -38,161 +38,56 @@ #include "splash.h" #include "viewport.h" -static void speak_time(int hours, int minutes, bool speak_hours, bool enqueue) -{ - if (global_settings.talk_menu){ - if(speak_hours) { - talk_value(hours, UNIT_HOUR, enqueue); - talk_value(minutes, UNIT_MIN, true); - } else { - talk_value(minutes, UNIT_MIN, enqueue); - } - } -} - int alarm_screen(void) { - int h, m; - bool done = false; - struct tm *tm; - int togo; - int button; - bool update = true; - bool hour_wrapped = false; - struct viewport vp[NB_SCREENS]; - struct viewport * last_vp; - - rtc_get_alarm(&h, &m); + bool usb, update; + struct tm *now = get_time(); + struct tm atm; + memcpy(&atm, now, sizeof(struct tm)); + rtc_get_alarm(&atm.tm_hour, &atm.tm_min); /* After a battery change the RTC values are out of range */ - if (m > 60 || h > 24) { - m = 0; - h = 12; - } else { - m = m / 5 * 5; /* 5 min accuracy should be enough */ - } - FOR_NB_SCREENS(i) - { - viewport_set_defaults(&vp[i], i); - } + if (!valid_time(&atm)) + memcpy(&atm, now, sizeof(struct tm)); + atm.tm_sec = 0; - while(!done) { - if(update) - { - FOR_NB_SCREENS(i) - { - screens[i].set_viewport(&vp[i]); - screens[i].clear_viewport(); - screens[i].puts(0, 4, str(LANG_ALARM_MOD_KEYS)); - } - /* Talk when entering the wakeup screen */ - speak_time(h, m, true, true); - update = false; - } + usb = set_time_screen(str(LANG_ALARM_MOD_TIME), &atm, false); + update = valid_time(&atm); /* set_time returns invalid time if canceled */ - FOR_NB_SCREENS(i) - { - last_vp = screens[i].set_viewport(&vp[i]); - screens[i].putsf(0, 1, str(LANG_ALARM_MOD_TIME)); - screens[i].putsf(0, 2, "%02d:%02d", h, m); - screens[i].update_viewport(); - screens[i].set_viewport(last_vp); - } - button = get_action(CONTEXT_SETTINGS,HZ); + if (!usb && update) + { - switch(button) { - case ACTION_STD_OK: + now = get_time(); + int nmins = now->tm_min + (now->tm_hour * 60); + int amins = atm.tm_min + (atm.tm_hour * 60); + int mins_togo = (amins - nmins + 1440) % 1440; /* prevent that an alarm occurs in the shutdown procedure */ /* accept alarms only if they are in 2 minutes or more */ - tm = get_time(); - togo = (m + h * 60 - tm->tm_min - tm->tm_hour * 60 + 1440) % 1440; - - if (togo > 1) { + if (mins_togo > 1) { rtc_init(); - rtc_set_alarm(h,m); + rtc_set_alarm(atm.tm_hour,atm.tm_min); rtc_enable_alarm(true); if (global_settings.talk_menu) { talk_id(LANG_ALARM_MOD_TIME_TO_GO, true); - talk_value(togo / 60, UNIT_HOUR, true); - talk_value(togo % 60, UNIT_MIN, true); + talk_value(mins_togo / 60, UNIT_HOUR, true); + talk_value(mins_togo % 60, UNIT_MIN, true); talk_force_enqueue_next(); } splashf(HZ*2, str(LANG_ALARM_MOD_TIME_TO_GO), - togo / 60, togo % 60); - done = true; + mins_togo / 60, mins_togo % 60); } else { splash(HZ, ID2P(LANG_ALARM_MOD_ERROR)); - update = true; - } - break; - - /* inc(m) */ - case ACTION_SETTINGS_INC: - case ACTION_SETTINGS_INCREPEAT: - m += 5; - if (m == 60) { - h += 1; - m = 0; - hour_wrapped = true; + update = false; } - if (h == 24) - h = 0; - - speak_time(h, m, hour_wrapped, false); - break; - - /* dec(m) */ - case ACTION_SETTINGS_DEC: - case ACTION_SETTINGS_DECREPEAT: - m -= 5; - if (m == -5) { - h -= 1; - m = 55; - hour_wrapped = true; - } - if (h == -1) - h = 23; - - speak_time(h, m, hour_wrapped, false); - break; - - /* inc(h) */ - case ACTION_STD_NEXT: - case ACTION_STD_NEXTREPEAT: - h = (h+1) % 24; - - if (global_settings.talk_menu) - talk_value(h, UNIT_HOUR, false); - break; - - /* dec(h) */ - case ACTION_STD_PREV: - case ACTION_STD_PREVREPEAT: - h = (h+23) % 24; - - if (global_settings.talk_menu) - talk_value(h, UNIT_HOUR, false); - break; + } - case ACTION_STD_CANCEL: - rtc_enable_alarm(false); + if (usb || !update) + { + if (!usb) splash(HZ*2, ID2P(LANG_ALARM_MOD_DISABLE)); - done = true; - break; - - case ACTION_NONE: - hour_wrapped = false; - break; - - default: - if(default_event_handler(button) == SYS_USB_CONNECTED) - { - rtc_enable_alarm(false); - return 1; - } - break; - } + rtc_enable_alarm(false); + return 1; } return 0; } diff --git a/apps/buffering.c b/apps/buffering.c index 3adbc4a6b9..8661a42ab8 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -71,8 +71,6 @@ /* amount of data to read in one read() call */ #define BUFFERING_DEFAULT_FILECHUNK (1024*32) -#define BUF_HANDLE_MASK 0x7FFFFFFF - enum handle_flags { H_CANWRAP = 0x1, /* Handle data may wrap in buffer */ @@ -295,12 +293,11 @@ static int next_handle_id(void) { static int cur_handle_id = 0; - /* Wrap signed int is safe and 0 doesn't happen */ - int next_hid = (cur_handle_id + 1) & BUF_HANDLE_MASK; - if (next_hid == 0) - next_hid = 1; - - cur_handle_id = next_hid; + int next_hid = cur_handle_id + 1; + if (next_hid == INT_MAX) + cur_handle_id = 0; /* next would overflow; reset the counter */ + else + cur_handle_id = next_hid; return next_hid; } @@ -851,8 +848,9 @@ static bool fill_buffer(void) Return value is the total size (struct + data). */ static int load_image(int fd, const char *path, struct bufopen_bitmap_data *data, - size_t bufidx) + size_t bufidx, size_t max_size) { + (void)path; int rc; struct bitmap *bmp = ringbuf_ptr(bufidx); struct dim *dim = data->dim; @@ -866,25 +864,20 @@ static int load_image(int fd, const char *path, #if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) bmp->maskdata = NULL; #endif - int free = (int)MIN(buffer_len - bytes_used(), buffer_len - bufidx) - - sizeof(struct bitmap); - + const int format = FORMAT_NATIVE | FORMAT_DITHER | + FORMAT_RESIZE | FORMAT_KEEP_ASPECT; #ifdef HAVE_JPEG if (aa != NULL) { lseek(fd, aa->pos, SEEK_SET); - rc = clip_jpeg_fd(fd, aa->size, bmp, free, FORMAT_NATIVE|FORMAT_DITHER| - FORMAT_RESIZE|FORMAT_KEEP_ASPECT, NULL); + rc = clip_jpeg_fd(fd, aa->size, bmp, (int)max_size, format, NULL); } else if (strcmp(path + strlen(path) - 4, ".bmp")) - rc = read_jpeg_fd(fd, bmp, free, FORMAT_NATIVE|FORMAT_DITHER| - FORMAT_RESIZE|FORMAT_KEEP_ASPECT, NULL); + rc = read_jpeg_fd(fd, bmp, (int)max_size, format, NULL); else #endif - rc = read_bmp_fd(fd, bmp, free, FORMAT_NATIVE|FORMAT_DITHER| - FORMAT_RESIZE|FORMAT_KEEP_ASPECT, NULL); + rc = read_bmp_fd(fd, bmp, (int)max_size, format, NULL); return rc + (rc > 0 ? sizeof(struct bitmap) : 0); - (void)path; } #endif /* HAVE_ALBUMART */ @@ -970,11 +963,18 @@ int bufopen(const char *file, off_t offset, enum data_type type, size_t size = 0; #ifdef HAVE_ALBUMART if (type == TYPE_BITMAP) { - /* If albumart is embedded, the complete file is not buffered, - * but only the jpeg part; filesize() would be wrong */ + /* Bitmaps are resized to the requested dimensions when loaded, + * so the file size should not be used as it may be too large + * or too small */ struct bufopen_bitmap_data *aa = user_data; - if (aa->embedded_albumart) - size = aa->embedded_albumart->size; + size = BM_SIZE(aa->dim->width, aa->dim->height, FORMAT_NATIVE, false); + size += sizeof(struct bitmap); + +#ifdef HAVE_JPEG + /* JPEG loading requires extra memory + * TODO: don't add unncessary overhead for .bmp images! */ + size += JPEG_DECODE_OVERHEAD; +#endif } #endif @@ -983,7 +983,10 @@ int bufopen(const char *file, off_t offset, enum data_type type, unsigned int hflags = 0; if (type == TYPE_PACKET_AUDIO || type == TYPE_CODEC) - hflags = H_CANWRAP; + hflags |= H_CANWRAP; + /* Bitmaps need their space allocated up front */ + if (type == TYPE_BITMAP) + hflags |= H_ALLOCALL; size_t adjusted_offset = offset; if (adjusted_offset > size) @@ -1034,7 +1037,7 @@ int bufopen(const char *file, off_t offset, enum data_type type, #ifdef HAVE_ALBUMART if (type == TYPE_BITMAP) { /* Bitmap file: we load the data instead of the file */ - int rc = load_image(fd, file, user_data, data); + int rc = load_image(fd, file, user_data, data, padded_size); if (rc <= 0) { handle_id = ERR_FILE_ERROR; } else { @@ -1433,62 +1436,6 @@ ssize_t bufgetdata(int handle_id, size_t size, void **data) return size; } -ssize_t bufgettail(int handle_id, size_t size, void **data) -{ - if (thread_self() != buffering_thread_id) - return ERR_WRONG_THREAD; /* only from buffering thread */ - - /* We don't support tail requests of > guardbuf_size, for simplicity */ - if (size > GUARD_BUFSIZE) - return ERR_INVALID_VALUE; - - const struct memory_handle *h = find_handle(handle_id); - if (!h) - return ERR_HANDLE_NOT_FOUND; - - if (h->end >= h->filesize) { - size_t tidx = ringbuf_sub_empty(h->widx, size); - - if (tidx + size > buffer_len) { - size_t copy_n = tidx + size - buffer_len; - memcpy(guard_buffer, ringbuf_ptr(0), copy_n); - } - - *data = ringbuf_ptr(tidx); - } - else { - size = ERR_HANDLE_NOT_DONE; - } - - return size; -} - -ssize_t bufcuttail(int handle_id, size_t size) -{ - if (thread_self() != buffering_thread_id) - return ERR_WRONG_THREAD; /* only from buffering thread */ - - struct memory_handle *h = find_handle(handle_id); - if (!h) - return ERR_HANDLE_NOT_FOUND; - - if (h->end >= h->filesize) { - /* Cannot trim to before read position */ - size_t available = h->end - MAX(h->start, h->pos); - if (available < size) - size = available; - - h->widx = ringbuf_sub_empty(h->widx, size); - h->filesize -= size; - h->end -= size; - } else { - size = ERR_HANDLE_NOT_DONE; - } - - return size; -} - - /* SECONDARY EXPORTED FUNCTIONS ============================ diff --git a/apps/buffering.h b/apps/buffering.h index 1a75d865ae..bc47d6b1a1 100644 --- a/apps/buffering.h +++ b/apps/buffering.h @@ -46,8 +46,7 @@ enum data_type { #define ERR_FILE_ERROR -4 #define ERR_HANDLE_NOT_DONE -5 #define ERR_UNSUPPORTED_TYPE -6 -#define ERR_WRONG_THREAD -7 -#define ERR_BITMAP_TOO_LARGE -8 +#define ERR_BITMAP_TOO_LARGE -7 /* Initialise the buffering subsystem */ void buffering_init(void) INIT_ATTR; @@ -68,8 +67,6 @@ bool buffering_reset(char *buf, size_t buflen); * bufftell : Return the handle's file read position * bufread : Copy data from a handle to a buffer * bufgetdata: Obtain a pointer for linear access to a "size" amount of data - * bufgettail: Out-of-band get the last size bytes of a handle. - * bufcuttail: Out-of-band remove the trailing 'size' bytes of a handle. * * NOTE: bufread and bufgetdata will block the caller until the requested * amount of data is ready (unless EOF is reached). @@ -85,8 +82,6 @@ int bufadvance(int handle_id, off_t offset); off_t bufftell(int handle_id); ssize_t bufread(int handle_id, size_t size, void *dest); ssize_t bufgetdata(int handle_id, size_t size, void **data); -ssize_t bufgettail(int handle_id, size_t size, void **data); -ssize_t bufcuttail(int handle_id, size_t size); /*************************************************************************** * SECONDARY FUNCTIONS diff --git a/apps/core_keymap.c b/apps/core_keymap.c new file mode 100644 index 0000000000..dbe7ae0072 --- /dev/null +++ b/apps/core_keymap.c @@ -0,0 +1,146 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2020 by William Wilgus + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include "action.h" +#include "core_alloc.h" +#include "core_keymap.h" + +/*#define LOGF_ENABLE*/ +#include "logf.h" + +#if !defined(__PCTOOL__) || defined(CHECKWPS) +static int keymap_handle = -1; + +static int core_alloc_keymap(size_t bufsz) +{ + keymap_handle = core_alloc_ex("key remap", bufsz, &buflib_ops_locked); + return keymap_handle; +} + +static void core_free_keymap(void) +{ + action_set_keymap(NULL, -1); + if (keymap_handle > 0) /* free old buffer */ + { + keymap_handle = core_free(keymap_handle); + } +} + +/* Allocates buffer from core and copies keymap into it */ +int core_set_keyremap(struct button_mapping* core_keymap, int count) +{ + + core_free_keymap(); + if (count > 0) + { + size_t bufsize = count * sizeof(struct button_mapping); + if (core_keymap != NULL && core_alloc_keymap(bufsize) > 0) + { + char *buf = core_get_data(keymap_handle); + memcpy(buf, core_keymap, bufsize); + count = action_set_keymap((struct button_mapping *) buf, count); + } + else + count = -1; + } + return count; +} + +int core_load_key_remap(const char *filename) +{ + char *buf; + int fd = -1; + int count = 0; + size_t fsize = 0; + core_free_keymap(); + + if (filename != NULL) + count = open_key_remap(filename, &fd, &fsize); + while (count > 0) + { + if (core_alloc_keymap(fsize) <= 0) + { + count = -30; + logf("core_keymap: %d Failed to allocate buffer", count); + break; + } + buf = core_get_data(keymap_handle); + if (read(fd, buf, fsize) == (ssize_t) fsize) + { + count = action_set_keymap((struct button_mapping *) buf, count); + } + else + { + count = -40; + logf("core_keymap: %d Failed to read", count); + } + break; + } + close(fd); + return count; +} + +int open_key_remap(const char *filename, int *fd, size_t *fsize) +{ + int count = 0; + + while (filename && fd && fsize) + { + *fsize = 0; + *fd = open(filename, O_RDONLY); + if (*fd) + { + *fsize = filesize(*fd); + + count = *fsize / sizeof(struct button_mapping); + + if (count * sizeof(struct button_mapping) != *fsize) + { + count = -10; + logf("core_keymap: %d Size mismatch", count); + break; + } + + if (count > 1) + { + struct button_mapping header = {0}; + read(*fd, &header, sizeof(struct button_mapping)); + if (KEYREMAP_VERSION == header.action_code && + KEYREMAP_HEADERID == header.button_code && + header.pre_button_code == count) + { + count--; + *fsize -= sizeof(struct button_mapping); + } + else /* Header mismatch */ + { + count = -20; + logf("core_keymap: %d Header mismatch", count); + break; + } + } + } + break; + } + return count; +} + +#endif /* !defined(__PCTOOL__) */ diff --git a/apps/core_keymap.h b/apps/core_keymap.h new file mode 100644 index 0000000000..dad9875364 --- /dev/null +++ b/apps/core_keymap.h @@ -0,0 +1,72 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2020 by William Wilgus + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#ifndef CORE_KEYMAP_H +#define CORE_KEYMAP_H + +#include <stdbool.h> +#include <inttypes.h> +#include "config.h" +#include "action.h" +#define KEYREMAP_VERSION 1 +#define KEYREMAP_HEADERID (LAST_ACTION_PLACEHOLDER | (TARGET_ID << 8)) + +/* If exists remap file will be loaded at startup */ +#define CORE_KEYREMAP_FILE ROCKBOX_DIR "/keyremap.kmf" + +/* Allocates core buffer, copies keymap to allow buttons for actions to be remapped*/ +int core_set_keyremap(struct button_mapping* core_keymap, int count); + +/* open_key_remap(filename , *fd (you must close file_descriptor), *fsize) + * checks/strips header and returns remaining count + * fd is opened and set to first record + * filesize contains the size of the remaining records +*/ +int open_key_remap(const char *filename, int *fd, size_t *filesize); + +/* load a remap file to allow buttons for actions to be remapped */ +int core_load_key_remap(const char *filename); + +/* + * entries consist of 3 int [action, button, prebtn] + * the header (VERSION, LAST_DEFINED_ACTION, count) is stripped by open_key_remap + * + * context look up table is at the beginning + * action_code contains (context | CONTEXT_REMAPPED) + * button_code contains index of first remapped action for the matched context + * prebtn_code contains count of actions in this remapped context + * [-1] REMAP_VERSION, REMAP_HEADERID, entry count(9) / DISCARDED AFTER LOAD + * [0] CORE_CONTEXT_REMAP(ctx1), offset1=(3), count=(1) + * [1] CORE_CONTEXT_REMAP(ctx2, offset2=(5), count=(2) + * [2] sentinel, 0, 0 + * [3] act0, btn, 0 + * [4] sentinel 0, 0 + * [5] act1, btn, 0 + * [6] act2, btn1 + * [7] sentinel, 0, 0 + * + * Note: + * last entry of each group is always the sentinel [CONTEXT_STOPSEARCHING, BUTTON_NONE, BUTTON_NONE] + * contexts must match exactly -- re-mapped contexts run before the built in w/ fall through contexts + * ie. you can't remap std_context and expect it to match std_context actions from the WPS context. + */ + +#endif /* CORE_KEYMAP_H */ + diff --git a/apps/cuesheet.c b/apps/cuesheet.c index be89ef96cf..98040f9992 100644 --- a/apps/cuesheet.c +++ b/apps/cuesheet.c @@ -123,6 +123,7 @@ static unsigned long parse_cue_index(const char *line) /* assumes strncmp(line, "INDEX 01", 8) & NULL terminated string */ /* INDEX 01 MM:SS:FF\0 (00:00:00\0 - 99:99:99\0)*/ const unsigned field_m[3] = {60 * 1000, 1000, 13}; /* MM:SS:~FF*/ + const unsigned field_max[3] = {30000, 59, 74}; /* MM, SS, FF */ const char f_sep = ':'; int field = -1; unsigned long offset = 0; /* ms from start of track */ @@ -138,7 +139,7 @@ static unsigned long parse_cue_index(const char *line) while (isdigit(*line)) { value = 10 * value + (*line - '0'); - if (value > 99) /* Sanity check bail early */ + if (value > field_max[field]) /* Sanity check bail early */ return 0; line++; } @@ -165,6 +166,38 @@ static unsigned long parse_cue_index(const char *line) return offset; } +enum eCS_SUPPORTED_TAGS { + eCS_TRACK = 0, eCS_INDEX_01, eCS_TITLE, + eCS_PERFORMER, eCS_SONGWRITER, eCS_FILE, + eCS_COUNT_TAGS_COUNT, eCS_NOTFOUND = -1 +}; + +static enum eCS_SUPPORTED_TAGS cuesheet_tag_get_option(const char *option) +{ + #define CS_OPTN(str) {str, sizeof(str)-1} + static const struct cs_option_t { + const char *str; + const int len; + } cs_options[eCS_COUNT_TAGS_COUNT + 1] = { + [eCS_TRACK] = CS_OPTN("TRACK"), + [eCS_INDEX_01] = CS_OPTN("INDEX 01"), + [eCS_TITLE] =CS_OPTN("TITLE"), + [eCS_PERFORMER] =CS_OPTN("PERFORMER"), + [eCS_SONGWRITER] =CS_OPTN("SONGWRITER"), + [eCS_FILE] =CS_OPTN("FILE"), + [eCS_COUNT_TAGS_COUNT] = {NULL, 0} /*SENTINEL*/ + }; + + const struct cs_option_t *op; + for (int i=0; ((op=&cs_options[i]))->str != NULL; i++) + { + if (strncmp(option, op->str, op->len) == 0) + return i; + } + return eCS_NOTFOUND; +#undef CS_OPTN +} + /* parse cuesheet "cue_file" and store the information in "cue" */ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue) { @@ -190,22 +223,25 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue) /* Look for a Unicode BOM */ unsigned char bom_read = 0; - read(fd, line, BOM_UTF_8_SIZE); - if(!memcmp(line, BOM_UTF_8, BOM_UTF_8_SIZE)) - { - char_enc = CHAR_ENC_UTF_8; - bom_read = BOM_UTF_8_SIZE; - } - else if(!memcmp(line, BOM_UTF_16_LE, BOM_UTF_16_SIZE)) - { - char_enc = CHAR_ENC_UTF_16_LE; - bom_read = BOM_UTF_16_SIZE; - } - else if(!memcmp(line, BOM_UTF_16_BE, BOM_UTF_16_SIZE)) + if (read(fd, line, BOM_UTF_8_SIZE) > 0) { - char_enc = CHAR_ENC_UTF_16_BE; - bom_read = BOM_UTF_16_SIZE; + if(!memcmp(line, BOM_UTF_8, BOM_UTF_8_SIZE)) + { + char_enc = CHAR_ENC_UTF_8; + bom_read = BOM_UTF_8_SIZE; + } + else if(!memcmp(line, BOM_UTF_16_LE, BOM_UTF_16_SIZE)) + { + char_enc = CHAR_ENC_UTF_16_LE; + bom_read = BOM_UTF_16_SIZE; + } + else if(!memcmp(line, BOM_UTF_16_BE, BOM_UTF_16_SIZE)) + { + char_enc = CHAR_ENC_UTF_16_BE; + bom_read = BOM_UTF_16_SIZE; + } } + if (bom_read < BOM_UTF_8_SIZE) lseek(fd, cue_file->pos + bom_read, SEEK_SET); if (is_embedded) @@ -245,11 +281,16 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue) } s = skip_whitespace(line); - if (!strncmp(s, "TRACK", 5)) +/* RECOGNIZED TAGS *********************** +* eCS_TRACK = 0, eCS_INDEX_01, eCS_TITLE, +* eCS_PERFORMER, eCS_SONGWRITER, eCS_FILE, +*/ + enum eCS_SUPPORTED_TAGS option = cuesheet_tag_get_option(s); + if (option == eCS_TRACK) { cue->track_count++; } - else if (!strncmp(s, "INDEX 01", 8)) + else if (option == eCS_INDEX_01) { #if 0 s = strchr(s,' '); @@ -265,10 +306,7 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue) cue->tracks[cue->track_count-1].offset = parse_cue_index(s); #endif } - else if (!strncmp(s, "TITLE", 5) - || !strncmp(s, "PERFORMER", 9) - || !strncmp(s, "SONGWRITER", 10) - || !strncmp(s, "FILE", 4)) + else if (option != eCS_NOTFOUND) { char *dest = NULL; char *string = get_string(s); @@ -278,24 +316,24 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue) size_t count = MAX_NAME*3 + 1; size_t count8859 = MAX_NAME; - switch (*s) + switch (option) { - case 'T': /* TITLE */ + case eCS_TITLE: /* TITLE */ dest = (cue->track_count <= 0) ? cue->title : cue->tracks[cue->track_count-1].title; break; - case 'P': /* PERFORMER */ + case eCS_PERFORMER: /* PERFORMER */ dest = (cue->track_count <= 0) ? cue->performer : cue->tracks[cue->track_count-1].performer; break; - case 'S': /* SONGWRITER */ + case eCS_SONGWRITER: /* SONGWRITER */ dest = (cue->track_count <= 0) ? cue->songwriter : cue->tracks[cue->track_count-1].songwriter; break; - case 'F': /* FILE */ + case eCS_FILE: /* FILE */ if (is_embedded || cue->track_count > 0) break; @@ -303,6 +341,16 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue) count = MAX_PATH; count8859 = MAX_PATH/3; break; + case eCS_TRACK: + /*Fall-Through*/ + case eCS_INDEX_01: + /*Fall-Through*/ + case eCS_COUNT_TAGS_COUNT: + /*Fall-Through*/ + case eCS_NOTFOUND: /*Shouldn't happen*/ + logf(HZ * 2, "Bad Tag %d @ %s", (int) option, __func__); + dest = NULL; + break; } if (dest) @@ -319,6 +367,7 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue) } } } + if (is_embedded) { bytes_left -= line_len; diff --git a/apps/debug_menu.c b/apps/debug_menu.c index 4c0486595f..f510597ad2 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c @@ -39,7 +39,6 @@ #include "audio.h" #include "settings.h" #include "list.h" -#include "statusbar.h" #include "dir.h" #include "panic.h" #include "screens.h" @@ -128,12 +127,18 @@ #if defined(HAVE_BOOTDATA) && !defined(SIMULATOR) #include "bootdata.h" +#include "multiboot.h" +#include "rbpaths.h" +#include "pathfuncs.h" +#include "rb-loader.h" #endif +#define SCREEN_MAX_CHARS (LCD_WIDTH / SYSFONT_WIDTH) + static const char* threads_getname(int selected_item, void *data, char *buffer, size_t buffer_len) { - (void)data; + int *x_offset = (int*) data; #if NUM_CORES > 1 if (selected_item < (int)NUM_CORES) @@ -153,36 +158,77 @@ static const char* threads_getname(int selected_item, void *data, struct thread_debug_info threadinfo; if (thread_get_debug_info(selected_item, &threadinfo) > 0) { - fmtstr = "%2d:" IF_COP(" (%d)") " %s" IF_PRIO(" %d %d") + fmtstr = "%2d:" IF_COP(" (%d)") " %s%n" IF_PRIO(" %d %d") IFN_SDL(" %2d%%") " %s"; } - - snprintf(buffer, buffer_len, fmtstr, + int status_len; + size_t len = snprintf(buffer, buffer_len, fmtstr, selected_item, IF_COP(threadinfo.core,) threadinfo.statusstr, + &status_len, IF_PRIO(threadinfo.base_priority, threadinfo.current_priority,) IFN_SDL(threadinfo.stack_usage,) threadinfo.name); - return buffer; + int start = 0; +#if LCD_WIDTH <= 128 + if (len >= SCREEN_MAX_CHARS) + { + int ch_offset = (*x_offset)%(len-1); + int rem = SCREEN_MAX_CHARS - (len - ch_offset); + if (rem > 0) + ch_offset -= rem; + + if (ch_offset > 0) + { + /* don't scroll the # and status */ + status_len++; + if ((unsigned int)ch_offset + status_len < buffer_len) + memmove(&buffer[ch_offset], &buffer[0], status_len); + start = ch_offset; + } + } +#else + (void) x_offset; + (void) len; +#endif + return &buffer[start]; } static int dbg_threads_action_callback(int action, struct gui_synclist *lists) { - (void)lists; + if (action == ACTION_NONE) + { + return ACTION_REDRAW; + } +#if LCD_WIDTH <= 128 + int *x_offset = ((int*) lists->data); + if (action == ACTION_STD_OK) + { + *x_offset += 1; action = ACTION_REDRAW; + } + else if (action != ACTION_UNKNOWN) + { + *x_offset = 0; + } +#else + (void) lists; +#endif return action; } /* Test code!!! */ static bool dbg_os(void) { struct simplelist_info info; + int xoffset = 0; + simplelist_info_init(&info, IF_COP("Core and ") "Stack usage:", - MAXTHREADS IF_COP( + NUM_CORES ), NULL); + MAXTHREADS IF_COP( + NUM_CORES ), &xoffset); info.hide_selection = true; - info.scroll_all = true; + info.scroll_all = false; info.action_callback = dbg_threads_action_callback; info.get_name = threads_getname; return simplelist_show_list(&info); @@ -330,6 +376,13 @@ static bool dbg_buffering_thread(void) struct buffering_debug d; size_t filebuflen = audio_get_filebuflen(); /* This is a size_t, but call it a long so it puts a - when it's bad. */ +#if LCD_WIDTH > 96 + #define STR_DATAREM "data_rem" + const char * const fmt_used = "%s: %6ld/%ld"; +#else /* clipzip, ?*/ + #define STR_DATAREM "remain" + const char * const fmt_used = "%s:%ld/%ld"; +#endif #ifndef CPU_MULTI_FREQUENCY boost_ticks = 0; @@ -366,13 +419,13 @@ static bool dbg_buffering_thread(void) screens[i].clear_display(); - screens[i].putsf(0, line++, "pcm: %6ld/%ld", (long) bufused, (long) bufsize); + screens[i].putsf(0, line++, fmt_used, "pcm", (long) bufused, (long) bufsize); gui_scrollbar_draw(&screens[i],0, line*8, screens[i].lcdwidth, 6, bufsize, 0, bufused, HORIZONTAL); line++; - screens[i].putsf(0, line++, "alloc: %6ld/%ld", audio_filebufused(), + screens[i].putsf(0, line++, fmt_used, "alloc", audio_filebufused(), (long) filebuflen); #if LCD_HEIGHT > 80 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_HEIGHT > 80) @@ -382,7 +435,7 @@ static bool dbg_buffering_thread(void) filebuflen, 0, audio_filebufused(), HORIZONTAL); line++; - screens[i].putsf(0, line++, "real: %6ld/%ld", (long)d.buffered_data, + screens[i].putsf(0, line++, fmt_used, "real", (long)d.buffered_data, (long)filebuflen); gui_scrollbar_draw(&screens[i],0, line*8, screens[i].lcdwidth, 6, @@ -391,7 +444,7 @@ static bool dbg_buffering_thread(void) } #endif - screens[i].putsf(0, line++, "usefl: %6ld/%ld", (long)(d.useful_data), + screens[i].putsf(0, line++, fmt_used, "usefl", (long)(d.useful_data), (long)filebuflen); #if LCD_HEIGHT > 80 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_HEIGHT > 80) @@ -403,7 +456,7 @@ static bool dbg_buffering_thread(void) } #endif - screens[i].putsf(0, line++, "data_rem: %ld", (long)d.data_rem); + screens[i].putsf(0, line++, "%s: %ld", STR_DATAREM, (long)d.data_rem); screens[i].putsf(0, line++, "track count: %2u", audio_track_count()); @@ -442,6 +495,7 @@ static bool dbg_buffering_thread(void) screens[i].setfont(FONT_UI); return false; +#undef STR_DATAREM } static const char* bf_getname(int selected_item, void *data, @@ -816,8 +870,7 @@ static int tsc2100debug_action_callback(int action, struct gui_synclist *lists) if (action == ACTION_STD_OK) { *page = (*page+1)%3; - snprintf(lists->title, 32, - "tsc2100 registers - Page %d", *page); + snprintf(lists->title, 32, "tsc2100 registers - Page %d", *page); return ACTION_REDRAW; } return action; @@ -825,7 +878,8 @@ static int tsc2100debug_action_callback(int action, struct gui_synclist *lists) static bool tsc2100_debug(void) { int page = 0; - char title[32] = "tsc2100 registers - Page 0"; + char title[32]; + snprintf(title, 32, "tsc2100 registers - Page %d", page); struct simplelist_info info; simplelist_info_init(&info, title, 32, &page); info.timeout = HZ/100; @@ -849,7 +903,7 @@ static bool tsc2100_debug(void) static bool view_battery(void) { int view = 0; - int i, x, y, y1, y2, grid, graph; + int i, x, y, z, y1, y2, grid, graph; unsigned short maxv, minv; lcd_setfont(FONT_SYSFIXED); @@ -876,7 +930,7 @@ static bool view_battery(void) else grid = 5; - lcd_putsf(0, 0, "battery %d.%03dV", power_history[0] / 1000, + lcd_putsf(0, 0, "%s %d.%03dV", "Battery", power_history[0] / 1000, power_history[0] % 1000); lcd_putsf(0, 1, "%d.%03d-%d.%03dV (%2dmV)", minv / 1000, minv % 1000, maxv / 1000, maxv % 1000, @@ -887,7 +941,7 @@ static bool view_battery(void) grid = 10; else grid = 1; - lcd_putsf(0, 0, "battery %d%%", power_history[0]); + lcd_putsf(0, 0, "%s %d%%", "Battery", power_history[0]); lcd_putsf(0, 1, "%d%%-%d%% (%d %%)", minv, maxv, grid); #endif @@ -942,17 +996,16 @@ static bool view_battery(void) lcd_putsf(0, 0, "Pwr status: %s", charging_state() ? "charging" : "discharging"); #else - lcd_puts(0, 0, "Power status: unknown"); + lcd_putsf(0, 0, "Pwr status: %s", "unknown"); #endif - - y = _battery_voltage(); + battery_read_info(&y, &z); if (y > 0) - lcd_putsf(0, 1, "Battery: %d.%03d V (%d %%)", y / 1000, y % 1000, battery_level()); - else - lcd_putsf(0, 1, "Battery: %d %%", _battery_level()); + lcd_putsf(0, 1, "%s: %d.%03d V (%d %%)", "Battery", y / 1000, y % 1000, z); + else if (z > 0) + lcd_putsf(0, 1, "%s: %d %%", "Battery", z); #ifdef ADC_EXT_POWER y = (adc_read(ADC_EXT_POWER) * EXT_SCALE_FACTOR) / 1000; - lcd_putsf(0, 2, "External: %d.%03d V", y / 1000, y % 1000); + lcd_putsf(0, 2, "%s: %d.%03d V", "External", y / 1000, y % 1000); #endif #if CONFIG_CHARGING #if defined IPOD_NANO || defined IPOD_VIDEO @@ -966,7 +1019,7 @@ static bool view_battery(void) usb_pwr ? "present" : "absent"); lcd_putsf(0, 4, "EXT pwr: %s", ext_pwr ? "present" : "absent"); - lcd_putsf(0, 5, "Battery: %s", + lcd_putsf(0, 5, "%s: %s", "Battery", charging ? "charging" : (usb_pwr||ext_pwr) ? "charged" : "discharging"); lcd_putsf(0, 6, "Dock mode: %s", dock ? "enabled" : "disabled"); @@ -1020,7 +1073,7 @@ static bool view_battery(void) lcd_putsf(0, line++, "State: %s", chrgstate_strings[y]); - lcd_putsf(0, line++, "Battery Switch: %s", + lcd_putsf(0, line++, "%s Switch: %s", "Battery", (st & POWER_INPUT_BATTERY) ? "On" : "Off"); y = chrgraw_adc_voltage(); @@ -1043,11 +1096,11 @@ static bool view_battery(void) y = battery_adc_temp(); if (y != INT_MIN) { - lcd_putsf(0, line++, "T Battery: %d\u00b0C (%d\u00b0F)", y, - (9*y + 160) / 5); + lcd_putsf(0, line++, "T %s: %d\u00b0C (%d\u00b0F)", + "Battery", y, (9*y + 160) / 5); } else { /* Conversion disabled */ - lcd_puts(0, line++, "T Battery: ?"); + lcd_putsf(0, line++, "T %s: ?", "Battery"); } #elif defined(HAVE_AS3514) && CONFIG_CHARGING static const char * const chrgstate_strings[] = @@ -1074,7 +1127,7 @@ static bool view_battery(void) y = pmu_read_battery_voltage(); lcd_putsf(17, 1, "RAW: %d.%03d V", y / 1000, y % 1000); y = pmu_read_battery_current(); - lcd_putsf(0, 2, "Battery current: %d mA", y); + lcd_putsf(0, 2, "%s current: %d mA", "Battery", y); lcd_putsf(0, 3, "PWRCON: %08x %08x", PWRCON, PWRCONEXT); lcd_putsf(0, 4, "CLKCON: %08x %03x %03x", CLKCON, CLKCON2, CLKCON3); lcd_putsf(0, 5, "PLL: %06x %06x %06x", PLL0PMS, PLL1PMS, PLL2PMS); @@ -1100,9 +1153,9 @@ static bool view_battery(void) lcd_putsf(0, 3, "Charger: %s", charger_inserted() ? "present" : "absent"); x = (avr_hid_hdq_read_short(HDQ_REG_TEMP) / 4) - 273; - lcd_putsf(0, 4, "Battery temperature: %d C", x); + lcd_putsf(0, 4, "%s temperature: %d C", "Battery", x); x = (avr_hid_hdq_read_short(HDQ_REG_AI) * 357) / 200; - lcd_putsf(0, 5, "Battery current: %d.%01d mA", x / 10, x % 10); + lcd_putsf(0, 5, "%s current: %d.%01d mA", "Battery", x / 10, x % 10); x = (avr_hid_hdq_read_short(HDQ_REG_AP) * 292) / 20; lcd_putsf(0, 6, "Discharge power: %d.%01d mW", x / 10, x % 10); x = (avr_hid_hdq_read_short(HDQ_REG_SAE) * 292) / 2; @@ -1140,13 +1193,17 @@ static bool view_battery(void) power_history[0] % 1000); #endif - lcd_putsf(0, 6, "battery level: %d%%", battery_level()); + lcd_putsf(0, 6, "%s level: %d%%", "Battery", battery_level()); int time_left = battery_time(); if (time_left >= 0) lcd_putsf(0, 7, "Est. remain: %d m", time_left); else lcd_puts(0, 7, "Estimation n/a"); + +#if (CONFIG_BATTERY_MEASURE & CURRENT_MEASURE) + lcd_putsf(0, 8, "%s current: %d mA", "Battery", battery_current()); +#endif break; } @@ -2027,12 +2084,12 @@ static int radio_callback(int btn, struct gui_synclist *lists) tea5767_dbg_info(&nfo); simplelist_addline("Philips regs:"); simplelist_addline( - " Read: %02X %02X %02X %02X %02X", + " %s: %02X %02X %02X %02X %02X", "Read", (unsigned)nfo.read_regs[0], (unsigned)nfo.read_regs[1], (unsigned)nfo.read_regs[2], (unsigned)nfo.read_regs[3], (unsigned)nfo.read_regs[4]); simplelist_addline( - " Write: %02X %02X %02X %02X %02X", + " %s: %02X %02X %02X %02X %02X", "Write", (unsigned)nfo.write_regs[0], (unsigned)nfo.write_regs[1], (unsigned)nfo.write_regs[2], (unsigned)nfo.write_regs[3], (unsigned)nfo.write_regs[4]); @@ -2520,19 +2577,25 @@ static bool dbg_skin_engine(void) #if defined(HAVE_BOOTDATA) && !defined(SIMULATOR) static bool dbg_boot_data(void) { - unsigned int crc = 0; + unsigned int crc = crc_32(boot_data.payload, boot_data.length, 0xffffffff); struct simplelist_info info; info.scroll_all = true; simplelist_info_init(&info, "Boot data", 1, NULL); simplelist_set_line_count(0); - crc = crc_32(boot_data.payload, boot_data.length, 0xffffffff); + #if defined(HAVE_MULTIBOOT) + char rootpath[MAX_PATH / 2] = RB_ROOT_CONTENTS_DIR; int boot_volume = 0; if(crc == boot_data.crc) { boot_volume = boot_data.boot_volume; /* boot volume contained in uint8_t payload */ + int rtlen = get_redirect_dir(rootpath, sizeof(rootpath), boot_volume, "", ""); + while (rtlen > 0 && rootpath[--rtlen] == PATH_SEPCH) /* remove extra separators */ + rootpath[rtlen] = '\0'; } simplelist_addline("Boot Volume: <%lu>", boot_volume); + simplelist_addline("Root:"); + simplelist_addline("%s", rootpath); simplelist_addline(""); #endif simplelist_addline("Bootdata RAW:"); diff --git a/apps/features.txt b/apps/features.txt index ec2113cbc8..45e06e5e64 100644 --- a/apps/features.txt +++ b/apps/features.txt @@ -105,6 +105,10 @@ radio_remote #endif #endif +#if defined(HAVE_RDS_CAP) +rds +#endif + #if defined(HAVE_RECORDING) recording #if defined(HAVE_LINE_IN) diff --git a/apps/filetree.c b/apps/filetree.c index 75a32a9e42..1944713d13 100644 --- a/apps/filetree.c +++ b/apps/filetree.c @@ -330,42 +330,43 @@ int ft_load(struct tree_context* c, const char* tempdir) } dptr->attr = info.attribute; + int dir_attr = (dptr->attr & ATTR_DIRECTORY); /* check for known file types */ - if ( !(dptr->attr & ATTR_DIRECTORY) ) + if ( !(dir_attr) ) dptr->attr |= filetype_get_attr((char *)entry->d_name); + int file_attr = (dptr->attr & FILE_ATTR_MASK); + /* filter out non-visible files */ - if ((!(dptr->attr & ATTR_DIRECTORY) && ( - (*c->dirfilter == SHOW_PLAYLIST && - (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) || - ((*c->dirfilter == SHOW_MUSIC && - (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) && - (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) || + if ((!(dir_attr) && ((*c->dirfilter == SHOW_PLAYLIST && + file_attr != FILE_ATTR_M3U) || + ((*c->dirfilter == SHOW_MUSIC && file_attr != FILE_ATTR_AUDIO) && + file_attr != FILE_ATTR_M3U) || (*c->dirfilter == SHOW_SUPPORTED && !filetype_supported(dptr->attr)))) || - (*c->dirfilter == SHOW_WPS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_WPS) || - (*c->dirfilter == SHOW_FONT && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_FONT) || - (*c->dirfilter == SHOW_SBS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_SBS) || + (*c->dirfilter == SHOW_WPS && file_attr != FILE_ATTR_WPS) || + (*c->dirfilter == SHOW_FONT && file_attr != FILE_ATTR_FONT) || + (*c->dirfilter == SHOW_SBS && file_attr != FILE_ATTR_SBS) || #if CONFIG_TUNER - (*c->dirfilter == SHOW_FMS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_FMS) || + (*c->dirfilter == SHOW_FMS && file_attr != FILE_ATTR_FMS) || #endif #ifdef HAVE_REMOTE_LCD - (*c->dirfilter == SHOW_RWPS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_RWPS) || - (*c->dirfilter == SHOW_RSBS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_RSBS) || + (*c->dirfilter == SHOW_RWPS && file_attr != FILE_ATTR_RWPS) || + (*c->dirfilter == SHOW_RSBS && file_attr != FILE_ATTR_RSBS) || #if CONFIG_TUNER - (*c->dirfilter == SHOW_RFMS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_RFMS) || + (*c->dirfilter == SHOW_RFMS && file_attr != FILE_ATTR_RFMS) || #endif #endif #if CONFIG_TUNER - (*c->dirfilter == SHOW_FMR && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_FMR) || + (*c->dirfilter == SHOW_FMR && file_attr != FILE_ATTR_FMR) || #endif - (*c->dirfilter == SHOW_M3U && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) || - (*c->dirfilter == SHOW_CFG && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_CFG) || - (*c->dirfilter == SHOW_LNG && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_LNG) || - (*c->dirfilter == SHOW_MOD && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_MOD) || - (*c->dirfilter == SHOW_PLUGINS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_ROCK && - (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_LUA && - (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_OPX) || + (*c->dirfilter == SHOW_M3U && file_attr != FILE_ATTR_M3U) || + (*c->dirfilter == SHOW_CFG && file_attr != FILE_ATTR_CFG) || + (*c->dirfilter == SHOW_LNG && file_attr != FILE_ATTR_LNG) || + (*c->dirfilter == SHOW_MOD && file_attr != FILE_ATTR_MOD) || + (*c->dirfilter == SHOW_PLUGINS && file_attr != FILE_ATTR_ROCK && + file_attr != FILE_ATTR_LUA && + file_attr != FILE_ATTR_OPX) || (callback_show_item && !callback_show_item(entry->d_name, dptr->attr, c))) { continue; @@ -384,7 +385,7 @@ int ft_load(struct tree_context* c, const char* tempdir) strcpy(dptr->name, (char *)entry->d_name); name_buffer_used += len + 1; - if (dptr->attr & ATTR_DIRECTORY) /* count the remaining dirs */ + if (dir_attr) /* count the remaining dirs */ c->dirsindir++; } c->filesindir = files_in_dir; @@ -432,6 +433,13 @@ static void ft_load_font(char *file) viewportmanager_theme_changed(THEME_UI_VIEWPORT); } +static void ft_apply_skin_file(char *buf, char *file, const int maxlen) +{ + splash(0, ID2P(LANG_WAIT)); + set_file(buf, file, maxlen); + settings_apply_skins(); +} + int ft_enter(struct tree_context* c) { int rc = GO_TO_PREVIOUS; @@ -539,49 +547,32 @@ int ft_enter(struct tree_context* c) break; case FILE_ATTR_FMS: - splash(0, ID2P(LANG_WAIT)); - set_file(buf, (char *)global_settings.fms_file, MAX_FILENAME); - settings_apply_skins(); + ft_apply_skin_file(buf, global_settings.fms_file, MAX_FILENAME); break; #ifdef HAVE_REMOTE_LCD case FILE_ATTR_RFMS: - splash(0, ID2P(LANG_WAIT)); - set_file(buf, (char *)global_settings.rfms_file, MAX_FILENAME); - settings_apply_skins(); + ft_apply_skin_file(buf, global_settings.rfms_file, MAX_FILENAME); break; #endif #endif - case FILE_ATTR_SBS: - splash(0, ID2P(LANG_WAIT)); - set_file(buf, (char *)global_settings.sbs_file, MAX_FILENAME); - settings_apply_skins(); + ft_apply_skin_file(buf, global_settings.sbs_file, MAX_FILENAME); break; #ifdef HAVE_REMOTE_LCD case FILE_ATTR_RSBS: - splash(0, ID2P(LANG_WAIT)); - set_file(buf, (char *)global_settings.rsbs_file, MAX_FILENAME); - settings_apply_skins(); + ft_apply_skin_file(buf, global_settings.rsbs_file, MAX_FILENAME); break; #endif /* wps config file */ case FILE_ATTR_WPS: - splash(0, ID2P(LANG_WAIT)); - set_file(buf, (char *)global_settings.wps_file, - MAX_FILENAME); - settings_apply_skins(); + ft_apply_skin_file(buf, global_settings.wps_file, MAX_FILENAME); break; - #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) /* remote-wps config file */ case FILE_ATTR_RWPS: - splash(0, ID2P(LANG_WAIT)); - set_file(buf, (char *)global_settings.rwps_file, - MAX_FILENAME); - settings_apply_skins(); + ft_apply_skin_file(buf, global_settings.rwps_file, MAX_FILENAME); break; #endif - case FILE_ATTR_CFG: splash(0, ID2P(LANG_WAIT)); if (!settings_load_config(buf,true)) diff --git a/apps/filetypes.c b/apps/filetypes.c index d68bab3daa..02d2af282e 100644 --- a/apps/filetypes.c +++ b/apps/filetypes.c @@ -66,6 +66,7 @@ static const struct filetype inbuilt_filetypes[] = { { "m4b", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, { "mp4", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, { "mod", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, + { "mpga", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, { "shn", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, { "aif", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, { "aiff",FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, @@ -301,8 +302,8 @@ void read_viewer_theme_file(void) { custom_filetype_icons[i] = filetypes[i].icon; } - - snprintf(buffer, MAX_PATH, "%s/%s.icons", ICON_DIR, + + snprintf(buffer, MAX_PATH, "%s/%s.icons", ICON_DIR, global_settings.viewers_icon_file); fd = open(buffer, O_RDONLY); if (fd < 0) diff --git a/apps/gui/bitmap/list.c b/apps/gui/bitmap/list.c index 194f4c008b..53874a8dfa 100644 --- a/apps/gui/bitmap/list.c +++ b/apps/gui/bitmap/list.c @@ -90,11 +90,57 @@ static int list_icon_width(enum screen_type screen) return get_icon_width(screen) + ICON_PADDING * 2; } -static bool draw_title(struct screen *display, struct gui_synclist *list) +static void _default_listdraw_fn(struct list_putlineinfo_t *list_info) +{ + struct screen *display = list_info->display; + int x = list_info->x; + int y = list_info->y; + int item_indent = list_info->item_indent; + int item_offset = list_info->item_offset; + int icon = list_info->icon; + bool is_selected = list_info->is_selected; + bool is_title = list_info->is_title; + bool show_cursor = list_info->show_cursor; + bool have_icons = list_info->have_icons; + struct line_desc *linedes = list_info->linedes; + char *dsp_text = list_info->dsp_text; + + if (is_title) + { + if (have_icons) + display->put_line(x, y, linedes, "$"ICON_PADDING_S"I$t", + icon, dsp_text); + else + display->put_line(x, y, linedes, "$t", dsp_text); + } + else if (show_cursor && have_icons) + { + /* the list can have both, one of or neither of cursor and item icons, + * if both don't apply icon padding twice between the icons */ + display->put_line(x, y, + linedes, "$*s$"ICON_PADDING_S"I$i$"ICON_PADDING_S"s$*t", + item_indent, is_selected ? Icon_Cursor : Icon_NOICON, + icon, item_offset, dsp_text); + } + else if (show_cursor || have_icons) + { + display->put_line(x, y, linedes, "$*s$"ICON_PADDING_S"I$*t", item_indent, + show_cursor ? (is_selected ? Icon_Cursor:Icon_NOICON):icon, + item_offset, dsp_text); + } + else + { + display->put_line(x, y, linedes, "$*s$*t", item_indent, item_offset, dsp_text); + } +} + +static bool draw_title(struct screen *display, + struct gui_synclist *list, + list_draw_item *callback_draw_item) { const int screen = display->screen_type; struct viewport *title_text_vp = &title_text[screen]; - struct line_desc line = LINE_DESC_DEFINIT; + struct line_desc linedes = LINE_DESC_DEFINIT; if (sb_set_title_text(list->title, list->title_icon, screen)) return false; /* the sbs is handling the title */ @@ -102,29 +148,41 @@ static bool draw_title(struct screen *display, struct gui_synclist *list) if (!list_display_title(list, screen)) return false; *title_text_vp = *(list->parent[screen]); - line.height = list->line_height[screen]; - title_text_vp->height = line.height; + linedes.height = list->line_height[screen]; + title_text_vp->height = linedes.height; #if LCD_DEPTH > 1 /* XXX: Do we want to support the separator on remote displays? */ if (display->screen_type == SCREEN_MAIN && global_settings.list_separator_height != 0) - line.separator_height = abs(global_settings.list_separator_height) + linedes.separator_height = abs(global_settings.list_separator_height) + (lcd_get_dpi() > 200 ? 2 : 1); #endif #ifdef HAVE_LCD_COLOR if (list->title_color >= 0) - line.style |= (STYLE_COLORED|list->title_color); + linedes.style |= (STYLE_COLORED|list->title_color); #endif - line.scroll = true; + linedes.scroll = true; display->set_viewport(title_text_vp); + int icon = list->title_icon; + int icon_w = list_icon_width(display->screen_type); + bool have_icons = false; + if (icon != Icon_NOICON && list->show_icons) + { + have_icons = true; + } - if (list->title_icon != Icon_NOICON && global_settings.show_icons) - put_line(display, 0, 0, &line, "$"ICON_PADDING_S"I$t", - list->title_icon, list->title); - else - put_line(display, 0, 0, &line, "$t", list->title); + struct list_putlineinfo_t list_info = + { + .x = 0, .y = 0, .item_indent = 0, .item_offset = 0, + .line = -1, .icon = icon, .icon_width = icon_w, + .display = display, .vp = title_text_vp, .linedes = &linedes, .list = list, + .dsp_text = list->title, + .is_selected = false, .is_title = true, .show_cursor = false, + .have_icons = have_icons + }; + callback_draw_item(&list_info); return true; } @@ -133,23 +191,33 @@ void list_draw(struct screen *display, struct gui_synclist *list) { int start, end, item_offset, i; const int screen = display->screen_type; + list_draw_item *callback_draw_item; + const int list_start_item = list->start_item[screen]; - const bool scrollbar_in_left = (global_settings.scrollbar == SCROLLBAR_LEFT); - const bool scrollbar_in_right = (global_settings.scrollbar == SCROLLBAR_RIGHT); - const bool show_cursor = !global_settings.cursor_style && - list->show_selection_marker; - const bool have_icons = global_settings.show_icons && list->callback_get_item_icon; + const bool scrollbar_in_left = (list->scrollbar == SCROLLBAR_LEFT); + const bool scrollbar_in_right = (list->scrollbar == SCROLLBAR_RIGHT); + + const bool show_cursor = list->show_selection_marker && + (list->cursor_style == SYNCLIST_CURSOR_NOSTYLE); + + const bool have_icons = list->callback_get_item_icon && list->show_icons; + struct viewport *parent = (list->parent[screen]); struct line_desc linedes = LINE_DESC_DEFINIT; bool show_title; struct viewport *list_text_vp = &list_text[screen]; int indent = 0; + if (list->callback_draw_item != NULL) + callback_draw_item = list->callback_draw_item; + else + callback_draw_item = _default_listdraw_fn; + struct viewport * last_vp = display->set_viewport(parent); display->clear_viewport(); display->scroll_stop_viewport(list_text_vp); *list_text_vp = *parent; - if ((show_title = draw_title(display, list))) + if ((show_title = draw_title(display, list, callback_draw_item))) { int title_height = title_text[screen].height; list_text_vp->y += title_height; @@ -201,7 +269,7 @@ void list_draw(struct screen *display, struct gui_synclist *list) #endif /* draw the scrollbar if its needed */ - if (global_settings.scrollbar != SCROLLBAR_OFF) + if (list->scrollbar != SCROLLBAR_OFF) { /* if the scrollbar is shown the text viewport needs to shrink */ if (nb_lines < list->nb_items) @@ -244,6 +312,16 @@ void list_draw(struct screen *display, struct gui_synclist *list) } display->set_viewport(list_text_vp); + int icon_w = list_icon_width(screen); + int character_width = display->getcharwidth(); + + struct list_putlineinfo_t list_info = + { + .x = 0, .y = 0, .vp = list_text_vp, .list = list, + .icon_width = icon_w, .is_title = false, .show_cursor = show_cursor, + .have_icons = have_icons, .linedes = &linedes, .display = display + }; + for (i=start; i<end && i<list->nb_items; i++) { /* do the text */ @@ -251,7 +329,7 @@ void list_draw(struct screen *display, struct gui_synclist *list) unsigned const char *s; char entry_buffer[MAX_PATH]; unsigned char *entry_name; - int text_pos = 0; + const int text_pos = 0; /* UNUSED */ int line = i - start; int line_indent = 0; int style = STYLE_DEFAULT; @@ -267,10 +345,10 @@ void list_draw(struct screen *display, struct gui_synclist *list) } if (line_indent) { - if (global_settings.show_icons) - line_indent *= list_icon_width(screen); + if (list->show_icons) + line_indent *= icon_w; else - line_indent *= display->getcharwidth(); + line_indent *= character_width; } line_indent += indent; @@ -301,12 +379,12 @@ void list_draw(struct screen *display, struct gui_synclist *list) } else #endif - if (global_settings.cursor_style == 1 + if (list->cursor_style == SYNCLIST_CURSOR_INVERT #ifdef HAVE_REMOTE_LCD /* the global_settings.cursor_style check is here to make * sure if they want the cursor instead of bar it will work */ - || (display->depth < 16 && global_settings.cursor_style) + || (display->depth < 16 && list->cursor_style) #endif ) { @@ -314,14 +392,14 @@ void list_draw(struct screen *display, struct gui_synclist *list) style = STYLE_INVERT; } #ifdef HAVE_LCD_COLOR - else if (global_settings.cursor_style == 2) + else if (list->cursor_style == SYNCLIST_CURSOR_COLOR) { /* Display colour line selector */ style = STYLE_COLORBAR; linedes.text_color = global_settings.lst_color; linedes.line_color = global_settings.lss_color; } - else if (global_settings.cursor_style == 3) + else if (list->cursor_style == SYNCLIST_CURSOR_GRADIENT) { /* Display gradient line selector */ style = STYLE_GRADIENT; @@ -345,27 +423,22 @@ void list_draw(struct screen *display, struct gui_synclist *list) } } #endif - linedes.style = style; linedes.scroll = is_selected ? true : list->scroll_all; linedes.line = i % list->selected_size; icon = list->callback_get_item_icon ? list->callback_get_item_icon(i, list->data) : Icon_NOICON; - /* the list can have both, one of or neither of cursor and item icons, - * if both don't apply icon padding twice between the icons */ - if (show_cursor && have_icons) - put_line(display, 0, line * linedes.height + draw_offset, - &linedes, "$*s$"ICON_PADDING_S"I$i$"ICON_PADDING_S"s$*t", - line_indent, is_selected ? Icon_Cursor : Icon_NOICON, - icon, item_offset, entry_name); - else if (show_cursor || have_icons) - put_line(display, 0, line * linedes.height + draw_offset, - &linedes, "$*s$"ICON_PADDING_S"I$*t", line_indent, - show_cursor ? (is_selected ? Icon_Cursor:Icon_NOICON):icon, - item_offset, entry_name); - else - put_line(display, 0, line * linedes.height + draw_offset, - &linedes, "$*s$*t", line_indent, item_offset, entry_name); + + + list_info.y = line * linedes.height + draw_offset; + list_info.is_selected = is_selected; + list_info.item_indent = line_indent; + list_info.line = i; + list_info.icon = icon; + list_info.dsp_text = entry_name; + list_info.item_offset = item_offset; + + callback_draw_item(&list_info); } display->set_viewport(parent); display->update_viewport(); @@ -685,7 +758,7 @@ static int get_click_location(struct gui_synclist *list, int x, int y) if (viewport_point_within_vp(title, x, y)) retval = TITLE_TEXT; /* check the icon too */ - if (list->title_icon != Icon_NOICON && global_settings.show_icons) + if (list->title_icon != Icon_NOICON && list->show_icons) { int width = list_icon_width(screen); struct viewport vp = *title; @@ -703,14 +776,19 @@ static int get_click_location(struct gui_synclist *list, int x, int y) { bool on_scrollbar_clicked; int adj_x = x - parent->x; - switch (global_settings.scrollbar) + switch (list->scrollbar) { + case SCROLLBAR_OFF: + /*fall-through*/ + default: + on_scrollbar_clicked = false; + break; case SCROLLBAR_LEFT: - on_scrollbar_clicked = adj_x <= SCROLLBAR_WIDTH; break; + on_scrollbar_clicked = adj_x <= SCROLLBAR_WIDTH; + break; case SCROLLBAR_RIGHT: - on_scrollbar_clicked = adj_x > (title->x + title->width - SCROLLBAR_WIDTH); break; - default: - on_scrollbar_clicked = false; break; + on_scrollbar_clicked = adj_x > (title->x + title->width - SCROLLBAR_WIDTH); + break; } if (on_scrollbar_clicked) retval = SCROLLBAR; diff --git a/apps/gui/folder_select.c b/apps/gui/folder_select.c index e324e8649a..cef95e179e 100644 --- a/apps/gui/folder_select.c +++ b/apps/gui/folder_select.c @@ -516,7 +516,7 @@ static int select_paths(struct folder* root, const char* filenames) sstr = lastfnp; lastfnp = fnp; - if (len <= 0 || len > buflen) + if (len <= 0 || len + 1 >= buflen) continue; strlcpy(buf, sstr, len + 1); struct child *item = find_from_filename(buf, root); diff --git a/apps/gui/list.c b/apps/gui/list.c index 8ff075da7e..29c80574c2 100644 --- a/apps/gui/list.c +++ b/apps/gui/list.c @@ -129,6 +129,18 @@ void list_init_item_height(struct gui_synclist *list, enum screen_type screen) #endif } +void gui_synclist_init_display_settings(struct gui_synclist * list) +{ + struct user_settings *gs = &global_settings; + list->scrollbar = gs->scrollbar; + list->show_icons = gs->show_icons; + list->scroll_paginated = gs->scroll_paginated; + list->keyclick = gs->keyclick; + list->talk_menu = gs->talk_menu; + list->wraparound = gs->list_wraparound; + list->cursor_style = gs->cursor_style; +} + /* * Initializes a scrolling list * - gui_list : the list structure to initialize @@ -150,8 +162,11 @@ void gui_synclist_init(struct gui_synclist * gui_list, gui_list->callback_get_item_icon = NULL; gui_list->callback_get_item_name = callback_get_item_name; gui_list->callback_speak_item = NULL; + gui_list->callback_draw_item = NULL; gui_list->nb_items = 0; gui_list->selected_item = 0; + gui_synclist_init_display_settings(gui_list); + #ifdef HAVE_TOUCHSCREEN gui_list->y_pos = 0; #endif @@ -262,7 +277,7 @@ static void gui_list_put_selection_on_screen(struct gui_synclist * gui_list, { new_start_item = gui_list->selected_item; } - else if (global_settings.scroll_paginated) + else if (gui_list->scroll_paginated) { nb_lines -= nb_lines%gui_list->selected_size; if (difference < 0 || difference >= nb_lines) @@ -292,7 +307,7 @@ static void gui_list_put_selection_on_screen(struct gui_synclist * gui_list, static void edge_beep(struct gui_synclist * gui_list, bool wrap) { - if (global_settings.keyclick) + if (gui_list->keyclick) { list_speak_item *cb = gui_list->callback_speak_item; if (!wrap) /* a bounce */ @@ -355,7 +370,7 @@ static void _gui_synclist_speak_item(struct gui_synclist *lists) void gui_synclist_speak_item(struct gui_synclist *lists) { - if (global_settings.talk_menu) + if (lists->talk_menu) { if (lists->nb_items == 0) talk_id(VOICE_EMPTY_LIST, true); @@ -682,11 +697,10 @@ bool gui_synclist_do_button(struct gui_synclist * lists, /* Disable the skin redraw callback */ current_lists = NULL; - switch (wrap) { case LIST_WRAP_ON: - gui_synclist_limit_scroll(lists, !global_settings.list_wraparound); + gui_synclist_limit_scroll(lists, !(lists->wraparound)); break; case LIST_WRAP_OFF: gui_synclist_limit_scroll(lists, true); @@ -697,7 +711,7 @@ bool gui_synclist_do_button(struct gui_synclist * lists, action == ACTION_LISTTREE_PGUP || action == ACTION_LISTTREE_PGDOWN) gui_synclist_limit_scroll(lists, true); - else gui_synclist_limit_scroll(lists, !global_settings.list_wraparound); + else gui_synclist_limit_scroll(lists, !(lists->wraparound)); break; }; diff --git a/apps/gui/list.h b/apps/gui/list.h index 64ff3e3fdd..4dc83a1b27 100644 --- a/apps/gui/list.h +++ b/apps/gui/list.h @@ -36,6 +36,14 @@ enum list_wrap { LIST_WRAP_UNLESS_HELD, }; +enum synclist_cursor +{ + SYNCLIST_CURSOR_NOSTYLE = 0, + SYNCLIST_CURSOR_INVERT, + SYNCLIST_CURSOR_COLOR, + SYNCLIST_CURSOR_GRADIENT, +}; + /* * The gui_list is based on callback functions, if you want the list * to display something you have to provide it a function that @@ -69,6 +77,35 @@ typedef enum themable_icons list_get_icon(int selected_item, void * data); typedef const char * list_get_name(int selected_item, void * data, char * buffer, size_t buffer_len); /* + * Draw callback + * - display : functions supplied depends on the screen call originated from (typ: MAIN) + * - list_info : a pointer to an internal struct containing item display information + */ +/* owner drawn lists need to know this info */ +struct list_putlineinfo_t { + int x; + int y; + int item_indent; + int item_offset; + int line; + + int icon; + int icon_width; + + struct screen *display; + struct viewport *vp; + struct line_desc *linedes; + struct gui_synclist * list; + char *dsp_text; + + bool is_selected; + bool is_title; + bool show_cursor; + bool have_icons; +}; + +typedef void list_draw_item(struct list_putlineinfo_t *list_info); +/* * Voice callback * - selected_item : an integer that tells the number of the item to speak * - data : a void pointer to the data you gave to the list when you @@ -110,14 +147,24 @@ struct list_selection_color struct gui_synclist { + /*flags to hold settings show: icons, scrollbar etc..*/ + int scrollbar; + int cursor_style; + bool show_icons; + bool keyclick; + bool talk_menu; + bool wraparound; + bool scroll_paginated; /* defines wether the list should stop when reaching the top/bottom * or should continue (by going to bottom/top) */ bool limit_scroll; - /* wether the text of the whole items of the list have to be + /* whether the text of the whole items of the list have to be * scrolled or only for the selected item */ bool scroll_all; + bool show_selection_marker; /* set to true by default */ int nb_items; int selected_item; + #ifdef HAVE_TOUCHSCREEN /* absolute Y coordinate, used for smooth scrolling */ int y_pos; @@ -133,6 +180,7 @@ struct gui_synclist list_get_icon *callback_get_item_icon; list_get_name *callback_get_item_name; list_speak_item *callback_speak_item; + list_draw_item *callback_draw_item; /* The data that will be passed to the callback function YOU implement */ void * data; @@ -140,7 +188,6 @@ struct gui_synclist char * title; /* Optional title icon */ enum themable_icons title_icon; - bool show_selection_marker; /* set to true by default */ #ifdef HAVE_LCD_COLOR int title_color; @@ -157,7 +204,7 @@ extern void gui_list_screen_scroll_step(int ofs); /* parse global setting to static bool */ extern void gui_list_screen_scroll_out_of_view(bool enable); - +extern void gui_synclist_init_display_settings(struct gui_synclist * list); extern void gui_synclist_init( struct gui_synclist * lists, list_get_name callback_get_item_name, diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c index 9f1f0a64e3..7068fee510 100644 --- a/apps/gui/option_select.c +++ b/apps/gui/option_select.c @@ -334,29 +334,35 @@ static int selection_to_val(const struct settings_list *setting, int selection) else if ((setting->flags & F_T_SOUND) == F_T_SOUND) { int setting_id = setting->sound_setting->setting; -#ifndef ASCENDING_INT_SETTINGS - step = sound_steps(setting_id); - max = (setting_id == SOUND_VOLUME) ? - global_settings.volume_limit : sound_max(setting_id); - /* min = sound_min(setting_id); */ -#else - step = -sound_steps(setting_id); - /* min = sound_max(setting_id); */ - max = sound_min(setting_id); -#endif + if(global_settings.list_order == LIST_ORDER_DESCENDING) + { + step = sound_steps(setting_id); + max = (setting_id == SOUND_VOLUME) ? + global_settings.volume_limit : sound_max(setting_id); + /* min = sound_min(setting_id); */ + } + else + { + step = -sound_steps(setting_id); + /* min = sound_max(setting_id); */ + max = sound_min(setting_id); + } } else if ((setting->flags & F_INT_SETTING) == F_INT_SETTING) { const struct int_setting *info = setting->int_setting; -#ifndef ASCENDING_INT_SETTINGS - /* min = info->min; */ - max = info->max; - step = info->step; -#else - max = info->min; - /* min = info->max; */ - step = -info->step; -#endif + if(global_settings.list_order == LIST_ORDER_DESCENDING) + { + /* min = info->min; */ + max = info->max; + step = info->step; + } + else + { + max = info->min; + /* min = info->max; */ + step = -info->step; + } } return max- (selection * step); } @@ -424,11 +430,10 @@ static void val_to_selection(const struct settings_list *setting, int oldvalue, int max = (setting_id == SOUND_VOLUME) ? global_settings.volume_limit : sound_max(setting_id); *nb_items = (max-min)/steps + 1; -#ifndef ASCENDING_INT_SETTINGS - *selected = (max - oldvalue) / steps; -#else - *selected = (oldvalue - min) / steps; -#endif + if (global_settings.list_order == LIST_ORDER_DESCENDING) + *selected = (max - oldvalue) / steps; + else + *selected = (oldvalue - min) / steps; *function = sound_get_fn(setting_id); } else @@ -439,11 +444,10 @@ static void val_to_selection(const struct settings_list *setting, int oldvalue, min = info->min; step = info->step; *nb_items = (max-min)/step + 1; -#ifndef ASCENDING_INT_SETTINGS - *selected = (max - oldvalue) / step; -#else - *selected = (oldvalue - min) / step; -#endif + if(global_settings.list_order == LIST_ORDER_DESCENDING) + *selected = (max - oldvalue) / step; + else + *selected = (oldvalue - min) / step; *function = info->option_callback; } } diff --git a/apps/gui/option_select.h b/apps/gui/option_select.h index 476e7b81bd..104e86f64d 100644 --- a/apps/gui/option_select.h +++ b/apps/gui/option_select.h @@ -25,11 +25,10 @@ #include "screen_access.h" #include "settings.h" -#if defined (HAVE_SCROLLWHEEL) && !defined(FIIO_M3K) -/* Define this if your target makes sense to have - smaller values at the top of the list increasing down the list */ -#define ASCENDING_INT_SETTINGS -#endif +enum { + LIST_ORDER_DESCENDING = 0, + LIST_ORDER_ASCENDING = 1, +}; bool option_screen(const struct settings_list *setting, struct viewport parent[NB_SCREENS], diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index b2f5050ab3..e403e13e6c 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c @@ -39,6 +39,9 @@ #include "option_select.h" #include "debug.h" #include "shortcuts.h" +#ifdef HAVE_ALBUMART +#include "playback.h" +#endif /* 1 top, 1 bottom, 2 on either side, 1 for the icons * if enough space, top and bottom have 2 lines */ @@ -285,14 +288,22 @@ static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button) static int quickscreen_touchscreen_button(void) { short x,y; - /* only hitting the text counts, everything else is exit */ if (action_get_touchscreen_press(&x, &y) != BUTTON_REL) return ACTION_NONE; enum { left=1, right=2, top=4, bottom=8 }; - int bits = (x < LCD_WIDTH/3 ? left : (x > 2*LCD_WIDTH/3 ? 2 : right)) | - (y < LCD_WIDTH/3 ? top : (y > 2*LCD_WIDTH/3 ? 8 : bottom)); + int bits = 0; + + if(x < LCD_WIDTH/3) + bits |= left; + else if(x > 2*LCD_WIDTH/3) + bits |= right; + + if(y < LCD_HEIGHT/3) + bits |= top; + else if(y > 2*LCD_HEIGHT/3) + bits |= bottom; switch(bits) { case top: @@ -411,6 +422,9 @@ int quick_screen_quick(int button_enter) struct gui_quickscreen qs; bool oldshuffle = global_settings.playlist_shuffle; int oldrepeat = global_settings.repeat_mode; +#ifdef HAVE_ALBUMART + int old_album_art = global_settings.album_art; +#endif bool usb = false; if (global_settings.shortcuts_replaces_qs) @@ -446,6 +460,10 @@ int quick_screen_quick(int button_enter) else playlist_sort(NULL, true); } +#ifdef HAVE_ALBUMART + if (old_album_art != global_settings.album_art) + set_albumart_mode(global_settings.album_art); +#endif } return (usb ? 1:0); } diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c index 41de1e1f76..146dccb18a 100644 --- a/apps/gui/skin_engine/skin_backdrops.c +++ b/apps/gui/skin_engine/skin_backdrops.c @@ -81,8 +81,9 @@ static int buflib_move_callback(int handle, void* current, void* new) } static struct buflib_callbacks buflib_ops = {buflib_move_callback, NULL, NULL}; static bool first_go = true; -void skin_backdrop_init(void) +bool skin_backdrop_init(void) { + bool go_status = first_go; if (first_go) { for (int i=0; i<NB_BDROPS; i++) @@ -98,6 +99,7 @@ void skin_backdrop_init(void) handle_being_loaded = -1; first_go = false; } + return go_status; } int skin_backdrop_assign(char* backdrop, char *bmpdir, @@ -331,8 +333,20 @@ void skin_backdrop_unload(int backdrop_id) (void)backdrop_id; } #else +static bool first_go = true; +bool skin_backdrop_init(void) +{ + bool go_status = first_go; + first_go = false; + return go_status; +} + +void skin_backdrop_load_setting(void) +{ +} -void skin_backdrop_init(void) +void skin_backdrop_show(int backdrop_id) { + (void) backdrop_id; } #endif diff --git a/apps/gui/skin_engine/skin_engine.c b/apps/gui/skin_engine/skin_engine.c index b3626b681d..8ba76e5739 100644 --- a/apps/gui/skin_engine/skin_engine.c +++ b/apps/gui/skin_engine/skin_engine.c @@ -149,16 +149,28 @@ void skin_unload_all(void) gui_sync_skin_init(); } +static void skin_reset_buffers(int item, int screen) +{ + skin_data_free_buflib_allocs(&skins[item][screen].data); +#ifdef HAVE_ALBUMART + if (skins[item][screen].data.playback_aa_slot >= 0) + playback_release_aa_slot(skins[item][screen].data.playback_aa_slot); +#endif +#ifdef HAVE_BACKDROP_IMAGE + if (skins[item][screen].data.backdrop_id >= 0) + skin_backdrop_unload(skins[item][screen].data.backdrop_id); +#endif +} + void settings_apply_skins(void) { int i; char filename[MAX_PATH]; - static bool first_run = true; if (audio_status() & AUDIO_STATUS_PLAY) audio_stop(); - skin_backdrop_init(); + bool first_run = skin_backdrop_init(); skins_initialised = true; /* Make sure each skin is loaded */ @@ -170,15 +182,7 @@ void settings_apply_skins(void) if (!first_run) { - skin_data_free_buflib_allocs(&skins[i][j].data); -#ifdef HAVE_ALBUMART - if (skins[i][j].data.playback_aa_slot >= 0) - playback_release_aa_slot(skins[i][j].data.playback_aa_slot); -#endif -#ifdef HAVE_BACKDROP_IMAGE - if (skins[i][j].data.backdrop_id >= 0) - skin_backdrop_unload(skins[i][j].data.backdrop_id); -#endif + skin_reset_buffers(i, j); } gui_skin_reset(&skins[i][j]); skins[i][j].gui_wps.display = &screens[j]; @@ -186,17 +190,14 @@ void settings_apply_skins(void) skin_get_gwps(i, j); } } - first_run = false; -#ifdef HAVE_BACKDROP_IMAGE + /* any backdrop that was loaded with "-" has to be reloaded because * the setting may have changed */ skin_backdrop_load_setting(); -#endif viewportmanager_theme_changed(THEME_STATUSBAR); -#ifdef HAVE_BACKDROP_IMAGE + FOR_NB_SCREENS(i) skin_backdrop_show(sb_get_backdrop(i)); -#endif } void skin_load(enum skinnable_screens skin, enum screen_type screen, diff --git a/apps/gui/skin_engine/skin_engine.h b/apps/gui/skin_engine/skin_engine.h index 3b757a5f8b..e26ec34d1f 100644 --- a/apps/gui/skin_engine/skin_engine.h +++ b/apps/gui/skin_engine/skin_engine.h @@ -62,7 +62,7 @@ bool skin_has_sbs(enum screen_type screen, struct wps_data *data); /* load a backdrop into the skin buffer. * reuse buffers if the file is already loaded */ char* skin_backdrop_load(char* backdrop, char *bmpdir, enum screen_type screen); -void skin_backdrop_init(void); +bool skin_backdrop_init(void); int skin_backdrop_assign(char* backdrop, char *bmpdir, enum screen_type screen); bool skin_backdrops_preload(void); diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index b3840f689f..d89ca8b534 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -343,11 +343,12 @@ static int parse_image_display(struct skin_element *element, if (element->params_count > 1) { - if (get_param(element, 1)->type == CODE) + struct skin_tag_parameter *param1 = get_param(element, 1); + if (param1->type == CODE) id->token = get_param_code(element, 1)->data; /* specify a number. 1 being the first subimage (i.e top) NOT 0 */ - else if (get_param(element, 1)->type == INTEGER) - id->subimage = get_param(element, 1)->data.number - 1; + else if (param1->type == INTEGER) + id->subimage = param1->data.number - 1; if (element->params_count > 2) id->offset = get_param(element, 2)->data.number; } @@ -391,14 +392,16 @@ static int parse_image_load(struct skin_element *element, subimages = get_param(element, 2)->data.number; else if (element->params_count > 3) { - if (get_param(element, 2)->type == PERCENT) - x = get_param(element, 2)->data.number * curr_vp->vp.width / 1000; + struct skin_tag_parameter *param2 = get_param(element, 2); + struct skin_tag_parameter *param3 = get_param(element, 3); + if (param2->type == PERCENT) + x = param2->data.number * curr_vp->vp.width / 1000; else - x = get_param(element, 2)->data.number; - if (get_param(element, 3)->type == PERCENT) - y = get_param(element, 3)->data.number * curr_vp->vp.height / 1000; + x = param2->data.number; + if (param3->type == PERCENT) + y = param3->data.number * curr_vp->vp.height / 1000; else - y = get_param(element, 3)->data.number; + y = param3->data.number; if (element->params_count == 5) subimages = get_param(element, 4)->data.number; @@ -561,6 +564,7 @@ static int parse_listitemviewport(struct skin_element *element, struct wps_data *wps_data) { #ifndef __PCTOOL__ + struct skin_tag_parameter *param; struct listitem_viewport_cfg *cfg = skin_buffer_alloc(sizeof(*cfg)); if (!cfg) return -1; @@ -569,10 +573,15 @@ static int parse_listitemviewport(struct skin_element *element, cfg->label = PTRTOSKINOFFSET(skin_buffer, get_param_text(element, 0)); cfg->width = -1; cfg->height = -1; - if (!isdefault(get_param(element, 1))) - cfg->width = get_param(element, 1)->data.number; - if (!isdefault(get_param(element, 2))) - cfg->height = get_param(element, 2)->data.number; + + param = get_param(element, 1); + if (!isdefault(param)) + cfg->width = param->data.number; + + param = get_param(element, 2); + if (!isdefault(param)) + cfg->height = param->data.number; + if (element->params_count > 3 && !strcmp(get_param_text(element, 3), "tile")) cfg->tile = true; @@ -592,11 +601,16 @@ static int parse_viewporttextstyle(struct skin_element *element, *line = (struct line_desc)LINE_DESC_DEFINIT; unsigned colour; - if (!strcmp(mode, "invert")) + static const char * const vp_options[] = { "invert", "color", "colour", + "clear", "gradient", NULL}; + + int vp_op = string_option(mode, vp_options, false); + + if (vp_op == 0) /*invert*/ { line->style = STYLE_INVERT; } - else if (!strcmp(mode, "colour") || !strcmp(mode, "color")) + else if (vp_op == 1 || vp_op == 2) /*color/colour*/ { if (element->params_count < 2 || !parse_color(curr_screen, get_param_text(element, 1), &colour)) @@ -605,7 +619,7 @@ static int parse_viewporttextstyle(struct skin_element *element, line->text_color = colour; } #ifdef HAVE_LCD_COLOR - else if (!strcmp(mode, "gradient")) + else if (vp_op == 4) /*gradient*/ { int num_lines; if (element->params_count < 2) @@ -618,7 +632,7 @@ static int parse_viewporttextstyle(struct skin_element *element, line->nlines = num_lines; } #endif - else if (!strcmp(mode, "clear")) + else if (vp_op == 3) /*clear*/ { line->style = STYLE_DEFAULT; } @@ -634,34 +648,39 @@ static int parse_drawrectangle( struct skin_element *element, struct wps_data *wps_data) { (void)wps_data; + struct skin_tag_parameter *param; struct draw_rectangle *rect = skin_buffer_alloc(sizeof(*rect)); if (!rect) return -1; - if (get_param(element, 0)->type == PERCENT) - rect->x = get_param(element, 0)->data.number * curr_vp->vp.width / 1000; + param = get_param(element, 0); + if (param->type == PERCENT) + rect->x = param->data.number * curr_vp->vp.width / 1000; else - rect->x = get_param(element, 0)->data.number; + rect->x = param->data.number; - if (get_param(element, 1)->type == PERCENT) - rect->y = get_param(element, 1)->data.number * curr_vp->vp.height / 1000; + param = get_param(element, 1); + if (param->type == PERCENT) + rect->y = param->data.number * curr_vp->vp.height / 1000; else - rect->y = get_param(element, 1)->data.number; + rect->y = param->data.number; - if (isdefault(get_param(element, 2))) + param = get_param(element, 2); + if (isdefault(param)) rect->width = curr_vp->vp.width - rect->x; - else if (get_param(element, 2)->type == PERCENT) - rect->width = get_param(element, 2)->data.number * curr_vp->vp.width / 1000; + else if (param->type == PERCENT) + rect->width = param->data.number * curr_vp->vp.width / 1000; else - rect->width = get_param(element, 2)->data.number; + rect->width = param->data.number; - if (isdefault(get_param(element, 3))) + param = get_param(element, 3); + if (isdefault(param)) rect->height = curr_vp->vp.height - rect->y; - else if (get_param(element, 3)->type == PERCENT) - rect->height = get_param(element, 3)->data.number * curr_vp->vp.height / 1000; + else if (param->type == PERCENT) + rect->height = param->data.number * curr_vp->vp.height / 1000; else - rect->height = get_param(element, 3)->data.number; + rect->height = param->data.number; rect->start_colour = curr_vp->vp.fg_pattern; rect->end_colour = curr_vp->vp.fg_pattern; @@ -811,19 +830,38 @@ static int parse_logical_if(struct skin_element *element, token->value.data = PTRTOSKINOFFSET(skin_buffer, lif); lif->token = get_param_code(element, 0)->data; - if (!strncmp(op, "=", 1)) - lif->op = IF_EQUALS; - else if (!strncmp(op, "!=", 2)) - lif->op = IF_NOTEQUALS; - else if (!strncmp(op, ">=", 2)) - lif->op = IF_GREATERTHAN_EQ; - else if (!strncmp(op, "<=", 2)) - lif->op = IF_LESSTHAN_EQ; - else if (!strncmp(op, ">", 2)) - lif->op = IF_GREATERTHAN; - else if (!strncmp(op, "<", 1)) - lif->op = IF_LESSTHAN; - + /* one or two operator conditionals */ + #define OPS2VAL(op1, op2) ((int)op1 << 8 | (int)op2) + #define CLAUSE(op1, op2, symbol) {OPS2VAL(op1, op2), symbol } + + struct clause_symbol {int value;int symbol;}; + static const struct clause_symbol get_clause_match[] = + { + CLAUSE('=', '=', IF_EQUALS), + CLAUSE('!', '=', IF_NOTEQUALS), + CLAUSE('>', '=', IF_GREATERTHAN_EQ), + CLAUSE('<', '=', IF_LESSTHAN_EQ), + /*All Single value items @ end */ + CLAUSE('>', 0, IF_GREATERTHAN), + CLAUSE('<', 0, IF_LESSTHAN), + CLAUSE('=', 0, IF_EQUALS), + }; + + int val1 = OPS2VAL(op[0], 0); + int val2; + if (val1 != 0) /* Empty string ?*/ + { + val2 = OPS2VAL(op[0], op[1]); + for (unsigned int i = 0; i < ARRAYLEN(get_clause_match); i++) + { + const struct clause_symbol *sym = &get_clause_match[i]; + if(sym->value == val1 || sym->value == val2) + { + lif->op = sym->symbol; + break; + } + } + } memcpy(&lif->operand, get_param(element, 2), sizeof(lif->operand)); if (element->params_count > 3) lif->num_options = get_param(element, 3)->data.number; @@ -1009,20 +1047,37 @@ static int parse_progressbar_tag(struct skin_element* element, } pb->horizontal = pb->width > pb->height; + + enum + { + eINVERT = 0, eNOFILL, eNOBORDER, eNOBAR, eSLIDER, eIMAGE, + eBACKDROP, eVERTICAL, eHORIZONTAL, eNOTOUCH, eSETTING, + e_PB_TAG_COUNT + }; + + static const char *pb_options[e_PB_TAG_COUNT + 1] = {[eINVERT] = "invert", + [eNOFILL] = "nofill", [eNOBORDER] = "noborder", [eNOBAR] = "nobar", + [eSLIDER] = "slider", [eIMAGE] = "image", [eBACKDROP] = "backdrop", + [eVERTICAL] = "vertical", [eHORIZONTAL] = "horizontal", + [eNOTOUCH] = "notouch", [eSETTING] = "setting", [e_PB_TAG_COUNT] = NULL}; + int pb_op; + while (curr_param < element->params_count) { char* text; param++; text = SKINOFFSETTOPTR(skin_buffer, param->data.text); - if (!strcmp(text, "invert")) + + pb_op = string_option(text, pb_options, false); + if (pb_op == eINVERT) pb->invert_fill_direction = true; - else if (!strcmp(text, "nofill")) + else if (pb_op == eNOFILL) pb->nofill = true; - else if (!strcmp(text, "noborder")) + else if (pb_op == eNOBORDER) pb->noborder = true; - else if (!strcmp(text, "nobar")) + else if (pb_op == eNOBAR) pb->nobar = true; - else if (!strcmp(text, "slider")) + else if (pb_op == eSLIDER) { if (curr_param+1 < element->params_count) { @@ -1035,7 +1090,7 @@ static int parse_progressbar_tag(struct skin_element* element, else /* option needs the next param */ return -1; } - else if (!strcmp(text, "image")) + else if (pb_op == eIMAGE) { if (curr_param+1 < element->params_count) { @@ -1046,7 +1101,7 @@ static int parse_progressbar_tag(struct skin_element* element, else /* option needs the next param */ return -1; } - else if (!strcmp(text, "backdrop")) + else if (pb_op == eBACKDROP) { if (curr_param+1 < element->params_count) { @@ -1060,31 +1115,31 @@ static int parse_progressbar_tag(struct skin_element* element, else /* option needs the next param */ return -1; } - else if (!strcmp(text, "vertical")) + else if (pb_op == eVERTICAL) { pb->horizontal = false; if (isdefault(get_param(element, 3))) pb->height = vp->height - pb->y; } - else if (!strcmp(text, "horizontal")) + else if (pb_op == eHORIZONTAL) pb->horizontal = true; #ifdef HAVE_TOUCHSCREEN - else if (!strcmp(text, "notouch")) + else if (pb_op == eNOTOUCH) suppress_touchregion = true; #endif - else if (token->type == SKIN_TOKEN_SETTING && !strcmp(text, "setting")) - { + else if (token->type == SKIN_TOKEN_SETTING && pb_op == eSETTING) + { if (curr_param+1 < element->params_count) { curr_param++; param++; text = SKINOFFSETTOPTR(skin_buffer, param->data.text); #ifndef __PCTOOL__ - if (find_setting_by_cfgname(text, &pb->setting_id) == NULL) - return WPS_ERROR_INVALID_PARAM; + if (find_setting_by_cfgname(text, &pb->setting_id) == NULL) + return WPS_ERROR_INVALID_PARAM; #endif - } - } + } + } else if (curr_param == 4) image_filename = text; @@ -1219,22 +1274,27 @@ static int parse_albumart_load(struct skin_element* element, aa->xalign = WPS_ALBUMART_ALIGN_CENTER; /* default */ aa->yalign = WPS_ALBUMART_ALIGN_CENTER; /* default */ - aa->x = get_param(element, 0)->data.number; - aa->y = get_param(element, 1)->data.number; - aa->width = get_param(element, 2)->data.number; - aa->height = get_param(element, 3)->data.number; + struct skin_tag_parameter *param0 = get_param(element, 0); + struct skin_tag_parameter *param1 = get_param(element, 1); + struct skin_tag_parameter *param2 = get_param(element, 2); + struct skin_tag_parameter *param3 = get_param(element, 3); - if (!isdefault(get_param(element, 0)) && get_param(element, 0)->type == PERCENT) - aa->x = get_param(element, 0)->data.number * curr_vp->vp.width / 1000; + aa->x = param0->data.number; + aa->y = param1->data.number; + aa->width = param2->data.number; + aa->height = param3->data.number; - if (!isdefault(get_param(element, 1)) && get_param(element, 1)->type == PERCENT) - aa->y = get_param(element, 1)->data.number * curr_vp->vp.height / 1000; + if (!isdefault(param0) && param0->type == PERCENT) + aa->x = param0->data.number * curr_vp->vp.width / 1000; - if (!isdefault(get_param(element, 2)) && get_param(element, 2)->type == PERCENT) - aa->width = get_param(element, 2)->data.number * curr_vp->vp.width / 1000; + if (!isdefault(param1) && param1->type == PERCENT) + aa->y = param1->data.number * curr_vp->vp.height / 1000; - if (!isdefault(get_param(element, 3)) && get_param(element, 3)->type == PERCENT) - aa->height = get_param(element, 3)->data.number * curr_vp->vp.height / 1000; + if (!isdefault(param2) && param2->type == PERCENT) + aa->width = param2->data.number * curr_vp->vp.width / 1000; + + if (!isdefault(param3) && param3->type == PERCENT) + aa->height = param3->data.number * curr_vp->vp.height / 1000; aa->vp = PTRTOSKINOFFSET(skin_buffer, &curr_vp->vp); aa->draw_handle = -1; @@ -1341,27 +1401,32 @@ static int parse_skinvar( struct skin_element *element, return 0; case SKIN_TOKEN_VAR_SET: { + static const char * const sv_options[] = {"touch", "set", "inc", "dec", NULL}; + struct skin_var_changer *data = skin_buffer_alloc(sizeof(*data)); if (!data) return WPS_ERROR_INVALID_PARAM; data->var = PTRTOSKINOFFSET(skin_buffer, var); + char *text_param1 = get_param_text(element, 1); + int sv_op = string_option(text_param1, sv_options, false); + if (!isdefault(get_param(element, 2))) data->newval = get_param(element, 2)->data.number; - else if (strcmp(get_param_text(element, 1), "touch")) + else if (sv_op != 0) /*!touch*/ return WPS_ERROR_INVALID_PARAM; data->max = 0; - if (!strcmp(get_param_text(element, 1), "set")) + if (sv_op == 1) /*set*/ data->direct = true; - else if (!strcmp(get_param_text(element, 1), "inc")) + else if (sv_op == 2) /*inc*/ { data->direct = false; } - else if (!strcmp(get_param_text(element, 1), "dec")) + else if (sv_op == 3) /*dec*/ { data->direct = false; data->newval *= -1; } - else if (!strcmp(get_param_text(element, 1), "touch")) + else if (sv_op == 0) /*touch*/ { data->direct = false; data->newval = 0; @@ -1403,12 +1468,12 @@ static int parse_lasttouch(struct skin_element *element, for (i=0; i<element->params_count; i++) { - if (get_param(element, i)->type == STRING) + struct skin_tag_parameter *param = get_param(element, i); + if (param->type == STRING) region = skin_find_item(get_param_text(element, i), SKIN_FIND_TOUCHREGION, wps_data); - else if (get_param(element, i)->type == INTEGER || - get_param(element, i)->type == DECIMAL) - data->timeout = get_param(element, i)->data.number; + else if (param->type == INTEGER || param->type == DECIMAL) + data->timeout = param->data.number; } data->region = PTRTOSKINOFFSET(skin_buffer, region); @@ -1640,16 +1705,21 @@ static int parse_touchregion(struct skin_element *element, if (region->action == ACTION_NONE) return WPS_ERROR_INVALID_PARAM; } + static const char * const pm_options[] = {"allow_while_locked", "reverse_bar", + "repeat_press", "long_press", NULL}; + int pm_op; + while (p < element->params_count) { char* param = get_param_text(element, p++); - if (!strcmp(param, "allow_while_locked")) + pm_op = string_option(param, pm_options, false); + if (pm_op == 0) region->allow_while_locked = true; - else if (!strcmp(param, "reverse_bar")) + else if (pm_op == 1) region->reverse_bar = true; - else if (!strcmp(param, "repeat_press")) + else if (pm_op == 2) region->press_length = REPEAT; - else if (!strcmp(param, "long_press")) + else if (pm_op == 3) region->press_length = LONG_PRESS; } struct skin_token_list *item = new_skin_token_list_item(NULL, region); @@ -2468,8 +2538,9 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data, skin_buffer = wps_buffer; wps_buffer = (char*)buf; } - skin_buffer = ALIGN_UP(skin_buffer, 4); /* align on 4-byte boundary */ - buffersize -= 3; + + /* align to long */ + ALIGN_BUFFER(skin_buffer, buffersize, sizeof(long)); #ifdef HAVE_BACKDROP_IMAGE backdrop_filename = "-"; wps_data->backdrop_id = -1; diff --git a/apps/gui/statusbar-skinned.c b/apps/gui/statusbar-skinned.c index 63f3197faa..fd695bf6b6 100644 --- a/apps/gui/statusbar-skinned.c +++ b/apps/gui/statusbar-skinned.c @@ -156,7 +156,12 @@ int sb_get_backdrop(enum screen_type screen) else return -1; } - +#else +int sb_get_backdrop(enum screen_type screen) +{ + (void) screen; + return -1; +} #endif static bool force_waiting = false; void sb_skin_update(enum screen_type screen, bool force) diff --git a/apps/gui/statusbar-skinned.h b/apps/gui/statusbar-skinned.h index ad102bef47..3ed36f1a84 100644 --- a/apps/gui/statusbar-skinned.h +++ b/apps/gui/statusbar-skinned.h @@ -49,9 +49,7 @@ void sb_bypass_touchregions(bool enable); int sb_touch_to_button(int context); #endif -#if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) int sb_get_backdrop(enum screen_type screen); -#endif int sb_preproccess(enum screen_type screen, struct wps_data *data); int sb_postproccess(enum screen_type screen, struct wps_data *data); diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c index a961d191b2..74da14bd3f 100644 --- a/apps/gui/statusbar.c +++ b/apps/gui/statusbar.c @@ -725,18 +725,6 @@ void gui_syncstatusbar_init(struct gui_syncstatusbar * bars) } } -void gui_syncstatusbar_draw(struct gui_syncstatusbar * bars, - bool force_redraw) -{ - if(!global_settings.statusbar) - return; - struct viewport viewport; - FOR_NB_SCREENS(i) { - GET_RECT(viewport,statusbar_position(i),&screens[i]); - gui_statusbar_draw( &(bars->statusbars[i]), force_redraw, &viewport ); - } -} - #ifdef HAVE_REMOTE_LCD enum statusbar_values statusbar_position(int screen) diff --git a/apps/gui/statusbar.h b/apps/gui/statusbar.h index a676c7b143..c62434155d 100644 --- a/apps/gui/statusbar.h +++ b/apps/gui/statusbar.h @@ -99,8 +99,7 @@ struct gui_syncstatusbar }; extern void gui_syncstatusbar_init(struct gui_syncstatusbar * bars) INIT_ATTR; -extern void gui_syncstatusbar_draw(struct gui_syncstatusbar * bars, - bool force_redraw); + #if !defined(HAVE_REMOTE_LCD) || defined(__PCTOOL__) #include "settings.h" #define statusbar_position(a) ((enum statusbar_values)global_settings.statusbar) diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c index 3dd8bca979..9f9cb186f5 100644 --- a/apps/gui/viewport.c +++ b/apps/gui/viewport.c @@ -332,7 +332,7 @@ void viewport_set_defaults(struct viewport *vp, const enum screen_type screen) { vp->buffer = NULL; /* use default frame_buffer */ - + vp->flags = VP_DEFAULT_FLAGS; #if !defined(__PCTOOL__) struct viewport *sbs_area = NULL; if (!is_theme_enabled(screen)) diff --git a/apps/gui/wps.c b/apps/gui/wps.c index cdb34ab447..7554892451 100644 --- a/apps/gui/wps.c +++ b/apps/gui/wps.c @@ -903,7 +903,9 @@ long gui_wps_show(void) case ACTION_WPS_ID3SCREEN: { gwps_leave_wps(); - if (browse_id3()) + if (browse_id3(audio_current_track(), + playlist_get_display_index(), + playlist_amount())) return GO_TO_ROOT; restore = true; } diff --git a/apps/iap/iap-core.c b/apps/iap/iap-core.c index 885ba2c188..ae05806ae9 100644 --- a/apps/iap/iap-core.c +++ b/apps/iap/iap-core.c @@ -364,6 +364,7 @@ static void iap_thread(void) /* Handle poweroff message */ case SYS_POWEROFF: + case SYS_REBOOT: { iap_shutdown = true; break; diff --git a/apps/keymaps/keymap-agptekrocker.c b/apps/keymaps/keymap-agptekrocker.c index 4d7139ffd5..1fb8465b0a 100644 --- a/apps/keymaps/keymap-agptekrocker.c +++ b/apps/keymaps/keymap-agptekrocker.c @@ -96,7 +96,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_SETTINGS_DEC, BUTTON_VOLDOWN, BUTTON_NONE }, { ACTION_SETTINGS_DECREPEAT, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, /* ACTION_SETTINGS_DECBIGSTEP */ - { ACTION_SETTINGS_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, /* ACTION_SETTINGS_SET, Used by touchscreen targets */ LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-c200.c b/apps/keymaps/keymap-c200.c index 2e26f424cc..6ca1702e5f 100644 --- a/apps/keymaps/keymap-c200.c +++ b/apps/keymaps/keymap-c200.c @@ -88,7 +88,6 @@ static const struct button_mapping button_context_wps[] = { static const struct button_mapping button_context_settings[] = { { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT,BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-clip.c b/apps/keymaps/keymap-clip.c index 7c8fb69471..3c92f03a07 100644 --- a/apps/keymaps/keymap-clip.c +++ b/apps/keymaps/keymap-clip.c @@ -98,7 +98,6 @@ static const struct button_mapping button_context_wps[] = { static const struct button_mapping button_context_settings[] = { { ACTION_STD_OK, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT,BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-creativezv.c b/apps/keymaps/keymap-creativezv.c index f2bcfd80f7..3242e8924f 100644 --- a/apps/keymaps/keymap-creativezv.c +++ b/apps/keymaps/keymap-creativezv.c @@ -134,7 +134,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -147,7 +146,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_BACK, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-creativezvm.c b/apps/keymaps/keymap-creativezvm.c index 7a0cb5965a..47b24bf8b3 100644 --- a/apps/keymaps/keymap-creativezvm.c +++ b/apps/keymaps/keymap-creativezvm.c @@ -133,7 +133,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -146,7 +145,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_BACK, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-e200.c b/apps/keymaps/keymap-e200.c index 538cd7cb8a..20cc16f2dc 100644 --- a/apps/keymaps/keymap-e200.c +++ b/apps/keymaps/keymap-e200.c @@ -100,7 +100,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, { ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, - { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-erosq.c b/apps/keymaps/keymap-erosq.c index 59b70d24ca..d486423a53 100644 --- a/apps/keymaps/keymap-erosq.c +++ b/apps/keymaps/keymap-erosq.c @@ -87,7 +87,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_SETTINGS_INCBIGSTEP, BUTTON_VOL_UP, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE }, { ACTION_SETTINGS_DECBIGSTEP, BUTTON_VOL_DOWN, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), }; /* button_context_settings */ @@ -212,7 +211,8 @@ const struct button_mapping* get_context_mapping(int context) return button_context_list; case CONTEXT_SETTINGS: - case CONTEXT_SETTINGS_EQ: + case CONTEXT_SETTINGS_EQ: + case CONTEXT_SETTINGS_COLOURCHOOSER: return button_context_settings; case CONTEXT_SETTINGS_TIME: diff --git a/apps/keymaps/keymap-fiiom3k.c b/apps/keymaps/keymap-fiiom3k.c index 749f25a35d..d0fbbb2e98 100644 --- a/apps/keymaps/keymap-fiiom3k.c +++ b/apps/keymaps/keymap-fiiom3k.c @@ -131,7 +131,6 @@ static const struct button_mapping button_context_settings[] = { {ACTION_SETTINGS_DEC, BUTTON_SCROLL_FWD, BUTTON_NONE}, {ACTION_SETTINGS_DECREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE}, {ACTION_SETTINGS_DECBIGSTEP, BUTTON_VOL_DOWN, BUTTON_NONE}, - {ACTION_SETTINGS_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT}, {ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE}, {ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, {ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE}, @@ -139,6 +138,16 @@ static const struct button_mapping button_context_settings[] = { LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ +static const struct button_mapping button_context_settings_rectrigger[] = { + {ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE}, + {ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_SETTINGS_INCBIGSTEP, BUTTON_VOL_UP, BUTTON_NONE}, + {ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE}, + {ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_SETTINGS_DECBIGSTEP, BUTTON_VOL_DOWN, BUTTON_NONE}, + LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) +}; /* button_context_settings_rectrigger */ + static const struct button_mapping button_context_settings_eq[] = { {ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE}, {ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, @@ -194,7 +203,7 @@ static const struct button_mapping button_context_pitchscreen[] = { static const struct button_mapping button_context_yesnoscreen[] = { {ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE}, - {ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE}, + {ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE}, {ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE}, {ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE}, {ACTION_STD_CANCEL, BUTTON_RIGHT, BUTTON_NONE}, @@ -204,6 +213,33 @@ static const struct button_mapping button_context_yesnoscreen[] = { LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_yesnoscreen */ +static const struct button_mapping button_context_recscreen[] = { + {ACTION_REC_PAUSE, BUTTON_SELECT, BUTTON_NONE}, + {ACTION_REC_PAUSE, BUTTON_PLAY, BUTTON_NONE}, + {ACTION_REC_NEWFILE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT}, + {ACTION_REC_NEWFILE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY}, + {ACTION_STD_MENU, BUTTON_MENU, BUTTON_NONE}, + {ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE}, + {ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE}, + {ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE}, + {ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE}, + {ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_STD_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE}, + {ACTION_STD_PREVREPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_STD_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE}, + {ACTION_STD_NEXTREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE}, + {ACTION_SETTINGS_INCREPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE}, + {ACTION_SETTINGS_DECREPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE}, + {ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, + {ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE}, + {ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, + LAST_ITEM_IN_LIST +}; /* button_context_recscreen */ + static const struct button_mapping button_context_keyboard[] = { {ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE}, {ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE}, @@ -316,8 +352,9 @@ const struct button_mapping* get_context_mapping(int context) return button_context_list; case CONTEXT_SETTINGS: case CONTEXT_SETTINGS_TIME: - case CONTEXT_SETTINGS_RECTRIGGER: return button_context_settings; + case CONTEXT_SETTINGS_RECTRIGGER: + return button_context_settings_rectrigger; case CONTEXT_SETTINGS_EQ: case CONTEXT_SETTINGS_COLOURCHOOSER: return button_context_settings_eq; @@ -327,6 +364,8 @@ const struct button_mapping* get_context_mapping(int context) return button_context_pitchscreen; case CONTEXT_YESNOSCREEN: return button_context_yesnoscreen; + case CONTEXT_RECSCREEN: + return button_context_recscreen; case CONTEXT_KEYBOARD: return button_context_keyboard; case CONTEXT_USB_HID: diff --git a/apps/keymaps/keymap-fiiom3klinux.c b/apps/keymaps/keymap-fiiom3klinux.c index 7769e2da04..e404d8bfb0 100644 --- a/apps/keymaps/keymap-fiiom3klinux.c +++ b/apps/keymaps/keymap-fiiom3klinux.c @@ -150,7 +150,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { - { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE }, { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-fuze.c b/apps/keymaps/keymap-fuze.c index c5538a6c49..ef0bed1099 100644 --- a/apps/keymaps/keymap-fuze.c +++ b/apps/keymaps/keymap-fuze.c @@ -99,7 +99,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, { ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, - { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-fuzeplus.c b/apps/keymaps/keymap-fuzeplus.c index 0933916b4a..6601316469 100644 --- a/apps/keymaps/keymap-fuzeplus.c +++ b/apps/keymaps/keymap-fuzeplus.c @@ -225,7 +225,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_SETTINGS_DECBIGSTEP, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, - { ACTION_SETTINGS_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-gigabeat-s.c b/apps/keymaps/keymap-gigabeat-s.c index 4cd76184ff..35cecb7476 100644 --- a/apps/keymaps/keymap-gigabeat-s.c +++ b/apps/keymaps/keymap-gigabeat-s.c @@ -167,7 +167,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_BACK, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -181,7 +180,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_BACK, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-gigabeat.c b/apps/keymaps/keymap-gigabeat.c index 31fd0eaf0d..913763af18 100644 --- a/apps/keymaps/keymap-gigabeat.c +++ b/apps/keymaps/keymap-gigabeat.c @@ -160,7 +160,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_A, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -174,7 +173,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_A, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-h10.c b/apps/keymaps/keymap-h10.c index 825590e6f4..7df2b61d05 100644 --- a/apps/keymaps/keymap-h10.c +++ b/apps/keymaps/keymap-h10.c @@ -124,7 +124,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_REW, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c index d4f098ce1e..422af7502c 100644 --- a/apps/keymaps/keymap-h1x0_h3x0.c +++ b/apps/keymaps/keymap-h1x0_h3x0.c @@ -145,7 +145,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_ON, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -159,7 +158,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_ON, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-hdd1630.c b/apps/keymaps/keymap-hdd1630.c index ca55f7fc26..7afcaeec6d 100644 --- a/apps/keymaps/keymap-hdd1630.c +++ b/apps/keymaps/keymap-hdd1630.c @@ -160,7 +160,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_VIEW, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -174,7 +173,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_VIEW, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-hdd6330.c b/apps/keymaps/keymap-hdd6330.c index ed197af41c..18ef2b7c8f 100644 --- a/apps/keymaps/keymap-hdd6330.c +++ b/apps/keymaps/keymap-hdd6330.c @@ -142,7 +142,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_VIEW, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -156,7 +155,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_VIEW, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-hm60x.c b/apps/keymaps/keymap-hm60x.c index 2e1f3dd516..fa8783de6d 100644 --- a/apps/keymaps/keymap-hm60x.c +++ b/apps/keymaps/keymap-hm60x.c @@ -128,7 +128,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { - { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-hm801.c b/apps/keymaps/keymap-hm801.c index 1f0a49c90c..210f521178 100644 --- a/apps/keymaps/keymap-hm801.c +++ b/apps/keymaps/keymap-hm801.c @@ -154,7 +154,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, - { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-ihifi.c b/apps/keymaps/keymap-ihifi.c index 147c2f5f62..0c28f812f1 100644 --- a/apps/keymaps/keymap-ihifi.c +++ b/apps/keymaps/keymap-ihifi.c @@ -127,7 +127,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_BWD, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT, BUTTON_BWD|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_FWD, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-ihifi770.c b/apps/keymaps/keymap-ihifi770.c index c5671bd650..a5f37cdb7d 100644 --- a/apps/keymaps/keymap-ihifi770.c +++ b/apps/keymaps/keymap-ihifi770.c @@ -139,7 +139,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-ihifi800.c b/apps/keymaps/keymap-ihifi800.c index b56bd018eb..4dfceff965 100644 --- a/apps/keymaps/keymap-ihifi800.c +++ b/apps/keymaps/keymap-ihifi800.c @@ -143,7 +143,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_OK, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-m200.c b/apps/keymaps/keymap-m200.c index f055d648ef..be202d21e6 100644 --- a/apps/keymaps/keymap-m200.c +++ b/apps/keymaps/keymap-m200.c @@ -89,7 +89,6 @@ static const struct button_mapping button_context_wps[] = { static const struct button_mapping button_context_settings[] = { { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT,BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-ma.c b/apps/keymaps/keymap-ma.c index 28220d9f50..aaf7df0c01 100644 --- a/apps/keymaps/keymap-ma.c +++ b/apps/keymaps/keymap-ma.c @@ -135,7 +135,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-meizu-m6sl.c b/apps/keymaps/keymap-meizu-m6sl.c index 35e44da905..31dbc88432 100644 --- a/apps/keymaps/keymap-meizu-m6sl.c +++ b/apps/keymaps/keymap-meizu-m6sl.c @@ -147,7 +147,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -161,7 +160,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-mini2440.c b/apps/keymaps/keymap-mini2440.c index 70f63aef72..3fe0698fa0 100644 --- a/apps/keymaps/keymap-mini2440.c +++ b/apps/keymaps/keymap-mini2440.c @@ -162,7 +162,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_A, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -176,7 +175,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_A, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-mr100.c b/apps/keymaps/keymap-mr100.c index d551d434be..0a677efc00 100644 --- a/apps/keymaps/keymap-mr100.c +++ b/apps/keymaps/keymap-mr100.c @@ -153,7 +153,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_DISPLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -167,7 +166,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_DISPLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-mr500.c b/apps/keymaps/keymap-mr500.c index b35c9c1dfc..41e6d21827 100644 --- a/apps/keymaps/keymap-mr500.c +++ b/apps/keymaps/keymap-mr500.c @@ -118,7 +118,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_PREVREPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RC_FF, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_RC_MODE, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ @@ -132,7 +131,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_STD_PREVREPEAT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_RC_DOWN, BUTTON_NONE }, { ACTION_STD_NEXTREPEAT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_RC_MODE, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settingsgraphical */ diff --git a/apps/keymaps/keymap-nwz.c b/apps/keymaps/keymap-nwz.c index 66bdd1b0db..028fbf1bfd 100644 --- a/apps/keymaps/keymap-nwz.c +++ b/apps/keymaps/keymap-nwz.c @@ -199,7 +199,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-nwza860.c b/apps/keymaps/keymap-nwza860.c index f1a3bb6f85..d455e23b62 100644 --- a/apps/keymaps/keymap-nwza860.c +++ b/apps/keymaps/keymap-nwza860.c @@ -125,8 +125,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, { ACTION_SETTINGS_DECREPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, - LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-sa9200.c b/apps/keymaps/keymap-sa9200.c index d29557e222..2dcf301f0f 100644 --- a/apps/keymaps/keymap-sa9200.c +++ b/apps/keymaps/keymap-sa9200.c @@ -155,7 +155,6 @@ static const struct button_mapping button_context_listtree_scroll_without_combo[ static const struct button_mapping button_context_settings[] = { { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY, BUTTON_NONE }, { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, { ACTION_SETTINGS_INCREPEAT,BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-touchscreen.c b/apps/keymaps/keymap-touchscreen.c index c70aea2651..555cf42f79 100644 --- a/apps/keymaps/keymap-touchscreen.c +++ b/apps/keymaps/keymap-touchscreen.c @@ -146,7 +146,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_SETTINGS_INCREPEAT, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_BOTTOMMIDDLE, BUTTON_NONE }, { ACTION_SETTINGS_DECREPEAT, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_CENTER, BUTTON_NONE }, { ACTION_STD_PREV, BUTTON_MIDLEFT, BUTTON_NONE }, { ACTION_STD_PREVREPEAT, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_NONE }, @@ -164,7 +163,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_SETTINGS_INCREPEAT, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_MIDLEFT, BUTTON_NONE }, { ACTION_SETTINGS_DECREPEAT, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_CENTER, BUTTON_NONE }, { ACTION_STD_CANCEL, BUTTON_TOPLEFT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-xduoox20.c b/apps/keymaps/keymap-xduoox20.c index c49410cd03..b08db90cfd 100644 --- a/apps/keymaps/keymap-xduoox20.c +++ b/apps/keymaps/keymap-xduoox20.c @@ -145,7 +145,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { - { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_STD_PREV, BUTTON_NEXT, BUTTON_NONE }, { ACTION_STD_PREVREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_PREV, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-xduoox3.c b/apps/keymaps/keymap-xduoox3.c index 124ca06c9d..bbe4c88772 100644 --- a/apps/keymaps/keymap-xduoox3.c +++ b/apps/keymaps/keymap-xduoox3.c @@ -172,7 +172,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { - { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE }, { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-xduoox3ii.c b/apps/keymaps/keymap-xduoox3ii.c index c8be8ce13e..d99c8240a1 100644 --- a/apps/keymaps/keymap-xduoox3ii.c +++ b/apps/keymaps/keymap-xduoox3ii.c @@ -145,7 +145,6 @@ static const struct button_mapping button_context_quickscreen[] = { /** Settings - General Mappings **/ static const struct button_mapping button_context_settings[] = { - { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_STD_PREV, BUTTON_NEXT, BUTTON_NONE }, { ACTION_STD_PREVREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_NEXT, BUTTON_PREV, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-yh8xx_yh9xx.c b/apps/keymaps/keymap-yh8xx_yh9xx.c index 32623e1a72..9332c9fe98 100644 --- a/apps/keymaps/keymap-yh8xx_yh9xx.c +++ b/apps/keymaps/keymap-yh8xx_yh9xx.c @@ -201,7 +201,6 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { { ACTION_SETTINGS_INCREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE }, { ACTION_SETTINGS_DECREPEAT,BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_SETTINGS_RESET, BUTTON_REW|BUTTON_REL, BUTTON_REW }, { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, diff --git a/apps/keymaps/keymap-zen.c b/apps/keymaps/keymap-zen.c index ab0f32edb4..b0f24af459 100644 --- a/apps/keymaps/keymap-zen.c +++ b/apps/keymaps/keymap-zen.c @@ -235,7 +235,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, - { ACTION_SETTINGS_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ diff --git a/apps/keymaps/keymap-zenxfi3.c b/apps/keymaps/keymap-zenxfi3.c index 191b36a1ca..d19a407b78 100644 --- a/apps/keymaps/keymap-zenxfi3.c +++ b/apps/keymaps/keymap-zenxfi3.c @@ -163,7 +163,6 @@ static const struct button_mapping button_context_settings[] = { { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, - { ACTION_SETTINGS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_settings */ diff --git a/apps/lang/arabic.lang b/apps/lang/arabic.lang index ecf8f8fb1f..c9b295956b 100644 --- a/apps/lang/arabic.lang +++ b/apps/lang/arabic.lang @@ -14,6 +14,8 @@ # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY # KIND, either express or implied. # +# LANGUAGE_IS_RTL +# # Arabic language file, translated by: # - Mohamed Tarek # - Raafat Akkad @@ -764,20 +766,17 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_FORMAT - desc: audio format item in recording menu + id: LANG_FORMAT + desc: audio format user: core <source> - *: none - recording: "Format" + *: "Format" </source> <dest> - *: none - recording: "الصيغة" + *: "الصيغة" </dest> <voice> - *: none - recording: "Format" + *: "Format" </voice> </phrase> <phrase> @@ -4043,15 +4042,15 @@ user: core <source> *: none - gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" + fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" </source> <dest> *: none - gigabeatfx,sansafuzeplus: "حساسية اللمس" + fiiom3k,gigabeatfx,sansafuzeplus: "حساسية اللمس" </dest> <voice> *: none - gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" + fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" </voice> </phrase> <phrase> diff --git a/apps/lang/basque.lang b/apps/lang/basque.lang index 59ab84b04e..05fae692e8 100644 --- a/apps/lang/basque.lang +++ b/apps/lang/basque.lang @@ -5263,20 +5263,17 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_FORMAT - desc: audio format item in recording menu + id: LANG_FORMAT + desc: audio format user: core <source> - *: none - recording: "Format" + *: "Format" </source> <dest> - *: none - recording: "Formatua" + *: "Formatua" </dest> <voice> - *: none - recording: "Formatua" + *: "Formatua" </voice> </phrase> <phrase> @@ -10311,15 +10308,15 @@ user: core <source> *: none - gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" + fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" </source> <dest> *: none - gigabeatfx,sansafuzeplus: "Taktilaren Sentikortasuna" + fiiom3k,gigabeatfx,sansafuzeplus: "Taktilaren Sentikortasuna" </dest> <voice> *: none - gigabeatfx,sansafuzeplus: "Taktilaren Sentikortasuna" + fiiom3k,gigabeatfx,sansafuzeplus: "Taktilaren Sentikortasuna" </voice> </phrase> <phrase> diff --git a/apps/lang/bulgarian.lang b/apps/lang/bulgarian.lang index a66df1ba51..77f2d58361 100644 --- a/apps/lang/bulgarian.lang +++ b/apps/lang/bulgarian.lang @@ -252,7 +252,7 @@ *: "PLAY = Yes" archosplayer: "(PLAY/STOP)" cowond2*: "MENU, or top-right = Yes" - creativezen*: "Select = Yes" + creativezen*: "SELECT = Yes" gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Yes" iriverh100,iriverh120,iriverh300: "NAVI = Yes" mrobe500: "PLAY, POWER, or top-right = Yes" @@ -262,7 +262,7 @@ *: "PLAY = Да" archosplayer: "(PLAY/STOP)" cowond2*: "MENU или горе ляво = Да" - creativezen*: "Select = Да" + creativezen*: "SELECT = Да" gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Да" iriverh100,iriverh120,iriverh300: "NAVI = Да" mrobe500: "PLAY, POWER или горе дясно = Да" @@ -5268,20 +5268,17 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_FORMAT - desc: audio format item in recording menu + id: LANG_FORMAT + desc: audio format user: core <source> - *: none - recording: "Format" + *: "Format" </source> <dest> - *: none - recording: "Формат" + *: "Формат" </dest> <voice> - *: none - recording: "Формат" + *: "Формат" </voice> </phrase> <phrase> @@ -10316,15 +10313,15 @@ user: core <source> *: none - gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" + fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" </source> <dest> *: none - gigabeatfx,sansafuzeplus: "Чувствителност на тъчпада" + fiiom3k,gigabeatfx,sansafuzeplus: "Чувствителност на тъчпада" </dest> <voice> *: none - gigabeatfx,sansafuzeplus: "Чувствителност на тъчпада" + fiiom3k,gigabeatfx,sansafuzeplus: "Чувствителност на тъчпада" </voice> </phrase> <phrase> diff --git a/apps/lang/catala.lang b/apps/lang/catala.lang index 9c29513ca5..38fd6d0644 100644 --- a/apps/lang/catala.lang +++ b/apps/lang/catala.lang @@ -5257,20 +5257,17 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_FORMAT - desc: audio format item in recording menu + id: LANG_FORMAT + desc: audio format user: core <source> - *: none - recording: "Format" + *: "Format" </source> <dest> - *: none - recording: "Format" + *: "Format" </dest> <voice> - *: none - recording: "Format" + *: "Format" </voice> </phrase> <phrase> @@ -10305,15 +10302,15 @@ user: core <source> *: none - gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" + fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" </source> <dest> *: none - gigabeatfx,sansafuzeplus: "Sensibilitat del touchpad" + fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilitat del touchpad" </dest> <voice> *: none - gigabeatfx,sansafuzeplus: "Sensibilitat del Touchpad" + fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilitat del Touchpad" </voice> </phrase> <phrase> diff --git a/apps/lang/chinese-simp.lang b/apps/lang/chinese-simp.lang index c1829298be..3d1d0ecaa3 100644 --- a/apps/lang/chinese-simp.lang +++ b/apps/lang/chinese-simp.lang @@ -19,6 +19,35 @@ # - Harry Tu # - Jun Gu # - Purling Nayuki +#------ +<phrase> + id: LANG_LIST_SEPARATOR + desc: line between lines in lists + user: core + <source> + *: "Line Separator" + </source> + <dest> + *: "行分隔线" + </dest> + <voice> + *: "行分隔线" + </voice> +</phrase> +<phrase> + id: LANG_LIST_SEPARATOR_COLOR + desc: line between lines in lists + user: core + <source> + *: "Line Separator Colour" + </source> + <dest> + *: "行分隔线颜色" + </dest> + <voice> + *: "Color of Line Separator" + </voice> +</phrase> <phrase> id: LANG_SET_BOOL_YES desc: bool true representation @@ -27,7 +56,7 @@ *: "Yes" </source> <dest> - *: "√" + *: "是" </dest> <voice> *: "是" @@ -41,7 +70,7 @@ *: "No" </source> <dest> - *: "×" + *: "否" </dest> <voice> *: "否" @@ -104,23 +133,6 @@ </voice> </phrase> <phrase> - id: LANG_CONFIRM_SHUTDOWN - desc: in shutdown screen - user: core - <source> - *: none - soft_shutdown: "Press OFF to shut down" - </source> - <dest> - *: none - soft_shutdown: "按下OFF关机" - </dest> - <voice> - *: none - soft_shutdown: "" - </voice> -</phrase> -<phrase> id: LANG_SHUTTINGDOWN desc: in main menu user: core @@ -128,27 +140,10 @@ *: "Shutting down..." </source> <dest> - *: "关机中..." - </dest> - <voice> - *: "关机中" - </voice> -</phrase> -<phrase> - id: LANG_REMOVE_MMC - desc: before acknowledging usb in case an MMC is inserted (Ondio) - user: core - <source> - *: none - archosondio*: "Please remove inserted MMC" - </source> - <dest> - *: none - archosondio*: "请取出MMC卡" + *: "关闭中..." </dest> <voice> - *: none - archosondio*: "请取出MMC卡" + *: "关闭中" </voice> </phrase> <phrase> @@ -201,7 +196,7 @@ *: "General Settings" </source> <dest> - *: "一般设置" + *: "常规设置" </dest> <voice> *: "一般设置" @@ -262,11 +257,11 @@ </source> <dest> *: none - recording: "录音界面" + recording: "录音" </dest> <voice> *: none - recording: "录音界面" + recording: "录音" </voice> </phrase> <phrase> @@ -284,23 +279,6 @@ </voice> </phrase> <phrase> - id: LANG_SHUTDOWN - desc: in main menu - user: core - <source> - *: none - soft_shutdown: "Shut down" - </source> - <dest> - *: none - soft_shutdown: "关机" - </dest> - <voice> - *: none - soft_shutdown: "关机" - </voice> -</phrase> -<phrase> id: LANG_VOLUME desc: in sound_settings user: core @@ -455,159 +433,6 @@ </voice> </phrase> <phrase> - id: LANG_LOUDNESS - desc: in sound_settings - user: core - <source> - *: none - masf: "Loudness" - </source> - <dest> - *: none - masf: "响度" - </dest> - <voice> - *: none - masf: "响度" - </voice> -</phrase> -<phrase> - id: LANG_AUTOVOL - desc: in sound_settings - user: core - <source> - *: none - masf: "Auto Volume" - </source> - <dest> - *: none - masf: "自动音量调整" - </dest> - <voice> - *: none - masf: "自动音量调整" - </voice> -</phrase> -<phrase> - id: LANG_DECAY - desc: in sound_settings - user: core - <source> - *: none - masf: "AV Decay Time" - </source> - <dest> - *: none - masf: "自动音量调整衰減时间" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_SUPERBASS - desc: in sound settings - user: core - <source> - *: none - masf: "Super Bass" - </source> - <dest> - *: none - masf: "超低音" - </dest> - <voice> - *: none - masf: "超低音" - </voice> -</phrase> -<phrase> - id: LANG_MDB_ENABLE - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Enable" - </source> - <dest> - *: none - masf: "启用MDB" - </dest> - <voice> - *: none - masf: "启用MDB" - </voice> -</phrase> -<phrase> - id: LANG_MDB_STRENGTH - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Strength" - </source> - <dest> - *: none - masf: "MDB强度" - </dest> - <voice> - *: none - masf: "MDB的强度" - </voice> -</phrase> -<phrase> - id: LANG_MDB_HARMONICS - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Harmonics" - </source> - <dest> - *: none - masf: "MDB泛音" - </dest> - <voice> - *: none - masf: "MDB的泛音" - </voice> -</phrase> -<phrase> - id: LANG_MDB_CENTER - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Centre Frequency" - </source> - <dest> - *: none - masf: "MDB中心频率" - </dest> - <voice> - *: none - masf: "MDB的中心频率" - </voice> -</phrase> -<phrase> - id: LANG_MDB_SHAPE - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Shape" - </source> - <dest> - *: none - masf: "MDB形状" - </dest> - <voice> - *: none - masf: "MDB的形状" - </voice> -</phrase> -<phrase> id: LANG_CROSSFEED desc: in sound settings user: core @@ -929,7 +754,7 @@ *: "%dHz频段增益" </dest> <voice> - *: "赫兹频段增益" + *: "%d赫兹频段增益" </voice> </phrase> <phrase> @@ -957,7 +782,7 @@ *: "带通滤波器%d" </dest> <voice> - *: "带通滤波器" + *: "带通滤波器%d" </voice> </phrase> <phrase> @@ -1726,15 +1551,12 @@ user: core <source> *: "Peak Meter" - masd: none </source> <dest> *: "峰值电平表" - masd: none </dest> <voice> *: "峰值电平表" - masd: none </voice> </phrase> <phrase> @@ -2142,20 +1964,6 @@ </voice> </phrase> <phrase> - id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY - desc: Save only on bookmark for each playlist in recent bookmarks - user: core - <source> - *: "Unique only" - </source> - <dest> - *: "只保存唯一一份" - </dest> - <voice> - *: "只保存唯一一份" - </voice> -</phrase> -<phrase> id: LANG_VOICE_MENU desc: item of voice menu, enable/disable the voice UI user: core @@ -2240,23 +2048,6 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_QUALITY - desc: in the recording settings - user: core - <source> - *: none - recording_hwcodec: "Quality" - </source> - <dest> - *: none - recording_hwcodec: "品质" - </dest> - <voice> - *: none - recording_hwcodec: "品质" - </voice> -</phrase> -<phrase> id: LANG_FREQUENCY desc: in recording and playback settings user: core @@ -2328,23 +2119,6 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_EDITABLE - desc: Editable recordings setting - user: core - <source> - *: none - recording_hwcodec: "Independent Frames" - </source> - <dest> - *: none - recording_hwcodec: "独立框架" - </dest> - <voice> - *: none - recording_hwcodec: "独立框架" - </voice> -</phrase> -<phrase> id: LANG_RECORD_TIMESPLIT desc: Record split menu user: core @@ -3182,23 +2956,6 @@ </voice> </phrase> <phrase> - id: LANG_BUTTON_BAR - desc: in settings menu - user: core - <source> - *: none - recorder_pad: "Button Bar" - </source> - <dest> - *: none - recorder_pad: "按键条" - </dest> - <voice> - *: none - recorder_pad: "按键条" - </voice> -</phrase> -<phrase> id: LANG_VOLUME_DISPLAY desc: Volume type title user: core @@ -3260,15 +3017,12 @@ user: core <source> *: "Peak Release" - masd: none </source> <dest> *: "峰值释放速度" - masd: none </dest> <voice> *: "峰值释放速度" - masd: none </voice> </phrase> <phrase> @@ -3277,15 +3031,12 @@ user: core <source> *: "Peak Hold Time" - masd: none </source> <dest> *: "峰值保持时长" - masd: none </dest> <voice> *: "峰值保持时长" - masd: none </voice> </phrase> <phrase> @@ -3294,15 +3045,12 @@ user: core <source> *: "Clip Hold Time" - masd: none </source> <dest> *: "削波保持时长" - masd: none </dest> <voice> *: "削波保持时长" - masd: none </voice> </phrase> <phrase> @@ -3311,15 +3059,12 @@ user: core <source> *: "Eternal" - masd: none </source> <dest> *: "外部" - masd: none </dest> <voice> *: "外部" - masd: none </voice> </phrase> <phrase> @@ -3328,15 +3073,12 @@ user: core <source> *: "Scale" - masd: none </source> <dest> *: "标尺类型" - masd: none </dest> <voice> *: "标尺类型" - masd: none </voice> </phrase> <phrase> @@ -3345,15 +3087,12 @@ user: core <source> *: "Logarithmic (dB)" - masd: none </source> <dest> *: "对数(dB)坐标" - masd: none </dest> <voice> *: "对数坐标" - masd: none </voice> </phrase> <phrase> @@ -3362,15 +3101,12 @@ user: core <source> *: "Linear (%)" - masd: none </source> <dest> *: "线性(%)坐标" - masd: none </dest> <voice> *: "线性坐标" - masd: none </voice> </phrase> <phrase> @@ -3379,15 +3115,12 @@ user: core <source> *: "Minimum Of Range" - masd: none </source> <dest> *: "量程最小值" - masd: none </dest> <voice> *: "量程最小值" - masd: none </voice> </phrase> <phrase> @@ -3396,15 +3129,12 @@ user: core <source> *: "Maximum Of Range" - masd: none </source> <dest> *: "量程最大值" - masd: none </dest> <voice> *: "量程最大值" - masd: none </voice> </phrase> <phrase> @@ -3999,7 +3729,7 @@ *: "搜索中...已找到%d个(%s)" </dest> <voice> - *: "" + *: "搜索中...已找到%d个(%s)" </voice> </phrase> <phrase> @@ -4062,23 +3792,6 @@ </voice> </phrase> <phrase> - id: LANG_BATTERY_TOPOFF_CHARGE - desc: in info display, shows that top off charge is running Only for V1 archosrecorder - user: core - <source> - *: none - archosrecorder: "Battery: Top-Off Chg" - </source> - <dest> - *: none - archosrecorder: "电池:恒流快速充电" - </dest> - <voice> - *: none - archosrecorder: "电池 恒流快速充电" - </voice> -</phrase> -<phrase> id: LANG_BATTERY_TRICKLE_CHARGE desc: in info display, shows that trickle charge is running user: core @@ -4102,12 +3815,10 @@ <source> *: "Battery: %d%% %dh %dm" ipodmini1g,ipodmini2g,iriverh10: "Batt: %d%% %dh %dm" - iriverifp7xx: "%d%% %dh %dm" </source> <dest> *: "剩余电量:%d%% %dh %dm" ipodmini1g,ipodmini2g,iriverh10: "电量:%d%% %dh %dm" - iriverifp7xx: "%d%% %dh %dm" </dest> <voice> *: "剩余电量" @@ -4147,38 +3858,38 @@ user: core <source> *: "Int:" + hibylinux: "mSD:" xduoox3: "mSD1:" </source> <dest> *: "内部:" + hibylinux: "mSD:" xduoox3: "mSD1:" </dest> <voice> *: "内部大小为" + hibylinux: "micro S D" xduoox3: "mSD卡1" </voice> </phrase> <phrase> id: LANG_DISK_NAME_MMC - desc: in info menu; name for external disk with multivolume (Ondio; keep short!) + desc: in info menu; name for external disk with multivolume (keep short!) user: core <source> *: none - archosondio*: "MMC:" multivolume: "HD1" sansac200*,sansaclipplus,sansae200*,sansafuze*: "mSD:" xduoox3: "mSD2:" </source> <dest> *: none - archosondio*: "MMC:" multivolume: "磁盘1" sansac200*,sansaclipplus,sansae200*,sansafuze*: "mSD:" xduoox3: "mSD2:" </dest> <voice> *: none - archosondio*: "MMC卡" multivolume: "磁盘1" sansac200*,sansaclipplus,sansae200*,sansafuze*: "mSD卡" xduoox3: "mSD卡2" @@ -4339,7 +4050,8 @@ vibe500: "CANCEL:取消" </dest> <voice> - *: none + *: "" + gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,samsungyh*,sansac200*,sansae200*: "" </voice> </phrase> <phrase> @@ -4398,6 +4110,7 @@ </dest> <voice> *: none + iaudiom5,iaudiox5,iriverh100,iriverh120,iriverh300,recording,samsungyh*,sansac200*,sansae200*,vibe500: "" </voice> </phrase> <phrase> @@ -4516,7 +4229,7 @@ </dest> <voice> *: none - alarm: "离闹钟响起还有" + alarm: "离闹钟响起还有%d:%02d" </voice> </phrase> <phrase> @@ -4579,7 +4292,7 @@ </dest> <voice> *: none - alarm,gigabeats,ipod*,iriverh10,iriverh10_5gb: "" + alarm,ipod*: "" </voice> </phrase> <phrase> @@ -4787,7 +4500,7 @@ *: "(VBR)" </dest> <voice> - *: "VBR" + *: "(VBR)" </voice> </phrase> <phrase> @@ -4857,7 +4570,7 @@ *: "<无信息>" </dest> <voice> - *: "无信息" + *: "<无信息>" </voice> </phrase> <phrase> @@ -5834,48 +5547,6 @@ </voice> </phrase> <phrase> - id: LANG_KILOBYTE - desc: a unit postfix, also voiced - user: core - <source> - *: "KB" - </source> - <dest> - *: "KB" - </dest> - <voice> - *: "B" - </voice> -</phrase> -<phrase> - id: LANG_MEGABYTE - desc: a unit postfix, also voiced - user: core - <source> - *: "MB" - </source> - <dest> - *: "MB" - </dest> - <voice> - *: "MB" - </voice> -</phrase> -<phrase> - id: LANG_GIGABYTE - desc: a unit postfix, also voiced - user: core - <source> - *: "GB" - </source> - <dest> - *: "GB" - </dest> - <voice> - *: "GB" - </voice> -</phrase> -<phrase> id: LANG_POINT desc: decimal separator for composing numbers user: core @@ -6477,7 +6148,7 @@ *: "插入了%d首曲目(%s)" </dest> <voice> - *: "首曲目 插入了" + *: "插入了%d首曲目%s" </voice> </phrase> <phrase> @@ -6491,7 +6162,7 @@ *: "列入了%d首曲目(%s)" </dest> <voice> - *: "首曲目 列入了" + *: "列入了%d首曲目%s" </voice> </phrase> <phrase> @@ -6505,7 +6176,7 @@ *: "保存了%d首曲目(%s)" </dest> <voice> - *: "首曲目 保存了" + *: "保存了%d首曲目%s" </voice> </phrase> <phrase> @@ -6723,91 +6394,6 @@ </voice> </phrase> <phrase> - id: LANG_BUTTONBAR_MENU - desc: in button bar - user: core - <source> - *: none - radio_screen_button_bar: "Menu" - </source> - <dest> - *: none - radio_screen_button_bar: "选单" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_EXIT - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Exit" - </source> - <dest> - *: none - radio_screen_button_bar: "退出" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_ACTION - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Action" - </source> - <dest> - *: none - radio_screen_button_bar: "动作" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_ADD - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Add" - </source> - <dest> - *: none - radio_screen_button_bar: "增加" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_RECORD - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Record" - </source> - <dest> - *: none - radio_screen_button_bar: "录音" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> id: LANG_FM_MONO_MODE desc: in radio screen user: core @@ -7012,7 +6598,7 @@ </phrase> <phrase> id: LANG_OFF_ABORT - desc: Used on archosrecorder models + desc: Used on many models user: core <source> *: "OFF to abort" @@ -7031,6 +6617,7 @@ ipod*: "按PLAY/PAUSE键取消" iriverh10,iriverh10_5gb,sansac200*,sansae200*,vibe500: "按PREV键取消" iriverh100,iriverh120,iriverh300: "按STOP键取消" + sansafuzeplus: "按BACK键取消" </dest> <voice> *: "" @@ -7178,7 +6765,7 @@ </phrase> <phrase> id: LANG_PLUGIN_WRONG_MODEL - desc: The plugin is not compatible with the archos model trying to run it + desc: The plugin is not compatible with the player model trying to run it user: core <source> *: "Incompatible model" @@ -7187,7 +6774,7 @@ *: "不兼容型号的插件" </dest> <voice> - *: "" + *: "不兼容型号的插件" </voice> </phrase> <phrase> @@ -7201,7 +6788,7 @@ *: "不兼容版本的插件" </dest> <voice> - *: "" + *: "不兼容版本的插件" </voice> </phrase> <phrase> @@ -7215,7 +6802,7 @@ *: "插件返回错误" </dest> <voice> - *: "" + *: "插件返回错误" </voice> </phrase> <phrase> @@ -7475,159 +7062,6 @@ </voice> </phrase> <phrase> - id: LANG_SYSFONT_CHANNEL_STEREO - desc: in sound_settings - user: core - <source> - *: none - recording: "Stereo" - </source> - <dest> - *: none - recording: "Stereo" - </dest> - <voice> - *: none - recording: "Stereo" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_CHANNEL_MONO - desc: in sound_settings - user: core - <source> - *: none - recording: "Mono" - </source> - <dest> - *: none - recording: "Mono" - </dest> - <voice> - *: none - recording: "Mono" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_SOURCE - desc: in the recording settings - user: core - <source> - *: none - recording: "Source" - </source> - <dest> - *: none - recording: "来源" - </dest> - <voice> - *: none - recording: "来源" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_SRC_MIC - desc: in the recording settings - user: core - <source> - *: none - recording: "Int. Mic" - </source> - <dest> - *: none - recording: "内部麦克风" - </dest> - <voice> - *: none - recording: "内部麦克风" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_SRC_DIGITAL - desc: in the recording settings - user: core - <source> - *: none - recording: "Digital" - </source> - <dest> - *: none - recording: "数码" - </dest> - <voice> - *: none - recording: "数码" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORD_TRIGGER - desc: in recording settings_menu - user: core - <source> - *: none - recording: "Trigger" - </source> - <dest> - *: none - recording: "触发" - </dest> - <voice> - *: none - recording: "触发" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_DIRBROWSE_F1 - desc: in dir browser, F1 button bar text - user: core - <source> - *: none - recorder_pad: "Menu" - </source> - <dest> - *: none - recorder_pad: "选单" - </dest> - <voice> - *: none - recorder_pad: "" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_DIRBROWSE_F2 - desc: in dir browser, F2 button bar text - user: core - <source> - *: none - recorder_pad: "Option" - </source> - <dest> - *: none - recorder_pad: "选项" - </dest> - <voice> - *: none - recorder_pad: "" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_DIRBROWSE_F3 - desc: in dir browser, F3 button bar text - user: core - <source> - *: none - recorder_pad: "LCD" - </source> - <dest> - *: none - recorder_pad: "屏幕" - </dest> - <voice> - *: none - recorder_pad: "" - </voice> -</phrase> -<phrase> id: LANG_AFMT_PCM_WAV desc: audio format description user: core @@ -7641,7 +7075,7 @@ </dest> <voice> *: none - recording: "PCM Wave" + recording: "PCM Wave(.wav)" </voice> </phrase> <phrase> @@ -7677,33 +7111,13 @@ desc: in lcd settings user: core <source> - *: none - lcd_sleep: "Never" + *: "Never" </source> <dest> - *: none - lcd_sleep: "从不" + *: "从不" </dest> <voice> - *: none - lcd_sleep: "从不" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_LINE_IN - desc: in the recording settings - user: core - <source> - *: none - recording: "Line In" - </source> - <dest> - *: none - recording: "线路输入" - </dest> - <voice> - *: none - recording: "线路输入" + *: "从不" </voice> </phrase> <phrase> @@ -7712,7 +7126,6 @@ user: core <source> *: "Building database... %d found (OFF to return)" - archosplayer: "Building DB %d found" gigabeat*,iaudiom5,iaudiox5,mrobe100,samsungyh*: "Building database... %d found (LEFT to return)" gogearsa9200: "Building database... %d found (REW to return)" ipod*,iriverh10,iriverh10_5gb,sansac200*,sansae200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)" @@ -7720,7 +7133,6 @@ </source> <dest> *: "数据库更新中...已找到%d个(按OFF键返回)" - archosplayer: "数据库更新中...已找到%d个" gigabeat*,iaudiom5,iaudiox5,mrobe100,samsungyh*: "数据库更新中...已找到%d个(按LEFT键返回)" gogearsa9200: "数据库更新中...已找到%d个(按REW键返回)" ipod*,iriverh10,iriverh10_5gb,sansac200*,sansae200*,sansafuze*,vibe500: "数据库更新中...已找到%d个(按PREV键返回)" @@ -8075,20 +7487,17 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_FORMAT - desc: audio format item in recording menu + id: LANG_FORMAT + desc: audio format user: core <source> - *: none - recording: "Format" + *: "Format" </source> <dest> - *: none - recording: "格式" + *: "格式" </dest> <voice> - *: none - recording: "格式" + *: "格式" </voice> </phrase> <phrase> @@ -8142,11 +7551,9 @@ user: core <source> *: "Buffer:" - archosplayer: "Buf:" </source> <dest> *: "缓冲区:" - archosplayer: "Buf:" </dest> <voice> *: "缓冲区大小为" @@ -8206,8 +7613,8 @@ user: core <source> *: "PLAY = Yes" - archosplayer: "(PLAY/STOP)" cowond2*: "MENU, or top-right = Yes" + creativezen*: "SELECT = Yes" gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Yes" iriverh100,iriverh120,iriverh300: "NAVI = Yes" mrobe500: "PLAY, POWER, or top-right = Yes" @@ -8215,9 +7622,8 @@ </source> <dest> *: "PLAY:是" - archosplayer: "(PLAY/STOP)" cowond2*: "MENU或TOP-RIGHT:是" - gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT:是" + creativezen*,gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT:是" iriverh100,iriverh120,iriverh300: "NAVI=是" mrobe500: "PLAY,POWER或TOP-RIGHT:是" vibe500: "OK:是" @@ -8252,6 +7658,7 @@ </dest> <voice> *: none + gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,samsungyh*,sansac200*,sansae200*: "" </voice> </phrase> <phrase> @@ -8260,11 +7667,9 @@ user: core <source> *: "Any Other = No" - archosplayer: none </source> <dest> *: "Any Other=否" - archosplayer: none </dest> <voice> *: "" @@ -8427,7 +7832,7 @@ *: "Main Menu" </source> <dest> - *: "主选单" + *: "主菜单" </dest> <voice> *: "主选单" @@ -8453,15 +7858,12 @@ user: core <source> *: "End of Song List" - archosplayer: "End of List" </source> <dest> *: "曲目列表结束" - archosplayer: "列表结束" </dest> <voice> *: "曲目列表结束" - archosplayer: "列表结束" </voice> </phrase> <phrase> @@ -8561,20 +7963,6 @@ </voice> </phrase> <phrase> - id: LANG_SYSFONT_MODE - desc: in wps F2 pressed - user: core - <source> - *: "Mode:" - </source> - <dest> - *: "模式:" - </dest> - <voice> - *: "" - </voice> -</phrase> -<phrase> id: LANG_AGC_VOICE desc: AGC preset user: core @@ -8785,16 +8173,16 @@ </phrase> <phrase> id: LANG_REPLACE - desc: in onplay menu. Replace the current playlist with a new one. + desc: deprecated user: core <source> - *: "Play Next" + *: "" </source> <dest> - *: "播放下一个" + *: "" </dest> <voice> - *: "播放下一个" + *: "" </voice> </phrase> <phrase> @@ -9036,7 +8424,7 @@ *: "Context Menu" </source> <dest> - *: "相关选单" + *: "相关菜单" </dest> <voice> *: "相关选单" @@ -9123,10 +8511,10 @@ *: "Show Filename Extensions" </source> <dest> - *: "显示文件名后缀" + *: "显示后缀名" </dest> <voice> - *: "显示文件名后缀" + *: "显示后缀名" </voice> </phrase> <phrase> @@ -9140,7 +8528,7 @@ *: "读取中...已读取%d%%(%s)" </dest> <voice> - *: "" + *: "读取中...已读取%d%%(%s)" </voice> </phrase> <phrase> @@ -9266,7 +8654,7 @@ </phrase> <phrase> id: LANG_DITHERING - desc: in the sound settings menu + desc: in the sound settings and some other menus user: core <source> *: "Dithering" @@ -9473,23 +8861,6 @@ </voice> </phrase> <phrase> - id: LANG_SYSFONT_CHANNELS - desc: in the recording settings - user: core - <source> - *: none - recording: "Channels" - </source> - <dest> - *: none - recording: "声道" - </dest> - <voice> - *: none - recording: "声道" - </voice> -</phrase> -<phrase> id: LANG_PLAYLISTS desc: in the file view setting user: core @@ -9657,7 +9028,7 @@ *: "%s不存在" </dest> <voice> - *: "不存在" + *: "%s不存在" </voice> </phrase> <phrase> @@ -10146,11 +9517,11 @@ </source> <dest> *: none - accessory_supply: "给附件供电" + accessory_supply: "为附件供电" </dest> <voice> *: none - accessory_supply: "给附件供电" + accessory_supply: "为附件供电" </voice> </phrase> <phrase> @@ -10161,10 +9532,10 @@ *: "Unknown" </source> <dest> - *: "不知道" + *: "未知" </dest> <voice> - *: "不知道" + *: "未知" </voice> </phrase> <phrase> @@ -10207,15 +9578,15 @@ user: core <source> *: none - gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" + fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" </source> <dest> *: none - gigabeatfx,sansafuzeplus: "触摸板灵敏度" + fiiom3k,gigabeatfx,sansafuzeplus: "触摸板灵敏度" </dest> <voice> *: none - gigabeatfx,sansafuzeplus: "触摸板灵敏度" + fiiom3k,gigabeatfx,sansafuzeplus: "触摸板灵敏度" </voice> </phrase> <phrase> @@ -10914,10 +10285,10 @@ *: "Threshold" </source> <dest> - *: "阀值" + *: "阈值" </dest> <voice> - *: "阀值" + *: "阈值" </voice> </phrase> <phrase> @@ -11004,10 +10375,10 @@ *: "Knee" </source> <dest> - *: "柔和度" + *: "拐点" </dest> <voice> - *: "柔和度" + *: "拐点" </voice> </phrase> <phrase> @@ -11046,10 +10417,10 @@ *: "Soft Knee" </source> <dest> - *: "柔和" + *: "软拐点" </dest> <voice> - *: "柔和" + *: "软拐点" </voice> </phrase> <phrase> @@ -11105,10 +10476,10 @@ *: "Hard Knee" </source> <dest> - *: "锐利" + *: "硬拐点" </dest> <voice> - *: "锐利" + *: "硬拐点" </voice> </phrase> <phrase> @@ -11125,7 +10496,7 @@ </dest> <voice> *: none - quickscreen: "Set as Top Quickscreen Item" + quickscreen: "设为快屏上键" </voice> </phrase> <phrase> @@ -11483,10 +10854,10 @@ *: "Timestretch" </source> <dest> - *: "音调/音速" + *: "时间伸缩" </dest> <voice> - *: "音调/音速" + *: "时间伸缩" </voice> </phrase> <phrase> @@ -11726,15 +11097,15 @@ user: core <source> *: none - gigabeats: "Band %d Gain" + gigabeats,samsungypr1: "Band %d Gain" </source> <dest> *: none - gigabeats: "频段 %d 增益" + gigabeats,samsungypr1: "频段 %d 增益" </dest> <voice> *: none - gigabeats: "频段 增益" + gigabeats,samsungypr1: "频段 %d 增益" </voice> </phrase> <phrase> @@ -11870,15 +11241,15 @@ user: core <source> *: none - creativezenxfi2,creativezenxfi3,gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D Enhancement" + depth_3d: "3-D Enhancement" </source> <dest> *: none - creativezenxfi2,creativezenxfi3,gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "3-D增强" + depth_3d: "3-D增强" </dest> <voice> *: none - creativezenxfi2,creativezenxfi3,gigabeats,mpiohd200,mpiohd300,sansafuzeplus: "三维增强" + depth_3d: "三维增强" </voice> </phrase> <phrase> @@ -11918,15 +11289,15 @@ user: core <source> *: none - gigabeats: "Band %d Frequency" + gigabeats,samsungypr1: "Band %d Frequency" </source> <dest> *: none - gigabeats: "频段 %d 频率" + gigabeats,samsungypr1: "频段 %d 频率" </dest> <voice> *: none - gigabeats: "频段 的频率" + gigabeats,samsungypr1: "频段 %d 的频率" </voice> </phrase> <phrase> @@ -11935,15 +11306,15 @@ user: core <source> *: none - gigabeats: "Band %d Width" + gigabeats,samsungypr1: "Band %d Width" </source> <dest> *: none - gigabeats: "频段 %d 宽度" + gigabeats,samsungypr1: "频段 %d 宽度" </dest> <voice> *: none - gigabeats: "频段 的宽度" + gigabeats,samsungypr1: "频段 %d 的宽度" </voice> </phrase> <phrase> @@ -12031,15 +11402,15 @@ user: core <source> *: none - gigabeats: "Wide" + gigabeats,samsungypr1: "Wide" </source> <dest> *: none - gigabeats: "宽度" + gigabeats,samsungypr1: "宽度" </dest> <voice> *: none - gigabeats: "宽度" + gigabeats,samsungypr1: "宽度" </voice> </phrase> <phrase> @@ -12076,15 +11447,15 @@ user: core <source> *: none - gigabeats: "Narrow" + gigabeats,samsungypr1: "Narrow" </source> <dest> *: none - gigabeats: "窄" + gigabeats,samsungypr1: "窄" </dest> <voice> *: none - gigabeats: "窄" + gigabeats,samsungypr1: "窄" </voice> </phrase> <phrase> @@ -12093,15 +11464,15 @@ user: core <source> *: none - gigabeats: "Advanced Tone Control Settings" + gigabeats,samsungypr1: "Advanced Tone Control Settings" </source> <dest> *: none - gigabeats: "高级音调控制设置" + gigabeats,samsungypr1: "高级硬件均衡器" </dest> <voice> *: none - gigabeats: "高级音调控制设置" + gigabeats,samsungypr1: "高级硬件均衡器" </voice> </phrase> <phrase> @@ -12155,15 +11526,15 @@ user: core <source> *: none - gigabeats: "Tone Controls" + gigabeats,samsungypr1: "Tone Controls" </source> <dest> *: none - gigabeats: "音调控制" + gigabeats,samsungypr1: "硬件均衡器" </dest> <voice> *: none - gigabeats: "音调控制" + gigabeats,samsungypr1: "硬件均衡器" </voice> </phrase> <phrase> @@ -12549,6 +11920,20 @@ </voice> </phrase> <phrase> + id: LANG_SELECT_FOLDER + desc: in settings_menu + user: core + <source> + *: "Select one or more directories" + </source> + <dest> + *: "请选择一个或多个文件夹:" + </dest> + <voice> + *: "请选择一个或多个文件夹:" + </voice> +</phrase> +<phrase> id: LANG_SELECT_DATABASE_DIRS desc: in settings_menu user: core @@ -12559,7 +11944,7 @@ *: "仅扫描指定文件夹" </dest> <voice> - *: "扫描媒体时扫描指定文件夹" + *: "仅扫描指定文件夹" </voice> </phrase> <phrase> @@ -12577,6 +11962,20 @@ </voice> </phrase> <phrase> + id: LANG_SURROUND + desc: in the sound settings menu + user: core + <source> + *: "Haas Surround" + </source> + <dest> + *: "哈斯环绕" + </dest> + <voice> + *: "哈斯环绕音效" + </voice> +</phrase> +<phrase> id: LANG_FILTER_ROLL_OFF desc: in sound settings user: core @@ -12656,20 +12055,6 @@ </voice> </phrase> <phrase> - id: LANG_SURROUND - desc: in the sound settings menu - user: core - <source> - *: "Haas Surround" - </source> - <dest> - *: "哈斯环绕" - </dest> - <voice> - *: "哈斯环绕音效" - </voice> -</phrase> -<phrase> id: LANG_SURROUND_FX1 desc: in sound settings user: core diff --git a/apps/lang/chinese-trad.lang b/apps/lang/chinese-trad.lang index 5af129590b..02e14645e0 100644 --- a/apps/lang/chinese-trad.lang +++ b/apps/lang/chinese-trad.lang @@ -18,6 +18,7 @@ # - Xinlu Huang # - Harry Tu # - Tse-Hsien Chiang +# - papaloco <phrase> id: LANG_SET_BOOL_YES desc: bool true representation @@ -57,7 +58,7 @@ *: "開啟" </dest> <voice> - *: "On" + *: "開啟" </voice> </phrase> <phrase> @@ -71,7 +72,7 @@ *: "關閉" </dest> <voice> - *: "Off" + *: "關閉" </voice> </phrase> <phrase> @@ -85,7 +86,7 @@ *: "永遠" </dest> <voice> - *: "Always" + *: "永遠" </voice> </phrase> <phrase> @@ -99,24 +100,7 @@ *: "讀取中..." </dest> <voice> - *: "" - </voice> -</phrase> -<phrase> - id: LANG_CONFIRM_SHUTDOWN - desc: in shutdown screen - user: core - <source> - *: none - soft_shutdown: "Press OFF to shut down" - </source> - <dest> - *: none - soft_shutdown: "按下 OFF 關機" - </dest> - <voice> - *: none - soft_shutdown: "" + *: "讀取中..." </voice> </phrase> <phrase> @@ -130,24 +114,7 @@ *: "關機中..." </dest> <voice> - *: "" - </voice> -</phrase> -<phrase> - id: LANG_REMOVE_MMC - desc: before acknowledging usb in case an MMC is inserted (Ondio) - user: core - <source> - *: none - archosondio*: "Please remove inserted MMC" - </source> - <dest> - *: none - archosondio*: "請移除插入的 MMC 卡" - </dest> - <voice> - *: "Please remove multimedia card" - archosondio*: "Please remove multimedia card" + *: "關機中..." </voice> </phrase> <phrase> @@ -161,7 +128,7 @@ *: "失敗" </dest> <voice> - *: "" + *: "失敗" </voice> </phrase> <phrase> @@ -175,7 +142,7 @@ *: "最近的書籤" </dest> <voice> - *: "Recent Bookmarks" + *: "最近的書籤" </voice> </phrase> <phrase> @@ -203,7 +170,7 @@ *: "一般設定" </dest> <voice> - *: "General Settings" + *: "一般設定" </voice> </phrase> <phrase> @@ -217,7 +184,7 @@ *: "管理設定" </dest> <voice> - *: "Manage Settings" + *: "管理設定" </voice> </phrase> <phrase> @@ -248,7 +215,7 @@ </dest> <voice> *: none - radio: "FM Radio" + radio: "收聽 FM 廣播" </voice> </phrase> <phrase> @@ -265,7 +232,7 @@ </dest> <voice> *: none - recording: "Recording" + recording: "錄音" </voice> </phrase> <phrase> @@ -279,24 +246,7 @@ *: "插件" </dest> <voice> - *: "Plugins" - </voice> -</phrase> -<phrase> - id: LANG_SHUTDOWN - desc: in main menu - user: core - <source> - *: none - soft_shutdown: "Shut down" - </source> - <dest> - *: none - soft_shutdown: "關機" - </dest> - <voice> - *: none - soft_shutdown: "Shut down" + *: "插件" </voice> </phrase> <phrase> @@ -310,7 +260,7 @@ *: "音量" </dest> <voice> - *: "Volume" + *: "音量" </voice> </phrase> <phrase> @@ -324,7 +274,7 @@ *: "低頻音量" </dest> <voice> - *: "Bass" + *: "低頻音量" </voice> </phrase> <phrase> @@ -338,7 +288,7 @@ *: "高頻音量" </dest> <voice> - *: "Treble" + *: "高頻音量" </voice> </phrase> <phrase> @@ -352,7 +302,7 @@ *: "平衡" </dest> <voice> - *: "Balance" + *: "平衡" </voice> </phrase> <phrase> @@ -366,7 +316,7 @@ *: "立體聲" </dest> <voice> - *: "Stereo" + *: "立體聲" </voice> </phrase> <phrase> @@ -380,7 +330,7 @@ *: "單聲道" </dest> <voice> - *: "Mono" + *: "單聲道" </voice> </phrase> <phrase> @@ -394,7 +344,7 @@ *: "自訂" </dest> <voice> - *: "Custom" + *: "自訂" </voice> </phrase> <phrase> @@ -408,7 +358,7 @@ *: "單聲道 (左)" </dest> <voice> - *: "Mono Left" + *: "單聲道 (左)" </voice> </phrase> <phrase> @@ -422,7 +372,7 @@ *: "單聲道 (右)" </dest> <voice> - *: "Mono Right" + *: "單聲道 (右)" </voice> </phrase> <phrase> @@ -436,7 +386,7 @@ *: "卡啦 OK" </dest> <voice> - *: "Karaoke" + *: "卡啦 OK" </voice> </phrase> <phrase> @@ -450,160 +400,7 @@ *: "立體聲寬度" </dest> <voice> - *: "Stereo Width" - </voice> -</phrase> -<phrase> - id: LANG_LOUDNESS - desc: in sound_settings - user: core - <source> - *: none - masf: "Loudness" - </source> - <dest> - *: none - masf: "響度" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_AUTOVOL - desc: in sound_settings - user: core - <source> - *: none - masf: "Auto Volume" - </source> - <dest> - *: none - masf: "自動音量調整" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_DECAY - desc: in sound_settings - user: core - <source> - *: none - masf: "AV Decay Time" - </source> - <dest> - *: none - masf: "自動音量調整衰減時間" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_SUPERBASS - desc: in sound settings - user: core - <source> - *: none - masf: "Super Bass" - </source> - <dest> - *: none - masf: "超低音" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_MDB_ENABLE - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Enable" - </source> - <dest> - *: none - masf: "MDB 有效" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_MDB_STRENGTH - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Strength" - </source> - <dest> - *: none - masf: "MDB 強度" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_MDB_HARMONICS - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Harmonics" - </source> - <dest> - *: none - masf: "MDB 泛音" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_MDB_CENTER - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Centre Frequency" - </source> - <dest> - *: none - masf: "MDB 中心頻率" - </dest> - <voice> - *: none - masf: "" - </voice> -</phrase> -<phrase> - id: LANG_MDB_SHAPE - desc: in sound settings - user: core - <source> - *: none - masf: "MDB Shape" - </source> - <dest> - *: none - masf: "MDB 形狀" - </dest> - <voice> - *: none - masf: "" + *: "立體聲寬度" </voice> </phrase> <phrase> @@ -617,7 +414,7 @@ *: "交叉供音" </dest> <voice> - *: "" + *: "交叉供音" </voice> </phrase> <phrase> @@ -631,7 +428,7 @@ *: "等化器" </dest> <voice> - *: "" + *: "等化器" </voice> </phrase> <phrase> @@ -659,7 +456,7 @@ *: "檔案檢視設定" </dest> <voice> - *: "File View" + *: "檔案檢視設定" </voice> </phrase> <phrase> @@ -673,7 +470,7 @@ *: "顯示設定" </dest> <voice> - *: "Display" + *: "顯示設定" </voice> </phrase> <phrase> @@ -687,7 +484,7 @@ *: "系統設定" </dest> <voice> - *: "System" + *: "系統設定" </voice> </phrase> <phrase> @@ -701,7 +498,7 @@ *: "書籤設定" </dest> <voice> - *: "Bookmarking" + *: "書籤設定" </voice> </phrase> <phrase> @@ -715,7 +512,7 @@ *: "語言設定" </dest> <voice> - *: "Language" + *: "語言設定" </voice> </phrase> <phrase> @@ -729,7 +526,7 @@ *: "語音" </dest> <voice> - *: "Voice" + *: "語音" </voice> </phrase> <phrase> @@ -743,7 +540,7 @@ *: "瀏覽 .cfg 檔案" </dest> <voice> - *: "Browse configuration files" + *: "瀏覽 .cfg 檔案" </voice> </phrase> <phrase> @@ -757,7 +554,7 @@ *: "重新設定" </dest> <voice> - *: "Reset Settings" + *: "重新設定" </voice> </phrase> <phrase> @@ -771,7 +568,7 @@ *: "已清除" </dest> <voice> - *: "" + *: "已清除" </voice> </phrase> <phrase> @@ -802,7 +599,7 @@ </dest> <voice> *: none - recording: "" + recording: "錄音設定" </voice> </phrase> <phrase> @@ -816,7 +613,7 @@ *: "開啟等化器" </dest> <voice> - *: "" + *: "開啟等化器" </voice> </phrase> <phrase> @@ -830,7 +627,7 @@ *: "圖解等化器" </dest> <voice> - *: "" + *: "圖解等化器" </voice> </phrase> <phrase> @@ -844,7 +641,7 @@ *: "預切" </dest> <voice> - *: "" + *: "預切" </voice> </phrase> <phrase> @@ -858,7 +655,7 @@ *: "簡易等化器設定" </dest> <voice> - *: "" + *: "簡易等化器設定" </voice> </phrase> <phrase> @@ -872,7 +669,7 @@ *: "進階等化器設定" </dest> <voice> - *: "" + *: "進階等化器設定" </voice> </phrase> <phrase> @@ -886,7 +683,7 @@ *: "儲存等化器設定" </dest> <voice> - *: "" + *: "儲存等化器設定" </voice> </phrase> <phrase> @@ -900,7 +697,7 @@ *: "瀏覽等化器設定" </dest> <voice> - *: "" + *: "瀏覽等化器設定" </voice> </phrase> <phrase> @@ -928,7 +725,7 @@ *: "%d Hz 頻帶增益" </dest> <voice> - *: "" + *: "%d Hz 頻帶增益" </voice> </phrase> <phrase> @@ -942,7 +739,7 @@ *: "低峰值過濾" </dest> <voice> - *: "" + *: "低峰值過濾" </voice> </phrase> <phrase> @@ -956,7 +753,7 @@ *: "峰值過濾 %d" </dest> <voice> - *: "" + *: "峰值過濾 %d" </voice> </phrase> <phrase> @@ -970,7 +767,7 @@ *: "高峰值過濾" </dest> <voice> - *: "" + *: "高峰值過濾" </voice> </phrase> <phrase> @@ -984,7 +781,7 @@ *: "截斷頻率" </dest> <voice> - *: "" + *: "截斷頻率" </voice> </phrase> <phrase> @@ -998,7 +795,7 @@ *: "中心頻率" </dest> <voice> - *: "" + *: "中心頻率" </voice> </phrase> <phrase> @@ -1026,7 +823,7 @@ *: "建立播放清單" </dest> <voice> - *: "Create Playlist" + *: "建立播放清單" </voice> </phrase> <phrase> @@ -1040,7 +837,7 @@ *: "檢視現在的播放清單" </dest> <voice> - *: "View Current Playlist" + *: "檢視現在的播放清單" </voice> </phrase> <phrase> @@ -1054,7 +851,7 @@ *: "儲存現在的播放清單" </dest> <voice> - *: "Save Current Playlist" + *: "儲存現在的播放清單" </voice> </phrase> <phrase> @@ -1068,7 +865,7 @@ *: "遞迴插入目錄" </dest> <voice> - *: "Recursively Insert Directories" + *: "遞迴插入目錄" </voice> </phrase> <phrase> @@ -1082,7 +879,7 @@ *: "消除動態播放清單時警示" </dest> <voice> - *: "" + *: "消除動態播放清單時警示" </voice> </phrase> <phrase> @@ -1110,7 +907,7 @@ *: "除錯 (請勿進入!)" </dest> <voice> - *: "Debug, keep out!" + *: "除錯 (請勿進入!)" </voice> </phrase> <phrase> @@ -1124,7 +921,7 @@ *: "亂序播放" </dest> <voice> - *: "Shuffle" + *: "亂序播放" </voice> </phrase> <phrase> @@ -1138,7 +935,7 @@ *: "重覆" </dest> <voice> - *: "Repeat" + *: "重覆" </voice> </phrase> <phrase> @@ -1152,7 +949,7 @@ *: "一首" </dest> <voice> - *: "One" + *: "一首" </voice> </phrase> <phrase> @@ -1180,7 +977,7 @@ *: "先播放選擇的檔案" </dest> <voice> - *: "Play Selected File First" + *: "先播放選擇的檔案" </voice> </phrase> <phrase> @@ -1194,7 +991,7 @@ *: "快轉/倒轉" </dest> <voice> - *: "Fast forward and Rewind" + *: "快轉/倒轉" </voice> </phrase> <phrase> @@ -1210,7 +1007,7 @@ flash_storage: none </dest> <voice> - *: "Anti-Skip Buffer" + *: "防止中斷緩衝區" flash_storage: none </voice> </phrase> @@ -1225,7 +1022,7 @@ *: "停止/暫停時淡出" </dest> <voice> - *: "Fade On Stop and Pause" + *: "停止/暫停時淡出" </voice> </phrase> <phrase> @@ -1239,7 +1036,7 @@ *: "派對模式" </dest> <voice> - *: "Party Mode" + *: "派對模式" </voice> </phrase> <phrase> @@ -1256,7 +1053,7 @@ </dest> <voice> *: none - crossfade: "Crossfade" + crossfade: "交叉淡變" </voice> </phrase> <phrase> @@ -1267,10 +1064,10 @@ *: "Replaygain" </source> <dest> - *: "Replaygain" + *: "播放增益" </dest> <voice> - *: "Replaygain" + *: "播放增益" </voice> </phrase> <phrase> @@ -1298,7 +1095,7 @@ *: "弱" </dest> <voice> - *: "" + *: "弱" </voice> </phrase> <phrase> @@ -1312,7 +1109,7 @@ *: "中" </dest> <voice> - *: "" + *: "中" </voice> </phrase> <phrase> @@ -1326,7 +1123,7 @@ *: "強" </dest> <voice> - *: "" + *: "強" </voice> </phrase> <phrase> @@ -1343,7 +1140,7 @@ </dest> <voice> *: none - spdif_power: "" + spdif_power: "光纖輸出" </voice> </phrase> <phrase> @@ -1357,7 +1154,7 @@ *: "自動替換目錄" </dest> <voice> - *: "Auto-Change Directory" + *: "自動替換目錄" </voice> </phrase> <phrase> @@ -1371,7 +1168,7 @@ *: "資料庫" </dest> <voice> - *: "" + *: "資料庫" </voice> </phrase> <phrase> @@ -1388,7 +1185,7 @@ </dest> <voice> *: none - tc_ramcache: "" + tc_ramcache: "載入到記憶體" </voice> </phrase> <phrase> @@ -1402,7 +1199,7 @@ *: "即刻初始化" </dest> <voice> - *: "Initialize Now" + *: "即刻初始化" </voice> </phrase> <phrase> @@ -1416,7 +1213,7 @@ *: "在背景更新中" </dest> <voice> - *: "" + *: "在背景更新中" </voice> </phrase> <phrase> @@ -1430,7 +1227,7 @@ *: "處理資料庫" </dest> <voice> - *: "" + *: "處理資料庫" </voice> </phrase> <phrase> @@ -1444,7 +1241,7 @@ *: "收集運行時資料" </dest> <voice> - *: "Gather Runtime Data" + *: "收集運行時資料" </voice> </phrase> <phrase> @@ -1458,7 +1255,7 @@ *: "排序時區別大小寫" </dest> <voice> - *: "Sort Case Sensitive" + *: "排序時區別大小寫" </voice> </phrase> <phrase> @@ -1472,7 +1269,7 @@ *: "排序目錄" </dest> <voice> - *: "sort directories" + *: "排序目錄" </voice> </phrase> <phrase> @@ -1486,7 +1283,7 @@ *: "排序檔案" </dest> <voice> - *: "sort files" + *: "排序檔案" </voice> </phrase> <phrase> @@ -1500,7 +1297,7 @@ *: "字母順序" </dest> <voice> - *: "Alphabetical" + *: "字母順序" </voice> </phrase> <phrase> @@ -1514,7 +1311,7 @@ *: "依日期" </dest> <voice> - *: "By Date" + *: "依日期" </voice> </phrase> <phrase> @@ -1528,7 +1325,7 @@ *: "依最新日期" </dest> <voice> - *: "By Newest Date" + *: "依最新日期" </voice> </phrase> <phrase> @@ -1542,7 +1339,7 @@ *: "依類型" </dest> <voice> - *: "By Type" + *: "依類型" </voice> </phrase> <phrase> @@ -1556,7 +1353,7 @@ *: "顯示檔案" </dest> <voice> - *: "Show Files" + *: "顯示檔案" </voice> </phrase> <phrase> @@ -1570,7 +1367,7 @@ *: "支援的" </dest> <voice> - *: "Supported" + *: "支援的" </voice> </phrase> <phrase> @@ -1584,7 +1381,7 @@ *: "音樂" </dest> <voice> - *: "Music" + *: "音樂" </voice> </phrase> <phrase> @@ -1598,7 +1395,7 @@ *: "跟隨播放清單" </dest> <voice> - *: "Follow Playlist" + *: "跟隨播放清單" </voice> </phrase> <phrase> @@ -1612,7 +1409,7 @@ *: "顯示圖示" </dest> <voice> - *: "Show Icons" + *: "顯示圖示" </voice> </phrase> <phrase> @@ -1626,7 +1423,7 @@ *: "瀏覽字形" </dest> <voice> - *: "字形" + *: "瀏覽字形" </voice> </phrase> <phrase> @@ -1657,7 +1454,7 @@ </dest> <voice> *: none - remote: "" + remote: "瀏覽 .rwps 檔案" </voice> </phrase> <phrase> @@ -1671,7 +1468,7 @@ *: "液晶顯示設定" </dest> <voice> - *: "LCD Settings" + *: "液晶顯示設定" </voice> </phrase> <phrase> @@ -1688,7 +1485,7 @@ </dest> <voice> *: none - remote: "" + remote: "線控液晶顯示設定" </voice> </phrase> <phrase> @@ -1702,7 +1499,7 @@ *: "捲動設定" </dest> <voice> - *: "Scrolling" + *: "捲動設定" </voice> </phrase> <phrase> @@ -1716,7 +1513,7 @@ *: "狀態列/捲動軸" </dest> <voice> - *: "" + *: "狀態列/捲動軸" </voice> </phrase> <phrase> @@ -1725,15 +1522,12 @@ user: core <source> *: "Peak Meter" - masd: none </source> <dest> *: "高峰顯示表" - masd: none </dest> <voice> - *: "" - masd: none + *: "高峰顯示表" </voice> </phrase> <phrase> @@ -1747,7 +1541,7 @@ *: "預設編碼" </dest> <voice> - *: "Default codepage" + *: "預設編碼" </voice> </phrase> <phrase> @@ -1873,7 +1667,7 @@ *: "日文(SJIS)" </dest> <voice> - *: "Japanese" + *: "日文(SJIS)" </voice> </phrase> <phrase> @@ -1887,7 +1681,7 @@ *: "簡體中文 (GB2312)" </dest> <voice> - *: "" + *: "簡體中文 (GB2312)" </voice> </phrase> <phrase> @@ -1901,7 +1695,7 @@ *: "韓文 (KSX1001)" </dest> <voice> - *: "" + *: "韓文 (KSX1001)" </voice> </phrase> <phrase> @@ -1915,7 +1709,7 @@ *: "正體中文 (BIG5)" </dest> <voice> - *: "" + *: "正體中文 (BIG5)" </voice> </phrase> <phrase> @@ -1929,7 +1723,7 @@ *: "萬國碼 (UTF-8)" </dest> <voice> - *: "Unicode" + *: "萬國碼 (UTF-8)" </voice> </phrase> <phrase> @@ -1943,7 +1737,7 @@ *: "電池" </dest> <voice> - *: "Battery" + *: "電池" </voice> </phrase> <phrase> @@ -1957,7 +1751,7 @@ *: "硬碟" </dest> <voice> - *: "Disk" + *: "硬碟" </voice> </phrase> <phrase> @@ -1974,7 +1768,7 @@ </dest> <voice> *: none - rtc: "" + rtc: "時間與日期" </voice> </phrase> <phrase> @@ -1988,7 +1782,7 @@ *: "閒置關閉電源" </dest> <voice> - *: "Idle Poweroff" + *: "閒置關閉電源" </voice> </phrase> <phrase> @@ -2002,7 +1796,7 @@ *: "睡眠定時" </dest> <voice> - *: "Sleep Timer" + *: "睡眠定時" </voice> </phrase> <phrase> @@ -2019,7 +1813,7 @@ </dest> <voice> *: none - alarm: "" + alarm: "鬧鈴" </voice> </phrase> <phrase> @@ -2033,7 +1827,7 @@ *: "限制" </dest> <voice> - *: "Limits" + *: "限制" </voice> </phrase> <phrase> @@ -2050,7 +1844,7 @@ </dest> <voice> *: none - recording: "" + recording: "聲音輸入" </voice> </phrase> <phrase> @@ -2067,7 +1861,7 @@ </dest> <voice> *: none - charging: "" + charging: "車用變壓器模式" </voice> </phrase> <phrase> @@ -2081,7 +1875,7 @@ *: "停止時建立書籤" </dest> <voice> - *: "Bookmark on Stop" + *: "停止時建立書籤" </voice> </phrase> <phrase> @@ -2095,7 +1889,7 @@ *: "是 - 只存在最近書籤" </dest> <voice> - *: "Yes - Recent only" + *: "是 - 只存在最近書籤" </voice> </phrase> <phrase> @@ -2109,7 +1903,7 @@ *: "詢問 - 只存在最近書籤" </dest> <voice> - *: "Ask - Recent only" + *: "詢問 - 只存在最近書籤" </voice> </phrase> <phrase> @@ -2123,7 +1917,7 @@ *: "載入最近書籤" </dest> <voice> - *: "Load Last Bookmark" + *: "載入最近書籤" </voice> </phrase> <phrase> @@ -2137,21 +1931,7 @@ *: "維護最近書籤清單?" </dest> <voice> - *: "Maintain a List of Recent Bookmarks?" - </voice> -</phrase> -<phrase> - id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY - desc: Save only on bookmark for each playlist in recent bookmarks - user: core - <source> - *: "Unique only" - </source> - <dest> - *: "只有唯一的" - </dest> - <voice> - *: "Unique only" + *: "維護最近書籤清單?" </voice> </phrase> <phrase> @@ -2165,7 +1945,7 @@ *: "語音選單" </dest> <voice> - *: "Voice Menus" + *: "語音選單" </voice> </phrase> <phrase> @@ -2179,7 +1959,7 @@ *: "語音目錄" </dest> <voice> - *: "Voice Directories" + *: "語音目錄" </voice> </phrase> <phrase> @@ -2193,7 +1973,7 @@ *: "語音檔案名稱" </dest> <voice> - *: "Voice Filenames" + *: "語音檔案名稱" </voice> </phrase> <phrase> @@ -2207,7 +1987,7 @@ *: "數字" </dest> <voice> - *: "Numbers" + *: "數字" </voice> </phrase> <phrase> @@ -2221,7 +2001,7 @@ *: "拼字" </dest> <voice> - *: "Spell" + *: "拼字" </voice> </phrase> <phrase> @@ -2239,23 +2019,6 @@ </voice> </phrase> <phrase> - id: LANG_RECORDING_QUALITY - desc: in the recording settings - user: core - <source> - *: none - recording_hwcodec: "Quality" - </source> - <dest> - *: none - recording_hwcodec: "品質" - </dest> - <voice> - *: none - recording_hwcodec: "" - </voice> -</phrase> -<phrase> id: LANG_FREQUENCY desc: in recording and playback settings user: core @@ -2269,7 +2032,7 @@ </dest> <voice> *: none - play_frequency,recording: "" + play_frequency,recording: "頻率" </voice> </phrase> <phrase> @@ -2286,7 +2049,7 @@ </dest> <voice> *: none - recording: "" + recording: "來源" </voice> </phrase> <phrase> @@ -2305,7 +2068,8 @@ </dest> <voice> *: none - iriverh100,iriverh120,iriverh300,recording: "" + iriverh100,iriverh120,iriverh300: "內置麥克風" + recording: "麥克風" </voice> </phrase> <phrase> @@ -2322,24 +2086,7 @@ </dest> <voice> *: none - recording: "" - </voice> -</phrase> -<phrase> - id: LANG_RECORDING_EDITABLE - desc: Editable recordings setting - user: core - <source> - *: none - recording_hwcodec: "Independent Frames" - </source> - <dest> - *: none - recording_hwcodec: "獨立框架" - </dest> - <voice> - *: none - recording_hwcodec: "" + recording: "數位" </voice> </phrase> <phrase> @@ -2356,7 +2103,7 @@ </dest> <voice> *: none - recording: "" + recording: "檔案分割選項" </voice> </phrase> <phrase> @@ -2373,7 +2120,7 @@ </dest> <voice> *: none - recording: "" + recording: "預錄時間" </voice> </phrase> <phrase> @@ -2390,7 +2137,7 @@ </dest> <voice> *: none - recording: "" + recording: "目錄" </voice> </phrase> <phrase> @@ -2407,7 +2154,7 @@ </dest> <voice> *: none - recording: "" + recording: "觸發" </voice> </phrase> <phrase> @@ -2424,7 +2171,7 @@ </dest> <voice> *: none - recording: "" + recording: "削波背光" </voice> </phrase> <phrase> @@ -2441,7 +2188,7 @@ </dest> <voice> *: none - remote: "" + remote: "只有主機" </voice> </phrase> <phrase> @@ -2458,7 +2205,7 @@ </dest> <voice> *: none - remote: "" + remote: "只有線控" </voice> </phrase> <phrase> @@ -2475,7 +2222,7 @@ </dest> <voice> *: none - remote: "" + remote: "主機與線控" </voice> </phrase> <phrase> @@ -2489,7 +2236,7 @@ *: "快轉/倒轉最小間隔" </dest> <voice> - *: "Minimum Step" + *: "快轉/倒轉最小間隔" </voice> </phrase> <phrase> @@ -2503,7 +2250,7 @@ *: "快轉/倒轉加速" </dest> <voice> - *: "Acceleration" + *: "快轉/倒轉加速" </voice> </phrase> <phrase> @@ -2520,7 +2267,7 @@ </dest> <voice> *: none - crossfade: "" + crossfade: "開啟Crossfade" </voice> </phrase> <phrase> @@ -2537,7 +2284,7 @@ </dest> <voice> *: none - crossfade: "Manual Track Skip Only" + crossfade: "只在跳到另一首時" </voice> </phrase> <phrase> @@ -2554,7 +2301,7 @@ </dest> <voice> *: none - crossfade: "Fade-In Delay" + crossfade: "淡入延遲" </voice> </phrase> <phrase> @@ -2571,7 +2318,7 @@ </dest> <voice> *: none - crossfade: "Fade-In Duration" + crossfade: "淡入期間" </voice> </phrase> <phrase> @@ -2588,7 +2335,7 @@ </dest> <voice> *: none - crossfade: "Fade-Out Delay" + crossfade: "淡出延遲" </voice> </phrase> <phrase> @@ -2605,7 +2352,7 @@ </dest> <voice> *: none - crossfade: "Fade-Out Duration" + crossfade: "淡出期間" </voice> </phrase> <phrase> @@ -2622,7 +2369,7 @@ </dest> <voice> *: none - crossfade: "Fade-Out Mode" + crossfade: "淡出模式" </voice> </phrase> <phrase> @@ -2639,7 +2386,7 @@ </dest> <voice> *: none - crossfade: "Mix" + crossfade: "混合" </voice> </phrase> <phrase> @@ -2653,7 +2400,7 @@ *: "防止削波" </dest> <voice> - *: "Prevent Clipping" + *: "防止削波" </voice> </phrase> <phrase> @@ -2664,10 +2411,10 @@ *: "Replaygain Type" </source> <dest> - *: "Replaygain 種類" + *: "播放增益種類" </dest> <voice> - *: "Replaygain Type" + *: "播放增益種類" </voice> </phrase> <phrase> @@ -2678,10 +2425,10 @@ *: "Album Gain" </source> <dest> - *: "Album Gain" + *: "專輯增益" </dest> <voice> - *: "Album Gain" + *: "專輯增益" </voice> </phrase> <phrase> @@ -2692,10 +2439,10 @@ *: "Track Gain" </source> <dest> - *: "Track Gain" + *: "單曲增益" </dest> <voice> - *: "Track Gain" + *: "單曲增益" </voice> </phrase> <phrase> @@ -2706,10 +2453,10 @@ *: "Track Gain if Shuffling" </source> <dest> - *: "亂序播放時使用 Track Gain" + *: "亂序播放時使用單曲增益" </dest> <voice> - *: "Track Gain if Shuffling" + *: "亂序播放時使用單曲增益" </voice> </phrase> <phrase> @@ -2720,10 +2467,10 @@ *: "Pre-amp" </source> <dest> - *: "前置放大" + *: "前級放大器" </dest> <voice> - *: "Preamp" + *: "前級放大器" </voice> </phrase> <phrase> @@ -2737,7 +2484,7 @@ *: "背光" </dest> <voice> - *: "Backlight" + *: "背光" </voice> </phrase> <phrase> @@ -2754,7 +2501,7 @@ </dest> <voice> *: none - charging: "Backlight (While Plugged In)" + charging: "背光 (使用外部電源時)" </voice> </phrase> <phrase> @@ -2768,7 +2515,7 @@ *: "標題背光" </dest> <voice> - *: "Caption Backlight" + *: "標題背光" </voice> </phrase> <phrase> @@ -2785,7 +2532,7 @@ </dest> <voice> *: none - backlight_fade*: "Backlight Fade In" + backlight_fade*: "背光淡入" </voice> </phrase> <phrase> @@ -2802,7 +2549,7 @@ </dest> <voice> *: none - backlight_fade*: "Backlight Fade Out" + backlight_fade*: "背光淡出" </voice> </phrase> <phrase> @@ -2819,7 +2566,7 @@ </dest> <voice> *: none - backlight_brightness: "Brightness" + backlight_brightness: "亮度" </voice> </phrase> <phrase> @@ -2833,7 +2580,7 @@ *: "對比" </dest> <voice> - *: "Contrast" + *: "對比" </voice> </phrase> <phrase> @@ -2864,7 +2611,7 @@ </dest> <voice> *: none - lcd_invert,remote_lcd_invert: "LCD Mode" + lcd_invert,remote_lcd_invert: "液晶顯示模式" </voice> </phrase> <phrase> @@ -2881,7 +2628,7 @@ </dest> <voice> *: none - lcd_invert,remote_lcd_invert: "Inverse" + lcd_invert,remote_lcd_invert: "反轉" </voice> </phrase> <phrase> @@ -2895,7 +2642,7 @@ *: "上下反轉" </dest> <voice> - *: "Upside Down" + *: "上下反轉" </voice> </phrase> <phrase> @@ -2923,7 +2670,7 @@ *: "指示器" </dest> <voice> - *: "Pointer" + *: "指示器" </voice> </phrase> <phrase> @@ -2937,7 +2684,7 @@ *: "整行反白" </dest> <voice> - *: "Inverse Bar" + *: "整行反白" </voice> </phrase> <phrase> @@ -2954,7 +2701,7 @@ </dest> <voice> *: none - lcd_non-mono: "Clear Backdrop" + lcd_non-mono: "清除背景" </voice> </phrase> <phrase> @@ -2971,7 +2718,7 @@ </dest> <voice> *: none - lcd_color: "Background Colour" + lcd_color: "背景顏色" </voice> </phrase> <phrase> @@ -2988,7 +2735,7 @@ </dest> <voice> *: none - lcd_color: "Foreground Colour" + lcd_color: "前景顏色" </voice> </phrase> <phrase> @@ -3005,7 +2752,7 @@ </dest> <voice> *: none - lcd_color: "Reset Colours" + lcd_color: "重設顏色" </voice> </phrase> <phrase> @@ -3022,7 +2769,7 @@ </dest> <voice> *: none - remote_ticking: "Reduce Ticking" + remote_ticking: "減少滴答聲" </voice> </phrase> <phrase> @@ -3036,7 +2783,7 @@ *: "捲動速度" </dest> <voice> - *: "Scroll Speed" + *: "捲動速度" </voice> </phrase> <phrase> @@ -3064,7 +2811,7 @@ *: "捲動開始延遲" </dest> <voice> - *: "Scroll Start Delay" + *: "捲動開始延遲" </voice> </phrase> <phrase> @@ -3078,7 +2825,7 @@ *: "捲動間隔" </dest> <voice> - *: "Scroll Step Size" + *: "捲動間隔" </voice> </phrase> <phrase> @@ -3106,7 +2853,7 @@ *: "雙向捲動限制" </dest> <voice> - *: "Bidirectional Scroll Limit" + *: "雙向捲動限制" </voice> </phrase> <phrase> @@ -3120,7 +2867,7 @@ *: "畫面範圍外捲動" </dest> <voice> - *: "Screen Scrolls Out Of View" + *: "畫面範圍外捲動" </voice> </phrase> <phrase> @@ -3134,7 +2881,7 @@ *: "畫面捲動間隔" </dest> <voice> - *: "Screen Scroll Step Size" + *: "畫面捲動間隔" </voice> </phrase> <phrase> @@ -3148,7 +2895,7 @@ *: "頁捲動" </dest> <voice> - *: "Paged scrolling" + *: "頁捲動" </voice> </phrase> <phrase> @@ -3162,7 +2909,7 @@ *: "捲動軸" </dest> <voice> - *: "Scroll Bar" + *: "捲動軸" </voice> </phrase> <phrase> @@ -3176,24 +2923,7 @@ *: "狀態列" </dest> <voice> - *: "Status Bar" - </voice> -</phrase> -<phrase> - id: LANG_BUTTON_BAR - desc: in settings menu - user: core - <source> - *: none - recorder_pad: "Button Bar" - </source> - <dest> - *: none - recorder_pad: "按鈕列" - </dest> - <voice> - *: none - recorder_pad: "Button Bar" + *: "狀態列" </voice> </phrase> <phrase> @@ -3207,7 +2937,7 @@ *: "音量顯示" </dest> <voice> - *: "Volume Display" + *: "音量顯示" </voice> </phrase> <phrase> @@ -3221,7 +2951,7 @@ *: "電池顯示" </dest> <voice> - *: "Battery Display" + *: "電池顯示" </voice> </phrase> <phrase> @@ -3235,7 +2965,7 @@ *: "圖形" </dest> <voice> - *: "Graphic" + *: "圖形" </voice> </phrase> <phrase> @@ -3249,7 +2979,7 @@ *: "數值" </dest> <voice> - *: "Numeric" + *: "數值" </voice> </phrase> <phrase> @@ -3258,15 +2988,12 @@ user: core <source> *: "Peak Release" - masd: none </source> <dest> - *: "Peak Release" - masd: none + *: "峰值釋放速度" </dest> <voice> - *: "Peak Release" - masd: none + *: "峰值釋放速度" </voice> </phrase> <phrase> @@ -3275,15 +3002,12 @@ user: core <source> *: "Peak Hold Time" - masd: none </source> <dest> *: "高峰記號停留時間" - masd: none </dest> <voice> - *: "Peak Hold Time" - masd: none + *: "高峰記號停留時間" </voice> </phrase> <phrase> @@ -3292,15 +3016,12 @@ user: core <source> *: "Clip Hold Time" - masd: none </source> <dest> *: "削波記號停留時間" - masd: none </dest> <voice> - *: "Clip Hold Time" - masd: none + *: "削波記號停留時間" </voice> </phrase> <phrase> @@ -3309,15 +3030,12 @@ user: core <source> *: "Eternal" - masd: none </source> <dest> *: "永久" - masd: none </dest> <voice> - *: "Eternal" - masd: none + *: "永久" </voice> </phrase> <phrase> @@ -3326,15 +3044,12 @@ user: core <source> *: "Scale" - masd: none </source> <dest> *: "比例" - masd: none </dest> <voice> - *: "Scale" - masd: none + *: "比例" </voice> </phrase> <phrase> @@ -3343,15 +3058,12 @@ user: core <source> *: "Logarithmic (dB)" - masd: none </source> <dest> *: "對數 (dB)" - masd: none </dest> <voice> - *: "Logarithmic decibel" - masd: none + *: "對數 (dB)" </voice> </phrase> <phrase> @@ -3360,15 +3072,12 @@ user: core <source> *: "Linear (%)" - masd: none </source> <dest> *: "線性 (%)" - masd: none </dest> <voice> - *: "Linear percent" - masd: none + *: "線性 (%)" </voice> </phrase> <phrase> @@ -3377,15 +3086,12 @@ user: core <source> *: "Minimum Of Range" - masd: none </source> <dest> *: "最小範圍" - masd: none </dest> <voice> - *: "Minimum Of Range" - masd: none + *: "最小範圍" </voice> </phrase> <phrase> @@ -3394,15 +3100,12 @@ user: core <source> *: "Maximum Of Range" - masd: none </source> <dest> *: "最大範圍" - masd: none </dest> <voice> - *: "Maximum Of Range" - masd: none + *: "最大範圍" </voice> </phrase> <phrase> @@ -3416,7 +3119,7 @@ *: "電池容量" </dest> <voice> - *: "Battery Capacity" + *: "電池容量" </voice> </phrase> <phrase> @@ -3433,41 +3136,7 @@ </dest> <voice> *: none - battery_types: "Battery type" - </voice> -</phrase> -<phrase> - id: LANG_BATTERY_TYPE_1 - desc: in battery settings - user: core - <source> - *: none - battery_types: "Alkaline" - </source> - <dest> - *: none - battery_types: "鹼性" - </dest> - <voice> - *: none - battery_types: "Alkaline" - </voice> -</phrase> -<phrase> - id: LANG_BATTERY_TYPE_2 - desc: in battery settings - user: core - <source> - *: none - battery_types: "NiMH" - </source> - <dest> - *: none - battery_types: "鎳氫" - </dest> - <voice> - *: none - battery_types: "Nickel metal hydride" + battery_types: "電池類型" </voice> </phrase> <phrase> @@ -3483,7 +3152,7 @@ flash_storage: none </dest> <voice> - *: "Disk Spindown" + *: "硬碟迴轉停止" flash_storage: none </voice> </phrase> @@ -3501,7 +3170,7 @@ </dest> <voice> *: none - dircache: "Directory Cache" + dircache: "目錄快取" </voice> </phrase> <phrase> @@ -3529,7 +3198,7 @@ *: "時間格式" </dest> <voice> - *: "Time Format" + *: "時間格式" </voice> </phrase> <phrase> @@ -3543,7 +3212,7 @@ *: "12 小時制" </dest> <voice> - *: "12 Hour Clock" + *: "12 小時制" </voice> </phrase> <phrase> @@ -3557,7 +3226,7 @@ *: "24 小時制" </dest> <voice> - *: "24 Hour Clock" + *: "24 小時制" </voice> </phrase> <phrase> @@ -3585,7 +3254,7 @@ *: "最大播放清單歌曲數" </dest> <voice> - *: "Maximum playlist size" + *: "最大播放清單歌曲數" </voice> </phrase> <phrase> @@ -3599,7 +3268,7 @@ *: "播放清單" </dest> <voice> - *: "Playlist" + *: "播放清單" </voice> </phrase> <phrase> @@ -3613,7 +3282,7 @@ *: "書籤" </dest> <voice> - *: "Bookmarks" + *: "書籤" </voice> </phrase> <phrase> @@ -3641,7 +3310,7 @@ *: "設定歌曲評分" </dest> <voice> - *: "Set Song Rating" + *: "設定歌曲評分" </voice> </phrase> <phrase> @@ -3655,7 +3324,7 @@ *: "更名" </dest> <voice> - *: "Rename" + *: "更名" </voice> </phrase> <phrase> @@ -3669,7 +3338,7 @@ *: "剪下" </dest> <voice> - *: "Cut" + *: "剪下" </voice> </phrase> <phrase> @@ -3683,7 +3352,7 @@ *: "複製" </dest> <voice> - *: "Copy" + *: "複製" </voice> </phrase> <phrase> @@ -3697,7 +3366,7 @@ *: "貼上" </dest> <voice> - *: "Paste" + *: "貼上" </voice> </phrase> <phrase> @@ -3711,7 +3380,7 @@ *: "檔案/目錄已存在. 覆寫?" </dest> <voice> - *: "" + *: "檔案/目錄已存在. 覆寫?" </voice> </phrase> <phrase> @@ -3725,7 +3394,7 @@ *: "刪除" </dest> <voice> - *: "Delete" + *: "刪除" </voice> </phrase> <phrase> @@ -3742,7 +3411,7 @@ </dest> <voice> *: none - lcd_non-mono: "Set As Backdrop" + lcd_non-mono: "設定為背景" </voice> </phrase> <phrase> @@ -3756,7 +3425,7 @@ *: "刪除目錄" </dest> <voice> - *: "delete directory" + *: "刪除目錄" </voice> </phrase> <phrase> @@ -3770,7 +3439,7 @@ *: "刪除?" </dest> <voice> - *: "" + *: "刪除?" </voice> </phrase> <phrase> @@ -3784,7 +3453,7 @@ *: "已刪除" </dest> <voice> - *: "" + *: "已刪除" </voice> </phrase> <phrase> @@ -3798,7 +3467,7 @@ *: "開啟檔案..." </dest> <voice> - *: "open with" + *: "開啟檔案..." </voice> </phrase> <phrase> @@ -3812,7 +3481,7 @@ *: "建立目錄" </dest> <voice> - *: "Create Directory" + *: "建立目錄" </voice> </phrase> <phrase> @@ -3829,7 +3498,7 @@ </dest> <voice> *: none - pitchscreen: "Pitch" + pitchscreen: "音調" </voice> </phrase> <phrase> @@ -3843,7 +3512,7 @@ *: "檢視" </dest> <voice> - *: "View" + *: "檢視" </voice> </phrase> <phrase> @@ -3857,7 +3526,7 @@ *: "重新亂序" </dest> <voice> - *: "Reshuffle" + *: "重新亂序" </voice> </phrase> <phrase> @@ -3871,7 +3540,7 @@ *: "插入" </dest> <voice> - *: "Insert" + *: "插入" </voice> </phrase> <phrase> @@ -3885,7 +3554,7 @@ *: "插入下一個" </dest> <voice> - *: "Insert Next" + *: "插入下一個" </voice> </phrase> <phrase> @@ -3899,7 +3568,7 @@ *: "插入到最後" </dest> <voice> - *: "Insert Last" + *: "插入到最後" </voice> </phrase> <phrase> @@ -3913,7 +3582,7 @@ *: "亂序插入" </dest> <voice> - *: "Insert Shuffled" + *: "亂序插入" </voice> </phrase> <phrase> @@ -3927,7 +3596,7 @@ *: "隊列" </dest> <voice> - *: "Queue" + *: "隊列" </voice> </phrase> <phrase> @@ -3941,7 +3610,7 @@ *: "隊列中下一個" </dest> <voice> - *: "Queue Next" + *: "隊列中下一個" </voice> </phrase> <phrase> @@ -3955,7 +3624,7 @@ *: "隊列最後" </dest> <voice> - *: "Queue Last" + *: "隊列最後" </voice> </phrase> <phrase> @@ -3969,7 +3638,7 @@ *: "隨機隊列" </dest> <voice> - *: "Queue Shuffled" + *: "隨機隊列" </voice> </phrase> <phrase> @@ -3983,7 +3652,7 @@ *: "在播放清單內搜尋" </dest> <voice> - *: "Search In Playlist" + *: "在播放清單內搜尋" </voice> </phrase> <phrase> @@ -3997,7 +3666,7 @@ *: "搜尋中... 找到 %d 件 (%s)" </dest> <voice> - *: "" + *: "搜尋中... 找到 %d 件 (%s)" </voice> </phrase> <phrase> @@ -4011,7 +3680,7 @@ *: "建立書籤" </dest> <voice> - *: "Create Bookmark" + *: "建立書籤" </voice> </phrase> <phrase> @@ -4025,7 +3694,7 @@ *: "列舉書籤" </dest> <voice> - *: "List Bookmarks" + *: "列舉書籤" </voice> </phrase> <phrase> @@ -4039,7 +3708,7 @@ *: "Rockbox 資訊" </dest> <voice> - *: "" + *: "Rockbox 資訊" </voice> </phrase> <phrase> @@ -4056,24 +3725,7 @@ </dest> <voice> *: none - charging: "" - </voice> -</phrase> -<phrase> - id: LANG_BATTERY_TOPOFF_CHARGE - desc: in info display, shows that top off charge is running Only for V1 archosrecorder - user: core - <source> - *: none - archosrecorder: "Battery: Top-Off Chg" - </source> - <dest> - *: none - archosrecorder: "電池: 完成充電" - </dest> - <voice> - *: none - archosrecorder: "" + charging: "電池: 充電中" </voice> </phrase> <phrase> @@ -4090,7 +3742,7 @@ </dest> <voice> *: none - charging: "" + charging: "電池: 涓流充電" </voice> </phrase> <phrase> @@ -4100,16 +3752,13 @@ <source> *: "Battery: %d%% %dh %dm" ipodmini1g,ipodmini2g,iriverh10: "Batt: %d%% %dh %dm" - iriverifp7xx: "%d%% %dh %dm" </source> <dest> *: "電池: %d%% %d小時 %d分" - archosondiofm,iriverifp7xx: "%d%% %dh %dm" ipodmini1g,ipodmini2g,iriverh10: "電池: %d%% %dh %dm" </dest> <voice> - *: "Battery level" - ipodmini1g,ipodmini2g,iriverh10,iriverifp7xx: "" + *: "電池: %d%% %d小時 %d分" </voice> </phrase> <phrase> @@ -4123,7 +3772,7 @@ *: "硬碟:" </dest> <voice> - *: "" + *: "硬碟:" </voice> </phrase> <phrase> @@ -4137,7 +3786,7 @@ *: "剩餘容量:" </dest> <voice> - *: "Free diskspace:" + *: "剩餘容量:" </voice> </phrase> <phrase> @@ -4146,41 +3795,41 @@ user: core <source> *: "Int:" + hibylinux: "mSD:" xduoox3: "mSD1:" </source> <dest> - *: "內建:" - xduoox3: "Multimedia 卡1:" + *: "Int:" + hibylinux: "mSD:" + xduoox3: "mSD1:" </dest> <voice> *: "Internal" - xduoox3: "Multimedia 卡1" + hibylinux: "micro S D" + xduoox3: "micro S D 1" </voice> </phrase> <phrase> id: LANG_DISK_NAME_MMC - desc: in info menu; name for external disk with multivolume (Ondio; keep short!) + desc: in info menu; name for external disk with multivolume (keep short!) user: core <source> *: none - archosondio*: "MMC:" multivolume: "HD1" sansac200*,sansaclipplus,sansae200*,sansafuze*: "mSD:" xduoox3: "mSD2:" </source> <dest> *: none - archosondio*: "MMC 卡:" multivolume: "磁盤1" sansac200*,sansaclipplus,sansae200*,sansafuze*: "Multimedia 卡:" - xduoox3: "Multimedia 卡2:" + xduoox3: "mSD2:" </dest> <voice> *: none - archosondio*: "MMC 卡" multivolume: "磁盤1" sansac200*,sansaclipplus,sansae200*,sansafuze*: "Multimedia 卡" - xduoox3: "Multimedia 卡2" + xduoox3: "micro S D 2" </voice> </phrase> <phrase> @@ -4193,7 +3842,7 @@ </source> <dest> *: none - rtc: none + rtc: "" </dest> <voice> *: none @@ -4245,7 +3894,7 @@ *: "暫停" </dest> <voice> - *: "" + *: "暫停" </voice> </phrase> <phrase> @@ -4259,7 +3908,7 @@ *: "建立書籤?" </dest> <voice> - *: "" + *: "建立書籤?" </voice> </phrase> <phrase> @@ -4273,7 +3922,7 @@ *: "已建立書籤" </dest> <voice> - *: "" + *: "已建立書籤" </voice> </phrase> <phrase> @@ -4287,7 +3936,7 @@ *: "建立書籤失敗!" </dest> <voice> - *: "" + *: "建立書籤失敗!" </voice> </phrase> <phrase> @@ -4301,7 +3950,7 @@ *: "書籤為空" </dest> <voice> - *: "" + *: "書籤為空" </voice> </phrase> <phrase> @@ -4326,19 +3975,19 @@ *: none gigabeatfx: "POWER = 返回" gigabeats,sansafuzeplus: "BACK = 返回" - gogearsa9200: "LEFT = 返回" + gogearsa9200,ipod*,mpiohd300,sansac200*: "MENU = 返回" iaudiom5,iaudiox5: "RECORD = 回去" - ipod*,mpiohd300,sansac200*: "MENU = 回去" iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = 返回" iriverh100,iriverh120,iriverh300: "STOP = 返回" mrobe100: "DISPLAY = 返回" - mrobe500: "POWER = 回去" + mrobe500: "POWER = Revert" rtc: "OFF = 返回" samsungyh*: "REW = 返回" vibe500: "CANCEL = 返回" </dest> <voice> - *: none + *: "" + gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,samsungyh*,sansac200*,sansae200*: "" </voice> </phrase> <phrase> @@ -4397,7 +4046,7 @@ </dest> <voice> *: none - iaudiom5,iaudiox5,iriverh100,iriverh120,iriverh300,recording,sansac200*,sansae200*: "" + iaudiom5,iaudiox5,iriverh100,iriverh120,iriverh300,recording,samsungyh*,sansac200*,sansae200*,vibe500: "" </voice> </phrase> <phrase> @@ -4414,7 +4063,7 @@ </dest> <voice> *: none - recording: "" + recording: "一次" </voice> </phrase> <phrase> @@ -4431,7 +4080,7 @@ </dest> <voice> *: none - recording: "" + recording: "在之上開始" </voice> </phrase> <phrase> @@ -4448,7 +4097,7 @@ </dest> <voice> *: none - recording: "" + recording: "在之下停止" </voice> </phrase> <phrase> @@ -4465,7 +4114,7 @@ </dest> <voice> *: none - recording: "" + recording: "先設分割的間隔" </voice> </phrase> <phrase> @@ -4482,7 +4131,7 @@ </dest> <voice> *: none - recording: "" + recording: "minus infinity" </voice> </phrase> <phrase> @@ -4516,7 +4165,7 @@ </dest> <voice> *: none - alarm: "" + alarm: "在 %d:%02d 內關閉鬧鈴" </voice> </phrase> <phrase> @@ -4533,7 +4182,7 @@ </dest> <voice> *: none - alarm: "" + alarm: "已設定鬧鈴" </voice> </phrase> <phrase> @@ -4550,7 +4199,7 @@ </dest> <voice> *: none - alarm: "" + alarm: "鬧鈴設定時間不正確!" </voice> </phrase> <phrase> @@ -4579,7 +4228,7 @@ </dest> <voice> *: none - alarm,gigabeats,ipod*,iriverh10,iriverh10_5gb: "" + alarm,ipod*: "" </voice> </phrase> <phrase> @@ -4596,7 +4245,7 @@ </dest> <voice> *: none - alarm: "" + alarm: "鬧鈴關閉" </voice> </phrase> <phrase> @@ -4787,7 +4436,7 @@ *: " (變動位元率)" </dest> <voice> - *: "變動位元率" + *: " (變動位元率)" </voice> </phrase> <phrase> @@ -4815,7 +4464,7 @@ *: "Track Gain" </dest> <voice> - *: "Track Gain" + *: "Track gain" </voice> </phrase> <phrase> @@ -4829,7 +4478,7 @@ *: "Album Gain" </dest> <voice> - *: "Album Gain" + *: "Album gain" </voice> </phrase> <phrase> @@ -4857,7 +4506,7 @@ *: "<無資訊>" </dest> <voice> - *: "無資訊" + *: "<無資訊>" </voice> </phrase> <phrase> @@ -4990,7 +4639,7 @@ *: "1月" </dest> <voice> - *: "January" + *: "1月" </voice> </phrase> <phrase> @@ -5004,7 +4653,7 @@ *: "2月" </dest> <voice> - *: "February" + *: "2月" </voice> </phrase> <phrase> @@ -5018,7 +4667,7 @@ *: "3月" </dest> <voice> - *: "March" + *: "3月" </voice> </phrase> <phrase> @@ -5032,7 +4681,7 @@ *: "4月" </dest> <voice> - *: "April" + *: "4月" </voice> </phrase> <phrase> @@ -5046,7 +4695,7 @@ *: "5月" </dest> <voice> - *: "May" + *: "5月" </voice> </phrase> <phrase> @@ -5060,7 +4709,7 @@ *: "6月" </dest> <voice> - *: "June" + *: "6月" </voice> </phrase> <phrase> @@ -5074,7 +4723,7 @@ *: "7月" </dest> <voice> - *: "July" + *: "7月" </voice> </phrase> <phrase> @@ -5088,7 +4737,7 @@ *: "8月" </dest> <voice> - *: "August" + *: "8月" </voice> </phrase> <phrase> @@ -5102,7 +4751,7 @@ *: "9月" </dest> <voice> - *: "September" + *: "9月" </voice> </phrase> <phrase> @@ -5116,7 +4765,7 @@ *: "10月" </dest> <voice> - *: "October" + *: "10月" </voice> </phrase> <phrase> @@ -5130,7 +4779,7 @@ *: "11月" </dest> <voice> - *: "November" + *: "11月" </voice> </phrase> <phrase> @@ -5144,7 +4793,7 @@ *: "12月" </dest> <voice> - *: "December" + *: "12月" </voice> </phrase> <phrase> @@ -5834,48 +5483,6 @@ </voice> </phrase> <phrase> - id: LANG_KILOBYTE - desc: a unit postfix, also voiced - user: core - <source> - *: "KB" - </source> - <dest> - *: "KB" - </dest> - <voice> - *: "kilobyte" - </voice> -</phrase> -<phrase> - id: LANG_MEGABYTE - desc: a unit postfix, also voiced - user: core - <source> - *: "MB" - </source> - <dest> - *: "MB" - </dest> - <voice> - *: "megabyte" - </voice> -</phrase> -<phrase> - id: LANG_GIGABYTE - desc: a unit postfix, also voiced - user: core - <source> - *: "GB" - </source> - <dest> - *: "GB" - </dest> - <voice> - *: "gigabyte" - </voice> -</phrase> -<phrase> id: LANG_POINT desc: decimal separator for composing numbers user: core @@ -6417,7 +6024,7 @@ </source> <dest> *: none - remote: none + remote: "" </dest> <voice> *: none @@ -6449,7 +6056,7 @@ *: "播放清單緩衝區已滿" </dest> <voice> - *: "" + *: "播放清單緩衝區已滿" </voice> </phrase> <phrase> @@ -6477,7 +6084,7 @@ *: "插入 %d 首歌曲 (%s)" </dest> <voice> - *: "" + *: "插入 %d 首歌曲 (%s)" </voice> </phrase> <phrase> @@ -6491,7 +6098,7 @@ *: "列入了 %d 首歌曲 (%s)" </dest> <voice> - *: "" + *: "列入了 %d 首歌曲 (%s)" </voice> </phrase> <phrase> @@ -6505,7 +6112,7 @@ *: "儲存 %d 首歌曲 (%s)" </dest> <voice> - *: "" + *: "儲存 %d 首歌曲 (%s)" </voice> </phrase> <phrase> @@ -6519,7 +6126,7 @@ *: "遞迴子目錄?" </dest> <voice> - *: "" + *: "遞迴子目錄?" </voice> </phrase> <phrase> @@ -6533,7 +6140,7 @@ *: "消除動態播放清單?" </dest> <voice> - *: "" + *: "消除動態播放清單?" </voice> </phrase> <phrase> @@ -6547,7 +6154,7 @@ *: "無法繼續上次播放" </dest> <voice> - *: "" + *: "無法繼續上次播放" </voice> </phrase> <phrase> @@ -6561,7 +6168,7 @@ *: "更新播放清單控制檔案錯誤" </dest> <voice> - *: "" + *: "更新播放清單控制檔案錯誤" </voice> </phrase> <phrase> @@ -6575,7 +6182,7 @@ *: "存取播放清單檔案錯誤" </dest> <voice> - *: "" + *: "存取播放清單檔案錯誤" </voice> </phrase> <phrase> @@ -6589,7 +6196,7 @@ *: "存取播放清單控制檔案錯誤" </dest> <voice> - *: "" + *: "存取播放清單控制檔案錯誤" </voice> </phrase> <phrase> @@ -6603,7 +6210,7 @@ *: "存取目錄錯誤" </dest> <voice> - *: "" + *: "存取目錄錯誤" </voice> </phrase> <phrase> @@ -6617,7 +6224,7 @@ *: "無效的播放清單控制檔" </dest> <voice> - *: "" + *: "無效的播放清單控制檔" </voice> </phrase> <phrase> @@ -6634,7 +6241,7 @@ </dest> <voice> *: none - radio: "" + radio: "沒有預設" </voice> </phrase> <phrase> @@ -6651,7 +6258,7 @@ </dest> <voice> *: none - radio: "Add Preset" + radio: "增加預設" </voice> </phrase> <phrase> @@ -6668,7 +6275,7 @@ </dest> <voice> *: none - radio: "" + radio: "編輯預設" </voice> </phrase> <phrase> @@ -6685,7 +6292,7 @@ </dest> <voice> *: none - radio: "" + radio: "移除預設" </voice> </phrase> <phrase> @@ -6702,7 +6309,7 @@ </dest> <voice> *: none - radio: "" + radio: "儲存預設失敗" </voice> </phrase> <phrase> @@ -6719,92 +6326,7 @@ </dest> <voice> *: none - radio: "" - </voice> -</phrase> -<phrase> - id: LANG_BUTTONBAR_MENU - desc: in button bar - user: core - <source> - *: none - radio_screen_button_bar: "Menu" - </source> - <dest> - *: none - radio_screen_button_bar: "選單" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_EXIT - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Exit" - </source> - <dest> - *: none - radio_screen_button_bar: "離開" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_ACTION - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Action" - </source> - <dest> - *: none - radio_screen_button_bar: "動作" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_ADD - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Add" - </source> - <dest> - *: none - radio_screen_button_bar: "增加" - </dest> - <voice> - *: none - radio_screen_button_bar: "" - </voice> -</phrase> -<phrase> - id: LANG_FM_BUTTONBAR_RECORD - desc: in radio screen - user: core - <source> - *: none - radio_screen_button_bar: "Record" - </source> - <dest> - *: none - radio_screen_button_bar: "錄音" - </dest> - <voice> - *: none - radio_screen_button_bar: "" + radio: "預設清單已滿" </voice> </phrase> <phrase> @@ -6821,7 +6343,7 @@ </dest> <voice> *: none - radio: "" + radio: "強迫使用單聲道" </voice> </phrase> <phrase> @@ -6855,7 +6377,7 @@ </dest> <voice> *: none - radio: "Auto scan presets" + radio: "自動掃描預設" </voice> </phrase> <phrase> @@ -6872,7 +6394,7 @@ </dest> <voice> *: none - radio: "" + radio: "清除現在預設?" </voice> </phrase> <phrase> @@ -6923,7 +6445,7 @@ </dest> <voice> *: none - radio: "" + radio: "掃描" </voice> </phrase> <phrase> @@ -6937,7 +6459,7 @@ *: "目錄緩衝區已滿!" </dest> <voice> - *: "" + *: "目錄緩衝區已滿!" </voice> </phrase> <phrase> @@ -6951,7 +6473,7 @@ *: "新語言" </dest> <voice> - *: "" + *: "新語言" </voice> </phrase> <phrase> @@ -6965,7 +6487,7 @@ *: "設定已載入" </dest> <voice> - *: "" + *: "設定已載入" </voice> </phrase> <phrase> @@ -6979,7 +6501,7 @@ *: "設定已儲存" </dest> <voice> - *: "" + *: "設定已儲存" </voice> </phrase> <phrase> @@ -6993,7 +6515,7 @@ *: "開機檔已改變" </dest> <voice> - *: "" + *: "開機檔已改變" </voice> </phrase> <phrase> @@ -7007,12 +6529,12 @@ *: "現在要重新開機?" </dest> <voice> - *: "" + *: "現在要重新開機?" </voice> </phrase> <phrase> id: LANG_OFF_ABORT - desc: Used on archosrecorder models + desc: Used on many models user: core <source> *: "OFF to abort" @@ -7047,7 +6569,7 @@ *: "沒有檔案" </dest> <voice> - *: "" + *: "沒有檔案" </voice> </phrase> <phrase> @@ -7061,7 +6583,7 @@ *: "新鍵盤" </dest> <voice> - *: "" + *: "新鍵盤" </voice> </phrase> <phrase> @@ -7075,7 +6597,7 @@ *: "移動" </dest> <voice> - *: "Move" + *: "移動" </voice> </phrase> <phrase> @@ -7089,7 +6611,7 @@ *: "顯示索引" </dest> <voice> - *: "Show Indices" + *: "顯示索引" </voice> </phrase> <phrase> @@ -7103,7 +6625,7 @@ *: "曲目顯示" </dest> <voice> - *: "Track Display" + *: "曲目顯示" </voice> </phrase> <phrase> @@ -7117,7 +6639,7 @@ *: "只顯示曲名" </dest> <voice> - *: "Track Name Only" + *: "只顯示曲名" </voice> </phrase> <phrase> @@ -7131,7 +6653,7 @@ *: "完整路徑" </dest> <voice> - *: "Full Path" + *: "完整路徑" </voice> </phrase> <phrase> @@ -7145,7 +6667,7 @@ *: "移除" </dest> <voice> - *: "Remove" + *: "移除" </voice> </phrase> <phrase> @@ -7178,7 +6700,7 @@ </phrase> <phrase> id: LANG_PLUGIN_WRONG_MODEL - desc: The plugin is not compatible with the archos model trying to run it + desc: The plugin is not compatible with the player model trying to run it user: core <source> *: "Incompatible model" @@ -7187,7 +6709,7 @@ *: "不相容機型" </dest> <voice> - *: "" + *: "不相容機型" </voice> </phrase> <phrase> @@ -7201,7 +6723,7 @@ *: "不相容版本" </dest> <voice> - *: "" + *: "不相容版本" </voice> </phrase> <phrase> @@ -7215,7 +6737,7 @@ *: "插件回傳錯誤" </dest> <voice> - *: "" + *: "插件回傳錯誤" </voice> </phrase> <phrase> @@ -7229,7 +6751,7 @@ *: "檔案類型陣列已滿" </dest> <voice> - *: "" + *: "檔案類型陣列已滿" </voice> </phrase> <phrase> @@ -7246,7 +6768,7 @@ </dest> <voice> *: none - radio: "Load Preset List" + radio: "載入預設清單" </voice> </phrase> <phrase> @@ -7263,7 +6785,7 @@ </dest> <voice> *: none - radio: "Save Preset List" + radio: "儲存預設清單" </voice> </phrase> <phrase> @@ -7280,7 +6802,7 @@ </dest> <voice> *: none - radio: "Clear Preset List" + radio: "清除預設清單" </voice> </phrase> <phrase> @@ -7297,7 +6819,7 @@ </dest> <voice> *: none - radio: "Preset List" + radio: "預設清單" </voice> </phrase> <phrase> @@ -7314,7 +6836,7 @@ </dest> <voice> *: none - radio: "" + radio: "找不到設定, 自動掃描?" </voice> </phrase> <phrase> @@ -7328,7 +6850,7 @@ *: "直接增加" </dest> <voice> - *: "Direct gain" + *: "直接增加" </voice> </phrase> <phrase> @@ -7342,7 +6864,7 @@ *: "交叉增加" </dest> <voice> - *: "Cross gain" + *: "交叉增加" </voice> </phrase> <phrase> @@ -7356,7 +6878,7 @@ *: "高頻衰減" </dest> <voice> - *: "High-frequency attenuation" + *: "高頻衰減" </voice> </phrase> <phrase> @@ -7370,7 +6892,7 @@ *: "高頻截斷" </dest> <voice> - *: "High-frequency cutoff" + *: "高頻截斷" </voice> </phrase> <phrase> @@ -7398,7 +6920,7 @@ *: "<所有曲目>" </dest> <voice> - *: "All tracks" + *: "<所有曲目>" </voice> </phrase> <phrase> @@ -7412,7 +6934,7 @@ *: "無效的檔名!" </dest> <voice> - *: "Invalid Filename" + *: "無效的檔名!" </voice> </phrase> <phrase> @@ -7429,7 +6951,7 @@ </dest> <voice> *: none - remote: "Remote Scrolling Options" + remote: "線控捲動設定" </voice> </phrase> <phrase> @@ -7475,193 +6997,6 @@ </voice> </phrase> <phrase> - id: LANG_SYSFONT_CHANNEL_STEREO - desc: in sound_settings - user: core - <source> - *: none - recording: "Stereo" - </source> - <dest> - *: none - recording: "Stereo" - </dest> - <voice> - *: none - recording: "Stereo" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_CHANNEL_MONO - desc: in sound_settings - user: core - <source> - *: none - recording: "Mono" - </source> - <dest> - *: none - recording: "Mono" - </dest> - <voice> - *: none - recording: "Mono" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_QUALITY - desc: in the recording settings - user: core - <source> - *: none - recording_hwcodec: "Quality" - </source> - <dest> - *: none - recording_hwcodec: "Quality" - </dest> - <voice> - *: none - recording_hwcodec: "Quality" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_FREQUENCY - desc: in the recording settings - user: core - <source> - *: none - recording: "Frequency" - </source> - <dest> - *: none - recording: "Frequency" - </dest> - <voice> - *: none - recording: "Frequency" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_SOURCE - desc: in the recording settings - user: core - <source> - *: none - recording: "Source" - </source> - <dest> - *: none - recording: "Source" - </dest> - <voice> - *: none - recording: "Source" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_SRC_MIC - desc: in the recording settings - user: core - <source> - *: none - recording: "Int. Mic" - </source> - <dest> - *: none - recording: "Mic" - </dest> - <voice> - *: none - recording: "Microphone" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORDING_SRC_DIGITAL - desc: in the recording settings - user: core - <source> - *: none - recording: "Digital" - </source> - <dest> - *: none - recording: "Digital" - </dest> - <voice> - *: none - recording: "Digital" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_RECORD_TRIGGER - desc: in recording settings_menu - user: core - <source> - *: none - recording: "Trigger" - </source> - <dest> - *: none - recording: "Trigger" - </dest> - <voice> - *: none - recording: "Trigger" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_DIRBROWSE_F1 - desc: in dir browser, F1 button bar text - user: core - <source> - *: none - recorder_pad: "Menu" - </source> - <dest> - *: none - recorder_pad: "Menu" - </dest> - <voice> - *: none - recorder_pad: "" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_DIRBROWSE_F2 - desc: in dir browser, F2 button bar text - user: core - <source> - *: none - recorder_pad: "Option" - </source> - <dest> - *: none - recorder_pad: "Option" - </dest> - <voice> - *: none - recorder_pad: "" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_DIRBROWSE_F3 - desc: in dir browser, F3 button bar text - user: core - <source> - *: none - recorder_pad: "LCD" - </source> - <dest> - *: none - recorder_pad: "LCD" - </dest> - <voice> - *: none - recorder_pad: "" - </voice> -</phrase> -<phrase> id: LANG_AFMT_PCM_WAV desc: audio format description user: core @@ -7711,33 +7046,13 @@ desc: in lcd settings user: core <source> - *: none - lcd_sleep: "Never" - </source> - <dest> - *: none - lcd_sleep: "永不" - </dest> - <voice> - *: none - lcd_sleep: "Never" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_LINE_IN - desc: in the recording settings - user: core - <source> - *: none - recording: "Line In" + *: "Never" </source> <dest> - *: none - recording: "Line In" + *: "Never" </dest> <voice> - *: none - recording: "Line In" + *: "Never" </voice> </phrase> <phrase> @@ -7746,7 +7061,6 @@ user: core <source> *: "Building database... %d found (OFF to return)" - archosplayer: "Building DB %d found" gigabeat*,iaudiom5,iaudiox5,mrobe100,samsungyh*: "Building database... %d found (LEFT to return)" gogearsa9200: "Building database... %d found (REW to return)" ipod*,iriverh10,iriverh10_5gb,sansac200*,sansae200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)" @@ -7754,14 +7068,13 @@ </source> <dest> *: "建立資料庫... 找到 %d 項 (OFF: 回上一畫面)" - archosplayer: "建立資料庫... 找到 %d" gigabeat*,iaudiom5,iaudiox5,mrobe100,samsungyh*: "建立資料庫... 找到 %d 項 (LEFT: 回上一畫面)" - gogearsa9200: "建立資料庫... 找到 %d 項 (REW: 回上一畫面)" - ipod*,iriverh10,iriverh10_5gb,sansac200*,sansae200*,sansafuze*,vibe500: "建立資料庫... 找到 %d 項 (PREV: 回上一畫面)" + gogearsa9200,ipod*,iriverh10,iriverh10_5gb,sansac200*,sansae200*,vibe500: "建立資料庫... 找到 %d 項 (PREV: 回上一畫面)" iriverh100,iriverh120,iriverh300: "建立資料庫... 找到 %d 項 (STOP: 回上一畫面)" + sansafuze*: "Building database... %d found (PREV to return)" </dest> <voice> - *: "entries found for database" + *: "建立資料庫... 找到 %d 項 (OFF: 回上一畫面)" </voice> </phrase> <phrase> @@ -7775,7 +7088,7 @@ *: "掃描文件..." </dest> <voice> - *: "Scanning disk" + *: "掃描文件..." </voice> </phrase> <phrase> @@ -7789,7 +7102,7 @@ *: "檔案" </dest> <voice> - *: "Files" + *: "檔案" </voice> </phrase> <phrase> @@ -7820,7 +7133,7 @@ </dest> <voice> *: none - agc: "DJ set (slow)" + agc: "DJ 設定 (慢)" </voice> </phrase> <phrase> @@ -7834,7 +7147,7 @@ *: "匯入更動" </dest> <voice> - *: "Import Modifications" + *: "匯入更動" </voice> </phrase> <phrase> @@ -7868,7 +7181,7 @@ </dest> <voice> *: none - lcd_sleep: "Sleep after backlight off" + lcd_sleep: "睡眠 (在背光關閉後)" </voice> </phrase> <phrase> @@ -7882,7 +7195,7 @@ *: "添加" </dest> <voice> - *: "Gain" + *: "添加" </voice> </phrase> <phrase> @@ -7896,7 +7209,7 @@ *: "刪除中..." </dest> <voice> - *: "Deleting" + *: "刪除中..." </voice> </phrase> <phrase> @@ -7913,7 +7226,7 @@ </dest> <voice> *: none - usb_charging_enable: "Charge During U S B Connection" + usb_charging_enable: "在 USB 連線時充電" </voice> </phrase> <phrase> @@ -7930,7 +7243,7 @@ </dest> <voice> *: none - remote: "Remote Display OFF" + remote: "線控顯示關閉" </voice> </phrase> <phrase> @@ -7947,7 +7260,7 @@ </dest> <voice> *: none - recording: "Same As Source" + recording: "(與來源相同)" </voice> </phrase> <phrase> @@ -7964,7 +7277,7 @@ </dest> <voice> *: none - headphone_detection: "Disable resume on startup if phones unplugged" + headphone_detection: "如沒耳機插入開機時不播放" </voice> </phrase> <phrase> @@ -7978,7 +7291,7 @@ *: "恢復播發" </dest> <voice> - *: "Resume" + *: "恢復播發" </voice> </phrase> <phrase> @@ -7995,7 +7308,7 @@ </dest> <voice> *: none - radio: "Europe" + radio: "歐洲" </voice> </phrase> <phrase> @@ -8009,7 +7322,7 @@ *: "警告! 電池電量低!" </dest> <voice> - *: "WARNING! Low Battery!" + *: "警告! 電池電量低!" </voice> </phrase> <phrase> @@ -8026,7 +7339,7 @@ </dest> <voice> *: none - recording: "Encoder Settings" + recording: "編碼設定" </voice> </phrase> <phrase> @@ -8040,7 +7353,7 @@ *: "播放清單設置" </dest> <voice> - *: "Playlist Viewer Settings" + *: "播放清單設置" </voice> </phrase> <phrase> @@ -8057,7 +7370,7 @@ </dest> <voice> *: none - rtc: "Set Time and Date" + rtc: "設置時間/日期" </voice> </phrase> <phrase> @@ -8071,7 +7384,7 @@ *: "正在播放" </dest> <voice> - *: "Now Playing" + *: "正在播放" </voice> </phrase> <phrase> @@ -8088,7 +7401,7 @@ </dest> <voice> *: none - recording: "Stop recording" + recording: "停止錄音" </voice> </phrase> <phrase> @@ -8104,25 +7417,22 @@ wheel_acceleration: none </dest> <voice> - *: "List Acceleration Speed" + *: "列表加速速度" wheel_acceleration: none </voice> </phrase> <phrase> - id: LANG_RECORDING_FORMAT - desc: audio format item in recording menu + id: LANG_FORMAT + desc: audio format user: core <source> - *: none - recording: "Format" + *: "Format" </source> <dest> - *: none - recording: "格式" + *: "格式" </dest> <voice> - *: none - recording: "Format" + *: "格式" </voice> </phrase> <phrase> @@ -8136,7 +7446,7 @@ *: "書簽動作" </dest> <voice> - *: "Bookmark Actions" + *: "書簽動作" </voice> </phrase> <phrase> @@ -8153,7 +7463,7 @@ </dest> <voice> *: none - crossfade: "Shuffle or Manual Track Skip" + crossfade: "亂序播放與跳過曲目" </voice> </phrase> <phrase> @@ -8167,7 +7477,7 @@ *: "正常" </dest> <voice> - *: "Normal" + *: "正常" </voice> </phrase> <phrase> @@ -8176,15 +7486,12 @@ user: core <source> *: "Buffer:" - archosplayer: "Buf:" </source> <dest> *: "緩衝:" - archosplayer: "Buf:" </dest> <voice> - *: "" - archosplayer: "" + *: "緩衝:" </voice> </phrase> <phrase> @@ -8201,7 +7508,7 @@ </dest> <voice> *: none - headphone_detection: "Pause and Resume" + headphone_detection: "暫停和恢復播放" </voice> </phrase> <phrase> @@ -8218,7 +7525,7 @@ </dest> <voice> *: none - recording: "Can't write to recording directory" + recording: "不能寫入錄音目錄" </voice> </phrase> <phrase> @@ -8229,10 +7536,10 @@ *: "Channel Configuration" </source> <dest> - *: "聲道設置" + *: "聲道" </dest> <voice> - *: "Channel Configuration" + *: "聲道" </voice> </phrase> <phrase> @@ -8241,9 +7548,8 @@ user: core <source> *: "PLAY = Yes" - archosplayer: "(PLAY/STOP)" cowond2*: "MENU, or top-right = Yes" - creativezen*: "Select = Yes" + creativezen*: "SELECT = Yes" gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Yes" iriverh100,iriverh120,iriverh300: "NAVI = Yes" mrobe500: "PLAY, POWER, or top-right = Yes" @@ -8251,12 +7557,12 @@ </source> <dest> *: "PLAY = 是" - archosplayer: "(PLAY/STOP)" - cowond2*: "MENU, or top-right = 是" - creativezen*: "Select = 是" - gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = 是" + cowond2*: "MENU, or top-right = Yes" + creativezen*: "SELECT = Yes" + gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansae200*: "SELECT = 是" iriverh100,iriverh120,iriverh300: "NAVI = 是" - mrobe500: "PLAY, POWER, or top-right = 是" + mrobe500: "PLAY, POWER, or top-right = Yes" + sansaclip*,sansaconnect,sansafuze*: "SELECT = Yes" vibe500: "OK = 是" </dest> <voice> @@ -8279,16 +7585,18 @@ </source> <dest> *: none - gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = 設定" + gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansae200*: "SELECT = 設定" gogearsa9200,samsungyh*: "PLAY = 設定" iriverh100,iriverh120,iriverh300: "NAVI = 設定" mpiohd300: "ENTER = 設定" - mrobe500: "HEART = 設定" + mrobe500: "HEART = Set" rtc: "ON = 設定" + sansaclip*,sansaconnect,sansafuze*: "SELECT = Set" vibe500: "OK = 設定" </dest> <voice> - *: none + *: "" + gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,samsungyh*,sansac200*,sansae200*: "" </voice> </phrase> <phrase> @@ -8297,15 +7605,12 @@ user: core <source> *: "Any Other = No" - archosplayer: none </source> <dest> *: "Any Other = 否" - archosplayer: none </dest> <voice> *: "" - archosplayer: none </voice> </phrase> <phrase> @@ -8319,7 +7624,7 @@ *: "瀏覽 Cuesheet" </dest> <voice> - *: "Browse Cuesheet" + *: "瀏覽 Cuesheet" </voice> </phrase> <phrase> @@ -8333,7 +7638,7 @@ *: "樣品程序" </dest> <voice> - *: "Demos" + *: "樣品程序" </voice> </phrase> <phrase> @@ -8350,7 +7655,7 @@ </dest> <voice> *: none - recording: "Bitrate" + recording: "位元率" </voice> </phrase> <phrase> @@ -8364,7 +7669,7 @@ *: "最高時間" </dest> <voice> - *: "Top Time" + *: "最高時間" </voice> </phrase> <phrase> @@ -8378,7 +7683,7 @@ *: "使用 .talk 文件" </dest> <voice> - *: "Use File .talk Clips" + *: "使用 .talk 文件" </voice> </phrase> <phrase> @@ -8392,7 +7697,7 @@ *: "亂數" </dest> <voice> - *: "Random" + *: "亂數" </voice> </phrase> <phrase> @@ -8406,7 +7711,7 @@ *: "全部" </dest> <voice> - *: "All" + *: "全部" </voice> </phrase> <phrase> @@ -8423,7 +7728,7 @@ </dest> <voice> *: none - recording: "New file" + recording: "新檔案" </voice> </phrase> <phrase> @@ -8434,10 +7739,10 @@ *: "Add to Shortcuts" </source> <dest> - *: "添加到快捷" + *: "添加到捷徑中" </dest> <voice> - *: "Add to Shortcuts" + *: "添加到捷徑中" </voice> </phrase> <phrase> @@ -8454,7 +7759,7 @@ </dest> <voice> *: none - radio: "" + radio: "預設" </voice> </phrase> <phrase> @@ -8468,7 +7773,7 @@ *: "主選單" </dest> <voice> - *: "Main Menu" + *: "主選單" </voice> </phrase> <phrase> @@ -8482,7 +7787,7 @@ *: "遊戲" </dest> <voice> - *: "Games" + *: "遊戲" </voice> </phrase> <phrase> @@ -8491,15 +7796,12 @@ user: core <source> *: "End of Song List" - archosplayer: "End of List" </source> <dest> *: "列表結束" - archosplayer: "列表結束" </dest> <voice> - *: "End of Song List" - archosplayer: "End of List" + *: "列表結束" </voice> </phrase> <phrase> @@ -8516,7 +7818,7 @@ </dest> <voice> *: none - alarm: "Alarm Wake up Screen" + alarm: "鬧鈴啟動畫面" </voice> </phrase> <phrase> @@ -8533,7 +7835,7 @@ </dest> <voice> *: none - recording: "Clear Recording Directory" + recording: "清除錄音目錄" </voice> </phrase> <phrase> @@ -8564,7 +7866,7 @@ </dest> <voice> *: none - agc: "Live (slow)" + agc: "現場 (慢)" </voice> </phrase> <phrase> @@ -8578,7 +7880,7 @@ *: "儲存佈景主題設定" </dest> <voice> - *: "Save Theme Settings" + *: "儲存佈景主題設定" </voice> </phrase> <phrase> @@ -8599,20 +7901,6 @@ </voice> </phrase> <phrase> - id: LANG_SYSFONT_MODE - desc: in wps F2 pressed - user: core - <source> - *: "Mode:" - </source> - <dest> - *: "Mode:" - </dest> - <voice> - *: "" - </voice> -</phrase> -<phrase> id: LANG_AGC_VOICE desc: AGC preset user: core @@ -8626,7 +7914,7 @@ </dest> <voice> *: none - agc: "Voice (fast)" + agc: "語音 (快)" </voice> </phrase> <phrase> @@ -8643,7 +7931,7 @@ </dest> <voice> *: none - recording: "No settings available" + recording: "(無設定)" </voice> </phrase> <phrase> @@ -8660,7 +7948,7 @@ </dest> <voice> *: none - recording: "" + recording: "最少" </voice> </phrase> <phrase> @@ -8677,7 +7965,7 @@ </dest> <voice> *: none - recording: "Split Filesize" + recording: "分割檔案大小" </voice> </phrase> <phrase> @@ -8691,7 +7979,7 @@ *: "聲道" </dest> <voice> - *: "Channels" + *: "聲道" </voice> </phrase> <phrase> @@ -8708,7 +7996,7 @@ </dest> <voice> *: none - remote: "(Vol- : Re-enable)" + remote: "(Vol- : 重新開啟)" </voice> </phrase> <phrase> @@ -8722,7 +8010,7 @@ *: "每次提問" </dest> <voice> - *: "Ask" + *: "每次提問" </voice> </phrase> <phrase> @@ -8753,7 +8041,7 @@ </dest> <voice> *: none - agc: "Medium" + agc: "中等" </voice> </phrase> <phrase> @@ -8787,7 +8075,7 @@ </dest> <voice> *: none - agc: "Safety (clip)" + agc: "安全 (clip)" </voice> </phrase> <phrase> @@ -8801,7 +8089,7 @@ *: "繼續播放" </dest> <voice> - *: "Resume Playback" + *: "繼續播放" </voice> </phrase> <phrase> @@ -8818,21 +8106,21 @@ </dest> <voice> *: none - headphone_detection: "Pause on Headphone Unplug" + headphone_detection: "耳機拔出後暫停" </voice> </phrase> <phrase> id: LANG_REPLACE - desc: in onplay menu. Replace the current playlist with a new one. + desc: deprecated user: core <source> - *: "Play Next" + *: "" </source> <dest> - *: "播放下一首" + *: "" </dest> <voice> - *: "Play Next" + *: "" </voice> </phrase> <phrase> @@ -8863,7 +8151,7 @@ </dest> <voice> *: none - recording: "Split Measure" + recording: "分割依據" </voice> </phrase> <phrase> @@ -8891,7 +8179,7 @@ *: "電池已空! 充電!" </dest> <voice> - *: "Battery empty! RECHARGE!" + *: "電池已空! 充電!" </voice> </phrase> <phrase> @@ -8908,7 +8196,7 @@ </dest> <voice> *: none - radio: "Korea" + radio: "韓國" </voice> </phrase> <phrase> @@ -8922,7 +8210,7 @@ *: "運作時間" </dest> <voice> - *: "Running Time" + *: "運作時間" </voice> </phrase> <phrase> @@ -8939,7 +8227,7 @@ </dest> <voice> *: none - radio: "US and Canada" + radio: "美國 / 加拿大" </voice> </phrase> <phrase> @@ -8956,7 +8244,7 @@ </dest> <voice> *: none - radio: "Region" + radio: "區域" </voice> </phrase> <phrase> @@ -9001,7 +8289,7 @@ *: "增加到新的播放清單" </dest> <voice> - *: "Add to New Playlist" + *: "增加到新的播放清單" </voice> </phrase> <phrase> @@ -9018,7 +8306,7 @@ </dest> <voice> *: none - recording: "Stop" + recording: "停止" </voice> </phrase> <phrase> @@ -9049,7 +8337,7 @@ </dest> <voice> *: none - recording: "Split Time" + recording: "分割時間" </voice> </phrase> <phrase> @@ -9063,7 +8351,7 @@ *: "請重開機以啟用" </dest> <voice> - *: "Please reboot to enable" + *: "請重開機以啟用" </voice> </phrase> <phrase> @@ -9077,7 +8365,7 @@ *: "有關選單" </dest> <voice> - *: "Context Menu" + *: "有關選單" </voice> </phrase> <phrase> @@ -9091,7 +8379,7 @@ *: "先前畫面" </dest> <voice> - *: "Previous Screen" + *: "先前畫面" </voice> </phrase> <phrase> @@ -9105,7 +8393,7 @@ *: "增加到播放清單" </dest> <voice> - *: "Add to Playlist" + *: "增加到播放清單" </voice> </phrase> <phrase> @@ -9122,7 +8410,7 @@ </dest> <voice> *: none - buttonlight_brightness: "Button Light Brightness" + buttonlight_brightness: "按鈕光度" </voice> </phrase> <phrase> @@ -9136,7 +8424,7 @@ *: "Cuesheet 支援" </dest> <voice> - *: "Cuesheet Support" + *: "Cuesheet 支援" </voice> </phrase> <phrase> @@ -9178,7 +8466,7 @@ *: "載入中... %d%% 完成 (%s)" </dest> <voice> - *: "" + *: "載入中... %d%% 完成 (%s)" </voice> </phrase> <phrase> @@ -9195,7 +8483,7 @@ </dest> <voice> *: none - recording: "Start new file" + recording: "開新檔案" </voice> </phrase> <phrase> @@ -9212,7 +8500,7 @@ </dest> <voice> *: none - recording: "What to do when Splitting" + recording: "分割時行為" </voice> </phrase> <phrase> @@ -9226,7 +8514,7 @@ *: "開機畫面" </dest> <voice> - *: "Start Screen" + *: "開機畫面" </voice> </phrase> <phrase> @@ -9240,7 +8528,7 @@ *: "<不要恢復書簽>" </dest> <voice> - *: "Do not resume" + *: "<不要恢復書簽>" </voice> </phrase> <phrase> @@ -9254,7 +8542,7 @@ *: "刪除" </dest> <voice> - *: "Delete" + *: "刪除" </voice> </phrase> <phrase> @@ -9271,7 +8559,7 @@ </dest> <voice> *: none - radio: "Japan" + radio: "日本" </voice> </phrase> <phrase> @@ -9285,7 +8573,7 @@ *: "顯示路徑" </dest> <voice> - *: "Show Path" + *: "顯示路徑" </voice> </phrase> <phrase> @@ -9299,12 +8587,12 @@ *: "選擇書簽" </dest> <voice> - *: "Select Bookmark" + *: "選擇書簽" </voice> </phrase> <phrase> id: LANG_DITHERING - desc: in the sound settings menu + desc: in the sound settings and some other menus user: core <source> *: "Dithering" @@ -9313,7 +8601,7 @@ *: "添加抖動" </dest> <voice> - *: "Dithering" + *: "添加抖動" </voice> </phrase> <phrase> @@ -9327,7 +8615,7 @@ *: "應用程序" </dest> <voice> - *: "Applications" + *: "應用程序" </voice> </phrase> <phrase> @@ -9343,7 +8631,7 @@ wheel_acceleration: none </dest> <voice> - *: "List Acceleration Start Delay" + *: "列表加速緩衝" wheel_acceleration: none </voice> </phrase> @@ -9358,7 +8646,7 @@ *: "正在移動..." </dest> <voice> - *: "Moving" + *: "正在移動..." </voice> </phrase> <phrase> @@ -9372,7 +8660,7 @@ *: "使用 .talk 文件夾" </dest> <voice> - *: "Use Directory .talk Clips" + *: "使用 .talk 文件夾" </voice> </phrase> <phrase> @@ -9386,7 +8674,7 @@ *: "屬性" </dest> <voice> - *: "Properties" + *: "屬性" </voice> </phrase> <phrase> @@ -9442,7 +8730,7 @@ *: "<無效書簽>" </dest> <voice> - *: "Invalid Bookmark" + *: "<無效書簽>" </voice> </phrase> <phrase> @@ -9462,7 +8750,7 @@ <voice> *: none button_light: "Button Light Timeout" - sansae200*,sansafuze*: "Wheel Light Timeout" + sansae200*,sansafuze*: "轉盤燈自動關時間" </voice> </phrase> <phrase> @@ -9507,24 +8795,7 @@ *: "只有目前目錄" </dest> <voice> - *: "Current Directory Only" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_CHANNELS - desc: in the recording settings - user: core - <source> - *: none - recording: "Channels" - </source> - <dest> - *: none - recording: "聲道" - </dest> - <voice> - *: none - recording: "Channels" + *: "只有目前目錄" </voice> </phrase> <phrase> @@ -9538,7 +8809,7 @@ *: "播放清單" </dest> <voice> - *: "Playlists" + *: "播放清單" </voice> </phrase> <phrase> @@ -9594,7 +8865,7 @@ *: "清除時間?" </dest> <voice> - *: "Clear Time?" + *: "清除時間?" </voice> </phrase> <phrase> @@ -9608,7 +8879,7 @@ *: "Last.fm 紀錄" </dest> <voice> - *: "Last.fm Log" + *: "Last.fm 紀錄" </voice> </phrase> <phrase> @@ -9625,7 +8896,7 @@ </dest> <voice> *: none - hold_button: "Backlight on hold" + hold_button: "背光 (Hold 時)" </voice> </phrase> <phrase> @@ -9639,7 +8910,7 @@ *: "設置" </dest> <voice> - *: "Settings" + *: "設置" </voice> </phrase> <phrase> @@ -9653,7 +8924,7 @@ *: "已取消" </dest> <voice> - *: "Cancelled" + *: "已取消" </voice> </phrase> <phrase> @@ -9681,7 +8952,7 @@ *: "你肯定嗎?" </dest> <voice> - *: "Are You Sure?" + *: "你肯定嗎?" </voice> </phrase> <phrase> @@ -9695,7 +8966,7 @@ *: "%s 不存在" </dest> <voice> - *: "" + *: "%s 不存在" </voice> </phrase> <phrase> @@ -9709,7 +8980,7 @@ *: "沒有播放清單" </dest> <voice> - *: "" + *: "沒有播放清單" </voice> </phrase> <phrase> @@ -9723,7 +8994,7 @@ *: "複製中..." </dest> <voice> - *: "Copying" + *: "複製中..." </voice> </phrase> <phrase> @@ -9757,7 +9028,7 @@ </dest> <voice> *: none - recording: "Set As Recording Directory" + recording: "設為錄音目錄" </voice> </phrase> <phrase> @@ -9774,7 +9045,7 @@ </dest> <voice> *: none - radio: "FM Radio Menu" + radio: "FM 收音選單" </voice> </phrase> <phrase> @@ -9791,7 +9062,7 @@ </dest> <voice> *: none - recording: "Clip Counter" + recording: "削波屢計" </voice> </phrase> <phrase> @@ -9861,7 +9132,7 @@ *: "讀出文件格式" </dest> <voice> - *: "Say File Type" + *: "讀出文件格式" </voice> </phrase> <phrase> @@ -9878,7 +9149,7 @@ </dest> <voice> *: none - multivolume: "Not present" + multivolume: "不存在" </voice> </phrase> <phrase> @@ -9895,7 +9166,7 @@ </dest> <voice> *: none - gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" + gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音截斷" </voice> </phrase> <phrase> @@ -9912,7 +9183,7 @@ </dest> <voice> *: none - lcd_color: "Primary Colour" + lcd_color: "項目選擇條主要顏色" </voice> </phrase> <phrase> @@ -9940,7 +9211,7 @@ *: "讀出電池剩餘容量" </dest> <voice> - *: "Announce Battery Level" + *: "讀出電池剩餘容量" </voice> </phrase> <phrase> @@ -9957,7 +9228,7 @@ </dest> <voice> *: none - lcd_color: "Line Selector Colours" + lcd_color: "項目選擇條顏色" </voice> </phrase> <phrase> @@ -9988,7 +9259,7 @@ </dest> <voice> *: none - lcd_color: "Text Colour" + lcd_color: "字體顏色" </voice> </phrase> <phrase> @@ -10002,7 +9273,7 @@ *: "主題設定" </dest> <voice> - *: "Theme Settings" + *: "主題設定" </voice> </phrase> <phrase> @@ -10033,7 +9304,7 @@ </dest> <voice> *: none - lcd_color: "Bar (Gradient Colour)" + lcd_color: "漸變顏色條" </voice> </phrase> <phrase> @@ -10050,7 +9321,7 @@ </dest> <voice> *: none - lcd_color: "Bar (Solid Colour)" + lcd_color: "實色條" </voice> </phrase> <phrase> @@ -10067,7 +9338,7 @@ </dest> <voice> *: none - lcd_color: "Colours" + lcd_color: "顏色" </voice> </phrase> <phrase> @@ -10084,7 +9355,7 @@ </dest> <voice> *: none - lcd_color: "Secondary Colour" + lcd_color: "項目選擇條次要顏色" </voice> </phrase> <phrase> @@ -10097,11 +9368,11 @@ </source> <dest> *: none - gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高聲截斷" + gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音截斷" </dest> <voice> *: none - gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" + gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音截斷" </voice> </phrase> <phrase> @@ -10115,7 +9386,7 @@ *: "歐洲中部 (CP1250)" </dest> <voice> - *: "Central European" + *: "歐洲中部 (CP1250)" </voice> </phrase> <phrase> @@ -10262,15 +9533,15 @@ user: core <source> *: none - gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" + fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity" </source> <dest> *: none - gigabeatfx,sansafuzeplus: "觸摸板靈敏度" + fiiom3k, fiiom3k,gigabeatfx,sansafuzeplus: "觸摸板靈敏度" </dest> <voice> *: none - gigabeatfx,sansafuzeplus: "觸摸板靈敏度" + fiiom3k, fiiom3k,gigabeatfx,sansafuzeplus: "觸摸板靈敏度" </voice> </phrase> <phrase> @@ -10847,11 +10118,11 @@ </source> <dest> *: none - touchscreen: "那個地方" + touchscreen: "具體位置" </dest> <voice> *: none - touchscreen: "那個地方" + touchscreen: "具體位置" </voice> </phrase> <phrase> @@ -10881,11 +10152,62 @@ </source> <dest> *: none - touchscreen: "觸控模式" + touchscreen: "觸控面板操作模式" + </dest> + <voice> + *: none + touchscreen: "觸控面板操作模式" + </voice> +</phrase> +<phrase> + id: LANG_TOUCHSCREEN_CALIBRATE + desc: in Settings -> General -> Display -> Touchscreen Settings + user: core + <source> + *: none + touchscreen: "Calibrate" + </source> + <dest> + *: none + touchscreen: "觸控面板校正" + </dest> + <voice> + *: none + touchscreen: "觸控面板校正" + </voice> +</phrase> +<phrase> + id: LANG_TOUCHSCREEN_RESET_CALIBRATION + desc: in Settings -> General -> Display -> Touchscreen Settings + user: core + <source> + *: none + touchscreen: "Reset Calibration" + </source> + <dest> + *: none + touchscreen: "重新校正觸控" </dest> <voice> *: none - touchscreen: "Touchscreen 選擇" + touchscreen: "重新校正觸控" + </voice> +</phrase> +<phrase> + id: LANG_USE_SHORTCUTS_INSTEAD_OF_QS + desc: in settings_menu. + user: core + <source> + *: none + quickscreen: "Use Shortcuts Menu Instead of Quick Screen" + </source> + <dest> + *: none + quickscreen: "使用快捷選單替代快捷熒幕" + </dest> + <voice> + *: none + quickscreen: "使用快捷選單替代快捷熒幕" </voice> </phrase> <phrase> @@ -10903,17 +10225,17 @@ </voice> </phrase> <phrase> - id: LANG_VOLUME_LIMIT - desc: in sound_settings + id: LANG_GLYPHS + desc: in settings_menu user: core <source> - *: "Maximum Volume Limit" + *: "Glyphs To Cache" </source> <dest> - *: "音量限制" + *: "快取字型容納數量" </dest> <voice> - *: "音量限制" + *: "快取字型容納數量" </voice> </phrase> <phrase> @@ -10941,35 +10263,35 @@ *: "啓動睡眠計時器" </dest> <voice> - *: "Start Sleep Timer" + *: "啓動睡眠計時器" </voice> </phrase> <phrase> - id: LANG_SLEEP_TIMER_CANCEL_CURRENT - desc: shown instead of sleep timer when it's running + id: LANG_SLEEP_TIMER_DURATION + desc: default sleep timer duration in minutes user: core <source> - *: "Cancel Sleep Timer" + *: "Default Sleep Timer Duration" </source> <dest> - *: "停止睡眠計時器" + *: "睡眠倒計時長度" </dest> <voice> - *: "停止睡眠計時器" + *: "睡眠倒計時長度" </voice> </phrase> <phrase> - id: LANG_SLEEP_TIMER_DURATION - desc: default sleep timer duration in minutes + id: LANG_KEYPRESS_RESTARTS_SLEEP_TIMER + desc: whether to restart running sleep timer on keypress user: core <source> - *: "Default Sleep Timer Duration" + *: "Restart Sleep Timer On Keypress" </source> <dest> - *: "睡眠倒計時長度" + *: "偵測到按鍵時重置睡眠計時器" </dest> <voice> - *: "睡眠倒計時長度" + *: "偵測到按鍵時重置睡眠計時器" </voice> </phrase> <phrase> @@ -10987,17 +10309,17 @@ </voice> </phrase> <phrase> - id: LANG_KEYPRESS_RESTARTS_SLEEP_TIMER - desc: whether to restart running sleep timer on keypress + id: LANG_SHORTCUTS + desc: Title in the shortcuts menu user: core <source> - *: "Restart Sleep Timer On Keypress" + *: "Shortcuts" </source> <dest> - *: "偵測到按鍵時重置睡眠計時器" + *: "捷徑" </dest> <voice> - *: "偵測到按鍵時重置睡眠計時器" + *: "捷徑" </voice> </phrase> <phrase> @@ -11043,478 +10365,244 @@ </voice> </phrase> <phrase> - id: LANG_SET_AS_START_DIR - desc: used in the onplay menu to set a starting browser dir - user: core - <source> - *: "Start File Browser Here" - </source> - <dest> - *: "設爲起始檔案瀏覽位置" - </dest> - <voice> - *: "設爲起始檔案瀏覽位置" - </voice> -</phrase> -<phrase> - id: LANG_RESET_START_DIR - desc: reset the browser start directory - user: core - <source> - *: "Start File Browser at /" - </source> - <dest> - *: "復原檔案瀏覽起始位置" - </dest> - <voice> - *: "復原檔案瀏覽起始位置" - </voice> -</phrase> -<phrase> - id: LANG_SELECT_DATABASE_DIRS - desc: in settings_menu - user: core - <source> - *: "Select directories to scan" - </source> - <dest> - *: "自定要掃描的資料夾" - </dest> - <voice> - *: "自定資料庫要進行媒體掃描的資料夾" - </voice> -</phrase> -<phrase> - id: LANG_USE_SHORTCUTS_INSTEAD_OF_QS - desc: in settings_menu. - user: core - <source> - *: none - quickscreen: "Use Shortcuts Menu Instead of Quick Screen" - </source> - <dest> - *: none - quickscreen: "使用快捷選單替代快捷熒幕" - </dest> - <voice> - *: none - quickscreen: "使用快捷選單替代快捷熒幕" - </voice> -</phrase> -<phrase> - id: LANG_RADIOSCREEN - desc: in the theme menu - user: core - <source> - *: none - radio: "Radio Screen" - </source> - <dest> - *: none - radio: "收音機接口主題" - </dest> - <voice> - *: none - radio: "收音機接口主題" - </voice> -</phrase> -<phrase> - id: LANG_BASE_SKIN - desc: browse for the base skin in theme settings - user: core - <source> - *: "Base Skin" - </source> - <dest> - *: "狀態列佈景主題" - </dest> - <voice> - *: "狀態列佈景主題" - </voice> -</phrase> -<phrase> - id: LANG_SCROLLBAR_WIDTH - desc: in Settings -> General -> Display -> Status-/Scrollbar - user: core - <source> - *: "Scroll Bar Width" - </source> - <dest> - *: "捲動軸寬度" - </dest> - <voice> - *: "捲動軸寬度" - </voice> -</phrase> -<phrase> - id: LANG_PAUSE_REWIND - desc: Seconds to rewind when rewind on pause is enabled. - user: core - <source> - *: "Rewind on Pause" - </source> - <dest> - *: "暫停時自動倒退" - </dest> - <voice> - *: "暫停時自動倒退" - </voice> -</phrase> -<phrase> - id: LANG_RESUME_REWIND - desc: in playback settings menu - user: core - <source> - *: "Rewind Before Resume" - </source> - <dest> - *: "暫停時自動倒退長度" - </dest> - <voice> - *: "暫停時自動倒退長度" - </voice> -</phrase> -<phrase> - id: LANG_FILTER_ROLL_OFF + id: LANG_COMPRESSOR desc: in sound settings user: core <source> - *: none - filter_roll_off: "DAC's filter roll-off" + *: "Compressor" </source> <dest> - *: none - filter_roll_off: "DAC濾波器滾降" + *: "壓縮器" </dest> <voice> - *: none - filter_roll_off: "DAC濾波器滾降" + *: "壓縮器" </voice> </phrase> <phrase> - id: LANG_FILTER_SHARP + id: LANG_COMPRESSOR_RATIO desc: in sound settings user: core <source> - *: none - filter_roll_off: "Sharp" + *: "Ratio" </source> <dest> - *: none - filter_roll_off: "快速" + *: "壓縮比例" </dest> <voice> - *: none - filter_roll_off: "快速滾降" + *: "壓縮比例" </voice> </phrase> <phrase> - id: LANG_FILTER_SLOW + id: LANG_COMPRESSOR_RELEASE desc: in sound settings user: core <source> - *: none - filter_roll_off: "Slow" + *: "Release Time" </source> <dest> - *: none - filter_roll_off: "平緩" + *: "壓縮釋放時間" </dest> <voice> - *: none - filter_roll_off: "平緩滾降" + *: "壓縮釋放時間" </voice> </phrase> <phrase> - id: LANG_PBE + id: LANG_COMPRESSOR_THRESHOLD desc: in sound settings user: core <source> - *: "Perceptual Bass Enhancement" + *: "Threshold" </source> <dest> - *: "感知性低音增強" + *: "閥值" </dest> <voice> - *: "感知性低音增強音效" + *: "閥值" </voice> </phrase> <phrase> - id: LANG_AFR + id: LANG_COMPRESSOR_GAIN desc: in sound settings user: core <source> - *: "Auditory Fatigue Reduction" - </source> - <dest> - *: "聲學抗疲勞" - </dest> - <voice> - *: "聲學抗疲勞音效" - </voice> -</phrase> -<phrase> - id: LANG_SURROUND - desc: in the sound settings menu - user: core - <source> - *: "Haas Surround" + *: "Makeup Gain" </source> <dest> - *: "哈斯環繞" + *: "增益" </dest> <voice> - *: "哈斯環繞音效" + *: "增益" </voice> </phrase> <phrase> - id: LANG_SURROUND_FX1 + id: LANG_COMPRESSOR_KNEE desc: in sound settings user: core <source> - *: "f(x1)" + *: "Knee" </source> <dest> - *: "f(x1)" + *: "拐點" </dest> <voice> - *: "f(x1)" + *: "拐點" </voice> </phrase> <phrase> - id: LANG_SURROUND_FX2 + id: LANG_COMPRESSOR_SOFT_KNEE desc: in sound settings user: core <source> - *: "f(x2)" + *: "Soft Knee" </source> <dest> - *: "f(x2)" + *: "軟拐點" </dest> <voice> - *: "f(x2)" + *: "軟拐點" </voice> </phrase> <phrase> - id: LANG_SURROUND_METHOD2 + id: LANG_COMPRESSOR_HARD_KNEE desc: in sound settings user: core <source> - *: "SIDE ONLY" + *: "Hard Knee" </source> <dest> - *: "SIDE ONLY" + *: "硬拐點" </dest> <voice> - *: "SIDE ONLY" + *: "硬拐點" </voice> </phrase> <phrase> - id: LANG_SURROUND_MIX + id: LANG_AUTO desc: in sound settings user: core <source> - *: "Dry / Wet Mix" - </source> - <dest> - *: "乾濕混合度" - </dest> - <voice> - *: "乾濕混合度" - </voice> -</phrase> -<phrase> - id: LANG_IBASSO_FREQ_SCALING_GOVERNOR - desc: in Settings -> General -> System -> Freq Scaling Governor - user: core - <source> - *: none - ibassodx50,ibassodx90: "Freq Scaling Governor" - </source> - <dest> - *: none - ibassodx50,ibassodx90: "CPU頻率管理器" - </dest> - <voice> - *: none - ibassodx50,ibassodx90: "CPU頻率管理器" - </voice> -</phrase> -<phrase> - id: LANG_USB_MODE - desc: in Settings -> General -> System -> USB Mode - user: core - <source> - *: "USB Mode" - </source> - <dest> - *: "USB模式" - </dest> - <voice> - *: "USB模式" - </voice> -</phrase> -<phrase> - id: LANG_USB_MODE_MASS_STORAGE - desc: in Settings -> General -> System -> USB Mode: Mass Storage - user: core - <source> - *: "Mass Storage" - </source> - <dest> - *: "大容量存儲" - </dest> - <voice> - *: "大容量存儲" - </voice> -</phrase> -<phrase> - id: LANG_USB_MODE_CHARGE - desc: in Settings -> General -> System -> USB Mode: Charge Only - user: core - <source> - *: "Charge Only" - </source> - <dest> - *: "僅充電" - </dest> - <voice> - *: "僅充電" - </voice> -</phrase> -<phrase> - id: LANG_USB_MODE_ADB - desc: in Settings -> General -> System -> USB Mode: Android Debug Bridge - user: core - <source> - *: "Android Debug Bridge" + *: "Auto" </source> <dest> - *: "ADB偵錯" + *: "自動" </dest> <voice> - *: "ADB偵錯" + *: "自動" </voice> </phrase> <phrase> - id: LANG_STATUSBAR_BOTTOM - desc: in Settings -> General -> Display -> statusbar + id: LANG_TIMESTRETCH + desc: timestretch enable user: core <source> - *: "Bottom" + *: "Timestretch" </source> <dest> - *: "底部" + *: "時間伸縮" </dest> <voice> - *: "Bottom" + *: "時間伸縮" </voice> </phrase> <phrase> - id: LANG_LEFT - desc: Generic use of 'left' + id: LANG_RESUME_REWIND + desc: in playback settings menu user: core <source> - *: "Left" + *: "Rewind Before Resume" </source> <dest> - *: "Left" + *: "暫停時自動倒退長度" </dest> <voice> - *: "Left" + *: "暫停時自動倒退長度" </voice> </phrase> <phrase> - id: LANG_LIST_SEPARATOR - desc: line between lines in lists + id: LANG_PAUSE_REWIND + desc: Seconds to rewind when rewind on pause is enabled. user: core <source> - *: "Line Separator" + *: "Rewind on Pause" </source> <dest> - *: "分隔行" + *: "暫停時自動倒退" </dest> <voice> - *: "Line Separator" + *: "暫停時自動倒退" </voice> </phrase> <phrase> - id: LANG_SKIP_OUTRO - desc: skipping to the 5 seconds before the end of a track + id: LANG_REPLAYGAIN + desc: in replaygain user: core <source> - *: "Skip to Outro" + *: "Replaygain" </source> <dest> - *: "快轉" + *: "播放增益" </dest> <voice> - *: "Skip to Outro" + *: "播放增益" </voice> </phrase> <phrase> - id: LANG_COMPRESSOR_THRESHOLD - desc: in sound settings + id: LANG_RESET_START_DIR + desc: reset the browser start directory user: core <source> - *: "Threshold" + *: "Start File Browser at /" </source> <dest> - *: "閾" + *: "復原檔案瀏覽起始位置" </dest> <voice> - *: "Threshold" + *: "復原檔案瀏覽起始位置" </voice> </phrase> <phrase> - id: LANG_FM_STATION_HEADER - desc: in radio screen + id: LANG_SELECT_DATABASE_DIRS + desc: in settings_menu user: core <source> - *: none - radio: "Station:" + *: "Select directories to scan" </source> <dest> - *: none - radio: "Station:" + *: "自定要掃描的資料夾" </dest> <voice> - *: none - radio: "" + *: "自定資料庫要進行媒體掃描的資料夾" </voice> </phrase> <phrase> - id: LANG_HW_EQ_WIDTH_WIDE - desc: in sound_menu, hardware equalizer tone controls wide bandwidth setting + id: LANG_PM_RELEASE + desc: in the peak meter menu user: core <source> - *: none - gigabeats,samsungypr1: "Wide" + *: "Peak Release" </source> <dest> - *: none - gigabeats,samsungypr1: "寬" + *: "峰值釋放速度" </dest> <voice> - *: none - gigabeats,samsungypr1: "Wide" + *: "峰值釋放速度" </voice> </phrase> <phrase> - id: LANG_TOP_QS_ITEM - desc: used for the submenu name for the quickscreen items + id: LANG_TOUCHSCREEN_SETTINGS + desc: in Settings -> General -> Display menu user: core <source> *: none - quickscreen: "Set as Top Quickscreen Item" + touchscreen: "Touchscreen Settings" </source> <dest> *: none - quickscreen: "Set as Top Quickscreen Item" + touchscreen: "觸控面板設定" </dest> <voice> *: none - quickscreen: "Set as Top Quickscreen Item" + touchscreen: "觸控面板設定" </voice> </phrase> <phrase> @@ -11527,546 +10615,132 @@ </source> <dest> *: none - touchscreen: "Line Padding in Lists" - </dest> - <voice> - *: none - touchscreen: "Line Padding in Lists" - </voice> -</phrase> -<phrase> - id: LANG_SEMITONE - desc: - user: core - <source> - *: none - pitchscreen: "Semitone" - </source> - <dest> - *: none - pitchscreen: "半音" - </dest> - <voice> - *: none - pitchscreen: "Semitone" - </voice> -</phrase> -<phrase> - id: LANG_QUEUE_LAST_SHUFFLED - desc: in onplay menu. queue a playlist randomly at end of dynamic playlist - user: core - <source> - *: "Queue Last Shuffled" - </source> - <dest> - *: "Queue Last Shuffled" - </dest> - <voice> - *: "Queue Last Shuffled" - </voice> -</phrase> -<phrase> - id: LANG_AUTOMATIC - desc: generic automatic - user: core - <source> - *: "Automatic" - </source> - <dest> - *: "自動" - </dest> - <voice> - *: "Automatic" - </voice> -</phrase> -<phrase> - id: LANG_REMOTE_BASE_SKIN - desc: browse for the base skin in theme settings - user: core - <source> - *: "Remote Base Skin" - </source> - <dest> - *: "Remote Base Skin" - </dest> - <voice> - *: "Remote Base Skin" - </voice> -</phrase> -<phrase> - id: LANG_KBD_OK - desc: in keyboard - user: core - <source> - *: none - touchscreen: "OK" - </source> - <dest> - *: none - touchscreen: "OK" + touchscreen: "列表行間填充" </dest> <voice> *: none - touchscreen: "OK" - </voice> -</phrase> -<phrase> - id: LANG_NEXT_TRACK - desc: Shown in WPS - user: core - <source> - *: "Next Track:" - </source> - <dest> - *: "下一首:" - </dest> - <voice> - *: "Next Track:" + touchscreen: "列表行間填充" </voice> </phrase> <phrase> - id: LANG_REMOTE_SCREEN - desc: in the main menu - user: core - <source> - *: none - remote: "Remote Screen" - </source> - <dest> - *: none - remote: "Remote Screen" - </dest> - <voice> - *: none - remote: "Remote Screen" - </voice> -</phrase> -<phrase> - id: LANG_DEADZONE - desc: touchpad deadzone setting - user: core - <source> - *: none - sansafuzeplus: "Touchpad Dead Zone" - </source> - <dest> - *: none - sansafuzeplus: "觸控板盲區" - </dest> - <voice> - *: none - sansafuzeplus: "Touchpad Dead Zone" - </voice> -</phrase> -<phrase> - id: LANG_INSERT_LAST_SHUFFLED - desc: in onplay menu. insert a playlist randomly at end of dynamic playlist - user: core - <source> - *: "Insert Last Shuffled" - </source> - <dest> - *: "Insert Last Shuffled" - </dest> - <voice> - *: "Insert Last Shuffled" - </voice> -</phrase> -<phrase> - id: LANG_COMPRESSOR_RATIO_LIMIT - desc: in sound settings - user: core - <source> - *: "Limit" - </source> - <dest> - *: "Limit" - </dest> - <voice> - *: "Limit" - </voice> -</phrase> -<phrase> - id: LANG_SYSFONT_EQUALIZER_BAND_Q - desc: in the equalizer settings menu - user: core - <source> - *: "Q" - </source> - <dest> - *: "品質因數" - </dest> - <voice> - *: "Q" - </voice> -</phrase> -<phrase> - id: LANG_COMPRESSOR - desc: in sound settings - user: core - <source> - *: "Compressor" - </source> - <dest> - *: "壓縮" - </dest> - <voice> - *: "Compressor" - </voice> -</phrase> -<phrase> - id: LANG_CROSSFEED_MEIER - desc: in sound settings - user: core - <source> - *: "Simple (Meier)" - </source> - <dest> - *: "Simple (Meier)" - </dest> - <voice> - *: "Simple" - </voice> -</phrase> -<phrase> - id: LANG_HW_EQ_FREQUENCY - desc: in sound_menu, hardware equalizer tone controls shelf filter cutoff frequency - user: core - <source> - *: none - gigabeats,samsungypr1: "Band %d Frequency" - </source> - <dest> - *: none - gigabeats,samsungypr1: "Band %d 頻率" - </dest> - <voice> - *: none - gigabeats,samsungypr1: "Band Frequency" - </voice> -</phrase> -<phrase> - id: VOICE_EXT_RFMS - desc: spoken only, for file extension - user: core - <source> - *: none - radio_remote: "" - </source> - <dest> - *: none - radio_remote: "" - </dest> - <voice> - *: none - radio_remote: "remote radio screen skin" - </voice> -</phrase> -<phrase> - id: VOICE_EXT_RSBS - desc: spoken only, for file extension + id: LANG_LIST_SEPARATOR + desc: line between lines in lists user: core <source> - *: none - remote: "" + *: "Line Separator" </source> <dest> - *: none - remote: "" + *: "行分隔線" </dest> <voice> - *: none - remote: "remote statusbar skin" + *: "行分隔線" </voice> </phrase> <phrase> - id: LANG_COMPRESSOR_RATIO_10 - desc: in sound settings + id: LANG_LIST_SEPARATOR_COLOR + desc: line between lines in lists user: core <source> - *: "10:1" + *: "Line Separator Colour" </source> <dest> - *: "10:1" + *: "行分隔線顏色" </dest> <voice> - *: "10 to 1" + *: "Color of Line Separator" </voice> </phrase> <phrase> - id: LANG_SCROLLBAR_POSITION + id: LANG_SCROLLBAR_WIDTH desc: in Settings -> General -> Display -> Status-/Scrollbar user: core <source> - *: "Scroll Bar Position" - </source> - <dest> - *: "滾動條位置" - </dest> - <voice> - *: "Scroll bar position" - </voice> -</phrase> -<phrase> - id: LANG_COMPRESSOR_KNEE - desc: in sound settings - user: core - <source> - *: "Knee" - </source> - <dest> - *: "Knee" - </dest> - <voice> - *: "Knee" - </voice> -</phrase> -<phrase> - id: LANG_STATUSBAR_TOP - desc: in Settings -> General -> Display -> statusbar - user: core - <source> - *: "Top" - </source> - <dest> - *: "頂部" - </dest> - <voice> - *: "Top" - </voice> -</phrase> -<phrase> - id: LANG_COMPRESSOR_RATIO_4 - desc: in sound settings - user: core - <source> - *: "4:1" - </source> - <dest> - *: "4:1" - </dest> - <voice> - *: "4 to 1" - </voice> -</phrase> -<phrase> - id: LANG_KBD_DELETE - desc: in keyboard - user: core - <source> - *: none - touchscreen: "Del" - </source> - <dest> - *: none - touchscreen: "刪除" - </dest> - <voice> - *: none - touchscreen: "Del" - </voice> -</phrase> -<phrase> - id: LANG_COMPRESSOR_SOFT_KNEE - desc: in sound settings - user: core - <source> - *: "Soft Knee" - </source> - <dest> - *: "軟拐點" - </dest> - <voice> - *: "Soft Knee" - </voice> -</phrase> -<phrase> - id: LANG_FM_OTHER - desc: Catch-all FM region. Select if none of the others work - user: core - <source> - *: none - radio: "Other" - </source> - <dest> - *: none - radio: "其他" - </dest> - <voice> - *: none - radio: "Other" - </voice> -</phrase> -<phrase> - id: LANG_HW_EQ_TONE_CONTROLS_ADVANCED - desc: in sound_menu, advanced settings for hardware equalizer tone controls - user: core - <source> - *: none - gigabeats,samsungypr1: "Advanced Tone Control Settings" - </source> - <dest> - *: none - gigabeats,samsungypr1: "進階音調控制設置" - </dest> - <voice> - *: none - gigabeats,samsungypr1: "Advanced Tone Control Settings" - </voice> -</phrase> -<phrase> - id: LANG_CODEPAGE_WESTERN_EUROPEAN - desc: in codepage setting menu - user: core - <source> - *: "Western European (CP1252)" - </source> - <dest> - *: "西歐 (CP1252)" - </dest> - <voice> - *: "Western European" - </voice> -</phrase> -<phrase> - id: LANG_COMPRESSOR_GAIN - desc: in sound settings - user: core - <source> - *: "Makeup Gain" - </source> - <dest> - *: "Makeup Gain" - </dest> - <voice> - *: "Makeup Gain" - </voice> -</phrase> -<phrase> - id: LANG_HW_EQ_WIDTH_NARROW - desc: in sound_menu, hardware equalizer tone controls narrow bandwith setting - user: core - <source> - *: none - gigabeats,samsungypr1: "Narrow" - </source> - <dest> - *: none - gigabeats,samsungypr1: "Narrow" - </dest> - <voice> - *: none - gigabeats,samsungypr1: "Narrow" - </voice> -</phrase> -<phrase> - id: LANG_SAVE_CHANGES - desc: When you try to exit screens to confirm save - user: core - <source> - *: "Save Changes?" + *: "Scroll Bar Width" </source> <dest> - *: "儲存變更?" + *: "捲動軸寬度" </dest> <voice> - *: "Save Changes?" + *: "捲動軸寬度" </voice> </phrase> <phrase> - id: LANG_MAIN_SCREEN - desc: in the main menu + id: LANG_CONSTRAIN_NEXT_FOLDER + desc: in settings_menu. Whether LANG_NEXT_FOLDER should be constrained to directories within LANG_SET_AS_START_DIR user: core <source> - *: none - remote: "Main Screen" + *: "Constrain Auto-Change" </source> <dest> - *: none - remote: "主畫面" + *: "限制自動跳轉" </dest> <voice> - *: none - remote: "Main Screen" + *: "限制自動跳轉" </voice> </phrase> <phrase> - id: LANG_HISTOGRAM_INTERVAL - desc: in record settings menu + id: LANG_HOTKEY + desc: hotkey menu user: core <source> *: none - histogram: "Histogram interval" + hotkey: "Hotkey" </source> <dest> *: none - histogram: "Histogram interval" + hotkey: "熱鍵" </dest> <voice> *: none - histogram: "Histogram interval" + hotkey: "熱鍵" </voice> </phrase> <phrase> - id: LANG_STATUSBAR_CUSTOM - desc: if this translation is compatible with LANG_CHANNEL_CUSTOM, then please use the same translation. it can be combined later then - user: core - <source> - *: "Custom" - </source> - <dest> - *: "自訂" - </dest> - <voice> - *: "Custom" - </voice> -</phrase> -<phrase> - id: LANG_KBD_CANCEL - desc: in keyboard + id: LANG_HOTKEY_FILE_BROWSER + desc: hotkey menu user: core <source> *: none - touchscreen: "Cancel" + hotkey: "File Browser Hotkey" </source> <dest> *: none - touchscreen: "取消" + hotkey: "檔案瀏覽器的熱鍵" </dest> <voice> *: none - touchscreen: "Cancel" + hotkey: "檔案瀏覽器的熱鍵" </voice> </phrase> <phrase> - id: VOICE_EXT_FMS - desc: spoken only, for file extension + id: LANG_HOTKEY_WPS + desc: hotkey menu user: core <source> *: none - radio: "" + hotkey: "WPS Hotkey" </source> <dest> *: none - radio: "" + hotkey: "音樂播放介面熱鍵" </dest> <voice> *: none - radio: "radio screen skin" + hotkey: "音樂播放介面熱鍵" </voice> </phrase> <phrase> - id: LANG_COMPRESSOR_RATIO_2 - desc: in sound settings + id: LANG_SET_AS_START_DIR + desc: used in the onplay menu to set a starting browser dir user: core <source> - *: "2:1" + *: "Start File Browser Here" </source> <dest> - *: "2:1" + *: "設爲起始檔案瀏覽位置" </dest> <voice> - *: "2 to 1" + *: "設爲起始檔案瀏覽位置" </voice> </phrase> <phrase> @@ -12077,877 +10751,489 @@ *: "Current Playlist" </source> <dest> - *: "當前播放列表" + *: "當前播放清單" </dest> <voice> - *: "Current Playlist" + *: "當前播放清單" </voice> </phrase> <phrase> - id: LANG_TAGNAVI_UNTAGGED - desc: "<untagged>" entry in tag browser - user: core - <source> - *: "<Untagged>" - </source> - <dest> - *: "<Untagged>" - </dest> - <voice> - *: "Untagged" - </voice> -</phrase> -<phrase> - id: LANG_BROWSER_MODE - desc: in settings_menu - user: core - <source> - *: none - usb_hid: "Browser" - </source> - <dest> - *: none - usb_hid: "瀏覽" - </dest> - <voice> - *: none - usb_hid: "Browser" - </voice> -</phrase> -<phrase> - id: LANG_COMPRESSOR_HARD_KNEE - desc: in sound settings - user: core - <source> - *: "Hard Knee" - </source> - <dest> - *: "硬拐點" - </dest> - <voice> - *: "Hard Knee" - </voice> -</phrase> -<phrase> - id: LANG_REMOTE_RADIOSCREEN - desc: in the theme menu - user: core - <source> - *: none - radio_remote: "Remote Radio Screen" - </source> - <dest> - *: none - radio_remote: "Remote Radio Screen" - </dest> - <voice> - *: none - radio_remote: "Remote Radio Screen" - </voice> -</phrase> -<phrase> - id: VOICE_EXT_SBS - desc: spoken only, for file extension + id: LANG_INSERT_LAST_SHUFFLED + desc: in onplay menu. insert a playlist randomly at end of dynamic playlist user: core <source> - *: "" + *: "Insert Last Shuffled" </source> <dest> - *: "" + *: "隨機插入到播放清單最後位置" </dest> <voice> - *: "statusbar skin" + *: "隨機插入到播放清單最後位置" </voice> </phrase> <phrase> - id: LANG_USB_HID - desc: in settings_menu + id: LANG_QUEUE_LAST_SHUFFLED + desc: in onplay menu. queue a playlist randomly at end of dynamic playlist user: core <source> - *: none - usb_hid: "USB HID" + *: "Queue Last Shuffled" </source> <dest> - *: none - usb_hid: "USB人性化介面" + *: "清單播放完畢後重新隨機隊列" </dest> <voice> - *: none - usb_hid: "USB Human Interface Device" + *: "清單播放完畢後重新隨機隊列" </voice> </phrase> <phrase> - id: LANG_TOUCHSCREEN_CALIBRATE - desc: in Settings -> General -> Display -> Touchscreen Settings + id: LANG_SET_AS_PLAYLISTCAT_DIR + desc: used in the onplay menu to set a playlist catalogue dir user: core <source> - *: none - touchscreen: "Calibrate" + *: "Set As Playlist Catalogue Directory" </source> <dest> - *: none - touchscreen: "校準" + *: "設定為播放清單目錄位置" </dest> <voice> - *: none - touchscreen: "Calibrate" + *: "設定為播放清單目錄位置" </voice> </phrase> <phrase> - id: LANG_PLAYBACK_RATE - desc: "rate" in pitch screen + id: LANG_VOLUME_LIMIT + desc: in sound_settings user: core <source> - *: none - pitchscreen: "Rate" + *: "Maximum Volume Limit" </source> <dest> - *: none - pitchscreen: "速率" + *: "音量限制" </dest> <voice> - *: none - pitchscreen: "Rate" + *: "音量限制" </voice> </phrase> <phrase> - id: LANG_MOUSE_MODE - desc: in settings_menu + id: LANG_STARTUP_SHUTDOWN + desc: in the general settings menu user: core <source> - *: none - usb_hid: "Mouse" + *: "Startup/Shutdown" </source> <dest> - *: none - usb_hid: "滑鼠" + *: "開機/關機" </dest> <voice> - *: none - usb_hid: "Mouse" + *: "開機和關機" </voice> </phrase> <phrase> - id: LANG_COMPRESSOR_ATTACK - desc: in sound settings + id: LANG_SLEEP_TIMER_START_CURRENT + desc: shown when a sleep timer isn't running user: core <source> - *: "Attack Time" + *: "Start Sleep Timer" </source> <dest> - *: "Attack Time" + *: "啓動睡眠計時器" </dest> <voice> - *: "Attack Time" + *: "啓動睡眠計時器" </voice> </phrase> <phrase> - id: LANG_MORSE_INPUT - desc: in Settings -> System + id: LANG_SLEEP_TIMER_CANCEL_CURRENT + desc: shown instead of sleep timer when it's running user: core <source> - *: none - morse_input: "Use Morse Code Input" + *: "Cancel Sleep Timer" </source> <dest> - *: none - morse_input: "Use Morse Code Input" + *: "停止睡眠計時器" </dest> <voice> - *: none - morse_input: "Use Morse Code Input" + *: "停止睡眠計時器" </voice> </phrase> <phrase> - id: LANG_FM_RSSI - desc: Signal strength of a received FM station + id: LANG_SLEEP_TIMER_DURATION + desc: default sleep timer duration in minutes user: core <source> - *: none - radio: "Signal strength:" + *: "Default Sleep Timer Duration" </source> <dest> - *: none - radio: "信號強度:" + *: "睡眠倒計時長度" </dest> <voice> - *: none - radio: "Signal strength:" + *: "睡眠倒計時長度" </voice> </phrase> <phrase> - id: LANG_COMPRESSOR_RELEASE - desc: in sound settings + id: LANG_SLEEP_TIMER_ON_POWER_UP + desc: whether sleep timer starts on power up user: core <source> - *: "Release Time" + *: "Start Sleep Timer On Boot" </source> <dest> - *: "釋放時間" + *: "開機即啓動睡眠計時" </dest> <voice> - *: "Release Time" + *: "開機後立即啓動睡眠計時" </voice> </phrase> <phrase> - id: LANG_FM_ITALY - desc: fm region Italy + id: LANG_KEYPRESS_RESTARTS_SLEEP_TIMER + desc: whether to restart running sleep timer on keypress user: core <source> - *: none - radio: "Italy" + *: "Restart Sleep Timer On Keypress" </source> <dest> - *: none - radio: "義大利" + *: "偵測到按鍵時重置睡眠計時器" </dest> <voice> - *: none - radio: "Italy" + *: "偵測到按鍵時重置睡眠計時器" </voice> </phrase> <phrase> - id: LANG_FORCE - desc: alternative to yes/no for tristate settings + id: LANG_AUTORESUME + desc: resume settings menu user: core <source> - *: "Force" + *: "Automatic resume" </source> <dest> - *: "Force" + *: "單檔案斷點續撥" </dest> <voice> - *: "Force" + *: "爲每個檔案保存斷點續撥" </voice> </phrase> <phrase> - id: LANG_HW_EQ_TONE_CONTROLS - desc: in sound_menu, hardware equalizer tone controls + id: LANG_AUTORESUME_AUTOMATIC + desc: resume on automatic track change user: core <source> - *: none - gigabeats,samsungypr1: "Tone Controls" + *: "Resume on automatic track change" </source> <dest> - *: none - gigabeats,samsungypr1: "音調控制" + *: "曲目自動跳轉時斷點續撥" </dest> <voice> - *: none - gigabeats,samsungypr1: "Tone Controls" + *: "曲目自動跳轉時斷點續撥" </voice> </phrase> <phrase> - id: LANG_AUTOTRACKSKIP - desc: in crossfade settings + id: LANG_AUTORESUME_CUSTOM + desc: enable customization of resume on automatic track change user: core <source> - *: none - crossfade: "Automatic Track Change Only" + *: "In custom directories only" </source> <dest> - *: none - crossfade: "Automatic Track Change Only" + *: "僅針對自定資料夾中的檔案" </dest> <voice> - *: none - crossfade: "Automatic Track Change Only" + *: "僅針對自定資料夾中的檔案" </voice> </phrase> <phrase> - id: LANG_USB_KEYPAD_MODE - desc: in settings_menu + id: LANG_SET_AS_START_DIR + desc: used in the onplay menu to set a starting browser dir user: core <source> - *: none - usb_hid: "USB Keypad Mode" + *: "Start File Browser Here" </source> <dest> - *: none - usb_hid: "USB Keypad Mode" + *: "設爲起始檔案瀏覽位置" </dest> <voice> - *: none - usb_hid: "USB Keypad Mode" + *: "設爲起始檔案瀏覽位置" </voice> </phrase> <phrase> - id: LANG_SELECT_FOLDER - desc: in settings_menu + id: LANG_RESET_START_DIR + desc: reset the browser start directory user: core <source> - *: "Select one or more directories" + *: "Start File Browser at /" </source> <dest> - *: "選擇一個或多個目錄" + *: "復原檔案瀏覽起始位置" </dest> <voice> - *: "Select one or more directories" + *: "復原檔案瀏覽起始位置" </voice> </phrase> <phrase> - id: LANG_USB_SKIP_FIRST_DRIVE + id: LANG_SELECT_DATABASE_DIRS desc: in settings_menu user: core <source> - *: none - multidrive_usb: "USB Hide Internal Drive" - </source> - <dest> - *: none - multidrive_usb: "USB Hide Internal Drive" - </dest> - <voice> - *: none - multidrive_usb: "USB Hide Internal Drive" - </voice> -</phrase> -<phrase> - id: LANG_HW_EQ_WIDTH - desc: in sound_menu, hardware equalizer tone controls peak bandwith setting - user: core - <source> - *: none - gigabeats,samsungypr1: "Band %d Width" - </source> - <dest> - *: none - gigabeats,samsungypr1: "Band %d 寬" - </dest> - <voice> - *: none - gigabeats,samsungypr1: "Band Width" - </voice> -</phrase> -<phrase> - id: LANG_CONSTRAIN_NEXT_FOLDER - desc: in settings_menu. Whether LANG_NEXT_FOLDER should be constrained to directories within LANG_SET_AS_START_DIR - user: core - <source> - *: "Constrain Auto-Change" - </source> - <dest> - *: "Constrain Auto-Change" - </dest> - <voice> - *: "Constrain Auto-Change" - </voice> -</phrase> -<phrase> - id: LANG_HW_EQ_GAIN - desc: in sound_menu, hardware equalizer tone controls filter gain - user: core - <source> - *: none - gigabeats,samsungypr1: "Band %d Gain" - </source> - <dest> - *: none - gigabeats,samsungypr1: "Band %d 增益" - </dest> - <voice> - *: none - gigabeats,samsungypr1: "Band Gain" - </voice> -</phrase> -<phrase> - id: LANG_SPEED - desc: timestretch speed - user: core - <source> - *: "Speed" - </source> - <dest> - *: "速度" - </dest> - <voice> - *: "" - </voice> -</phrase> -<phrase> - id: LANG_TIMESTRETCH - desc: timestretch enable - user: core - <source> - *: "Timestretch" + *: "Select directories to scan" </source> <dest> - *: "Timestretch" + *: "自定要掃描的資料夾" </dest> <voice> - *: "Timestretch" + *: "自定資料庫要進行媒體掃描的資料夾" </voice> </phrase> <phrase> - id: LANG_STRETCH_LIMIT - desc: "limit" in pitch screen + id: LANG_USE_SHORTCUTS_INSTEAD_OF_QS + desc: in settings_menu. user: core <source> *: none - pitchscreen: "Limit" + quickscreen: "Use Shortcuts Menu Instead of Quick Screen" </source> <dest> *: none - pitchscreen: "Limit" + quickscreen: "使用快捷選單替代快捷熒幕" </dest> <voice> *: none - pitchscreen: "Limit" + quickscreen: "使用快捷選單替代快捷熒幕" </voice> </phrase> <phrase> - id: LANG_TOUCHSCREEN_RESET_CALIBRATION - desc: in Settings -> General -> Display -> Touchscreen Settings + id: LANG_RADIOSCREEN + desc: in the theme menu user: core <source> *: none - touchscreen: "Reset Calibration" + radio: "Radio Screen" </source> <dest> *: none - touchscreen: "復位校準" + radio: "收音機接口主題" </dest> <voice> *: none - touchscreen: "Reset Calibration" - </voice> -</phrase> -<phrase> - id: LANG_SHORTCUTS - desc: Title in the shortcuts menu - user: core - <source> - *: "Shortcuts" - </source> - <dest> - *: "快捷" - </dest> - <voice> - *: "Shortcuts" - </voice> -</phrase> -<phrase> - id: LANG_ONPLAY_PICTUREFLOW - desc: Onplay pictureflow - user: core - <source> - *: "PictureFlow" - </source> - <dest> - *: "PictureFlow" - </dest> - <voice> - *: "open picture flow" - </voice> -</phrase> -<phrase> - id: LANG_RIGHT - desc: Generic use of 'right' - user: core - <source> - *: "Right" - </source> - <dest> - *: "right" - </dest> - <voice> - *: "Right" + radio: "收音機接口主題" </voice> </phrase> <phrase> - id: LANG_HOTKEY_FILE_BROWSER - desc: hotkey menu + id: LANG_BASE_SKIN + desc: browse for the base skin in theme settings user: core <source> - *: none - hotkey: "File Browser Hotkey" + *: "Base Skin" </source> <dest> - *: none - hotkey: "檔案瀏覽器快捷鍵" + *: "狀態列佈景主題" </dest> <voice> - *: none - hotkey: "File Browser Hotkey" + *: "狀態列佈景主題" </voice> </phrase> <phrase> - id: LANG_ID3_COMPOSER - desc: in tag viewer + id: LANG_SCROLLBAR_WIDTH + desc: in Settings -> General -> Display -> Status-/Scrollbar user: core <source> - *: "Composer" + *: "Scroll Bar Width" </source> <dest> - *: "作曲家" + *: "捲動軸寬度" </dest> <voice> - *: "" + *: "捲動軸寬度" </voice> </phrase> <phrase> - id: LANG_SYSFONT_GAIN - desc: in the equalizer settings menu + id: LANG_PAUSE_REWIND + desc: Seconds to rewind when rewind on pause is enabled. user: core <source> - *: "Gain" + *: "Rewind on Pause" </source> |