summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore74
-rw-r--r--apps/action.h2
-rw-r--r--apps/debug_menu.c25
-rw-r--r--apps/features.txt2
-rw-r--r--apps/filetree.c13
-rw-r--r--apps/gui/bitmap/list.c206
-rw-r--r--apps/gui/folder_select.c429
-rw-r--r--apps/gui/list.c9
-rw-r--r--apps/gui/list.h30
-rw-r--r--apps/gui/option_select.c62
-rw-r--r--apps/gui/option_select.h9
-rw-r--r--apps/gui/pitchscreen.c1055
-rw-r--r--apps/gui/quickscreen.c52
-rw-r--r--apps/gui/skin_engine/skin_engine.c3
-rw-r--r--apps/gui/skin_engine/skin_parser.c4
-rw-r--r--apps/gui/skin_engine/skin_tokens.c4
-rw-r--r--apps/gui/statusbar.c12
-rw-r--r--apps/gui/statusbar.h3
-rw-r--r--apps/gui/wps.c4
-rw-r--r--apps/keymaps/keymap-agptekrocker.c1
-rw-r--r--apps/keymaps/keymap-c200.c1
-rw-r--r--apps/keymaps/keymap-clip.c1
-rw-r--r--apps/keymaps/keymap-creativezv.c2
-rw-r--r--apps/keymaps/keymap-creativezvm.c2
-rw-r--r--apps/keymaps/keymap-e200.c1
-rw-r--r--apps/keymaps/keymap-erosq.c4
-rw-r--r--apps/keymaps/keymap-fiiom3k.c59
-rw-r--r--apps/keymaps/keymap-fiiom3klinux.c1
-rw-r--r--apps/keymaps/keymap-fuze.c1
-rw-r--r--apps/keymaps/keymap-fuzeplus.c1
-rw-r--r--apps/keymaps/keymap-gigabeat-s.c2
-rw-r--r--apps/keymaps/keymap-gigabeat.c2
-rw-r--r--apps/keymaps/keymap-h10.c1
-rw-r--r--apps/keymaps/keymap-h1x0_h3x0.c2
-rw-r--r--apps/keymaps/keymap-hdd1630.c2
-rw-r--r--apps/keymaps/keymap-hdd6330.c2
-rw-r--r--apps/keymaps/keymap-hm60x.c1
-rw-r--r--apps/keymaps/keymap-hm801.c1
-rw-r--r--apps/keymaps/keymap-ihifi.c1
-rw-r--r--apps/keymaps/keymap-ihifi770.c1
-rw-r--r--apps/keymaps/keymap-ihifi800.c1
-rw-r--r--apps/keymaps/keymap-m200.c1
-rw-r--r--apps/keymaps/keymap-ma.c1
-rw-r--r--apps/keymaps/keymap-meizu-m6sl.c2
-rw-r--r--apps/keymaps/keymap-mini2440.c2
-rw-r--r--apps/keymaps/keymap-mr100.c2
-rw-r--r--apps/keymaps/keymap-mr500.c2
-rw-r--r--apps/keymaps/keymap-nwz.c1
-rw-r--r--apps/keymaps/keymap-nwza860.c2
-rw-r--r--apps/keymaps/keymap-sa9200.c1
-rw-r--r--apps/keymaps/keymap-touchscreen.c2
-rw-r--r--apps/keymaps/keymap-xduoox20.c1
-rw-r--r--apps/keymaps/keymap-xduoox3.c1
-rw-r--r--apps/keymaps/keymap-xduoox3ii.c1
-rw-r--r--apps/keymaps/keymap-yh8xx_yh9xx.c1
-rw-r--r--apps/keymaps/keymap-zen.c1
-rw-r--r--apps/keymaps/keymap-zenxfi3.c1
-rw-r--r--apps/lang/arabic.lang8
-rw-r--r--apps/lang/basque.lang6
-rw-r--r--apps/lang/bulgarian.lang10
-rw-r--r--apps/lang/catala.lang6
-rw-r--r--apps/lang/chinese-simp.lang908
-rw-r--r--apps/lang/chinese-trad.lang3389
-rw-r--r--apps/lang/czech.lang17
-rw-r--r--apps/lang/dansk.lang6
-rw-r--r--apps/lang/deutsch.lang10
-rw-r--r--apps/lang/english-us.lang107
-rw-r--r--apps/lang/english.lang141
-rw-r--r--apps/lang/espanol.lang6
-rw-r--r--apps/lang/finnish.lang6
-rw-r--r--apps/lang/francais.lang10
-rw-r--r--apps/lang/galego.lang6
-rw-r--r--apps/lang/greek.lang10
-rw-r--r--apps/lang/hebrew.lang22
-rw-r--r--apps/lang/hrvatski.lang6
-rw-r--r--apps/lang/italiano.lang428
-rw-r--r--apps/lang/japanese.lang10
-rw-r--r--apps/lang/korean.lang6
-rw-r--r--apps/lang/latviesu.lang4
-rw-r--r--apps/lang/lietuviu.lang6
-rw-r--r--apps/lang/magyar.lang6
-rw-r--r--apps/lang/nederlands.lang263
-rw-r--r--apps/lang/norsk-nynorsk.lang6
-rw-r--r--apps/lang/norsk.lang10
-rw-r--r--apps/lang/polski.lang125
-rw-r--r--apps/lang/portugues-brasileiro.lang6
-rw-r--r--apps/lang/portugues.lang8
-rw-r--r--apps/lang/romaneste.lang6
-rw-r--r--apps/lang/russian.lang17
-rw-r--r--apps/lang/slovak.lang17
-rw-r--r--apps/lang/slovenscina.lang6
-rw-r--r--apps/lang/srpski.lang19
-rw-r--r--apps/lang/svenska.lang8
-rw-r--r--apps/lang/tagalog.lang6
-rw-r--r--apps/lang/thai.lang6
-rw-r--r--apps/lang/turkce.lang6753
-rw-r--r--apps/lang/ukrainian.lang6
-rw-r--r--apps/lang/vlaams.lang12
-rw-r--r--apps/lang/walon.lang6
-rw-r--r--apps/main.c2
-rw-r--r--apps/menu.c159
-rw-r--r--apps/menus/display_menu.c19
-rw-r--r--apps/menus/playback_menu.c28
-rw-r--r--apps/menus/plugin_menu.c39
-rw-r--r--apps/menus/settings_menu.c13
-rw-r--r--apps/misc.c5
-rw-r--r--apps/onplay.c38
-rw-r--r--apps/onplay.h2
-rw-r--r--apps/open_plugin.c153
-rw-r--r--apps/open_plugin.h3
-rw-r--r--apps/pcmbuf.c3
-rw-r--r--apps/playback.c114
-rw-r--r--apps/playback.h3
-rw-r--r--apps/playlist.c11
-rw-r--r--apps/playlist_viewer.c37
-rw-r--r--apps/plugin.c24
-rw-r--r--apps/plugin.h33
-rw-r--r--apps/plugins/CATEGORIES3
-rw-r--r--apps/plugins/SOURCES8
-rw-r--r--apps/plugins/announce_status.c21
-rw-r--r--apps/plugins/battery_bench.c24
-rw-r--r--apps/plugins/bitmaps/native/SOURCES4
-rw-r--r--apps/plugins/bitmaps/native/_2048_tiles.26x26x2.bmpbin0 -> 6254 bytes
-rw-r--r--apps/plugins/credits.c26
-rw-r--r--apps/plugins/db_folder_select.c652
-rw-r--r--apps/plugins/imageviewer/gif/gif.c16
-rw-r--r--apps/plugins/imageviewer/gif/gif_decoder.c45
-rw-r--r--apps/plugins/imageviewer/gif/gif_decoder.h1
-rw-r--r--apps/plugins/imageviewer/imageviewer.c8
-rw-r--r--apps/plugins/keybox.c2
-rw-r--r--apps/plugins/lib/SOURCES3
-rw-r--r--apps/plugins/lib/action_helper.c1
-rw-r--r--apps/plugins/lib/action_helper.h34
-rwxr-xr-xapps/plugins/lib/action_helper.pl209
-rw-r--r--apps/plugins/lib/arg_helper.c4
-rw-r--r--apps/plugins/lib/arg_helper.h2
-rw-r--r--apps/plugins/lib/button_helper.c1
-rw-r--r--apps/plugins/lib/button_helper.h38
-rwxr-xr-xapps/plugins/lib/button_helper.pl98
-rw-r--r--apps/plugins/lib/printcell_helper.c528
-rw-r--r--apps/plugins/lib/printcell_helper.h45
-rw-r--r--apps/plugins/lua/rocklib.c11
-rw-r--r--apps/plugins/lua_scripts/dbgettags.lua15
-rw-r--r--apps/plugins/lua_scripts/random_playlist.lua558
-rw-r--r--apps/plugins/pictureflow/pictureflow.c866
-rw-r--r--apps/plugins/pitch_screen.c1279
-rw-r--r--apps/plugins/plugins.make29
-rw-r--r--apps/plugins/properties.c39
-rw-r--r--apps/plugins/puzzles/rockbox.c6
-rw-r--r--apps/plugins/rb_info.c570
-rw-r--r--apps/plugins/solitaire.c2
-rw-r--r--apps/plugins/viewers.config3
-rw-r--r--apps/recorder/keyboard.c43
-rw-r--r--apps/recorder/pcm_record.c48
-rw-r--r--apps/recorder/peakmeter.c2
-rw-r--r--apps/recorder/recording.c245
-rw-r--r--apps/root_menu.c246
-rw-r--r--apps/screens.c14
-rw-r--r--apps/screens.h3
-rw-r--r--apps/settings.c39
-rw-r--r--apps/settings.h36
-rw-r--r--apps/settings_list.c58
-rw-r--r--apps/shortcuts.c36
-rw-r--r--apps/tagcache.c5
-rw-r--r--apps/tagnavi.config10
-rw-r--r--apps/tagtree.c23
-rw-r--r--apps/tree.c20
-rw-r--r--bootloader/x1000.c54
-rw-r--r--docs/CREDITS1
-rw-r--r--docs/PLUGIN_API12
-rw-r--r--firmware/SOURCES4
-rw-r--r--firmware/backlight.c9
-rw-r--r--firmware/drivers/audio/ak4376.c22
-rw-r--r--firmware/drivers/audio/x1000-codec.c286
-rw-r--r--firmware/drivers/axp-pmu.c202
-rw-r--r--firmware/drivers/button.c33
-rw-r--r--firmware/drivers/ft6x06.c64
-rw-r--r--firmware/drivers/lcd-16bit-common.c164
-rw-r--r--firmware/drivers/tuner/si4700.c55
-rw-r--r--firmware/drivers/usb-designware.c34
-rw-r--r--firmware/export/ak4376.h4
-rw-r--r--firmware/export/audiohw.h13
-rw-r--r--firmware/export/axp-pmu.h6
-rw-r--r--firmware/export/button.h2
-rw-r--r--firmware/export/config.h15
-rw-r--r--firmware/export/config/erosqnative.h7
-rw-r--r--firmware/export/config/fiiom3k.h8
-rw-r--r--firmware/export/config/iaudiox5.h1
-rw-r--r--firmware/export/config/ipod6g.h1
-rw-r--r--firmware/export/config/mrobe500.h2
-rw-r--r--firmware/export/config/samsungypr0.h3
-rw-r--r--firmware/export/config/samsungypr1.h3
-rw-r--r--firmware/export/config/sansaclipplus.h6
-rw-r--r--firmware/export/config/shanlingq1.h8
-rw-r--r--firmware/export/events.h12
-rw-r--r--firmware/export/ft6x06.h23
-rw-r--r--firmware/export/i2c-async.h9
-rw-r--r--firmware/export/jz4760b.h5
-rw-r--r--firmware/export/powermgmt.h36
-rw-r--r--firmware/export/si4700.h8
-rw-r--r--firmware/export/x1000-codec.h184
-rw-r--r--firmware/export/x1000.h5
-rw-r--r--firmware/powermgmt.c605
-rw-r--r--firmware/target/arm/as3525/debug-as3525.c4
-rw-r--r--firmware/target/arm/as3525/fmradio-i2c-as3525.c6
-rw-r--r--firmware/target/arm/as3525/system-as3525.c2
-rw-r--r--firmware/target/hosted/ibasso/dx50/adc-target.h (renamed from firmware/target/mips/ingenic_x1000/fiiom3k/powermgmt-target.h)0
-rw-r--r--firmware/target/hosted/ibasso/dx90/adc-target.h0
-rw-r--r--firmware/target/hosted/samsungypr/radio-ypr.c59
-rw-r--r--firmware/target/hosted/sdl/sim-ui-defines.h8
-rw-r--r--firmware/target/hosted/xduoo/button-xduoo.c6
-rw-r--r--firmware/target/mips/ingenic_jz47xx/usb-jz4740.c4
-rw-r--r--firmware/target/mips/ingenic_jz47xx/usb-jz4760.c21
-rw-r--r--firmware/target/mips/ingenic_x1000/aic-x1000.c6
-rw-r--r--firmware/target/mips/ingenic_x1000/clk-x1000.h4
-rw-r--r--firmware/target/mips/ingenic_x1000/debug-x1000.c12
-rw-r--r--firmware/target/mips/ingenic_x1000/erosqnative/boot.make30
-rw-r--r--firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c30
-rw-r--r--firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c2
-rw-r--r--firmware/target/mips/ingenic_x1000/fiiom3k/boot.make30
-rw-r--r--firmware/target/mips/ingenic_x1000/fiiom3k/button-fiiom3k.c5
-rw-r--r--firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c23
-rw-r--r--firmware/target/mips/ingenic_x1000/installer-x1000.c20
-rw-r--r--firmware/target/mips/ingenic_x1000/pcm-x1000.c179
-rw-r--r--firmware/target/mips/ingenic_x1000/sfc-x1000.h4
-rw-r--r--firmware/target/mips/ingenic_x1000/shanlingq1/audiohw-shanlingq1.c2
-rw-r--r--firmware/target/mips/ingenic_x1000/shanlingq1/boot.make31
-rw-r--r--firmware/target/mips/ingenic_x1000/shanlingq1/button-shanlingq1.c83
-rw-r--r--firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c23
-rw-r--r--firmware/target/mips/ingenic_x1000/x1000boot.make43
-rw-r--r--firmware/usb.c11
-rw-r--r--firmware/usbstack/usb_core.c50
-rw-r--r--lib/microtar/.gitignore3
-rw-r--r--lib/microtar/LICENSE1
-rw-r--r--lib/microtar/Makefile25
-rw-r--r--lib/microtar/README.md312
-rw-r--r--lib/microtar/README.rockbox14
-rw-r--r--lib/microtar/mtar.c243
-rw-r--r--lib/microtar/src/microtar-rockbox.c115
-rw-r--r--lib/microtar/src/microtar-rockbox.h29
-rw-r--r--lib/microtar/src/microtar-stdio.c113
-rw-r--r--lib/microtar/src/microtar-stdio.h39
-rw-r--r--lib/microtar/src/microtar.c886
-rw-r--r--lib/microtar/src/microtar.h193
-rw-r--r--lib/x1000-installer/.gitignore5
-rw-r--r--lib/x1000-installer/Makefile82
-rw-r--r--lib/x1000-installer/SOURCES6
-rw-r--r--lib/x1000-installer/include/xf_error.h43
-rw-r--r--lib/x1000-installer/include/xf_flashmap.h91
-rw-r--r--lib/x1000-installer/include/xf_nandio.h130
-rw-r--r--lib/x1000-installer/include/xf_package.h65
-rw-r--r--lib/x1000-installer/include/xf_stream.h64
-rw-r--r--lib/x1000-installer/include/xf_update.h53
-rw-r--r--lib/x1000-installer/src/xf_error.c42
-rw-r--r--lib/x1000-installer/src/xf_flashmap.c327
-rw-r--r--lib/x1000-installer/src/xf_nandio.c295
-rw-r--r--lib/x1000-installer/src/xf_package.c264
-rw-r--r--lib/x1000-installer/src/xf_stream.c211
-rw-r--r--lib/x1000-installer/src/xf_update.c149
-rw-r--r--lib/x1000-installer/test/data/lines_shuffled.txt108
-rw-r--r--lib/x1000-installer/test/data/lines_sorted.txt36
-rw-r--r--lib/x1000-installer/test/main.c86
-rw-r--r--lib/x1000-installer/test/test.h39
-rw-r--r--lib/x1000-installer/test/test_flashmap.c140
-rw-r--r--lib/x1000-installer/test/test_stream.c108
-rw-r--r--lib/x1000-installer/test_lib/core_alloc.c65
-rw-r--r--lib/x1000-installer/test_lib/core_alloc.h33
-rw-r--r--lib/x1000-installer/test_lib/fakenand.c270
-rw-r--r--lib/x1000-installer/test_lib/file.c11
-rw-r--r--lib/x1000-installer/test_lib/file.h18
-rw-r--r--lib/x1000-installer/test_lib/md5.c245
-rw-r--r--lib/x1000-installer/test_lib/md5.h18
-rw-r--r--lib/x1000-installer/test_lib/nand-x1000.h112
-rw-r--r--lib/x1000-installer/test_lib/pathfuncs.c130
-rw-r--r--lib/x1000-installer/test_lib/pathfuncs.h39
-rw-r--r--lib/x1000-installer/test_lib/strlcpy.c50
-rw-r--r--lib/x1000-installer/test_lib/strlcpy.h4
-rw-r--r--lib/x1000-installer/test_lib/system.h10
-rw-r--r--lib/x1000-installer/x1000-installer.make21
-rw-r--r--manual/appendix/config_file_options.tex13
-rw-r--r--manual/appendix/file_formats.tex48
-rwxr-xr-xmanual/configure_rockbox/display_options.tex21
-rw-r--r--manual/configure_rockbox/playback_options.tex19
-rw-r--r--manual/configure_rockbox/sound_settings.tex24
-rw-r--r--manual/configure_rockbox/startup_shutdown_options.tex5
-rw-r--r--manual/main_menu/fmradio.tex4
-rw-r--r--manual/preamble.tex10
-rw-r--r--manual/rockbox_interface/main.tex8
-rw-r--r--rbutil/ipodpatcher/ipodpatcher.pro47
-rw-r--r--rbutil/rbutil.pro83
-rw-r--r--rbutil/rbutilqt/base/progressloggerinterface.h60
-rw-r--r--rbutil/rbutilqt/dmgbuild.cfg9
-rw-r--r--rbutil/rbutilqt/rbutilqt-lang.qrc19
-rw-r--r--rbutil/rbutilqt/rbutilqt.pri229
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro248
-rw-r--r--rbutil/rbutilqt/test/test-compareversion.cpp145
-rw-r--r--rbutil/rbutilqt/test/test-compareversion.pro37
-rw-r--r--rbutil/rbutilqt/test/test-httpget.pro31
-rw-r--r--rbutil/rbutilqt/test/test-playerbuildinfo.pro35
-rw-r--r--rbutil/rbutilqt/test/test-rockboxinfo.pro30
-rw-r--r--rbutil/sansapatcher/sansapatcher.pro38
-rw-r--r--tools/builds.pm11
-rwxr-xr-xtools/configure6
-rwxr-xr-xtools/genlang10
-rw-r--r--tools/rbspeex/rbspeex.c2
-rw-r--r--uisimulator/battery.c102
-rw-r--r--uisimulator/bitmaps/UI-fiiom3k.bmpbin676310 -> 913878 bytes
-rw-r--r--uisimulator/buttonmap/fiio-m3k.c24
-rw-r--r--uisimulator/common/powermgmt-sim.c56
-rw-r--r--uisimulator/common/sim_tasks.c7
-rw-r--r--utils/CMakeLists.txt370
-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-xutils/cmake/QtTest.cmake134
-rwxr-xr-xutils/cmake/QtTestAddTests.cmake102
-rw-r--r--utils/cmake/deploy.cmake147
-rw-r--r--utils/cmake/download.cmake47
-rw-r--r--utils/cmake/gitversion.cmake58
-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)bin230454 -> 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)bin230454 -> 230454 bytes
-rw-r--r--utils/ibassoboot/jni/usb.bmp (renamed from rbutil/ibassoboot/jni/usb.bmp)bin230454 -> 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)0
-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)0
-rw-r--r--utils/ipodpatcher/ipodio.h (renamed from rbutil/ipodpatcher/ipodio.h)0
-rw-r--r--utils/ipodpatcher/ipodpatcher.c (renamed from rbutil/ipodpatcher/ipodpatcher.c)0
-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)13
-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.txt406
-rw-r--r--utils/rbutilqt/INSTALL (renamed from rbutil/rbutilqt/INSTALL)0
-rw-r--r--utils/rbutilqt/Info.plist (renamed from rbutil/rbutilqt/Info.plist)0
-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)0
-rw-r--r--utils/rbutilqt/base/autodetection.h (renamed from rbutil/rbutilqt/base/autodetection.h)0
-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)0
-rw-r--r--utils/rbutilqt/base/bootloaderinstallbase.h (renamed from rbutil/rbutilqt/base/bootloaderinstallbase.h)4
-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)15
-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)14
-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)0
-rw-r--r--utils/rbutilqt/base/httpget.cpp (renamed from rbutil/rbutilqt/base/httpget.cpp)0
-rw-r--r--utils/rbutilqt/base/httpget.h (renamed from rbutil/rbutilqt/base/httpget.h)1
-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)0
-rw-r--r--utils/rbutilqt/base/playerbuildinfo.h (renamed from rbutil/rbutilqt/base/playerbuildinfo.h)0
-rw-r--r--utils/rbutilqt/base/progressloglevels.h29
-rw-r--r--utils/rbutilqt/base/rbsettings.cpp (renamed from rbutil/rbutilqt/base/rbsettings.cpp)0
-rw-r--r--utils/rbutilqt/base/rbsettings.h (renamed from rbutil/rbutilqt/base/rbsettings.h)0
-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)2
-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)16
-rw-r--r--utils/rbutilqt/base/talkgenerator.h (renamed from rbutil/rbutilqt/base/talkgenerator.h)2
-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)0
-rw-r--r--utils/rbutilqt/base/ttscarbon.cpp (renamed from rbutil/rbutilqt/base/ttscarbon.cpp)0
-rw-r--r--utils/rbutilqt/base/ttscarbon.h (renamed from rbutil/rbutilqt/base/ttscarbon.h)0
-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)0
-rw-r--r--utils/rbutilqt/base/ttsexes.h (renamed from rbutil/rbutilqt/base/ttsexes.h)0
-rw-r--r--utils/rbutilqt/base/ttsfestival.cpp (renamed from rbutil/rbutilqt/base/ttsfestival.cpp)6
-rw-r--r--utils/rbutilqt/base/ttsfestival.h (renamed from rbutil/rbutilqt/base/ttsfestival.h)0
-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)2
-rw-r--r--utils/rbutilqt/base/ttssapi.h (renamed from rbutil/rbutilqt/base/ttssapi.h)0
-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)0
-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)44
-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)0
-rw-r--r--utils/rbutilqt/base/voicefile.h (renamed from rbutil/rbutilqt/base/voicefile.h)2
-rw-r--r--utils/rbutilqt/base/zipinstaller.cpp (renamed from rbutil/rbutilqt/base/zipinstaller.cpp)0
-rw-r--r--utils/rbutilqt/base/zipinstaller.h (renamed from rbutil/rbutilqt/base/zipinstaller.h)2
-rw-r--r--utils/rbutilqt/base/ziputil.cpp (renamed from rbutil/rbutilqt/base/ziputil.cpp)2
-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)0
-rw-r--r--utils/rbutilqt/configure.cpp (renamed from rbutil/rbutilqt/configure.cpp)34
-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.cfg17
-rw-r--r--utils/rbutilqt/encttscfggui.cpp (renamed from rbutil/rbutilqt/encttscfggui.cpp)12
-rw-r--r--utils/rbutilqt/encttscfggui.h (renamed from rbutil/rbutilqt/encttscfggui.h)0
-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)0
-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)58
-rw-r--r--utils/rbutilqt/gui/selectiveinstallwidget.h (renamed from rbutil/rbutilqt/gui/selectiveinstallwidget.h)0
-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)bin7028 -> 7028 bytes
-rw-r--r--utils/rbutilqt/icons/players/archosondiofm-small.png (renamed from rbutil/rbutilqt/icons/players/archosondiofm-small.png)bin4902 -> 4902 bytes
-rw-r--r--utils/rbutilqt/icons/players/archosondiosp-small.png (renamed from rbutil/rbutilqt/icons/players/archosondiosp-small.png)bin4896 -> 4896 bytes
-rw-r--r--utils/rbutilqt/icons/players/archosplayer-small.png (renamed from rbutil/rbutilqt/icons/players/archosplayer-small.png)bin4760 -> 4760 bytes
-rw-r--r--utils/rbutilqt/icons/players/archosrecorder-small.png (renamed from rbutil/rbutilqt/icons/players/archosrecorder-small.png)bin5252 -> 5252 bytes
-rw-r--r--utils/rbutilqt/icons/players/archosrecorderv2-small.png (renamed from rbutil/rbutilqt/icons/players/archosrecorderv2-small.png)bin7028 -> 7028 bytes
-rw-r--r--utils/rbutilqt/icons/players/cowond2-small.png (renamed from rbutil/rbutilqt/icons/players/cowond2-small.png)bin2944 -> 2944 bytes
-rw-r--r--utils/rbutilqt/icons/players/fonts-small.png (renamed from rbutil/rbutilqt/icons/players/fonts-small.png)bin4908 -> 4908 bytes
-rw-r--r--utils/rbutilqt/icons/players/gigabeatfx-small.png (renamed from rbutil/rbutilqt/icons/players/gigabeatfx-small.png)bin2264 -> 2264 bytes
-rw-r--r--utils/rbutilqt/icons/players/gigabeats-small.png (renamed from rbutil/rbutilqt/icons/players/gigabeats-small.png)bin3388 -> 3388 bytes
-rw-r--r--utils/rbutilqt/icons/players/gogearhdd1630-small.png (renamed from rbutil/rbutilqt/icons/players/gogearhdd1630-small.png)bin2567 -> 2567 bytes
-rw-r--r--utils/rbutilqt/icons/players/gogearhdd6330-small.png (renamed from rbutil/rbutilqt/icons/players/gogearhdd6330-small.png)bin2226 -> 2226 bytes
-rw-r--r--utils/rbutilqt/icons/players/gogearsa9200-small.png (renamed from rbutil/rbutilqt/icons/players/gogearsa9200-small.png)bin2181 -> 2181 bytes
-rw-r--r--utils/rbutilqt/icons/players/hifimanhm60x-small.png (renamed from rbutil/rbutilqt/icons/players/hifimanhm60x-small.png)bin4605 -> 4605 bytes
-rw-r--r--utils/rbutilqt/icons/players/hifimanhm801-small.png (renamed from rbutil/rbutilqt/icons/players/hifimanhm801-small.png)bin7125 -> 7125 bytes
-rw-r--r--utils/rbutilqt/icons/players/iaudiom3-small.png (renamed from rbutil/rbutilqt/icons/players/iaudiom3-small.png)bin2261 -> 2261 bytes
-rw-r--r--utils/rbutilqt/icons/players/iaudiom5-small.png (renamed from rbutil/rbutilqt/icons/players/iaudiom5-small.png)bin2843 -> 2843 bytes
-rw-r--r--utils/rbutilqt/icons/players/iaudiox5-small.png (renamed from rbutil/rbutilqt/icons/players/iaudiox5-small.png)bin2845 -> 2845 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipod1g2g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod1g2g-small.png)bin5243 -> 5243 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipod3g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod3g-small.png)bin3377 -> 3377 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipod4g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod4g-small.png)bin2581 -> 2581 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipod6g-small.png (renamed from rbutil/rbutilqt/icons/players/ipod6g-small.png)bin2833 -> 2833 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipodcolor-small.png (renamed from rbutil/rbutilqt/icons/players/ipodcolor-small.png)bin2520 -> 2520 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipodmini1g-small.png (renamed from rbutil/rbutilqt/icons/players/ipodmini1g-small.png)bin2316 -> 2316 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipodnano1g-small.png (renamed from rbutil/rbutilqt/icons/players/ipodnano1g-small.png)bin2190 -> 2190 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipodnano2g-small.png (renamed from rbutil/rbutilqt/icons/players/ipodnano2g-small.png)bin2270 -> 2270 bytes
-rw-r--r--utils/rbutilqt/icons/players/ipodvideo-small.png (renamed from rbutil/rbutilqt/icons/players/ipodvideo-small.png)bin2771 -> 2771 bytes
-rw-r--r--utils/rbutilqt/icons/players/iriverh10-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh10-small.png)bin3182 -> 3182 bytes
-rw-r--r--utils/rbutilqt/icons/players/iriverh100-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh100-small.png)bin3606 -> 3606 bytes
-rw-r--r--utils/rbutilqt/icons/players/iriverh10_5gb-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh10_5gb-small.png)bin2631 -> 2631 bytes
-rw-r--r--utils/rbutilqt/icons/players/iriverh300-small.png (renamed from rbutil/rbutilqt/icons/players/iriverh300-small.png)bin3180 -> 3180 bytes
-rw-r--r--utils/rbutilqt/icons/players/mpiohd200-small.png (renamed from rbutil/rbutilqt/icons/players/mpiohd200-small.png)bin16883 -> 16883 bytes
-rw-r--r--utils/rbutilqt/icons/players/mpiohd300-small.png (renamed from rbutil/rbutilqt/icons/players/mpiohd300-small.png)bin14701 -> 14701 bytes
-rw-r--r--utils/rbutilqt/icons/players/mrobe100-small.png (renamed from rbutil/rbutilqt/icons/players/mrobe100-small.png)bin1987 -> 1987 bytes
-rw-r--r--utils/rbutilqt/icons/players/mrobe500-small.png (renamed from rbutil/rbutilqt/icons/players/mrobe500-small.png)bin3075 -> 3075 bytes
-rw-r--r--utils/rbutilqt/icons/players/samsungyh820-small.png (renamed from rbutil/rbutilqt/icons/players/samsungyh820-small.png)bin3225 -> 3225 bytes
-rw-r--r--utils/rbutilqt/icons/players/samsungyh920-small.png (renamed from rbutil/rbutilqt/icons/players/samsungyh920-small.png)bin3358 -> 3358 bytes
-rw-r--r--utils/rbutilqt/icons/players/samsungyh925-small.png (renamed from rbutil/rbutilqt/icons/players/samsungyh925-small.png)bin3447 -> 3447 bytes
-rw-r--r--utils/rbutilqt/icons/players/samsungypr0-small.png (renamed from rbutil/rbutilqt/icons/players/samsungypr0-small.png)bin3038 -> 3038 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansac200-small.png (renamed from rbutil/rbutilqt/icons/players/sansac200-small.png)bin3625 -> 3625 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansaclip-small.png (renamed from rbutil/rbutilqt/icons/players/sansaclip-small.png)bin5843 -> 5843 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansaclipplus-small.png (renamed from rbutil/rbutilqt/icons/players/sansaclipplus-small.png)bin4542 -> 4542 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansaclipzip-small.png (renamed from rbutil/rbutilqt/icons/players/sansaclipzip-small.png)bin7640 -> 7640 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansaconnect-small.png (renamed from rbutil/rbutilqt/icons/players/sansaconnect-small.png)bin6603 -> 6603 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansae200-small.png (renamed from rbutil/rbutilqt/icons/players/sansae200-small.png)bin3901 -> 3901 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansafuze-small.png (renamed from rbutil/rbutilqt/icons/players/sansafuze-small.png)bin4937 -> 4937 bytes
-rw-r--r--utils/rbutilqt/icons/players/sansafuzeplus-small.png (renamed from rbutil/rbutilqt/icons/players/sansafuzeplus-small.png)bin6753 -> 6753 bytes
-rw-r--r--utils/rbutilqt/icons/players/source-small.png (renamed from rbutil/rbutilqt/icons/players/source-small.png)bin4908 -> 4908 bytes
-rw-r--r--utils/rbutilqt/icons/players/vibe500-small.png (renamed from rbutil/rbutilqt/icons/players/vibe500-small.png)bin2891 -> 2891 bytes
-rw-r--r--utils/rbutilqt/icons/players/vx747-small.png (renamed from rbutil/rbutilqt/icons/players/vx747-small.png)bin2732 -> 2732 bytes
-rw-r--r--utils/rbutilqt/icons/players/vx777-small.png (renamed from rbutil/rbutilqt/icons/players/vx777-small.png)bin2445 -> 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)bin180474 -> 180474 bytes
-rw-r--r--utils/rbutilqt/icons/rockbox.ico (renamed from rbutil/rbutilqt/icons/rockbox.ico)bin100082 -> 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)bin16221 -> 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-xutils/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)0
-rw-r--r--utils/rbutilqt/lang/rbutil_de.ts (renamed from rbutil/rbutilqt/lang/rbutil_de.ts)0
-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)0
-rw-r--r--utils/rbutilqt/lang/rbutil_gr.ts (renamed from rbutil/rbutilqt/lang/rbutil_gr.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_he.ts (renamed from rbutil/rbutilqt/lang/rbutil_he.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_it.ts (renamed from rbutil/rbutilqt/lang/rbutil_it.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_ja.ts (renamed from rbutil/rbutilqt/lang/rbutil_ja.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_nl.ts (renamed from rbutil/rbutilqt/lang/rbutil_nl.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_pl.ts (renamed from rbutil/rbutilqt/lang/rbutil_pl.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_pt.ts (renamed from rbutil/rbutilqt/lang/rbutil_pt.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_pt_BR.ts (renamed from rbutil/rbutilqt/lang/rbutil_pt_BR.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_ru.ts (renamed from rbutil/rbutilqt/lang/rbutil_ru.ts)0
-rw-r--r--utils/rbutilqt/lang/rbutil_tr.ts (renamed from rbutil/rbutilqt/lang/rbutil_tr.ts)0
-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)0
-rw-r--r--utils/rbutilqt/lang/rbutilqt-lang.qrc19
-rwxr-xr-xutils/rbutilqt/langstats.py (renamed from rbutil/rbutilqt/langstats.py)0
-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)0
-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)0
-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)99
-rw-r--r--utils/rbutilqt/rbutilqt.h (renamed from rbutil/rbutilqt/rbutilqt.h)0
-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)0
-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/test-compareversion.cpp148
-rw-r--r--utils/rbutilqt/test/test-httpget.cpp (renamed from rbutil/rbutilqt/test/test-httpget.cpp)53
-rw-r--r--utils/rbutilqt/test/test-playerbuildinfo.cpp (renamed from rbutil/rbutilqt/test/test-playerbuildinfo.cpp)26
-rw-r--r--utils/rbutilqt/test/test-rockboxinfo.cpp (renamed from rbutil/rbutilqt/test/test-rockboxinfo.cpp)17
-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)47
-rw-r--r--utils/rbutilqt/themesinstallwindow.h (renamed from rbutil/rbutilqt/themesinstallwindow.h)1
-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)6
-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)0
-rw-r--r--utils/sansapatcher/sansaio-win32.c (renamed from rbutil/sansapatcher/sansaio-win32.c)0
-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.txt149
-rw-r--r--utils/themeeditor/Info.plist2
-rw-r--r--utils/themeeditor/RockboxThemeEditor.desktop12
-rw-r--r--utils/themeeditor/dmgbuild.cfg17
-rw-r--r--utils/themeeditor/resources/rbthemeeditor.svg71
-rw-r--r--utils/themeeditor/themeeditor.pro221
-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
808 files changed, 22335 insertions, 10888 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/action.h b/apps/action.h
index ad91f31535..3217ce4d6f 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -129,6 +129,7 @@ enum {
CONTEXT_USB_HID_MODE_PRESENTATION,
CONTEXT_USB_HID_MODE_BROWSER,
CONTEXT_USB_HID_MODE_MOUSE,
+ LAST_CONTEXT_PLACEHOLDER,
};
@@ -244,7 +245,6 @@ enum {
ACTION_SETTINGS_DEC,
ACTION_SETTINGS_DECREPEAT,
ACTION_SETTINGS_DECBIGSTEP,
- ACTION_SETTINGS_RESET,
ACTION_SETTINGS_SET, /* Used by touchscreen targets */
/* bookmark screen */
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 33970da581..3a9218bc84 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -1146,6 +1146,10 @@ static bool view_battery(void)
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, "battery current: %d mA", battery_current());
+#endif
break;
}
@@ -2097,7 +2101,7 @@ static int radio_callback(int btn, struct gui_synclist *lists)
struct tm* time = gmtime(&seconds);
simplelist_addline(
- "CT:%4d-%02d-%02d %02d:%02d",
+ "CT:%4d-%02d-%02d %02d:%02d:%02d",
time->tm_year + 1900, time->tm_mon + 1, time->tm_mday,
time->tm_hour, time->tm_min, time->tm_sec);
}
@@ -2691,6 +2695,24 @@ static const char* menu_get_name(int item, void * data,
return menuitems[item].desc;
}
+static int menu_get_talk(int item, void *data)
+{
+ (void)data;
+ if (global_settings.talk_menu && menuitems[item].desc)
+ {
+ talk_number(item + 1, true);
+ talk_id(VOICE_PAUSE, true);
+#if 0 /* no debug items currently have lang ids */
+ long id = P2ID((const unsigned char *)(menuitems[item].desc));
+ if(id>=0)
+ talk_id(id, true);
+ else
+#endif
+ talk_spell(menuitems[item].desc, true);
+ }
+ return 0;
+}
+
int debug_menu(void)
{
struct simplelist_info info;
@@ -2698,6 +2720,7 @@ int debug_menu(void)
simplelist_info_init(&info, "Debug Menu", ARRAYLEN(menuitems), NULL);
info.action_callback = menu_action_callback;
info.get_name = menu_get_name;
+ info.get_talk = menu_get_talk;
return (simplelist_show_list(&info)) ? 1 : 0;
}
diff --git a/apps/features.txt b/apps/features.txt
index 83c3f0a65f..ec2113cbc8 100644
--- a/apps/features.txt
+++ b/apps/features.txt
@@ -262,6 +262,8 @@ recording_digital
#if MEMORYSIZE <= 2
lowmem
+#elif MEMORYSIZE > 8
+himem
#endif
#if defined(HAVE_HARDWARE_CLICK)
diff --git a/apps/filetree.c b/apps/filetree.c
index efe5e80a0f..75a32a9e42 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -435,7 +435,7 @@ static void ft_load_font(char *file)
int ft_enter(struct tree_context* c)
{
int rc = GO_TO_PREVIOUS;
- static char buf[MAX_PATH];
+ char buf[MAX_PATH];
struct entry* file = tree_get_entry_at(c, c->selected_item);
if (!file)
@@ -641,6 +641,8 @@ int ft_enter(struct tree_context* c)
splash(HZ, ID2P(LANG_PARTY_MODE));
break;
}
+
+#ifdef PLUGINS_RUN_IN_BROWSER /* Stay in the filetree to run a plugin */
switch (plugin_load(plugin, argument))
{
case PLUGIN_GOTO_WPS:
@@ -664,6 +666,10 @@ int ft_enter(struct tree_context* c)
default:
break;
}
+#else /* Exit the filetree to run a plugin */
+ plugin_open(plugin, argument);
+ rc = GO_TO_PLUGIN;
+#endif
break;
}
@@ -687,6 +693,7 @@ int ft_enter(struct tree_context* c)
plugin = filetype_get_plugin(file, plugin_path, sizeof(plugin_path));
if (plugin)
{
+#ifdef PLUGINS_RUN_IN_BROWSER /* Stay in the filetree to run a plugin */
switch (plugin_load(plugin, argument))
{
case PLUGIN_USB_CONNECTED:
@@ -705,6 +712,10 @@ int ft_enter(struct tree_context* c)
default:
break;
}
+#else /* Exit the filetree to run a plugin */
+ plugin_open(plugin, argument);
+ rc = GO_TO_PLUGIN;
+#endif
}
break;
}
diff --git a/apps/gui/bitmap/list.c b/apps/gui/bitmap/list.c
index ff0f5a29c1..1b051cd800 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,39 @@ 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 && global_settings.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,6 +189,8 @@ 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);
@@ -145,11 +203,16 @@ void list_draw(struct screen *display, struct gui_synclist *list)
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;
@@ -169,6 +232,12 @@ void list_draw(struct screen *display, struct gui_synclist *list)
end = start + nb_lines;
#ifdef HAVE_TOUCHSCREEN
+ /* y_pos needs to be clamped now since it can overflow the maximum
+ * in some cases, and we have no easy way to prevent this beforehand */
+ int max_y_pos = list->nb_items * linedes.height - list_text[screen].height;
+ if (max_y_pos > 0 && list->y_pos > max_y_pos)
+ list->y_pos = max_y_pos;
+
int draw_offset = list_start_item * linedes.height - list->y_pos;
/* draw some extra items to not have empty lines at the top and bottom */
if (draw_offset > 0)
@@ -179,8 +248,17 @@ void list_draw(struct screen *display, struct gui_synclist *list)
if (start > 0)
start--;
}
- else if (draw_offset < 0)
- end++;
+ else if (draw_offset < 0) {
+ if(end < list->nb_items)
+ end++;
+ }
+
+ /* If the viewport is not an exact multiple of the line height, then
+ * there will be space for one more partial line. */
+ int spare_space = list_text_vp->height - linedes.height * nb_lines;
+ if(nb_lines < list->nb_items && spare_space > 0 && end < list->nb_items)
+ if(end < list->nb_items)
+ end++;
#else
#define draw_offset 0
#endif
@@ -193,17 +271,32 @@ void list_draw(struct screen *display, struct gui_synclist *list)
{
struct viewport vp = *list_text_vp;
vp.width = SCROLLBAR_WIDTH;
+#ifndef HAVE_TOUCHSCREEN
+ /* touchscreens must use full viewport height
+ * due to pixelwise rendering */
vp.height = linedes.height * nb_lines;
+#endif
list_text_vp->width -= SCROLLBAR_WIDTH;
if (scrollbar_in_right)
vp.x += list_text_vp->width;
else /* left */
list_text_vp->x += SCROLLBAR_WIDTH;
struct viewport *last = display->set_viewport(&vp);
+
+#ifndef HAVE_TOUCHSCREEN
+ /* button targets go itemwise */
+ int scrollbar_items = list->nb_items;
+ int scrollbar_min = list_start_item;
+ int scrollbar_max = list_start_item + nb_lines;
+#else
+ /* touchscreens use pixelwise scrolling */
+ int scrollbar_items = list->nb_items * linedes.height;
+ int scrollbar_min = list->y_pos;
+ int scrollbar_max = list->y_pos + list_text_vp->height;
+#endif
gui_scrollbar_draw(display,
(scrollbar_in_left? 0: 1), 0, SCROLLBAR_WIDTH-1, vp.height,
- list->nb_items, list_start_item, list_start_item + nb_lines,
- VERTICAL);
+ scrollbar_items, scrollbar_min, scrollbar_max, VERTICAL);
display->set_viewport(last);
}
/* shift everything a bit in relation to the title */
@@ -214,6 +307,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 */
@@ -221,7 +324,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;
@@ -238,9 +341,9 @@ void list_draw(struct screen *display, struct gui_synclist *list)
if (line_indent)
{
if (global_settings.show_icons)
- line_indent *= list_icon_width(screen);
+ line_indent *= icon_w;
else
- line_indent *= display->getcharwidth();
+ line_indent *= character_width;
}
line_indent += indent;
@@ -315,27 +418,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();
@@ -360,21 +458,28 @@ static int scrollbar_scroll(struct gui_synclist * gui_list, int y)
const int screen = screens[SCREEN_MAIN].screen_type;
const int nb_lines = list_get_nb_lines(gui_list, screen);
- if (nb_lines < gui_list->nb_items)
+ if (nb_lines < gui_list->nb_items)
{
- /* scrollbar scrolling is still line based */
- int scrollbar_size = nb_lines * gui_list->line_height[screen];
- int actual_y = y - list_text[screen].y;
- int new_selection = (actual_y * gui_list->nb_items) / scrollbar_size;
+ const int line_height = gui_list->line_height[screen];
- int start_item = new_selection - nb_lines/2;
- if(start_item < 0)
- start_item = 0;
- else if(start_item > gui_list->nb_items - nb_lines)
- start_item = gui_list->nb_items - nb_lines;
+ /* try to position the center of the scrollbar at the touch point */
+ int scrollbar_size = list_text[screen].height;
+ int actual_y = y - list_text[screen].y;
+ int new_y_pos = (actual_y * gui_list->nb_items * line_height) / scrollbar_size;
+ int new_start = (actual_y * gui_list->nb_items) / scrollbar_size;
+
+ new_start -= nb_lines / 2;
+ new_y_pos -= (nb_lines * line_height) / 2;
+ if(new_start < 0) {
+ new_start = 0;
+ new_y_pos = 0;
+ } else if(new_start > gui_list->nb_items - nb_lines) {
+ new_start = gui_list->nb_items - nb_lines;
+ new_y_pos = new_start * line_height;
+ }
- gui_list->start_item[screen] = start_item;
- gui_list->y_pos = start_item * gui_list->line_height[screen];
+ gui_list->start_item[screen] = new_start;
+ gui_list->y_pos = new_y_pos;
return ACTION_REDRAW;
}
@@ -509,6 +614,7 @@ static bool swipe_scroll(struct gui_synclist * gui_list, int difference)
const int old_start = gui_list->start_item[screen];
int new_start_item = -1;
int line_diff = 0;
+ int max_y_pos = gui_list->nb_items * line_height - list_text[screen].height;
/* Track whether we hit the end of the list for sake of kinetic scroll */
bool hit_end = true;
@@ -517,8 +623,8 @@ static bool swipe_scroll(struct gui_synclist * gui_list, int difference)
gui_list->y_pos -= difference;
if(gui_list->y_pos < 0)
gui_list->y_pos = 0;
- else if(gui_list->y_pos > (gui_list->nb_items - nb_lines) * line_height)
- gui_list->y_pos = (gui_list->nb_items - nb_lines) * line_height;
+ else if(gui_list->y_pos > max_y_pos)
+ gui_list->y_pos = max_y_pos;
else
hit_end = false;
diff --git a/apps/gui/folder_select.c b/apps/gui/folder_select.c
index 706b166941..e324e8649a 100644
--- a/apps/gui/folder_select.c
+++ b/apps/gui/folder_select.c
@@ -8,6 +8,7 @@
*
* Copyright (C) 2012 Jonathan Gordon
* Copyright (C) 2012 Thomas Martitz
+* * Copyright (C) 2021 William Wilgus
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -30,7 +31,11 @@
#include "language.h"
#include "list.h"
#include "plugin.h"
+#include "splash.h"
+/* Define LOGF_ENABLE to enable logf output in this file */
+//#define LOGF_ENABLE
+#include "logf.h"
/*
* Order for changing child states:
@@ -56,18 +61,31 @@ struct child {
struct folder {
char *name;
struct child *children;
- int children_count;
- int depth;
-
struct folder* previous;
+ uint16_t children_count;
+ uint16_t depth;
};
static char *buffer_front, *buffer_end;
+
+static struct
+{
+ int32_t len; /* keeps count versus maxlen to give buffer full notification */
+ uint32_t val; /* hash of all selected items */
+ char buf[3];/* address used as identifier -- only \0 written to it */
+ char maxlen_exceeded; /*0,1*/
+} hashed;
+
+static inline void get_hash(const char *key, uint32_t *hash, int len)
+{
+ *hash = crc_32(key, len, *hash);
+}
+
static char* folder_alloc(size_t size)
{
char* retval;
/* 32-bit aligned */
- size = (size + 3) & ~3;
+ size = ALIGN_UP(size, 4);
if (buffer_front + size > buffer_end)
{
return NULL;
@@ -86,32 +104,57 @@ static char* folder_alloc_from_end(size_t size)
buffer_end -= size;
return buffer_end;
}
-
-static void get_full_path_r(struct folder *start, char* dst)
+#if 0
+/* returns the buffer size required to store the path + \0 */
+static int get_full_pathsz(struct folder *start)
{
- if (start->previous)
- get_full_path_r(start->previous, dst);
-
- if (start->name && start->name[0] && strcmp(start->name, "/"))
+ int reql = 0;
+ struct folder *next = start;
+ do
{
- strlcat(dst, "/", MAX_PATH);
- strlcat(dst, start->name, MAX_PATH);
- }
+ reql += strlen(next->name) + 1;
+ } while ((next = next->previous));
+
+ if (start->name[0] != '/') reql--;
+ if (--reql < 0) reql = 0;
+ return reql;
}
+#endif
-static char* get_full_path(struct folder *start)
+static size_t get_full_path(struct folder *start, char *dst, size_t dst_sz)
{
- static char buffer[MAX_PATH];
-
- if (strcmp(start->name, "/"))
+ size_t pos = 0;
+ struct folder *prev, *cur = NULL, *next = start;
+ dst[0] = '\0'; /* for strlcat to do its thing */
+ /* First traversal R->L mutate nodes->previous to point at child */
+ while (next->previous != NULL) /* stop at the root */
{
- buffer[0] = 0;
- get_full_path_r(start, buffer);
+#define PATHMUTATE() \
+ ({ \
+ prev = cur; \
+ cur = next; \
+ next = cur->previous;\
+ cur->previous = prev; \
+ })
+ PATHMUTATE();
}
- else /* get_full_path_r() does the wrong thing for / */
- return "/";
-
- return buffer;
+ /*swap the next and cur nodes to reverse direction */
+ prev = next;
+ next = cur;
+ cur = prev;
+ /* Second traversal L->R mutate nodes->previous to point back at parent
+ * copy strings to buf as they go by */
+ while (next != NULL)
+ {
+ PATHMUTATE();
+ pos = strlcat(dst, cur->name, dst_sz);
+ /* do not append slash to paths starting with slash */
+ if (cur->name[0] != '/')
+ pos = strlcat(dst, "/", dst_sz);
+ }
+ logf("get_full_path: (%d)[%s]", (int)pos, dst);
+ return pos;
+#undef PATHMUTATE
}
/* support function for qsort() */
@@ -125,49 +168,52 @@ static int compare(const void* p1, const void* p2)
static struct folder* load_folder(struct folder* parent, char *folder)
{
DIR *dir;
- char* path = get_full_path(parent);
char fullpath[MAX_PATH];
+
struct dirent *entry;
- struct folder* this = (struct folder*)folder_alloc(sizeof(struct folder));
int child_count = 0;
char *first_child = NULL;
+ size_t len = 0;
- if (!strcmp(folder,"/"))
- strlcpy(fullpath, folder, 2);
- else
- snprintf(fullpath, MAX_PATH, "%s/%s", parent ? path : "", folder);
+ struct folder* this = (struct folder*)folder_alloc(sizeof(struct folder));
+ if (this == NULL)
+ goto fail;
+
+ if (parent)
+ {
+ len = get_full_path(parent, fullpath, sizeof(fullpath));
+ if (len >= sizeof(fullpath))
+ goto fail;
+ }
+ strlcpy(&fullpath[len], folder, sizeof(fullpath) - len);
+ logf("load_folder: [%s]", fullpath);
- if (!this)
- return NULL;
dir = opendir(fullpath);
- if (!dir)
- return NULL;
+ if (dir == NULL)
+ goto fail;
this->previous = parent;
this->name = folder;
this->children = NULL;
this->children_count = 0;
- this->depth = parent ? parent->depth + 1 : 0;
+ if (parent)
+ this->depth = parent->depth + 1;
while ((entry = readdir(dir))) {
- int len = strlen((char *)entry->d_name);
- struct dirinfo info;
-
- info = dir_get_info(dir, entry);
-
/* skip anything not a directory */
- if ((info.attribute & ATTR_DIRECTORY) == 0) {
+ if ((dir_get_info(dir, entry).attribute & ATTR_DIRECTORY) == 0) {
continue;
}
- /* skip directories . and .. */
- if ((!strcmp((char *)entry->d_name, ".")) ||
- (!strcmp((char *)entry->d_name, ".."))) {
+ /* skip . and .. */
+ char *dn = entry->d_name;
+ if ((dn[0] == '.') && (dn[1] == '\0' || (dn[1] == '.' && dn[2] == '\0')))
continue;
- }
- char *name = folder_alloc_from_end(len+1);
- if (!name)
+ /* copy entry name to end of buffer, save pointer */
+ int len = strlen((char *)entry->d_name);
+ char *name = folder_alloc_from_end(len+1); /*for NULL*/
+ if (name == NULL)
{
closedir(dir);
- return NULL;
+ goto fail;
}
memcpy(name, (char *)entry->d_name, len+1);
child_count++;
@@ -177,26 +223,29 @@ static struct folder* load_folder(struct folder* parent, char *folder)
/* now put the names in the array */
this->children = (struct child*)folder_alloc(sizeof(struct child) * child_count);
- if (!this->children)
- return NULL;
+ if (this->children == NULL)
+ goto fail;
+
while (child_count)
{
- this->children[this->children_count].name = first_child;
- this->children[this->children_count].folder = NULL;
- this->children[this->children_count].state = COLLAPSED;
- this->children_count++;
- first_child += strlen(first_child) + 1;
+ struct child *child = &this->children[this->children_count++];
+ child->name = first_child;
+ child->folder = NULL;
+ child->state = COLLAPSED;
+ while(*first_child++ != '\0'){};/* move to next name entry */
child_count--;
}
qsort(this->children, this->children_count, sizeof(struct child), compare);
return this;
+fail:
+ return NULL;
}
struct folder* load_root(void)
{
static struct child root_child;
-
+ /* reset the root for each call */
root_child.name = "/";
root_child.folder = NULL;
root_child.state = COLLAPSED;
@@ -205,7 +254,7 @@ struct folder* load_root(void)
.name = "",
.children = &root_child,
.children_count = 1,
- .depth = -1,
+ .depth = 0,
.previous = NULL,
};
@@ -230,7 +279,6 @@ static int count_items(struct folder *start)
static struct child* find_index(struct folder *start, int index, struct folder **parent)
{
int i = 0;
-
*parent = NULL;
while (i < start->children_count)
@@ -262,22 +310,22 @@ static const char * folder_get_name(int selected_item, void * data,
struct folder *parent;
struct child *this = find_index(root, selected_item , &parent);
- buffer[0] = '\0';
-
- if (parent->depth >= 0)
- for(int i = 0; i <= parent->depth; i++)
- strcat(buffer, "\t");
-
+ char *buf = buffer;
+ if ((int)buffer_len > parent->depth)
+ {
+ int i = parent->depth;
+ while(--i > 0) /* don't indent the parent /folders */
+ *buf++ = '\t';
+ }
+ *buf = '\0';
strlcat(buffer, this->name, buffer_len);
if (this->state == EACCESS)
{ /* append error message to the entry if unaccessible */
- size_t len = strlcat(buffer, " (", buffer_len);
+ size_t len = strlcat(buffer, " ( ", buffer_len);
if (buffer_len > len)
{
- snprintf(&buffer[len], buffer_len - len, str(LANG_READ_FAILED),
- this->name);
- strlcat(buffer, ")", buffer_len);
+ snprintf(&buffer[len], buffer_len - len, str(LANG_READ_FAILED), ")");
}
}
@@ -304,6 +352,23 @@ static enum themable_icons folder_get_icon(int selected_item, void * data)
return Icon_NOICON;
}
+static int child_set_state_expand(struct child *this, struct folder *parent)
+{
+ int newstate = EACCESS;
+ if (this->folder == NULL)
+ this->folder = load_folder(parent, this->name);
+
+ if (this->folder != NULL)
+ {
+ if(this->folder->children_count == 0)
+ newstate = SELECTED;
+ else
+ newstate = EXPANDED;
+ }
+ this->state = newstate;
+ return newstate;
+}
+
static int folder_action_callback(int action, struct gui_synclist *list)
{
struct folder *root = (struct folder*)list->data;
@@ -322,17 +387,13 @@ static int folder_action_callback(int action, struct gui_synclist *list)
this->state = COLLAPSED;
break;
case COLLAPSED:
- if (this->folder == NULL)
- this->folder = load_folder(parent, this->name);
- this->state = this->folder ? (this->folder->children_count == 0 ?
- SELECTED : EXPANDED) : EACCESS;
+ child_set_state_expand(this, parent);
break;
case EACCESS:
/* cannot open, do nothing */
return action;
}
- list->nb_items = count_items(root);
- return ACTION_REDRAW;
+ action = ACTION_REDRAW;
}
else if (action == ACTION_STD_CONTEXT)
{
@@ -342,140 +403,198 @@ static int folder_action_callback(int action, struct gui_synclist *list)
for (i = 0; i < this->folder->children_count; i++)
{
child = &this->folder->children[i];
- if (child->state == SELECTED ||
- child->state == EXPANDED)
- child->state = COLLAPSED;
- else if (child->state == COLLAPSED)
- child->state = SELECTED;
+ switch (child->state)
+ {
+ case SELECTED:
+ case EXPANDED:
+ child->state = COLLAPSED;
+ break;
+ case COLLAPSED:
+ child->state = SELECTED;
+ break;
+ case EACCESS:
+ break;
+ }
}
break;
case SELECTED:
case COLLAPSED:
- if (this->folder == NULL)
- this->folder = load_folder(parent, this->name);
- this->state = this->folder ? (this->folder->children_count == 0 ?
- SELECTED : EXPANDED) : EACCESS;
- if (this->state == EACCESS)
- break;
- for (i = 0; i < this->folder->children_count; i++)
+ if (child_set_state_expand(this, parent) != EACCESS)
{
- child = &this->folder->children[i];
- child->state = SELECTED;
+ for (i = 0; i < (this->folder->children_count); i++)
+ {
+ child = &this->folder->children[i];
+ child->state = SELECTED;
+ }
}
break;
case EACCESS:
/* cannot open, do nothing */
return action;
}
- list->nb_items = count_items(root);
- return ACTION_REDRAW;
+ action = ACTION_REDRAW;
}
-
-
+ if (action == ACTION_REDRAW)
+ list->nb_items = count_items(root);
return action;
}
-static struct child* find_from_filename(char* filename, struct folder *root)
+static struct child* find_from_filename(const char* filename, struct folder *root)
{
- char *slash = strchr(filename, '/');
- int i = 0;
- if (slash)
- *slash = '\0';
if (!root)
return NULL;
-
+ const char *slash = strchr(filename, '/');
struct child *this;
/* filenames beginning with a / are specially treated as the
* loop below can't handle them. they can only occur on the first,
* and not recursive, calls to this function.*/
- if (slash == filename)
+ if (filename[0] == '/') /* in the loop nothing starts with '/' */
{
+ logf("find_from_filename [%s]", filename);
/* filename begins with /. in this case root must be the
* top level folder */
this = &root->children[0];
- if (!slash[1])
+ if (filename[1] == '\0')
{ /* filename == "/" */
return this;
}
- else
- {
- /* filename == "/XXX/YYY". cascade down */
- if (!this->folder)
- this->folder = load_folder(root, this->name);
- this->state = EXPANDED;
- /* recurse with XXX/YYY */
- return find_from_filename(slash+1, this->folder);
- }
+ else /* filename == "/XXX/YYY". cascade down */
+ goto cascade;
}
- while (i < root->children_count)
+ for (int i = 0; i < root->children_count; i++)
{
this = &root->children[i];
- if (!strcasecmp(this->name, filename))
+ /* when slash == NULL n will be really large but \0 stops the compare */
+ if (strncasecmp(this->name, filename, slash - filename) == 0)
{
- if (!slash)
+ if (slash == NULL)
{ /* filename == XXX */
return this;
}
else
- {
- /* filename == XXX/YYY. cascade down */
- if (!this->folder)
- this->folder = load_folder(root, this->name);
- this->state = EXPANDED;
- return find_from_filename(slash+1, this->folder);
- }
+ goto cascade;
}
- i++;
}
return NULL;
+
+cascade:
+ /* filename == XXX/YYY. cascade down */
+ child_set_state_expand(this, root);
+ while (slash[0] == '/') slash++; /* eat slashes */
+ return find_from_filename(slash, this->folder);
}
-/* _modifies_ buf */
-int select_paths(struct folder* root, char* buf)
+static int select_paths(struct folder* root, const char* filenames)
{
- struct child *item = find_from_filename(buf, root);
- if (item)
- item->state = SELECTED;
+ /* Takes a list of filenames in a ':' delimited string
+ splits filenames at the ':' character loads each into buffer
+ selects each file in the folder list
+
+ if last item or only item the rest of the string is copied to the buffer
+ *End the last item WITHOUT the ':' character /.rockbox/eqs:/.rockbox/wps\0*
+ */
+ char buf[MAX_PATH];
+ const int buflen = sizeof(buf);
+
+ const char *fnp = filenames;
+ const char *lastfnp = fnp;
+ const char *sstr;
+ off_t len;
+
+ while (fnp)
+ {
+ fnp = strchr(fnp, ':');
+ if (fnp)
+ {
+ len = fnp - lastfnp;
+ fnp++;
+ }
+ else /* no ':' get the rest of the string */
+ len = strlen(lastfnp);
+
+ sstr = lastfnp;
+ lastfnp = fnp;
+ if (len <= 0 || len > buflen)
+ continue;
+ strlcpy(buf, sstr, len + 1);
+ struct child *item = find_from_filename(buf, root);
+ if (item)
+ item->state = SELECTED;
+ }
+
return 0;
}
-static void save_folders_r(struct folder *root, char* dst, size_t maxlen)
+static void save_folders_r(struct folder *root, char* dst, size_t maxlen, size_t buflen)
{
- int i = 0;
+ size_t len;
+ struct folder *curfolder;
+ char* name;
- while (i < root->children_count)
+ for (int i = 0; i < root->children_count; i++)
{
struct child *this = &root->children[i];
if (this->state == SELECTED)
{
- if (this->folder)
- snprintf(buffer_front, buffer_end - buffer_front,
- "%s:", get_full_path(this->folder));
+ if (this->folder == NULL)
+ {
+ curfolder = root;
+ name = this->name;
+ logf("save_folders_r: this->name[%s]", name);
+ }
+ else
+ {
+ curfolder = this->folder->previous;
+ name = this->folder->name;
+ logf("save_folders_r: this->folder->name[%s]", name);
+ }
+
+ len = get_full_path(curfolder, buffer_front, buflen);
+
+ if (len + 2 >= buflen)
+ continue;
+
+ len += snprintf(&buffer_front[len], buflen - len, "%s:", name);
+ logf("save_folders_r: [%s]", buffer_front);
+ if (dst != hashed.buf)
+ {
+ int dlen = strlen(dst);
+ if (dlen + len >= maxlen)
+ continue;
+ strlcpy(&dst[dlen], buffer_front, maxlen - dlen);
+ }
else
{
- char *p = get_full_path(root);
- snprintf(buffer_front, buffer_end - buffer_front,
- "%s/%s:", strcmp(p, "/") ? p : "",
- strcmp(this->name, "/") ? this->name : "");
+ if (hashed.len + len >= maxlen)
+ {
+ hashed.maxlen_exceeded = 1;
+ continue;
+ }
+ get_hash(buffer_front, &hashed.val, len);
+ hashed.len += len;
}
- strlcat(dst, buffer_front, maxlen);
}
else if (this->state == EXPANDED)
- save_folders_r(this->folder, dst, maxlen);
- i++;
+ save_folders_r(this->folder, dst, maxlen, buflen);
}
}
-static void save_folders(struct folder *root, char* dst, size_t maxlen)
+static uint32_t save_folders(struct folder *root, char* dst, size_t maxlen)
{
- int len;
+ hashed.len = 0;
+ hashed.val = 0;
+ hashed.maxlen_exceeded = 0;
+ size_t len = buffer_end - buffer_front;
dst[0] = '\0';
- save_folders_r(root, dst, maxlen);
+ save_folders_r(root, dst, maxlen, len);
len = strlen(dst);
/* fix trailing ':' */
if (len > 1) dst[len-1] = '\0';
+ /*Notify - user will probably not see save dialog if nothing new got added*/
+ if (hashed.maxlen_exceeded > 0) splash(HZ *2, ID2P(LANG_SHOWDIR_BUFFER_FULL));
+ return hashed.val;
}
bool folder_select(char* setting, int setting_len)
@@ -483,40 +602,32 @@ bool folder_select(char* setting, int setting_len)
struct folder *root;
struct simplelist_info info;
size_t buf_size;
- /* 32 separate folders should be Enough For Everybody(TM) */
- char *vect[32];
- char copy[setting_len];
- int nb_items;
-
- /* copy onto stack as split_string() modifies it */
- strlcpy(copy, setting, setting_len);
- nb_items = split_string(copy, ':', vect, ARRAYLEN(vect));
buffer_front = plugin_get_buffer(&buf_size);
buffer_end = buffer_front + buf_size;
+ logf("%d bytes free", (int)(buffer_end - buffer_front));
root = load_root();
- if (nb_items > 0)
- {
- for(int i = 0; i < nb_items; i++)
- select_paths(root, vect[i]);
- }
-
+ logf("folders in: %s", setting);
+ /* Load previous selection(s) */
+ select_paths(root, setting);
+ /* get current hash to check for changes later */
+ uint32_t hash = save_folders(root, hashed.buf, setting_len);
simplelist_info_init(&info, str(LANG_SELECT_FOLDER),
count_items(root), root);
info.get_name = folder_get_name;
info.action_callback = folder_action_callback;
info.get_icon = folder_get_icon;
simplelist_show_list(&info);
-
+ logf("%d bytes free", (int)(buffer_end - buffer_front));
/* done editing. check for changes */
- save_folders(root, copy, setting_len);
- if (strcmp(copy, setting))
- { /* prompt for saving changes and commit if yes */
+ if (hash != save_folders(root, hashed.buf, setting_len))
+ { /* prompt for saving changes and commit if yes */
if (yesno_pop(ID2P(LANG_SAVE_CHANGES)))
{
- strcpy(setting, copy);
+ save_folders(root, setting, setting_len);
settings_save();
+ logf("folders out: %s", setting);
return true;
}
}
diff --git a/apps/gui/list.c b/apps/gui/list.c
index 13a850bd7b..a8055c4581 100644
--- a/apps/gui/list.c
+++ b/apps/gui/list.c
@@ -150,6 +150,7 @@ 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;
#ifdef HAVE_TOUCHSCREEN
@@ -686,7 +687,7 @@ bool gui_synclist_do_button(struct gui_synclist * lists,
switch (wrap)
{
case LIST_WRAP_ON:
- gui_synclist_limit_scroll(lists, false);
+ gui_synclist_limit_scroll(lists, !global_settings.list_wraparound);
break;
case LIST_WRAP_OFF:
gui_synclist_limit_scroll(lists, true);
@@ -697,7 +698,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, false);
+ else gui_synclist_limit_scroll(lists, !global_settings.list_wraparound);
break;
};
@@ -754,7 +755,7 @@ bool gui_synclist_do_button(struct gui_synclist * lists,
if (lists->offset_position[0] == 0)
{
pgleft_allow_cancel = true;
- *actionptr = ACTION_STD_CANCEL;
+ *actionptr = ACTION_STD_MENU;
return true;
}
*actionptr = ACTION_TREE_PGLEFT;
@@ -911,7 +912,7 @@ bool simplelist_show_list(struct simplelist_info *info)
struct gui_synclist lists;
int action, old_line_count = simplelist_line_count;
list_get_name *getname;
- int wrap = LIST_WRAP_UNLESS_HELD;
+ int wrap = global_settings.list_wraparound ? LIST_WRAP_UNLESS_HELD : LIST_WRAP_OFF;
if (info->get_name)
getname = info->get_name;
else
diff --git a/apps/gui/list.h b/apps/gui/list.h
index 64ff3e3fdd..1f910577a1 100644
--- a/apps/gui/list.h
+++ b/apps/gui/list.h
@@ -69,6 +69,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
@@ -133,6 +162,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;
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/pitchscreen.c b/apps/gui/pitchscreen.c
index 871921a10f..9f42aedb5d 100644
--- a/apps/gui/pitchscreen.c
+++ b/apps/gui/pitchscreen.c
@@ -18,1059 +18,8 @@
* KIND, either express or implied.
*
****************************************************************************/
-
-#include <stdbool.h>
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
-#include <stdlib.h> /* for abs() */
-#include "config.h"
-#include "action.h"
-#include "sound.h"
-#include "pcmbuf.h"
-#include "lang.h"
-#include "icons.h"
-#include "screens.h"
-#include "talk.h"
-#include "viewport.h"
-#include "font.h"
-#include "system.h"
-#include "misc.h"
-#include "pitchscreen.h"
-#include "settings.h"
-#include "tdspeed.h"
-
-#define ICON_BORDER 12 /* icons are currently 7x8, so add ~2 pixels */
- /* on both sides when drawing */
-
-#define PITCH_MAX (200 * PITCH_SPEED_PRECISION)
-#define PITCH_MIN (50 * PITCH_SPEED_PRECISION)
-#define PITCH_SMALL_DELTA (PITCH_SPEED_PRECISION / 10) /* .1% */
-#define PITCH_BIG_DELTA (PITCH_SPEED_PRECISION) /* 1% */
-#define PITCH_NUDGE_DELTA (2 * PITCH_SPEED_PRECISION) /* 2% */
-
-#define SPEED_SMALL_DELTA (PITCH_SPEED_PRECISION / 10) /* .1% */
-#define SPEED_BIG_DELTA (PITCH_SPEED_PRECISION) /* 1% */
-
-#define SEMITONE_SMALL_DELTA (PITCH_SPEED_PRECISION / 10) /* 10 cents */
-#define SEMITONE_BIG_DELTA PITCH_SPEED_PRECISION /* 1 semitone */
-
-enum
-{
- PITCH_TOP = 0,
- PITCH_MID,
- PITCH_BOTTOM,
- PITCH_ITEM_COUNT,
-};
-
-
-/* This is a table of semitone percentage values of the appropriate
- precision (based on PITCH_SPEED_PRECISION). Note that these are
- all constant expressions, which will be evaluated at compile time,
- so no need to worry about how complex the expressions look.
- That's just to get the precision right.
-
- I calculated these values, starting from 50, as
-
- x(n) = 50 * 2^(n/12)
-
- All that math in each entry simply converts the float constant
- to an integer equal to PITCH_SPEED_PRECISION times the float value,
- with as little precision loss as possible (i.e. correctly rounding
- the last digit).
-*/
-#define TO_INT_WITH_PRECISION(x) \
- ( (unsigned short)(((x) * PITCH_SPEED_PRECISION * 10 + 5) / 10) )
-
-static const unsigned short semitone_table[] =
-{
- TO_INT_WITH_PRECISION(50.00000000), /* Octave lower */
- TO_INT_WITH_PRECISION(52.97315472),
- TO_INT_WITH_PRECISION(56.12310242),
- TO_INT_WITH_PRECISION(59.46035575),
- TO_INT_WITH_PRECISION(62.99605249),
- TO_INT_WITH_PRECISION(66.74199271),
- TO_INT_WITH_PRECISION(70.71067812),
- TO_INT_WITH_PRECISION(74.91535384),
- TO_INT_WITH_PRECISION(79.37005260),
- TO_INT_WITH_PRECISION(84.08964153),
- TO_INT_WITH_PRECISION(89.08987181),
- TO_INT_WITH_PRECISION(94.38743127),
- TO_INT_WITH_PRECISION(100.0000000), /* Normal sound */
- TO_INT_WITH_PRECISION(105.9463094),
- TO_INT_WITH_PRECISION(112.2462048),
- TO_INT_WITH_PRECISION(118.9207115),
- TO_INT_WITH_PRECISION(125.9921049),
- TO_INT_WITH_PRECISION(133.4839854),
- TO_INT_WITH_PRECISION(141.4213562),
- TO_INT_WITH_PRECISION(149.8307077),
- TO_INT_WITH_PRECISION(158.7401052),
- TO_INT_WITH_PRECISION(168.1792831),
- TO_INT_WITH_PRECISION(178.1797436),
- TO_INT_WITH_PRECISION(188.7748625),
- TO_INT_WITH_PRECISION(200.0000000) /* Octave higher */
-};
-
-#define NUM_SEMITONES ((int)(sizeof(semitone_table)/sizeof(semitone_table[0])))
-#define SEMITONE_END (NUM_SEMITONES/2)
-#define SEMITONE_START (-SEMITONE_END)
-
-/* A table of values for approximating the cent curve with
- linear interpolation. Multipy the next lowest semitone
- by this much to find the corresponding cent percentage.
-
- These values were calculated as
- x(n) = 100 * 2^(n * 20/1200)
-*/
-
-static const unsigned short cent_interp[] =
-{
- TO_INT_WITH_PRECISION(100.0000000),
- TO_INT_WITH_PRECISION(101.1619440),
- TO_INT_WITH_PRECISION(102.3373892),
- TO_INT_WITH_PRECISION(103.5264924),
- TO_INT_WITH_PRECISION(104.7294123),
- /* this one's the next semitone but we have it here for convenience */
- TO_INT_WITH_PRECISION(105.9463094),
-};
-
-/* Number of cents between entries in the cent_interp table */
-#define CENT_INTERP_INTERVAL 20
-#define CENT_INTERP_NUM ((int)(sizeof(cent_interp)/sizeof(cent_interp[0])))
-
-/* This stores whether the pitch and speed are at their own limits */
-/* or that of the timestretching algorithm */
-static bool at_limit = false;
-
-/*
- *
- * The pitchscreen is divided into 3 viewports (each row is a viewport)
- * Then each viewport is again divided into 3 colums, each showsing some infos
- * Additionally, on touchscreen, each cell represents a button
- *
- * Below a sketch describing what each cell will show (what's drawn on it)
- * --------------------------
- * | | | | <-- pitch up in the middle (text and button)
- * | | | | <-- arrows for mode toggling on the sides for touchscreen
- * |------------------------|
- * | | | | <-- semitone/speed up/down on the sides
- * | | | | <-- reset pitch&speed in the middle
- * |------------------------|
- * | | | | <-- pitch down in the middle
- * | | | | <-- Two "OK" for exit on the sides for touchscreen
- * |------------------------|
- *
- *
- */
-
-static void speak_pitch_mode(bool enqueue)
-{
- bool timestretch_mode = global_settings.pitch_mode_timestretch && dsp_timestretch_available();
- if (timestretch_mode)
- talk_id(VOICE_PITCH_TIMESTRETCH_MODE, enqueue);
- if (global_settings.pitch_mode_semitone)
- talk_id(VOICE_PITCH_SEMITONE_MODE, timestretch_mode ? true : enqueue);
- else
- talk_id(VOICE_PITCH_ABSOLUTE_MODE, timestretch_mode ? true : enqueue);
- return;
-}
-
-/*
- * Fixes the viewports so they represent the 3 rows, and adds a little margin
- * on all sides for the icons (which are drawn outside of the grid
- *
- * The modified viewports need to be passed to the touchscreen handling function
- **/
-static void pitchscreen_fix_viewports(struct viewport *parent,
- struct viewport pitch_viewports[PITCH_ITEM_COUNT])
-{
- int i, font_height;
- font_height = font_get(parent->font)->height;
- for (i = 0; i < PITCH_ITEM_COUNT; i++)
- {
- pitch_viewports[i] = *parent;
- pitch_viewports[i].height = parent->height / PITCH_ITEM_COUNT;
- pitch_viewports[i].x += ICON_BORDER;
- pitch_viewports[i].width -= 2*ICON_BORDER;
- }
- pitch_viewports[PITCH_TOP].y += ICON_BORDER;
- pitch_viewports[PITCH_TOP].height -= ICON_BORDER;
-
- if(pitch_viewports[PITCH_MID].height < font_height * 2)
- pitch_viewports[PITCH_MID].height = font_height * 2;
-
- pitch_viewports[PITCH_MID].y = pitch_viewports[PITCH_TOP].y
- + pitch_viewports[PITCH_TOP].height;
-
- pitch_viewports[PITCH_BOTTOM].y = pitch_viewports[PITCH_MID].y
- + pitch_viewports[PITCH_MID].height;
-
- pitch_viewports[PITCH_BOTTOM].height -= ICON_BORDER;
-}
-
-/* must be called before pitchscreen_draw, or within
- * since it neither clears nor updates the display */
-static void pitchscreen_draw_icons(struct screen *display,
- struct viewport *parent)
-{
- display->set_viewport(parent);
- display->mono_bitmap(bitmap_icons_7x8[Icon_UpArrow],
- parent->width/2 - 3,
- 2, 7, 8);
- display->mono_bitmap(bitmap_icons_7x8[Icon_DownArrow],
- parent->width /2 - 3,
- parent->height - 10, 7, 8);
- display->mono_bitmap(bitmap_icons_7x8[Icon_FastForward],
- parent->width - 10,
- parent->height /2 - 4, 7, 8);
- display->mono_bitmap(bitmap_icons_7x8[Icon_FastBackward],
- 2,
- parent->height /2 - 4, 7, 8);
- display->update_viewport();
-}
-
-static void pitchscreen_draw(struct screen *display, int max_lines,
- struct viewport pitch_viewports[PITCH_ITEM_COUNT],
- int32_t pitch, int32_t semitone
- ,int32_t speed
- )
-{
- const char* ptr;
- char buf[32];
- int w, h;
- bool show_lang_pitch;
- struct viewport *last_vp = NULL;
-
- /* "Pitch up/Pitch down" - hide for a small screen,
- * the text is drawn centered automatically
- *
- * note: this assumes 5 lines always fit on a touchscreen (should be
- * reasonable) */
- if (max_lines >= 5)
- {
- int w, h;
- struct viewport *vp = &pitch_viewports[PITCH_TOP];
- last_vp = display->set_viewport(vp);
- display->clear_viewport();
-#ifdef HAVE_TOUCHSCREEN
- /* two arrows in the top row, left and right column */
- char *arrows[] = { "<", ">"};
- display->getstringsize(arrows[0], &w, &h);
- display->putsxy(0, vp->height/2 - h/2, arrows[0]);
- display->putsxy(vp->width - w, vp->height/2 - h/2, arrows[1]);
-#endif
- /* UP: Pitch Up */
- if (global_settings.pitch_mode_semitone)
- ptr = str(LANG_PITCH_UP_SEMITONE);
- else
- ptr = str(LANG_PITCH_UP);
-
- display->getstringsize(ptr, &w, NULL);
- /* draw text */
- display->putsxy(vp->width/2 - w/2, 0, ptr);
- display->update_viewport();
-
- /* DOWN: Pitch Down */
- vp = &pitch_viewports[PITCH_BOTTOM];
- display->set_viewport(vp);
- display->clear_viewport();
-
-#ifdef HAVE_TOUCHSCREEN
- ptr = str(LANG_KBD_OK);
- display->getstringsize(ptr, &w, &h);
- /* one OK in the middle first column of the vp (at half height) */
- display->putsxy(vp->width/6 - w/2, vp->height/2 - h/2, ptr);
- /* one OK in the middle of the last column of the vp (at half height) */
- display->putsxy(5*vp->width/6 - w/2, vp->height/2 - h/2, ptr);
-#endif
- if (global_settings.pitch_mode_semitone)
- ptr = str(LANG_PITCH_DOWN_SEMITONE);
- else
- ptr = str(LANG_PITCH_DOWN);
- display->getstringsize(ptr, &w, &h);
- /* draw text */
- display->putsxy(vp->width/2 - w/2, vp->height - h, ptr);
- display->update_viewport();
- }
-
- /* Middle section */
- display->set_viewport(&pitch_viewports[PITCH_MID]);
- display->clear_viewport();
- int width_used = 0;
-
- /* Middle section upper line - hide for a small screen */
- if ((show_lang_pitch = (max_lines >= 3)))
- {
- if(global_settings.pitch_mode_timestretch)
- {
- /* Pitch:XXX.X% */
- if(global_settings.pitch_mode_semitone)
- {
- snprintf(buf, sizeof(buf), "%s: %s%d.%02d", str(LANG_PITCH),
- semitone >= 0 ? "+" : "-",
- abs(semitone / PITCH_SPEED_PRECISION),
- abs((semitone % PITCH_SPEED_PRECISION) /
- (PITCH_SPEED_PRECISION / 100))
- );
- }
- else
- {
- snprintf(buf, sizeof(buf), "%s: %ld.%ld%%", str(LANG_PITCH),
- pitch / PITCH_SPEED_PRECISION,
- (pitch % PITCH_SPEED_PRECISION) /
- (PITCH_SPEED_PRECISION / 10));
- }
- }
- else
- {
- /* Rate */
- snprintf(buf, sizeof(buf), "%s:", str(LANG_PLAYBACK_RATE));
- }
- display->getstringsize(buf, &w, &h);
- display->putsxy((pitch_viewports[PITCH_MID].width / 2) - (w / 2),
- (pitch_viewports[PITCH_MID].height / 2) - h, buf);
- if (w > width_used)
- width_used = w;
- }
-
- /* Middle section lower line */
- /* "Speed:XXX%" */
- if(global_settings.pitch_mode_timestretch)
- {
- snprintf(buf, sizeof(buf), "%s: %ld.%ld%%", str(LANG_SPEED),
- speed / PITCH_SPEED_PRECISION,
- (speed % PITCH_SPEED_PRECISION) / (PITCH_SPEED_PRECISION / 10));
- }
- else
- {
- if(global_settings.pitch_mode_semitone)
- {
- snprintf(buf, sizeof(buf), "%s%d.%02d",
- semitone >= 0 ? "+" : "-",
- abs(semitone / PITCH_SPEED_PRECISION),
- abs((semitone % PITCH_SPEED_PRECISION) /
- (PITCH_SPEED_PRECISION / 100))
- );
- }
- else
- {
- snprintf(buf, sizeof(buf), "%ld.%ld%%",
- pitch / PITCH_SPEED_PRECISION,
- (pitch % PITCH_SPEED_PRECISION) / (PITCH_SPEED_PRECISION / 10));
- }
- }
-
- display->getstringsize(buf, &w, &h);
- display->putsxy((pitch_viewports[PITCH_MID].width / 2) - (w / 2),
- show_lang_pitch ? (pitch_viewports[PITCH_MID].height / 2) :
- (pitch_viewports[PITCH_MID].height / 2) - (h / 2),
- buf);
- if (w > width_used)
- width_used = w;
-
- /* "limit" and "timestretch" labels */
- if (max_lines >= 7)
- {
- if(at_limit)
- {
- const char * const p = str(LANG_STRETCH_LIMIT);
- display->getstringsize(p, &w, &h);
- display->putsxy((pitch_viewports[PITCH_MID].width / 2) - (w / 2),
- (pitch_viewports[PITCH_MID].height / 2) + h, p);
- if (w > width_used)
- width_used = w;
- }
- }
-
- /* Middle section left/right labels */
- const char *leftlabel = "-2%";
- const char *rightlabel = "+2%";
- if (global_settings.pitch_mode_timestretch)
- {
- leftlabel = "<<";
- rightlabel = ">>";
- }
-
- /* Only display if they fit */
- display->getstringsize(leftlabel, &w, &h);
- width_used += w;
- display->getstringsize(rightlabel, &w, &h);
- width_used += w;
-
- if (width_used <= pitch_viewports[PITCH_MID].width)
- {
- display->putsxy(0, (pitch_viewports[PITCH_MID].height / 2) - (h / 2),
- leftlabel);
- display->putsxy((pitch_viewports[PITCH_MID].width - w),
- (pitch_viewports[PITCH_MID].height / 2) - (h / 2),
- rightlabel);
- }
- display->update_viewport();
- display->set_viewport(last_vp);
-}
-
-static int32_t pitch_increase(int32_t pitch, int32_t pitch_delta, bool allow_cutoff
- /* need this to maintain correct pitch/speed caps */
- , int32_t speed
- )
-{
- int32_t new_pitch;
- int32_t new_stretch;
- at_limit = false;
-
- if (pitch_delta < 0)
- {
- /* for large jumps, snap up to whole numbers */
- if(allow_cutoff && pitch_delta <= -PITCH_SPEED_PRECISION &&
- (pitch + pitch_delta) % PITCH_SPEED_PRECISION != 0)
- {
- pitch_delta += PITCH_SPEED_PRECISION - ((pitch + pitch_delta) % PITCH_SPEED_PRECISION);
- }
-
- new_pitch = pitch + pitch_delta;
-
- if (new_pitch < PITCH_MIN)
- {
- if (!allow_cutoff)
- {
- return pitch;
- }
- new_pitch = PITCH_MIN;
- at_limit = true;
- }
- }
- else if (pitch_delta > 0)
- {
- /* for large jumps, snap down to whole numbers */
- if(allow_cutoff && pitch_delta >= PITCH_SPEED_PRECISION &&
- (pitch + pitch_delta) % PITCH_SPEED_PRECISION != 0)
- {
- pitch_delta -= (pitch + pitch_delta) % PITCH_SPEED_PRECISION;
- }
-
- new_pitch = pitch + pitch_delta;
-
- if (new_pitch > PITCH_MAX)
- {
- if (!allow_cutoff)
- return pitch;
- new_pitch = PITCH_MAX;
- at_limit = true;
- }
- }
- else
- {
- /* pitch_delta == 0 -> no real change */
- return pitch;
- }
- if (dsp_timestretch_available())
- {
- /* increase the multiple to increase precision of this calculation */
- new_stretch = GET_STRETCH(new_pitch, speed);
- if(new_stretch < STRETCH_MIN)
- {
- /* we have to ignore allow_cutoff, because we can't have the */
- /* stretch go higher than STRETCH_MAX */
- new_pitch = GET_PITCH(speed, STRETCH_MIN);
- }
- else if(new_stretch > STRETCH_MAX)
- {
- /* we have to ignore allow_cutoff, because we can't have the */
- /* stretch go higher than STRETCH_MAX */
- new_pitch = GET_PITCH(speed, STRETCH_MAX);
- }
-
- if(new_stretch >= STRETCH_MAX ||
- new_stretch <= STRETCH_MIN)
- {
- at_limit = true;
- }
- }
-
- sound_set_pitch(new_pitch);
-
- return new_pitch;
-}
-
-static int32_t get_semitone_from_pitch(int32_t pitch)
-{
- int semitone = 0;
- int32_t fractional_index = 0;
-
- while(semitone < NUM_SEMITONES - 1 &&
- pitch >= semitone_table[semitone + 1])
- {
- semitone++;
- }
-
-
- /* now find the fractional part */
- while(pitch > (cent_interp[fractional_index + 1] *
- semitone_table[semitone] / PITCH_SPEED_100))
- {
- /* Check to make sure fractional_index isn't too big */
- /* This should never happen. */
- if(fractional_index >= CENT_INTERP_NUM - 1)
- {
- break;
- }
- fractional_index++;
- }
-
- int32_t semitone_pitch_a = cent_interp[fractional_index] *
- semitone_table[semitone] /
- PITCH_SPEED_100;
- int32_t semitone_pitch_b = cent_interp[fractional_index + 1] *
- semitone_table[semitone] /
- PITCH_SPEED_100;
- /* this will be the integer offset from the cent_interp entry */
- int32_t semitone_frac_ofs = (pitch - semitone_pitch_a) * CENT_INTERP_INTERVAL /
- (semitone_pitch_b - semitone_pitch_a);
- semitone = (semitone + SEMITONE_START) * PITCH_SPEED_PRECISION +
- fractional_index * CENT_INTERP_INTERVAL +
- semitone_frac_ofs;
-
- return semitone;
-}
-
-static int32_t get_pitch_from_semitone(int32_t semitone)
-{
- int32_t adjusted_semitone = semitone - SEMITONE_START * PITCH_SPEED_PRECISION;
-
- /* Find the index into the semitone table */
- int32_t semitone_index = (adjusted_semitone / PITCH_SPEED_PRECISION);
-
- /* set pitch to the semitone's integer part value */
- int32_t pitch = semitone_table[semitone_index];
- /* get the range of the cent modification for future calculation */
- int32_t pitch_mod_a =
- cent_interp[(adjusted_semitone % PITCH_SPEED_PRECISION) /
- CENT_INTERP_INTERVAL];
- int32_t pitch_mod_b =
- cent_interp[(adjusted_semitone % PITCH_SPEED_PRECISION) /
- CENT_INTERP_INTERVAL + 1];
- /* figure out the cent mod amount based on the semitone fractional value */
- int32_t pitch_mod = pitch_mod_a + (pitch_mod_b - pitch_mod_a) *
- (adjusted_semitone % CENT_INTERP_INTERVAL) / CENT_INTERP_INTERVAL;
-
- /* modify pitch based on the mod amount we just calculated */
- return (pitch * pitch_mod + PITCH_SPEED_100 / 2) / PITCH_SPEED_100;
-}
-
-static int32_t pitch_increase_semitone(int32_t pitch,
- int32_t current_semitone,
- int32_t semitone_delta
- , int32_t speed
- )
-{
- int32_t new_semitone = current_semitone;
-
- /* snap to the delta interval */
- if(current_semitone % semitone_delta != 0)
- {
- if(current_semitone > 0 && semitone_delta > 0)
- new_semitone += semitone_delta;
- else if(current_semitone < 0 && semitone_delta < 0)
- new_semitone += semitone_delta;
-
- new_semitone -= new_semitone % semitone_delta;
- }
- else
- new_semitone += semitone_delta;
-
- /* clamp the pitch so it doesn't go beyond the pitch limits */
- if(new_semitone < (SEMITONE_START * PITCH_SPEED_PRECISION))
- {
- new_semitone = SEMITONE_START * PITCH_SPEED_PRECISION;
- at_limit = true;
- }
- else if(new_semitone > (SEMITONE_END * PITCH_SPEED_PRECISION))
- {
- new_semitone = SEMITONE_END * PITCH_SPEED_PRECISION;
- at_limit = true;
- }
-
- int32_t new_pitch = get_pitch_from_semitone(new_semitone);
-
- int32_t new_stretch = GET_STRETCH(new_pitch, speed);
-
- /* clamp the pitch so it doesn't go beyond the stretch limits */
- if( new_stretch > STRETCH_MAX)
- {
- new_pitch = GET_PITCH(speed, STRETCH_MAX);
- new_semitone = get_semitone_from_pitch(new_pitch);
- at_limit = true;
- }
- else if (new_stretch < STRETCH_MIN)
- {
- new_pitch = GET_PITCH(speed, STRETCH_MIN);
- new_semitone = get_semitone_from_pitch(new_pitch);
- at_limit = true;
- }
-
- pitch_increase(pitch, new_pitch - pitch, false
- , speed
- );
-
- return new_semitone;
-}
-
-#ifdef HAVE_TOUCHSCREEN
-/*
- * Check for touchscreen presses as per sketch above in this file
- *
- * goes through each row of the, checks whether the touchscreen
- * was pressed in it. Then it looks the columns of each row for specific actions
- */
-static int pitchscreen_do_touchscreen(struct viewport vps[])
-{
- short x, y;
- struct viewport *this_vp = &vps[PITCH_TOP];
- int ret;
- static bool wait_for_release = false;
- ret = action_get_touchscreen_press_in_vp(&x, &y, this_vp);
-
- /* top row */
- if (ret > ACTION_UNKNOWN)
- { /* press on top row, left or right column
- * only toggle mode if released */
- int column = this_vp->width / 3;
- if ((x < column || x > (2*column)) && (ret == BUTTON_REL))
- return ACTION_PS_TOGGLE_MODE;
-
-
- else if (x >= column && x <= (2*column))
- { /* center column pressed */
- if (ret == BUTTON_REPEAT)
- return ACTION_PS_INC_BIG;
- else if (ret & BUTTON_REL)
- return ACTION_PS_INC_SMALL;
- }
- return ACTION_NONE;
- }
-
- /* now the center row */
- this_vp = &vps[PITCH_MID];
- ret = action_get_touchscreen_press_in_vp(&x, &y, this_vp);
-
- if (ret > ACTION_UNKNOWN)
- {
- int column = this_vp->width / 3;
-
- if (x < column)
- { /* left column */
- if (ret & BUTTON_REL)
- {
- wait_for_release = false;
- return ACTION_PS_NUDGE_LEFTOFF;
- }
- else if (ret & BUTTON_REPEAT)
- return ACTION_PS_SLOWER;
- if (!wait_for_release)
- {
- wait_for_release = true;
- return ACTION_PS_NUDGE_LEFT;
- }
- }
- else if (x > (2*column))
- { /* right column */
- if (ret & BUTTON_REL)
- {
- wait_for_release = false;
- return ACTION_PS_NUDGE_RIGHTOFF;
- }
- else if (ret & BUTTON_REPEAT)
- return ACTION_PS_FASTER;
- if (!wait_for_release)
- {
- wait_for_release = true;
- return ACTION_PS_NUDGE_RIGHT;
- }
- }
- else
- /* center column was pressed */
- return ACTION_PS_RESET;
- }
-
- /* now the bottom row */
- this_vp = &vps[PITCH_BOTTOM];
- ret = action_get_touchscreen_press_in_vp(&x, &y, this_vp);
-
- if (ret > ACTION_UNKNOWN)
- {
- int column = this_vp->width / 3;
-
- /* left or right column is exit */
- if ((x < column || x > (2*column)) && (ret == BUTTON_REL))
- return ACTION_PS_EXIT;
- else if (x >= column && x <= (2*column))
- { /* center column was pressed */
- if (ret & BUTTON_REPEAT)
- return ACTION_PS_DEC_BIG;
- else if (ret & BUTTON_REL)
- return ACTION_PS_DEC_SMALL;
- }
- return ACTION_NONE;
- }
- return ACTION_NONE;
-}
-
-#endif
-/*
- returns:
- 0 on exit
- 1 if USB was connected
-*/
-
+#include "plugin.h"
int gui_syncpitchscreen_run(void)
{
- int button;
- int32_t pitch = sound_get_pitch();
- int32_t semitone;
-
- int32_t new_pitch;
- int32_t pitch_delta;
- bool nudged = false;
- int i, updated = 4, decimals = 0;
- bool exit = false;
- /* should maybe be passed per parameter later, not needed for now */
- struct viewport parent[NB_SCREENS];
- struct viewport pitch_viewports[NB_SCREENS][PITCH_ITEM_COUNT];
- int max_lines[NB_SCREENS];
-
- push_current_activity(ACTIVITY_PITCHSCREEN);
-
- int32_t new_speed = 0, new_stretch;
-
- /* the speed variable holds the apparent speed of the playback */
- int32_t speed;
- if (dsp_timestretch_available())
- {
- speed = GET_SPEED(pitch, dsp_get_timestretch());
- }
- else
- {
- speed = pitch;
- }
-
- /* Figure out whether to be in timestretch mode */
- if (global_settings.pitch_mode_timestretch && !dsp_timestretch_available())
- {
- global_settings.pitch_mode_timestretch = false;
- settings_save();
- }
-
- /* Count decimals for speaking */
- for (i = PITCH_SPEED_PRECISION; i >= 10; i /= 10)
- decimals++;
-
- /* set the semitone index based on the current pitch */
- semitone = get_semitone_from_pitch(pitch);
-
- /* initialize pitchscreen vps */
- FOR_NB_SCREENS(i)
- {
- viewport_set_defaults(&parent[i], i);
- max_lines[i] = viewport_get_nb_lines(&parent[i]);
- pitchscreen_fix_viewports(&parent[i], pitch_viewports[i]);
- screens[i].set_viewport(&parent[i]);
- screens[i].clear_viewport();
-
- /* also, draw the icons now, it's only needed once */
- pitchscreen_draw_icons(&screens[i], &parent[i]);
- }
- pcmbuf_set_low_latency(true);
-
- while (!exit)
- {
- FOR_NB_SCREENS(i)
- pitchscreen_draw(&screens[i], max_lines[i],
- pitch_viewports[i], pitch, semitone
- , speed
- );
- pitch_delta = 0;
- new_speed = 0;
-
- if (global_settings.talk_menu && updated)
- {
- talk_shutup();
- switch (updated)
- {
- case 1:
- if (global_settings.pitch_mode_semitone)
- talk_value_decimal(semitone, UNIT_SIGNED, decimals, false);
- else
- talk_value_decimal(pitch, UNIT_PERCENT, decimals, false);
- break;
- case 2:
- talk_value_decimal(speed, UNIT_PERCENT, decimals, false);
- break;
- case 3:
- speak_pitch_mode(false);
- break;
- case 4:
- if (global_settings.pitch_mode_timestretch && dsp_timestretch_available())
- talk_id(LANG_PITCH, false);
- else
- talk_id(LANG_PLAYBACK_RATE, false);
- talk_value_decimal(pitch, UNIT_PERCENT, decimals, true);
- if (global_settings.pitch_mode_timestretch && dsp_timestretch_available())
- {
- talk_id(LANG_SPEED, true);
- talk_value_decimal(speed, UNIT_PERCENT, decimals, true);
- }
- speak_pitch_mode(true);
- break;
- default:
- break;
- }
- }
- updated = 0;
-
- button = get_action(CONTEXT_PITCHSCREEN, HZ);
-
-#ifdef HAVE_TOUCHSCREEN
- if (button == ACTION_TOUCHSCREEN)
- {
- FOR_NB_SCREENS(i)
- button = pitchscreen_do_touchscreen(pitch_viewports[i]);
- }
-#endif
- switch (button)
- {
- case ACTION_PS_INC_SMALL:
- if(global_settings.pitch_mode_semitone)
- pitch_delta = SEMITONE_SMALL_DELTA;
- else
- pitch_delta = PITCH_SMALL_DELTA;
- updated = 1;
- break;
-
- case ACTION_PS_INC_BIG:
- if(global_settings.pitch_mode_semitone)
- pitch_delta = SEMITONE_BIG_DELTA;
- else
- pitch_delta = PITCH_BIG_DELTA;
- updated = 1;
- break;
-
- case ACTION_PS_DEC_SMALL:
- if(global_settings.pitch_mode_semitone)
- pitch_delta = -SEMITONE_SMALL_DELTA;
- else
- pitch_delta = -PITCH_SMALL_DELTA;
- updated = 1;
- break;
-
- case ACTION_PS_DEC_BIG:
- if(global_settings.pitch_mode_semitone)
- pitch_delta = -SEMITONE_BIG_DELTA;
- else
- pitch_delta = -PITCH_BIG_DELTA;
- updated = 1;
- break;
-
- case ACTION_PS_NUDGE_RIGHT:
- if (!global_settings.pitch_mode_timestretch)
- {
- new_pitch = pitch_increase(pitch, PITCH_NUDGE_DELTA, false
- , speed
- );
- nudged = (new_pitch != pitch);
- pitch = new_pitch;
- semitone = get_semitone_from_pitch(pitch);
- speed = pitch;
- updated = nudged ? 1 : 0;
- break;
- }
- else
- {
- new_speed = speed + SPEED_SMALL_DELTA;
- at_limit = false;
- updated = 2;
- }
- break;
-
- case ACTION_PS_FASTER:
- if (global_settings.pitch_mode_timestretch)
- {
- new_speed = speed + SPEED_BIG_DELTA;
- /* snap to whole numbers */
- if(new_speed % PITCH_SPEED_PRECISION != 0)
- new_speed -= new_speed % PITCH_SPEED_PRECISION;
- at_limit = false;
- updated = 2;
- }
- break;
-
- case ACTION_PS_NUDGE_RIGHTOFF:
- if (nudged)
- {
- pitch = pitch_increase(pitch, -PITCH_NUDGE_DELTA, false
- , speed
- );
- speed = pitch;
- semitone = get_semitone_from_pitch(pitch);
- nudged = false;
- updated = 1;
- }
- break;
-
- case ACTION_PS_NUDGE_LEFT:
- if (!global_settings.pitch_mode_timestretch)
- {
- new_pitch = pitch_increase(pitch, -PITCH_NUDGE_DELTA, false
- , speed
- );
- nudged = (new_pitch != pitch);
- pitch = new_pitch;
- semitone = get_semitone_from_pitch(pitch);
- speed = pitch;
- updated = nudged ? 1 : 0;
- break;
- }
- else
- {
- new_speed = speed - SPEED_SMALL_DELTA;
- at_limit = false;
- updated = 2;
- }
- break;
-
- case ACTION_PS_SLOWER:
- if (global_settings.pitch_mode_timestretch)
- {
- new_speed = speed - SPEED_BIG_DELTA;
- /* snap to whole numbers */
- if(new_speed % PITCH_SPEED_PRECISION != 0)
- new_speed += PITCH_SPEED_PRECISION - speed % PITCH_SPEED_PRECISION;
- at_limit = false;
- updated = 2;
- }
- break;
-
- case ACTION_PS_NUDGE_LEFTOFF:
- if (nudged)
- {
- pitch = pitch_increase(pitch, PITCH_NUDGE_DELTA, false
- , speed
- );
- speed = pitch;
- semitone = get_semitone_from_pitch(pitch);
- nudged = false;
- updated = 1;
- }
- break;
-
- case ACTION_PS_RESET:
- pitch = PITCH_SPEED_100;
- sound_set_pitch(pitch);
- speed = PITCH_SPEED_100;
- if (dsp_timestretch_available())
- {
- dsp_set_timestretch(PITCH_SPEED_100);
- at_limit = false;
- }
- semitone = get_semitone_from_pitch(pitch);
- updated = 4;
- break;
-
- case ACTION_PS_TOGGLE_MODE:
- global_settings.pitch_mode_semitone = !global_settings.pitch_mode_semitone;
-
- if (dsp_timestretch_available() && !global_settings.pitch_mode_semitone)
- {
- global_settings.pitch_mode_timestretch = !global_settings.pitch_mode_timestretch;
- if(!global_settings.pitch_mode_timestretch)
- {
- /* no longer in timestretch mode. Reset speed */
- speed = pitch;
- dsp_set_timestretch(PITCH_SPEED_100);
- }
- }
- settings_save();
- updated = 3;
- break;
-
- case ACTION_PS_EXIT:
- exit = true;
- break;
-
- default:
- if (default_event_handler(button) == SYS_USB_CONNECTED)
- return 1;
- break;
- }
- if (pitch_delta)
- {
- if (global_settings.pitch_mode_semitone)
- {
- semitone = pitch_increase_semitone(pitch, semitone, pitch_delta
- , speed
- );
- pitch = get_pitch_from_semitone(semitone);
- }
- else
- {
- pitch = pitch_increase(pitch, pitch_delta, true
- , speed
- );
- semitone = get_semitone_from_pitch(pitch);
- }
- if (global_settings.pitch_mode_timestretch)
- {
- /* do this to make sure we properly obey the stretch limits */
- new_speed = speed;
- }
- else
- {
- speed = pitch;
- }
- }
-
- if(new_speed)
- {
- new_stretch = GET_STRETCH(pitch, new_speed);
-
- /* limit the amount of stretch */
- if(new_stretch > STRETCH_MAX)
- {
- new_stretch = STRETCH_MAX;
- new_speed = GET_SPEED(pitch, new_stretch);
- }
- else if(new_stretch < STRETCH_MIN)
- {
- new_stretch = STRETCH_MIN;
- new_speed = GET_SPEED(pitch, new_stretch);
- }
-
- new_stretch = GET_STRETCH(pitch, new_speed);
- if(new_stretch >= STRETCH_MAX ||
- new_stretch <= STRETCH_MIN)
- {
- at_limit = true;
- }
-
- /* set the amount of stretch */
- dsp_set_timestretch(new_stretch);
-
- /* update the speed variable with the new speed */
- speed = new_speed;
-
- /* Reset new_speed so we only call dsp_set_timestretch */
- /* when needed */
- new_speed = 0;
- }
- }
-
- pcmbuf_set_low_latency(false);
- pop_current_activity();
-
- /* Clean up */
- FOR_NB_SCREENS(i)
- {
- screens[i].set_viewport(NULL);
- }
-
- return 0;
+ return (plugin_load(VIEWERS_DIR"/pitch_screen.rock", NULL) == PLUGIN_USB_CONNECTED);
}
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index f8bf98d4ee..a7d07f4e33 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 */
@@ -248,20 +251,21 @@ static void talk_qs_option(const struct settings_list *opt, bool enqueue)
static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button)
{
int item;
- bool invert = false;
+ bool previous = false;
switch(button)
{
case ACTION_QS_TOP:
- invert = true;
item = QUICKSCREEN_TOP;
break;
+
case ACTION_QS_LEFT:
- invert = true;
item = QUICKSCREEN_LEFT;
+ previous = true;
break;
case ACTION_QS_DOWN:
item = QUICKSCREEN_BOTTOM;
+ previous = true;
break;
case ACTION_QS_RIGHT:
@@ -271,37 +275,40 @@ static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button)
default:
return false;
}
+
if (qs->items[item] == NULL)
return false;
-#ifdef ASCENDING_INT_SETTINGS
- if (((qs->items[item]->flags & F_INT_SETTING) == F_INT_SETTING) &&
- ( button == ACTION_QS_DOWN || button == ACTION_QS_TOP))
- {
- invert = !invert;
- }
-#endif
- option_select_next_val(qs->items[item], invert, true);
+
+ option_select_next_val(qs->items[item], previous, true);
talk_qs_option(qs->items[item], false);
return true;
}
#ifdef HAVE_TOUCHSCREEN
-static int quickscreen_touchscreen_button(const struct viewport
- vps[QUICKSCREEN_ITEM_COUNT])
+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;
- else if (viewport_point_within_vp(&vps[QUICKSCREEN_TOP], x, y))
+
+ 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));
+
+ switch(bits) {
+ case top:
return ACTION_QS_TOP;
- else if (viewport_point_within_vp(&vps[QUICKSCREEN_BOTTOM], x, y))
+ case bottom:
return ACTION_QS_DOWN;
- else if (viewport_point_within_vp(&vps[QUICKSCREEN_LEFT], x, y))
+ case left:
return ACTION_QS_LEFT;
- else if (viewport_point_within_vp(&vps[QUICKSCREEN_RIGHT], x, y))
+ case right:
return ACTION_QS_RIGHT;
- return ACTION_STD_CANCEL;
+ default:
+ return ACTION_STD_CANCEL;
+ }
}
#endif
@@ -343,7 +350,7 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente
button = get_action(CONTEXT_QUICKSCREEN, HZ/5);
#ifdef HAVE_TOUCHSCREEN
if (button == ACTION_TOUCHSCREEN)
- button = quickscreen_touchscreen_button(vps[SCREEN_MAIN]);
+ button = quickscreen_touchscreen_button();
#endif
if (default_event_handler(button) == SYS_USB_CONNECTED)
{
@@ -407,6 +414,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)
@@ -442,6 +452,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_engine.c b/apps/gui/skin_engine/skin_engine.c
index ce3401f41c..b3626b681d 100644
--- a/apps/gui/skin_engine/skin_engine.c
+++ b/apps/gui/skin_engine/skin_engine.c
@@ -155,6 +155,9 @@ void settings_apply_skins(void)
char filename[MAX_PATH];
static bool first_run = true;
+ if (audio_status() & AUDIO_STATUS_PLAY)
+ audio_stop();
+
skin_backdrop_init();
skins_initialised = true;
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 4ebdcab722..b3840f689f 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -1187,7 +1187,7 @@ static int parse_progressbar_tag(struct skin_element* element,
region->reverse_bar = false;
region->allow_while_locked = false;
region->press_length = PRESS;
- region->last_press = 0xffff;
+ region->last_press = -1;
region->armed = false;
region->bar = PTRTOSKINOFFSET(skin_buffer, pb);
@@ -1602,7 +1602,7 @@ static int parse_touchregion(struct skin_element *element,
region->armed = false;
region->reverse_bar = false;
region->value = 0;
- region->last_press = 0xffff;
+ region->last_press = -1;
region->press_length = PRESS;
region->allow_while_locked = false;
region->bar = PTRTOSKINOFFSET(skin_buffer, NULL);
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c
index a4c9af7539..27022b87d1 100644
--- a/apps/gui/skin_engine/skin_tokens.c
+++ b/apps/gui/skin_engine/skin_tokens.c
@@ -1367,7 +1367,7 @@ const char *get_token_value(struct gui_wps *gwps,
case SKIN_TOKEN_LASTTOUCH:
{
#ifdef HAVE_TOUCHSCREEN
- unsigned int last_touch = touchscreen_last_touch();
+ long last_touch = touchscreen_last_touch();
char *skin_base = get_skin_buffer(data);
struct touchregion_lastpress *data = SKINOFFSETTOPTR(skin_base, token->value.data);
if (!data) return NULL;
@@ -1375,7 +1375,7 @@ const char *get_token_value(struct gui_wps *gwps,
if (region)
last_touch = region->last_press;
- if (last_touch != 0xffff &&
+ if (last_touch != -1 &&
TIME_BEFORE(current_tick, data->timeout + last_touch))
return "t";
#endif
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/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/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 4cd2691d33..a97be0870d 100644
--- a/apps/keymaps/keymap-fiiom3k.c
+++ b/apps/keymaps/keymap-fiiom3k.c
@@ -40,39 +40,41 @@ static const struct button_mapping button_context_standard[] = {
{ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
{ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
{ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT},
- {ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
- {ACTION_STD_MENU, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK},
- {ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
+ {ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
+ {ACTION_STD_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
{ACTION_STD_KEYLOCK, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
- {ACTION_STD_HOTKEY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_wps[] = {
{ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
- {ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
+ {ACTION_WPS_VIEW_PLAYLIST, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
{ACTION_WPS_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER},
{ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE},
{ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE},
{ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
+ {ACTION_WPS_VOLUP, BUTTON_SCROLL_BACK, BUTTON_NONE},
+ {ACTION_WPS_VOLUP, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE},
+ {ACTION_WPS_VOLDOWN, BUTTON_SCROLL_FWD, BUTTON_NONE},
+ {ACTION_WPS_VOLDOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE},
+ {ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REL, BUTTON_UP},
+ {ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN},
{ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT},
{ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT},
{ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT},
{ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT},
- {ACTION_WPS_BROWSE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK},
- {ACTION_WPS_MENU, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
- {ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
- {ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
+ {ACTION_WPS_BROWSE, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
+ {ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
+ {ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
{ACTION_STD_KEYLOCK, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
{ACTION_WPS_HOTKEY, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY},
- {ACTION_WPS_VIEW_PLAYLIST, BUTTON_SCROLL_FWD, BUTTON_NONE},
- {ACTION_WPS_VIEW_PLAYLIST, BUTTON_SCROLL_BACK, BUTTON_NONE},
+ {ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT},
{ACTION_WPS_ABSETA_PREVDIR, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP},
{ACTION_WPS_ABSETB_NEXTDIR, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN},
- {ACTION_WPS_ABRESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT},
+ {ACTION_WPS_ABRESET, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK},
LAST_ITEM_IN_LIST
}; /* button_context_wps */
@@ -87,11 +89,20 @@ static const struct button_mapping button_context_wps_locked[] = {
}; /* button_context_wps_locked */
static const struct button_mapping button_context_tree[] = {
- {ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY},
- {ACTION_TREE_WPS, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK},
+ {ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
+ {ACTION_TREE_HOTKEY, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY},
+ {ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER},
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
+
+static const struct button_mapping button_context_tree_scroll_lr[] = {
+ { ACTION_TREE_ROOT_INIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
+ { ACTION_TREE_PGLEFT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
+ { ACTION_TREE_PGRIGHT, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE },
+ LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
+}; /* button_context_tree_scroll_lr */
+
static const struct button_mapping button_context_bmark[] = {
{ACTION_BMS_DELETE, BUTTON_PLAY, BUTTON_NONE},
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_TREE),
@@ -120,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},
@@ -140,14 +150,25 @@ static const struct button_mapping button_context_settings_eq[] = {
static const struct button_mapping button_context_quickscreen[] = {
{ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE},
+ {ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
+ {ACTION_QS_TOP, BUTTON_SCROLL_BACK, BUTTON_NONE},
+ {ACTION_QS_TOP, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE},
+ {ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
+ {ACTION_QS_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE},
+ {ACTION_QS_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE},
+ {ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
+ {ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_QS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE},
+ {ACTION_QS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE},
+ {ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE},
{ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE},
{ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE},
+ {ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE},
LAST_ITEM_IN_LIST
}; /* button_context_quickscreen */
@@ -188,6 +209,10 @@ static const struct button_mapping button_context_keyboard[] = {
{ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE},
{ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
{ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
+ {ACTION_KBD_UP, BUTTON_SCROLL_BACK, BUTTON_NONE},
+ {ACTION_KBD_UP, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE},
+ {ACTION_KBD_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE},
+ {ACTION_KBD_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
@@ -279,6 +304,10 @@ const struct button_mapping* get_context_mapping(int context)
return button_context_wps;
case CONTEXT_TREE:
case CONTEXT_MAINMENU:
+ if (global_settings.hold_lr_for_scroll_in_list)
+ return button_context_tree_scroll_lr;
+ /* else fall through to CUSTOM|CONTEXT_TREE */
+ case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
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..e94bd19cef 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
@@ -4043,15 +4045,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..34c02555c2 100644
--- a/apps/lang/basque.lang
+++ b/apps/lang/basque.lang
@@ -10311,15 +10311,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..137fd4e99b 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 или горе дясно = Да"
@@ -10316,15 +10316,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..d6a65a7205 100644
--- a/apps/lang/catala.lang
+++ b/apps/lang/catala.lang
@@ -10305,15 +10305,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..5e137150e8 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键返回)"
@@ -8142,11 +7554,9 @@
user: core
<source>
*: "Buffer:"
- archosplayer: "Buf:"
</source>
<dest>
*: "缓冲区:"
- archosplayer: "Buf:"
</dest>
<voice>
*: "缓冲区大小为"
@@ -8206,8 +7616,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 +7625,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 +7661,7 @@
</dest>
<voice>
*: none
+ gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@@ -8260,11 +7670,9 @@
user: core
<source>
*: "Any Other = No"
- archosplayer: none
</source>
<dest>
*: "Any Other=否"
- archosplayer: none
</dest>
<voice>
*: ""
@@ -8427,7 +7835,7 @@
*: "Main Menu"
</source>
<dest>
- *: "主选单"
+ *: "主菜单"
</dest>
<voice>
*: "主选单"
@@ -8453,15 +7861,12 @@
user: core
<source>
*: "End of Song List"
- archosplayer: "End of List"
</source>
<dest>
*: "曲目列表结束"
- archosplayer: "列表结束"
</dest>
<voice>
*: "曲目列表结束"
- archosplayer: "列表结束"
</voice>
</phrase>
<phrase>
@@ -8561,20 +7966,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 +8176,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 +8427,7 @@
*: "Context Menu"
</source>
<dest>
- *: "相关选单"
+ *: "相关菜单"
</dest>
<voice>
*: "相关选单"
@@ -9123,10 +8514,10 @@
*: "Show Filename Extensions"
</source>
<dest>
- *: "显示文件名后缀"
+ *: "显示后缀名"
</dest>
<voice>
- *: "显示文件名后缀"
+ *: "显示后缀名"
</voice>
</phrase>
<phrase>
@@ -9140,7 +8531,7 @@
*: "读取中...已读取%d%%(%s)"
</dest>
<voice>
- *: ""
+ *: "读取中...已读取%d%%(%s)"
</voice>
</phrase>
<phrase>
@@ -9266,7 +8657,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 +8864,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 +9031,7 @@
*: "%s不存在"
</dest>
<voice>
- *: "不存在"
+ *: "%s不存在"
</voice>
</phrase>
<phrase>
@@ -10146,11 +9520,11 @@
</source>
<dest>
*: none
- accessory_supply: "给附件供电"
+ accessory_supply: "为附件供电"
</dest>
<voice>
*: none
- accessory_supply: "给附件供电"
+ accessory_supply: "为附件供电"
</voice>
</phrase>
<phrase>
@@ -10161,10 +9535,10 @@
*: "Unknown"
</source>
<dest>
- *: "不知道"
+ *: "未知"
</dest>
<voice>
- *: "不知道"
+ *: "未知"
</voice>
</phrase>
<phrase>
@@ -10207,15 +9581,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 +10288,10 @@
*: "Threshold"
</source>
<dest>
- *: "阀值"
+ *: "阈值"
</dest>
<voice>
- *: "阀值"
+ *: "阈值"
</voice>
</phrase>
<phrase>
@@ -11004,10 +10378,10 @@
*: "Knee"
</source>
<dest>
- *: "柔和度"
+ *: "拐点"
</dest>
<voice>
- *: "柔和度"
+ *: "拐点"
</voice>
</phrase>
<phrase>
@@ -11046,10 +10420,10 @@
*: "Soft Knee"
</source>
<dest>
- *: "柔和"
+ *: "软拐点"
</dest>
<voice>
- *: "柔和"
+ *: "软拐点"
</voice>
</phrase>
<phrase>
@@ -11105,10 +10479,10 @@
*: "Hard Knee"
</source>
<dest>
- *: "锐利"
+ *: "硬拐点"
</dest>
<voice>
- *: "锐利"
+ *: "硬拐点"
</voice>
</phrase>
<phrase>
@@ -11125,7 +10499,7 @@
</dest>
<voice>
*: none
- quickscreen: "Set as Top Quickscreen Item"
+ quickscreen: "设为快屏上键"
</voice>
</phrase>
<phrase>
@@ -11483,10 +10857,10 @@
*: "Timestretch"
</source>
<dest>
- *: "音调/音速"
+ *: "时间伸缩"
</dest>
<voice>
- *: "音调/音速"
+ *: "时间伸缩"
</voice>
</phrase>
<phrase>
@@ -11726,15 +11100,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 +11244,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 +11292,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 +11309,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 +11405,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 +11450,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 +11467,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 +11529,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 +11923,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 +11947,7 @@
*: "仅扫描指定文件夹"
</dest>
<voice>
- *: "扫描媒体时扫描指定文件夹"
+ *: "仅扫描指定文件夹"
</voice>
</phrase>
<phrase>
@@ -12577,6 +11965,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 +12058,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..6fcc779855 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,7 +7417,7 @@
wheel_acceleration: none
</dest>
<voice>
- *: "List Acceleration Speed"
+ *: "列表加速速度"
wheel_acceleration: none
</voice>
</phrase>
@@ -8122,7 +7435,7 @@
</dest>
<voice>
*: none
- recording: "Format"
+ recording: "格式"
</voice>
</phrase>
<phrase>
@@ -8136,7 +7449,7 @@
*: "書簽動作"
</dest>
<voice>
- *: "Bookmark Actions"
+ *: "書簽動作"
</voice>
</phrase>
<phrase>
@@ -8153,7 +7466,7 @@
</dest>
<voice>
*: none
- crossfade: "Shuffle or Manual Track Skip"
+ crossfade: "亂序播放與跳過曲目"
</voice>
</phrase>
<phrase>
@@ -8167,7 +7480,7 @@
*: "正常"
</dest>
<voice>
- *: "Normal"
+ *: "正常"
</voice>
</phrase>
<phrase>
@@ -8176,15 +7489,12 @@
user: core
<source>
*: "Buffer:"
- archosplayer: "Buf:"
</source>
<dest>
*: "緩衝:"
- archosplayer: "Buf:"
</dest>
<voice>
- *: ""
- archosplayer: ""
+ *: "緩衝:"
</voice>
</phrase>
<phrase>
@@ -8201,7 +7511,7 @@
</dest>
<voice>
*: none
- headphone_detection: "Pause and Resume"
+ headphone_detection: "暫停和恢復播放"
</voice>
</phrase>
<phrase>
@@ -8218,7 +7528,7 @@
</dest>
<voice>
*: none
- recording: "Can't write to recording directory"
+ recording: "不能寫入錄音目錄"
</voice>
</phrase>
<phrase>
@@ -8229,10 +7539,10 @@
*: "Channel Configuration"
</source>
<dest>
- *: "聲道設置"
+ *: "聲道"
</dest>
<voice>
- *: "Channel Configuration"
+ *: "聲道"
</voice>
</phrase>
<phrase>
@@ -8241,9 +7551,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 +7560,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 +7588,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 +7608,12 @@
user: core
<source>
*: "Any Other = No"
- archosplayer: none
</source>
<dest>
*: "Any Other = 否"
- archosplayer: none
</dest>
<voice>
*: ""
- archosplayer: none
</voice>
</phrase>
<phrase>
@@ -8319,7 +7627,7 @@
*: "瀏覽 Cuesheet"
</dest>
<voice>
- *: "Browse Cuesheet"
+ *: "瀏覽 Cuesheet"
</voice>
</phrase>
<phrase>
@@ -8333,7 +7641,7 @@
*: "樣品程序"
</dest>
<voice>
- *: "Demos"
+ *: "樣品程序"
</voice>
</phrase>
<phrase>
@@ -8350,7 +7658,7 @@
</dest>
<voice>
*: none
- recording: "Bitrate"
+ recording: "位元率"
</voice>
</phrase>
<phrase>
@@ -8364,7 +7672,7 @@
*: "最高時間"
</dest>
<voice>
- *: "Top Time"
+ *: "最高時間"
</voice>
</phrase>
<phrase>
@@ -8378,7 +7686,7 @@
*: "使用 .talk 文件"
</dest>
<voice>
- *: "Use File .talk Clips"
+ *: "使用 .talk 文件"
</voice>
</phrase>
<phrase>
@@ -8392,7 +7700,7 @@
*: "亂數"
</dest>
<voice>
- *: "Random"
+ *: "亂數"
</voice>
</phrase>
<phrase>
@@ -8406,7 +7714,7 @@
*: "全部"
</dest>
<voice>
- *: "All"
+ *: "全部"
</voice>
</phrase>
<phrase>
@@ -8423,7 +7731,7 @@
</dest>
<voice>
*: none
- recording: "New file"
+ recording: "新檔案"
</voice>
</phrase>
<phrase>
@@ -8434,10 +7742,10 @@
*: "Add to Shortcuts"
</source>
<dest>
- *: "添加到快捷"
+ *: "添加到捷徑中"
</dest>
<voice>
- *: "Add to Shortcuts"
+ *: "添加到捷徑中"
</voice>
</phrase>
<phrase>
@@ -8454,7 +7762,7 @@
</dest>
<voice>
*: none
- radio: ""
+ radio: "預設"
</voice>
</phrase>
<phrase>
@@ -8468,7 +7776,7 @@
*: "主選單"
</dest>
<voice>
- *: "Main Menu"
+ *: "主選單"
</voice>
</phrase>
<phrase>
@@ -8482,7 +7790,7 @@
*: "遊戲"
</dest>
<voice>
- *: "Games"
+ *: "遊戲"
</voice>
</phrase>
<phrase>
@@ -8491,15 +7799,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 +7821,7 @@
</dest>
<voice>
*: none
- alarm: "Alarm Wake up Screen"
+ alarm: "鬧鈴啟動畫面"
</voice>
</phrase>
<phrase>
@@ -8533,7 +7838,7 @@
</dest>
<voice>
*: none
- recording: "Clear Recording Directory"
+ recording: "清除錄音目錄"
</voice>
</phrase>
<phrase>
@@ -8564,7 +7869,7 @@
</dest>
<voice>
*: none
- agc: "Live (slow)"
+ agc: "現場 (慢)"
</voice>
</phrase>
<phrase>
@@ -8578,7 +7883,7 @@
*: "儲存佈景主題設定"
</dest>
<voice>
- *: "Save Theme Settings"
+ *: "儲存佈景主題設定"
</voice>
</phrase>
<phrase>
@@ -8599,20 +7904,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 +7917,7 @@
</dest>
<voice>
*: none
- agc: "Voice (fast)"
+ agc: "語音 (快)"
</voice>
</phrase>
<phrase>
@@ -8643,7 +7934,7 @@
</dest>
<voice>
*: none
- recording: "No settings available"
+ recording: "(無設定)"
</voice>
</phrase>
<phrase>
@@ -8660,7 +7951,7 @@
</dest>
<voice>
*: none
- recording: ""
+ recording: "最少"
</voice>
</phrase>
<phrase>
@@ -8677,7 +7968,7 @@
</dest>
<voice>
*: none
- recording: "Split Filesize"
+ recording: "分割檔案大小"
</voice>
</phrase>
<phrase>
@@ -8691,7 +7982,7 @@
*: "聲道"
</dest>
<voice>
- *: "Channels"
+ *: "聲道"
</voice>
</phrase>
<phrase>
@@ -8708,7 +7999,7 @@
</dest>
<voice>
*: none
- remote: "(Vol- : Re-enable)"
+ remote: "(Vol- : 重新開啟)"
</voice>
</phrase>
<phrase>
@@ -8722,7 +8013,7 @@
*: "每次提問"
</dest>
<voice>
- *: "Ask"
+ *: "每次提問"
</voice>
</phrase>
<phrase>
@@ -8753,7 +8044,7 @@
</dest>
<voice>
*: none
- agc: "Medium"
+ agc: "中等"
</voice>
</phrase>
<phrase>
@@ -8787,7 +8078,7 @@
</dest>
<voice>
*: none
- agc: "Safety (clip)"
+ agc: "安全 (clip)"
</voice>
</phrase>
<phrase>
@@ -8801,7 +8092,7 @@
*: "繼續播放"
</dest>
<voice>
- *: "Resume Playback"
+ *: "繼續播放"
</voice>
</phrase>
<phrase>
@@ -8818,21 +8109,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 +8154,7 @@
</dest>
<voice>
*: none
- recording: "Split Measure"
+ recording: "分割依據"
</voice>
</phrase>
<phrase>
@@ -8891,7 +8182,7 @@
*: "電池已空! 充電!"
</dest>
<voice>
- *: "Battery empty! RECHARGE!"
+ *: "電池已空! 充電!"
</voice>
</phrase>
<phrase>
@@ -8908,7 +8199,7 @@
</dest>
<voice>
*: none
- radio: "Korea"
+ radio: "韓國"
</voice>
</phrase>
<phrase>
@@ -8922,7 +8213,7 @@
*: "運作時間"
</dest>
<voice>
- *: "Running Time"
+ *: "運作時間"
</voice>
</phrase>
<phrase>
@@ -8939,7 +8230,7 @@
</dest>
<voice>
*: none
- radio: "US and Canada"
+ radio: "美國 / 加拿大"
</voice>
</phrase>
<phrase>
@@ -8956,7 +8247,7 @@
</dest>
<voice>
*: none
- radio: "Region"
+ radio: "區域"
</voice>
</phrase>
<phrase>
@@ -9001,7 +8292,7 @@
*: "增加到新的播放清單"
</dest>
<voice>
- *: "Add to New Playlist"
+ *: "增加到新的播放清單"
</voice>
</phrase>
<phrase>
@@ -9018,7 +8309,7 @@
</dest>
<voice>
*: none
- recording: "Stop"
+ recording: "停止"
</voice>
</phrase>
<phrase>
@@ -9049,7 +8340,7 @@
</dest>
<voice>
*: none
- recording: "Split Time"
+ recording: "分割時間"
</voice>
</phrase>
<phrase>
@@ -9063,7 +8354,7 @@
*: "請重開機以啟用"
</dest>
<voice>
- *: "Please reboot to enable"
+ *: "請重開機以啟用"
</voice>
</phrase>
<phrase>
@@ -9077,7 +8368,7 @@
*: "有關選單"
</dest>
<voice>
- *: "Context Menu"
+ *: "有關選單"
</voice>
</phrase>
<phrase>
@@ -9091,7 +8382,7 @@
*: "先前畫面"
</dest>
<voice>
- *: "Previous Screen"
+ *: "先前畫面"
</voice>
</phrase>
<phrase>
@@ -9105,7 +8396,7 @@
*: "增加到播放清單"
</dest>
<voice>
- *: "Add to Playlist"
+ *: "增加到播放清單"
</voice>
</phrase>
<phrase>
@@ -9122,7 +8413,7 @@
</dest>
<voice>
*: none
- buttonlight_brightness: "Button Light Brightness"
+ buttonlight_brightness: "按鈕光度"
</voice>
</phrase>
<phrase>
@@ -9136,7 +8427,7 @@
*: "Cuesheet 支援"
</dest>
<voice>
- *: "Cuesheet Support"
+ *: "Cuesheet 支援"
</voice>
</phrase>
<phrase>
@@ -9178,7 +8469,7 @@
*: "載入中... %d%% 完成 (%s)"
</dest>
<voice>
- *: ""
+ *: "載入中... %d%% 完成 (%s)"
</voice>
</phrase>
<phrase>
@@ -9195,7 +8486,7 @@
</dest>
<voice>
*: none
- recording: "Start new file"
+ recording: "開新檔案"
</voice>
</phrase>
<phrase>
@@ -9212,7 +8503,7 @@
</dest>
<voice>
*: none
- recording: "What to do when Splitting"
+ recording: "分割時行為"
</voice>
</phrase>
<phrase>
@@ -9226,7 +8517,7 @@
*: "開機畫面"
</dest>
<voice>
- *: "Start Screen"
+ *: "開機畫面"
</voice>
</phrase>
<phrase>
@@ -9240,7 +8531,7 @@
*: "<不要恢復書簽>"
</dest>
<voice>
- *: "Do not resume"
+ *: "<不要恢復書簽>"
</voice>
</phrase>
<phrase>
@@ -9254,7 +8545,7 @@
*: "刪除"
</dest>
<voice>
- *: "Delete"
+ *: "刪除"
</voice>
</phrase>
<phrase>
@@ -9271,7 +8562,7 @@
</dest>
<voice>
*: none
- radio: "Japan"
+ radio: "日本"
</voice>
</phrase>
<phrase>
@@ -9285,7 +8576,7 @@
*: "顯示路徑"
</dest>
<voice>
- *: "Show Path"
+ *: "顯示路徑"
</voice>
</phrase>
<phrase>
@@ -9299,12 +8590,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 +8604,7 @@
*: "添加抖動"
</dest>
<voice>
- *: "Dithering"
+ *: "添加抖動"
</voice>
</phrase>
<phrase>
@@ -9327,7 +8618,7 @@
*: "應用程序"
</dest>
<voice>
- *: "Applications"
+ *: "應用程序"
</voice>
</phrase>
<phrase>
@@ -9343,7 +8634,7 @@
wheel_acceleration: none
</dest>
<voice>
- *: "List Acceleration Start Delay"
+ *: "列表加速緩衝"
wheel_acceleration: none
</voice>
</phrase>
@@ -9358,7 +8649,7 @@
*: "正在移動..."
</dest>
<voice>
- *: "Moving"
+ *: "正在移動..."
</voice>
</phrase>
<phrase>
@@ -9372,7 +8663,7 @@
*: "使用 .talk 文件夾"
</dest>
<voice>
- *: "Use Directory .talk Clips"
+ *: "使用 .talk 文件夾"
</voice>
</phrase>
<phrase>
@@ -9386,7 +8677,7 @@
*: "屬性"
</dest>
<voice>
- *: "Properties"
+ *: "屬性"
</voice>
</phrase>
<phrase>
@@ -9442,7 +8733,7 @@
*: "<無效書簽>"
</dest>
<voice>
- *: "Invalid Bookmark"
+ *: "<無效書簽>"
</voice>
</phrase>
<phrase>
@@ -9462,7 +8753,7 @@
<voice>
*: none
button_light: "Button Light Timeout"
- sansae200*,sansafuze*: "Wheel Light Timeout"
+ sansae200*,sansafuze*: "轉盤燈自動關時間"
</voice>
</phrase>
<phrase>
@@ -9507,24 +8798,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 +8812,7 @@
*: "播放清單"
</dest>
<voice>
- *: "Playlists"
+ *: "播放清單"
</voice>
</phrase>
<phrase>
@@ -9594,7 +8868,7 @@
*: "清除時間?"
</dest>
<voice>
- *: "Clear Time?"
+ *: "清除時間?"
</voice>
</phrase>
<phrase>
@@ -9608,7 +8882,7 @@
*: "Last.fm 紀錄"
</dest>
<voice>
- *: "Last.fm Log"
+ *: "Last.fm 紀錄"
</voice>
</phrase>
<phrase>
@@ -9625,7 +8899,7 @@
</dest>
<voice>
*: none
- hold_button: "Backlight on hold"
+ hold_button: "背光 (Hold 時)"
</voice>
</phrase>
<phrase>
@@ -9639,7 +8913,7 @@
*: "設置"
</dest>
<voice>
- *: "Settings"
+ *: "設置"
</voice>
</phrase>
<phrase>
@@ -9653,7 +8927,7 @@
*: "已取消"
</dest>
<voice>
- *: "Cancelled"
+ *: "已取消"
</voice>
</phrase>
<phrase>
@@ -9681,7 +8955,7 @@
*: "你肯定嗎?"
</dest>
<voice>
- *: "Are You Sure?"
+ *: "你肯定嗎?"
</voice>
</phrase>
<phrase>
@@ -9695,7 +8969,7 @@
*: "%s 不存在"
</dest>
<voice>
- *: ""
+ *: "%s 不存在"
</voice>
</phrase>
<phrase>
@@ -9709,7 +8983,7 @@
*: "沒有播放清單"
</dest>
<voice>
- *: ""
+ *: "沒有播放清單"
</voice>
</phrase>
<phrase>
@@ -9723,7 +8997,7 @@
*: "複製中..."
</dest>
<voice>
- *: "Copying"
+ *: "複製中..."
</voice>
</phrase>
<phrase>
@@ -9757,7 +9031,7 @@
</dest>
<voice>
*: none
- recording: "Set As Recording Directory"
+ recording: "設為錄音目錄"
</voice>
</phrase>
<phrase>
@@ -9774,7 +9048,7 @@
</dest>
<voice>
*: none
- radio: "FM Radio Menu"
+ radio: "FM 收音選單"
</voice>
</phrase>
<phrase>
@@ -9791,7 +9065,7 @@
</dest>
<voice>
*: none
- recording: "Clip Counter"
+ recording: "削波屢計"
</voice>
</phrase>
<phrase>
@@ -9861,7 +9135,7 @@
*: "讀出文件格式"
</dest>
<voice>
- *: "Say File Type"
+ *: "讀出文件格式"
</voice>
</phrase>
<phrase>
@@ -9878,7 +9152,7 @@
</dest>
<voice>
*: none
- multivolume: "Not present"
+ multivolume: "不存在"
</voice>
</phrase>
<phrase>
@@ -9895,7 +9169,7 @@
</dest>
<voice>
*: none
- gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
+ gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音截斷"
</voice>
</phrase>
<phrase>
@@ -9912,7 +9186,7 @@
</dest>
<voice>
*: none
- lcd_color: "Primary Colour"
+ lcd_color: "項目選擇條主要顏色"
</voice>
</phrase>
<phrase>
@@ -9940,7 +9214,7 @@
*: "讀出電池剩餘容量"
</dest>
<voice>
- *: "Announce Battery Level"
+ *: "讀出電池剩餘容量"
</voice>
</phrase>
<phrase>
@@ -9957,7 +9231,7 @@
</dest>
<voice>
*: none
- lcd_color: "Line Selector Colours"
+ lcd_color: "項目選擇條顏色"
</voice>
</phrase>
<phrase>
@@ -9988,7 +9262,7 @@
</dest>
<voice>
*: none
- lcd_color: "Text Colour"
+ lcd_color: "字體顏色"
</voice>
</phrase>
<phrase>
@@ -10002,7 +9276,7 @@
*: "主題設定"
</dest>
<voice>
- *: "Theme Settings"
+ *: "主題設定"
</voice>
</phrase>
<phrase>
@@ -10033,7 +9307,7 @@
</dest>
<voice>
*: none
- lcd_color: "Bar (Gradient Colour)"
+ lcd_color: "漸變顏色條"
</voice>
</phrase>
<phrase>
@@ -10050,7 +9324,7 @@
</dest>
<voice>
*: none
- lcd_color: "Bar (Solid Colour)"
+ lcd_color: "實色條"
</voice>
</phrase>
<phrase>
@@ -10067,7 +9341,7 @@
</dest>
<voice>
*: none
- lcd_color: "Colours"
+ lcd_color: "顏色"
</voice>
</phrase>
<phrase>
@@ -10084,7 +9358,7 @@
</dest>
<voice>
*: none
- lcd_color: "Secondary Colour"
+ lcd_color: "項目選擇條次要顏色"
</voice>
</phrase>
<phrase>
@@ -10097,11 +9371,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 +9389,7 @@
*: "歐洲中部 (CP1250)"
</dest>
<voice>
- *: "Central European"
+ *: "歐洲中部 (CP1250)"
</voice>
</phrase>
<phrase>
@@ -10262,15 +9536,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 +10121,11 @@
</source>
<dest>
*: none
- touchscreen: "那個地方"
+ touchscreen: "具體位置"
</dest>
<voice>
*: none
- touchscreen: "那個地方"
+ touchscreen: "具體位置"
</voice>
</phrase>
<phrase>
@@ -10881,11 +10155,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 +10228,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 +10266,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 +10312,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 +10368,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 +10618,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 +10754,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>
<dest>
- *: "增益"
+ *: "暫停時自動倒退"
</dest>
<voice>
- *: "Gain"
+ *: "暫停時自動倒退"
</voice>
</phrase>
<phrase>
- id: LANG_SYSFONT_EQUALIZER_EDIT_MODE
- desc: in the equalizer settings menu
+ id: LANG_RESUME_REWIND
+ desc: in playback settings menu
user: core
<source>
- *: "Edit mode: %s %s"
+ *: "Rewind Before Resume"
</source>
<dest>
- *: "編輯設定: %s %s"
+ *: "暫停時自動倒退長度"
</dest>
<voice>
- *: ""
+ *: "暫停時自動倒退長度"
</voice>
</phrase>
<phrase>
- id: LANG_SYSFONT_EQUALIZER_BAND_CUTOFF
- desc: in the equalizer settings menu
+ id: LANG_SURROUND
+ desc: in the sound settings menu
user: core
<source>
- *: "Cutoff"
+ *: "Haas Surround"
</source>
<dest>
- *: "Cutoff"
+ *: "哈斯環繞"
</dest>
<voice>
- *: "Cutoff Frequency"
+ *: "哈斯環繞音效"
</voice>
</phrase>
<phrase>
- id: LANG_MULTIMEDIA_MODE
- desc: in settings_menu
+ id: LANG_FILTER_ROLL_OFF
+ desc: in sound settings
user: core
<source>
*: none
- usb_hid: "Multimedia"
+ filter_roll_off: "DAC's filter roll-off"
</source>
<dest>
*: none
- usb_hid: "多媒體"
+ filter_roll_off: "DAC濾波器滾降"
</dest>
<voice>
*: none
- usb_hid: "Multimedia"
+ filter_roll_off: "DAC濾波器滾降"
</voice>
</phrase>
<phrase>
- id: LANG_CROSSFEED_CUSTOM
+ id: LANG_FILTER_SHARP
desc: in sound settings
user: core
<source>
- *: "Custom"
- </source>
- <dest>
- *: "自訂"
- </dest>
- <voice>
- *: "Custom"
- </voice>
-</phrase>
-<phrase>
- id: LANG_PRESENTATION_MODE
- desc: in settings_menu
- user: core
- <source>
*: none
- usb_hid: "Presentation"
+ filter_roll_off: "Sharp"
</source>
<dest>
*: none
- usb_hid: "介面"
+ filter_roll_off: "快速"
</dest>
<voice>
*: none
- usb_hid: "Presentation"
+ filter_roll_off: "快速滾降"
</voice>
</phrase>
<phrase>
- id: LANG_KEYCLICK_SOFTWARE
- desc: in keyclick settings menu
+ id: LANG_FILTER_SLOW
+ desc: in sound settings
user: core
<source>
*: none
- hardware_click: "Headphone Keyclick"
+ filter_roll_off: "Slow"
</source>
<dest>
*: none
- hardware_click: "耳機線控"
+ filter_roll_off: "平緩"
</dest>
<voice>
*: none
- hardware_click: "Headphone Keyclick"
- </voice>
-</phrase>
-<phrase>
- id: LANG_SET_AS_PLAYLISTCAT_DIR
- desc: used in the onplay menu to set a playlist catalogue dir
- user: core
- <source>
- *: "Set As Playlist Catalogue Directory"
- </source>
- <dest>
- *: "分類目錄添加於播放列表"
- </dest>
- <voice>
- *: "Set As Playlist Catalogue Directory"
+ filter_roll_off: "平緩滾降"
</voice>
</phrase>
<phrase>
- id: LANG_COMPRESSOR_RATIO_6
+ id: LANG_PBE
desc: in sound settings
user: core
<source>
- *: "6:1"
+ *: "Perceptual Bass Enhancement"
</source>
<dest>
- *: "6:1"
+ *: "感知性低音增強"
</dest>
<voice>
- *: "6 to 1"
+ *: "感知性低音增強音效"
</voice>
</phrase>
<phrase>
- id: LANG_COMPRESSOR_RATIO
+ id: LANG_AFR
desc: in sound settings
user: core
<source>
- *: "Ratio"
- </source>
- <dest>
- *: "比率"
- </dest>
- <voice>
- *: "Ratio"
- </voice>
-</phrase>
-<phrase>
- id: LANG_BOOKMARK_SETTINGS_AUTOUPDATE
- desc: prompt for user to decide whether to update bookmarks
- user: core
- <source>
- *: "Update on Stop"
- </source>
- <dest>
- *: "Update on Stop"
- </dest>
- <voice>
- *: "Update on Stop"
- </voice>
-</phrase>
-<phrase>
- id: LANG_HOTKEY
- desc: hotkey menu
- user: core
- <source>
- *: none
- hotkey: "Hotkey"
- </source>
- <dest>
- *: none
- hotkey: "快捷鍵"
- </dest>
- <voice>
- *: none
- hotkey: "Hotkey"
- </voice>
-</phrase>
-<phrase>
- id: LANG_RESET_PLAYLISTCAT_DIR
- desc:
- user: core
- <source>
- *: "Reset Playlist Catalogue Directory"
- </source>
- <dest>
- *: "重置播放列表目錄"
- </dest>
- <voice>
- *: "Reset Playlist Catalogue Directory"
- </voice>
-</phrase>
-<phrase>
- id: LANG_OF
- desc: Shown in WPS: X of Y (tracks)
- user: core
- <source>
- *: "of"
- </source>
- <dest>
- *: "of"
- </dest>
- <voice>
- *: "of"
- </voice>
-</phrase>
-<phrase>
- id: LANG_NEXT
- desc: Shown in WPS (short form of Next Track)
- user: core
- <source>
- *: "Next:"
- </source>
- <dest>
- *: "下一首:"
- </dest>
- <voice>
- *: "Next:"
- </voice>
-</phrase>
-<phrase>
- id: LANG_GLYPHS
- desc: in settings_menu
- user: core
- <source>
- *: "Glyphs To Cache"
- </source>
- <dest>
- *: "字形緩存"
- </dest>
- <voice>
- *: "Glyphs To Cache"
- </voice>
-</phrase>
-<phrase>
- id: LANG_REMOTE_STATUSBAR
- desc: in Settings -> General -> Display -> statusbar
- user: core
- <source>
- *: none
- remote: "Remote Statusbar"
- </source>
- <dest>
- *: none
- remote: "Remote Statusbar"
- </dest>
- <voice>
- *: none
- remote: "Remote Statusbar"
- </voice>
-</phrase>
-<phrase>
- id: LANG_LIST_SEPARATOR_COLOR
- desc: line between lines in lists
- user: core
- <source>
- *: "Line Separator Colour"
- </source>
- <dest>
- *: "Line Separator Colour"
- </dest>
- <voice>
- *: "Line Separator Colour"
- </voice>
-</phrase>
-<phrase>
- id: LANG_DEPTH_3D
- desc: in sound_menu, amount of 3D enhancement effect
- user: core
- <source>
- *: none
- depth_3d: "3-D Enhancement"
+ *: "Auditory Fatigue Reduction"
</source>
<dest>
- *: none
- depth_3d: "3D音效增強"
+ *: "聲學抗疲勞"
</dest>
<voice>
- *: none
- depth_3d: "3-D Enhancement"
+ *: "聲學抗疲勞音效"
</voice>
</phrase>
<phrase>
- id: LANG_AUTO
+ id: LANG_SURROUND_FX1
desc: in sound settings
user: core
<source>
- *: "Auto"
+ *: "f(x1)"
</source>
<dest>
- *: "自動"
+ *: "f(x1)"
</dest>
<voice>
- *: "Auto"
+ *: "f(x1)"
</voice>
</phrase>
<phrase>
- id: LANG_HOTKEY_WPS
- desc: hotkey menu
+ id: LANG_SURROUND_FX2
+ desc: in sound settings
user: core
<source>
- *: none
- hotkey: "WPS Hotkey"
+ *: "f(x2)"
</source>
<dest>
- *: none
- hotkey: "WPS快捷鍵"
+ *: "f(x2)"
</dest>
<voice>
- *: none
- hotkey: "WPS Hotkey"
+ *: "f(x2)"
</voice>
</phrase>
<phrase>
- id: LANG_KEYCLICK_HARDWARE
- desc: in keyclick settings menu
+ id: LANG_SURROUND_METHOD2
+ desc: in sound settings
user: core
<source>
- *: none
- hardware_click: "Speaker Keyclick"
+ *: "SIDE ONLY"
</source>
<dest>
- *: none
- hardware_click: "Speaker Keyclick"
+ *: "SIDE ONLY"
</dest>
<voice>
- *: none
- hardware_click: "Speaker Keyclick"
+ *: "SIDE ONLY"
</voice>
</phrase>
<phrase>
- id: LANG_LINEOUT_ONOFF
- desc: in system settings menu
+ id: LANG_SURROUND_MIX
+ desc: in sound settings
user: core
<source>
- *: none
- lineout_poweroff: "Line Out"
+ *: "Dry / Wet Mix"
</source>
<dest>
- *: none
- lineout_poweroff: "輸出"
+ *: "乾濕混合度"
</dest>
<voice>
- *: none
- lineout_poweroff: "Line Out"
+ *: "乾濕混合度"
</voice>
</phrase>
<phrase>
- id: LANG_TOUCHSCREEN_SETTINGS
- desc: in Settings -> General -> Display menu
+ id: LANG_IBASSO_FREQ_SCALING_GOVERNOR
+ desc: in Settings -> General -> System -> Freq Scaling Governor
user: core
<source>
*: none
- touchscreen: "Touchscreen Settings"
+ ibassodx50,ibassodx90: "Freq Scaling Governor"
</source>
<dest>
*: none
- touchscreen: "觸控設定"
+ ibassodx50,ibassodx90: "CPU頻率管理器"
</dest>
<voice>
*: none
- touchscreen: "Touchscreen Settings"
+ ibassodx50,ibassodx90: "CPU頻率管理器"
</voice>
</phrase>
diff --git a/apps/lang/czech.lang b/apps/lang/czech.lang
index c2f01db7d3..348c08de3f 100644
--- a/apps/lang/czech.lang
+++ b/apps/lang/czech.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 = Ano"
archosplayer: "(PLAY/STOP)"
cowond2*: "MENU, nebo vpravo nahoře = Ano"
- creativezen*: "Select = Ano"
+ creativezen*: "SELECT = Ano"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Ano"
iriverh100,iriverh120,iriverh300: "NAVI = Ano"
mrobe500: "PLAY, POWER, nebo vpravo nahoře = Ano"
@@ -10328,11 +10328,11 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Citlivost touchpadu"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Citlivost touchpadu"
</dest>
<voice>
*: none
@@ -12898,16 +12898,13 @@
desc: used in track x of y constructs
user: core
<source>
- *: none
- hotkey: "Track"
+ *: "Track"
</source>
<dest>
- *: none
- hotkey: "Skladba"
+ *: "Skladba"
</dest>
<voice>
- *: none
- hotkey: "Skladba"
+ *: "Skladba"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/dansk.lang b/apps/lang/dansk.lang
index aff651cc52..a7be6c16a1 100644
--- a/apps/lang/dansk.lang
+++ b/apps/lang/dansk.lang
@@ -10232,15 +10232,15 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad følsomhed"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad følsomhed"
</dest>
<voice>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad følsomhed"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad følsomhed"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang
index 131f342a5d..f2d898b79e 100644
--- a/apps/lang/deutsch.lang
+++ b/apps/lang/deutsch.lang
@@ -269,7 +269,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"
@@ -279,7 +279,7 @@
*: "WIEDERGABE = Ja"
archosplayer: "(WIEDERGABE/STOP)"
cowond2*: "MENÜ oder rechts oben= Ja"
- creativezen*: "Select = Ja"
+ creativezen*: "SELECT = Ja"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Ja"
iriverh100,iriverh120,iriverh300: "NAVI = Ja"
mrobe500: "WIEDERGABE, POWER oder rechts oben = Ja"
@@ -10187,15 +10187,15 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad-Empfindlichkeit"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad-Empfindlichkeit"
</dest>
<voice>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad-Empfindlichkeit"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad-Empfindlichkeit"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang
index 618ee114fd..26736ffd16 100644
--- a/apps/lang/english-us.lang
+++ b/apps/lang/english-us.lang
@@ -246,8 +246,7 @@
<source>
*: "PLAY = Yes"
cowond2*: "MENU, or top-right = Yes"
- creativezen*: "Select = Yes"
- gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Yes"
+ creativezen*,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"
vibe500: "OK = Yes"
@@ -255,7 +254,7 @@
<dest>
*: "PLAY = Yes"
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"
@@ -1300,6 +1299,20 @@
</voice>
</phrase>
<phrase>
+ id: LANG_SINGLE_MODE
+ desc: single mode
+ user: core
+ <source>
+ *: "Single Mode"
+ </source>
+ <dest>
+ *: "Single Mode"
+ </dest>
+ <voice>
+ *: "Single Mode"
+ </voice>
+</phrase>
+<phrase>
id: LANG_PARTY_MODE
desc: party mode
user: core
@@ -15204,16 +15217,13 @@
desc: used in track x of y constructs
user: core
<source>
- *: none
- hotkey: "Track"
+ *: "Track"
</source>
<dest>
- *: none
- hotkey: "Track"
+ *: "Track"
</dest>
<voice>
- *: none
- hotkey: "Track"
+ *: "Track"
</voice>
</phrase>
<phrase>
@@ -15878,7 +15888,6 @@
es9218: "Brick Wall"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_ALBUMARTIST
desc: in properties plugin
@@ -15893,7 +15902,6 @@
*: "Album Artist"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_GENRE
desc: in properties plugin
@@ -15908,7 +15916,6 @@
*: "Genre"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_COMMENT
desc: in properties plugin
@@ -15923,7 +15930,6 @@
*: "Comment"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_COMPOSER
desc: in properties plugin
@@ -15938,7 +15944,6 @@
*: "Composer"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_YEAR
desc: in properties plugin
@@ -15953,7 +15958,6 @@
*: "Year"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_TRACKNUM
desc: in properties plugin
@@ -15968,7 +15972,6 @@
*: "Track number"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_DISCNUM
desc: in properties plugin
@@ -15983,7 +15986,6 @@
*: "Disc number"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_FREQUENCY
desc: in properties plugin
@@ -15998,7 +16000,6 @@
*: "Frequency"
</voice>
</phrase>
-### This phrase is missing entirely, copying from english!
<phrase>
id: LANG_PROPERTIES_BITRATE
desc: in properties plugin
@@ -16041,3 +16042,73 @@
*: ""
</voice>
</phrase>
+<phrase>
+ id: LANG_LIST_WRAPAROUND
+ desc: in Settings
+ user: core
+ <source>
+ *: "List Wraparound"
+ </source>
+ <dest>
+ *: "List Wraparound"
+ </dest>
+ <voice>
+ *: "List Wraparound"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_SHOW_SHUTDOWN_MESSAGE
+ desc: in Settings
+ user: core
+ <source>
+ *: "Show Shutdown Message"
+ </source>
+ <dest>
+ *: "Show Shutdown Message"
+ </dest>
+ <voice>
+ *: "Show Shutdown Message"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_LIST_ORDER
+ desc: in Settings
+ user: core
+ <source>
+ *: "List Order"
+ </source>
+ <dest>
+ *: "List Order"
+ </dest>
+ <voice>
+ *: "List Order"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_ASCENDING
+ desc: in Settings
+ user: core
+ <source>
+ *: "Ascending"
+ </source>
+ <dest>
+ *: "Ascending"
+ </dest>
+ <voice>
+ *: "Ascending"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_DESCENDING
+ desc: in Settings
+ user: core
+ <source>
+ *: "Descending"
+ </source>
+ <dest>
+ *: "Descending"
+ </dest>
+ <voice>
+ *: "Descending"
+ </voice>
+</phrase>
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index dab9ed8508..43d73a8445 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -322,8 +322,7 @@
<source>
*: "PLAY = Yes"
cowond2*: "MENU, or top-right = Yes"
- creativezen*: "Select = Yes"
- gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Yes"
+ creativezen*,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"
vibe500: "OK = Yes"
@@ -331,8 +330,7 @@
<dest>
*: "PLAY = Yes"
cowond2*: "MENU, or top-right = Yes"
- creativezen*: "Select = Yes"
- gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Yes"
+ creativezen*,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"
vibe500: "OK = Yes"
@@ -1376,6 +1374,20 @@
</voice>
</phrase>
<phrase>
+ id: LANG_SINGLE_MODE
+ desc: single mode
+ user: core
+ <source>
+ *: "Single Mode"
+ </source>
+ <dest>
+ *: "Single Mode"
+ </dest>
+ <voice>
+ *: "Single Mode"
+ </voice>
+</phrase>
+<phrase>
id: LANG_PARTY_MODE
desc: party mode
user: core
@@ -15515,16 +15527,13 @@
desc: used in track x of y constructs
user: core
<source>
- *: none
- hotkey: "Track"
+ *: "Track"
</source>
<dest>
- *: none
- hotkey: "Track"
+ *: "Track"
</dest>
<voice>
- *: none
- hotkey: "Track"
+ *: "Track"
</voice>
</phrase>
<phrase>
@@ -16108,3 +16117,115 @@
*: ""
</voice>
</phrase>
+<phrase>
+ id: LANG_LIST_WRAPAROUND
+ desc: in Settings
+ user: core
+ <source>
+ *: "List Wraparound"
+ </source>
+ <dest>
+ *: "List Wraparound"
+ </dest>
+ <voice>
+ *: "List Wraparound"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_SHOW_SHUTDOWN_MESSAGE
+ desc: in Settings
+ user: core
+ <source>
+ *: "Show Shutdown Message"
+ </source>
+ <dest>
+ *: "Show Shutdown Message"
+ </dest>
+ <voice>
+ *: "Show Shutdown Message"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_LIST_ORDER
+ desc: in Settings
+ user: core
+ <source>
+ *: "List Order"
+ </source>
+ <dest>
+ *: "List Order"
+ </dest>
+ <voice>
+ *: "List Order"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_ASCENDING
+ desc: in Settings
+ user: core
+ <source>
+ *: "Ascending"
+ </source>
+ <dest>
+ *: "Ascending"
+ </dest>
+ <voice>
+ *: "Ascending"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_DESCENDING
+ desc: in Settings
+ user: core
+ <source>
+ *: "Descending"
+ </source>
+ <dest>
+ *: "Descending"
+ </dest>
+ <voice>
+ *: "Descending"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_ALBUM_ART
+ desc: in Settings
+ user: core
+ <source>
+ *: "Album Art"
+ </source>
+ <dest>
+ *: "Album Art"
+ </dest>
+ <voice>
+ *: "Album Art"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_PREFER_EMBEDDED
+ desc: in Settings
+ user: core
+ <source>
+ *: "Prefer Embedded"
+ </source>
+ <dest>
+ *: "Prefer Embedded"
+ </dest>
+ <voice>
+ *: "Prefer Embedded"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_PREFER_IMAGE_FILE
+ desc: in Settings
+ user: core
+ <source>
+ *: "Prefer Image File"
+ </source>
+ <dest>
+ *: "Prefer Image File"
+ </dest>
+ <voice>
+ *: "Prefer Image File"
+ </voice>
+</phrase>
diff --git a/apps/lang/espanol.lang b/apps/lang/espanol.lang
index 0e1b120587..3d11cdca48 100644
--- a/apps/lang/espanol.lang
+++ b/apps/lang/espanol.lang
@@ -10219,15 +10219,15 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Sensibilidad de la superficie táctil"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilidad de la superficie táctil"
</dest>
<voice>
*: none
- gigabeatfx,sansafuzeplus: "Sensibilidad de la superficie táctil"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilidad de la superficie táctil"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/finnish.lang b/apps/lang/finnish.lang
index 845a5b4e0d..53a294d27c 100644
--- a/apps/lang/finnish.lang
+++ b/apps/lang/finnish.lang
@@ -10296,15 +10296,15 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Kosketuslevyn herkkyys"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Kosketuslevyn herkkyys"
</dest>
<voice>
*: none
- gigabeatfx,sansafuzeplus: "Kosketuslevyn herkkyys"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Kosketuslevyn herkkyys"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/francais.lang b/apps/lang/francais.lang
index 49fa6f854b..c2c54c9d04 100644
--- a/apps/lang/francais.lang
+++ b/apps/lang/francais.lang
@@ -276,7 +276,7 @@
<source>
*: "PLAY = Yes"
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"
@@ -286,7 +286,7 @@
*: "PLAY = Oui"
archosplayer: "(PLAY/STOP)"
cowond2*: "MENU ou en haut à gauche = Oui"
- creativezen*: "Select = Oui"
+ creativezen*: "SELECT = Oui"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Oui"
iriverh100,iriverh120,iriverh300: "NAVI = Oui"
mrobe500: "PLAY, POWER, ou en haut à gauche = Oui"
@@ -9658,15 +9658,15 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Sensibilité du pavé tactile"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilité du pavé tactile"
</dest>
<voice>
*: none
- gigabeatfx,sansafuzeplus: "Sensibilité du pavé tactile"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilité du pavé tactile"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/galego.lang b/apps/lang/galego.lang
index 70fe0297fa..14dc1b5fb4 100644
--- a/apps/lang/galego.lang
+++ b/apps/lang/galego.lang
@@ -6601,15 +6601,15 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Sensibilidade do touchpad"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilidade do touchpad"
</dest>
<voice>
*: none
- gigabeatfx,sansafuzeplus: "Sensibilidade do touchpad"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Sensibilidade do touchpad"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/greek.lang b/apps/lang/greek.lang
index 44507e9eca..502d64c54e 100644
--- a/apps/lang/greek.lang
+++ b/apps/lang/greek.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, or top-right = Επικύρωση"
@@ -10125,15 +10125,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/hebrew.lang b/apps/lang/hebrew.lang
index 2f732f0eef..f7f03a562b 100644
--- a/apps/lang/hebrew.lang
+++ b/apps/lang/hebrew.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
+#
# Hebrew language file, translated by:
# - Ariel Saghiv
# - Liberman Shachar
@@ -1461,6 +1463,20 @@
</voice>
</phrase>
<phrase>
+ id: LANG_SINGLE_MODE
+ desc: single mode
+ user: core
+ <source>
+ *: "Single Mode"
+ </source>
+ <dest>
+ *: "מצב יחדי"
+ </dest>
+ <voice>
+ *: "מצב יחדי"
+ </voice>
+</phrase>
+<phrase>
id: LANG_PARTY_MODE
desc: party mode
user: core
@@ -10328,15 +10344,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/hrvatski.lang b/apps/lang/hrvatski.lang
index dd9578dc8a..6dc90216fa 100644
--- a/apps/lang/hrvatski.lang
+++ b/apps/lang/hrvatski.lang
@@ -10308,15 +10308,15 @@
user: core
<source>
*: none
- gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Touchpad Sensitivity"
</source>
<dest>
*: none
- gigabeatfx,sansafuzeplus: "Osjetljivost touchpada"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Osjetljivost touchpada"
</dest>
<voice>
*: none
- gigabeatfx,sansafuzeplus: "Osjetljivost touchpada"
+ fiiom3k,gigabeatfx,sansafuzeplus: "Osjetljivost touchpada"
</voice>
</phrase>
<phrase>
diff --git a/apps/lang/italiano.lang b/apps/lang/italiano.lang
index 559b53127d..a3e4eac740 100644
--- a/apps/lang/italiano.lang
+++ b/apps/lang/italiano.lang
@@ -249,8 +249,7 @@
<source>
*: "PLAY = Yes"
cowond2*: "MENU, or top-right = Yes"
- creativezen*: "Select = Yes"
- gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Yes"
+ creativezen*,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"
vibe500: "OK = Yes"
@@ -5994,12 +5993,10 @@
<source>
*: "Battery: %d%% %dh %dm"
ipodmini1g,ipodmini2g,iriverh10: "Batt: %d%% %dh %dm"
- iriverifp7xx: "%d%% %dh %dm"
</source>
<dest>
*: "Batteria: %d%% %dh %dm"
ipodmini1g,ipodmini2g,iriverh10: "Batt: %d%% %dh %dm"
- iriverifp7xx: "%d%% %dh"
</dest>
<voice>
*: "Livello Batteria"
@@ -15148,16 +15145,13 @@
desc: used in track x of y constructs
user: core
<source>
- *: none
- hotkey: "Track"
+ *: "Track"
</source>
<dest>
- *: none
- hotkey: "Traccia"
+ *: "Traccia"
</dest>
<voice>
- *: none
- hotkey: "Traccia"
+ *: "Traccia"
</voice>
</phrase>
<phrase>
@@ -15550,14 +15544,17 @@
<source>
*: none
dac_power_mode: "DAC's power mode"
+ es9218: "DAC's output level"
</source>
<dest>
*: none
dac_power_mode: "Modalità di Alimentazione del DAC"
+ es9218: "Livello Uscita Del DAC"
</dest>
<voice>
*: none
dac_power_mode: "Modalità di Alimentazione del DAC"
+ es9218: "Livello Uscita Del DAC"
</voice>
</phrase>
<phrase>
@@ -15567,14 +15564,17 @@
<source>
*: none
dac_power_mode: "High performance"
+ es9218: "High Gain (2 Vrms)"
</source>
<dest>
*: none
dac_power_mode: "Alte Prestazioni"
+ es9218: "Alto Guadagno (2 Vrms)"
</dest>
<voice>
*: none
dac_power_mode: "Alte prestazioni"
+ es9218: "Alto Guadagno (2 Vrms)"
</voice>
</phrase>
<phrase>
@@ -15584,14 +15584,17 @@
<source>
*: none
dac_power_mode: "Save battery"
+ es9218: "Low Gain (1 Vrms)"
</source>
<dest>
*: none
dac_power_mode: "Risparmio batteria"
+ es9218: "Basso Guadagno (1 Vrms)"
</dest>
<voice>
*: none
dac_power_mode: "Risparmio batteria"
+ es9218: "Basso Guadagno (1 Vrms)"
</voice>
</phrase>
<phrase>
@@ -15706,3 +15709,408 @@
*: "Sempre Blocco Automatico"
</voice>
</phrase>
+<phrase>
+ id: LANG_SINGLE_MODE
+ desc: single mode
+ user: core
+ <source>
+ *: "Single Mode"
+ </source>
+ <dest>
+ *: "Modo Singolo"
+ </dest>
+ <voice>
+ *: "Modo Singolo"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_SUPER_SLOW
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ filter_roll_off: "Super Slow"
+ </source>
+ <dest>
+ *: none
+ filter_roll_off: "Super Slow"
+ </dest>
+ <voice>
+ *: none
+ filter_roll_off: "Super Slow"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_LINEAR_FAST
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Linear Fast"
+ </source>
+ <dest>
+ *: none
+ es9218: "Linear Fast"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Linear Fast"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_LINEAR_SLOW
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Linear Slow"
+ </source>
+ <dest>
+ *: none
+ es9218: "Linear Slow"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Linear Slow"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_MINIMUM_FAST
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Minimum Fast"
+ </source>
+ <dest>
+ *: none
+ es9218: "Minimum Fast"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Minimum Fast"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_MINIMUM_SLOW
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Minimum Slow"
+ </source>
+ <dest>
+ *: none
+ es9218: "Minimum Slow"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Minimum Slow"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_APODIZING_1
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Apodizing type 1"
+ </source>
+ <dest>
+ *: none
+ es9218: "Apodizing type 1"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Apodizing type 1"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_APODIZING_2
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Apodizing type 2"
+ </source>
+ <dest>
+ *: none
+ es9218: "Apodizing type 2"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Apodizing type 2"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_HYBRID_FAST
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Hybrid Fast"
+ </source>
+ <dest>
+ *: none
+ es9218: "Hybrid Fast"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Hybrid Fast"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_FILTER_BRICK_WALL
+ desc: in sound settings
+ user: core
+ <source>
+ *: none
+ es9218: "Brick Wall"
+ </source>
+ <dest>
+ *: none
+ es9218: "Brick Wall"
+ </dest>
+ <voice>
+ *: none
+ es9218: "Brick Wall"
+ </voice>
+</phrase>
+<phrase>
+ id: LANG_PLAYLIST_RELOAD_AFTER_SAVE
+ desc: reload playlist after saving
+ user: