diff -Nru kylin-burner-3.2.0.1kylin1k32.01/CMakeLists.txt kylin-burner-3.2.0.1kylin1k32.01/CMakeLists.txt --- kylin-burner-3.2.0.1kylin1k32.01/CMakeLists.txt 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/CMakeLists.txt 2025-03-11 20:49:32.000000000 +0800 @@ -101,7 +101,6 @@ ${DATACOLLECT_LIBRARIES} ${KYSDKWAYLANDHELPER_PKG_LIBRARIES}) - install(TARGETS kylin-burner ${INSTALL_TARGETS_DEFAULT_ARGS}) install(PROGRAMS kylin-burner.desktop DESTINATION /usr/share/applications) install(FILES src/po/zh_CN.mo RENAME kylin-burner.mo DESTINATION /usr/share/locale/zh_CN/LC_MESSAGES/) diff -Nru kylin-burner-3.2.0.1kylin1k32.01/KylinBurner.pot kylin-burner-3.2.0.1kylin1k32.01/KylinBurner.pot --- kylin-burner-3.2.0.1kylin1k32.01/KylinBurner.pot 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/KylinBurner.pot 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,4859 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-29 14:29+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: kylin-burner-64/src/data/datacdrom.cpp:48 +#: kylin-burner-64/src/data/datacdrom.cpp:49 +#: kylin-burner-64/src/data/datacdrom.cpp:50 +#: kylin-burner-dev/src/data/datacdrom.cpp:48 +#: kylin-burner-dev/src/data/datacdrom.cpp:49 +#: kylin-burner-dev/src/data/datacdrom.cpp:50 +#: kylin-burner-pangux/src/data/datacdrom.cpp:46 +#: kylin-burner-pangux/src/data/datacdrom.cpp:47 +#: kylin-burner-pangux/src/data/datacdrom.cpp:48 +#: kylin-burner/src/data/datacdrom.cpp:51 +#: kylin-burner/src/data/datacdrom.cpp:52 +#: kylin-burner/src/data/datacdrom.cpp:53 +#, qt-format +msgid "%1 B" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:53 +#: kylin-burner-dev/src/data/datacdrom.cpp:53 +#: kylin-burner-pangux/src/data/datacdrom.cpp:51 +#: kylin-burner/src/data/datacdrom.cpp:56 +#, qt-format +msgid "Medium Data<%1>" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:122 +#: kylin-burner-64/src/data/datacdrom.cpp:181 +#: kylin-burner-64/src/data/datacdrom.cpp:189 +#: kylin-burner-64/src/data/datacdrom.cpp:252 +#: kylin-burner-64/src/data/datacdrom.cpp:259 +#: kylin-burner-64/src/data/datacdrom.cpp:264 +#: kylin-burner-dev/src/data/datacdrom.cpp:122 +#: kylin-burner-dev/src/data/datacdrom.cpp:181 +#: kylin-burner-dev/src/data/datacdrom.cpp:189 +#: kylin-burner-dev/src/data/datacdrom.cpp:252 +#: kylin-burner-dev/src/data/datacdrom.cpp:259 +#: kylin-burner-dev/src/data/datacdrom.cpp:264 +#: kylin-burner-pangux/src/data/datacdrom.cpp:111 +#: kylin-burner-pangux/src/data/datacdrom.cpp:167 +#: kylin-burner-pangux/src/data/datacdrom.cpp:175 +#: kylin-burner-pangux/src/data/datacdrom.cpp:240 +#: kylin-burner-pangux/src/data/datacdrom.cpp:247 +#: kylin-burner-pangux/src/data/datacdrom.cpp:252 +#: kylin-burner/src/data/datacdrom.cpp:125 +#: kylin-burner/src/data/datacdrom.cpp:190 +#: kylin-burner/src/data/datacdrom.cpp:196 +#: kylin-burner/src/data/datacdrom.cpp:258 +#: kylin-burner/src/data/datacdrom.cpp:263 +#: kylin-burner/src/data/datacdrom.cpp:268 +#, qt-format +msgid "%1 - %2 medium, left space : %3" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:123 +#: kylin-burner-64/src/data/datacdrom.cpp:182 +#: kylin-burner-64/src/data/datacdrom.cpp:190 +#: kylin-burner-64/src/data/datacdrom.cpp:253 +#: kylin-burner-64/src/data/datacdrom.cpp:260 +#: kylin-burner-64/src/data/datacdrom.cpp:265 +#: kylin-burner-dev/src/data/datacdrom.cpp:123 +#: kylin-burner-dev/src/data/datacdrom.cpp:182 +#: kylin-burner-dev/src/data/datacdrom.cpp:190 +#: kylin-burner-dev/src/data/datacdrom.cpp:253 +#: kylin-burner-dev/src/data/datacdrom.cpp:260 +#: kylin-burner-dev/src/data/datacdrom.cpp:265 +#: kylin-burner-pangux/src/data/datacdrom.cpp:112 +#: kylin-burner-pangux/src/data/datacdrom.cpp:168 +#: kylin-burner-pangux/src/data/datacdrom.cpp:176 +#: kylin-burner-pangux/src/data/datacdrom.cpp:241 +#: kylin-burner-pangux/src/data/datacdrom.cpp:248 +#: kylin-burner-pangux/src/data/datacdrom.cpp:253 +#: kylin-burner/src/data/datacdrom.cpp:126 +#: kylin-burner/src/data/datacdrom.cpp:191 +#: kylin-burner/src/data/datacdrom.cpp:197 +#: kylin-burner/src/data/datacdrom.cpp:259 +#: kylin-burner/src/data/datacdrom.cpp:264 +#: kylin-burner/src/data/datacdrom.cpp:269 +msgid "Empty medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:188 +#: kylin-burner-64/src/data/datacdrom.cpp:190 +#: kylin-burner-64/src/data/datacdrom.cpp:258 +#: kylin-burner-64/src/data/datacdrom.cpp:260 +#: kylin-burner-64/src/data/datasetting.cpp:30 +#: kylin-burner-64/src/frame/logger.cpp:178 +#: kylin-burner-64/src/model/logicmain.cpp:167 +#: kylin-burner-64/src/process/processbasic.cpp:101 +#: kylin-burner-64/src/process/processbasic.cpp:131 +#: kylin-burner-64/src/process/processbasic.cpp:149 +#: kylin-burner-64/src/process/processburndata.cpp:163 +#: kylin-burner-64/src/process/processburndata.cpp:164 +#: kylin-burner-64/src/process/processburndata.cpp:178 +#: kylin-burner-64/src/process/processburndatadl.cpp:219 +#: kylin-burner-64/src/process/processburnudfdata.cpp:89 +#: kylin-burner-64/src/process/processcopydisk.cpp:70 +#: kylin-burner-64/src/process/processcopydisk.cpp:96 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:192 +#: kylin-burner-64/src/process/processcreateiso.cpp:93 +#: kylin-burner-64/src/process/processgetiso.cpp:97 +#: kylin-burner-64/src/view/aboutdialog.cpp:12 +#: kylin-burner-64/src/view/busnesssetting.cpp:216 +#: kylin-burner-64/src/view/filefilterrules.cpp:35 +#: kylin-burner-64/src/view/viewfilterfiles.cpp:166 +#: kylin-burner-dev/src/data/datacdrom.cpp:188 +#: kylin-burner-dev/src/data/datacdrom.cpp:190 +#: kylin-burner-dev/src/data/datacdrom.cpp:258 +#: kylin-burner-dev/src/data/datacdrom.cpp:260 +#: kylin-burner-dev/src/data/datasetting.cpp:30 +#: kylin-burner-dev/src/frame/logger.cpp:178 +#: kylin-burner-dev/src/model/logicmain.cpp:167 +#: kylin-burner-dev/src/process/processbasic.cpp:101 +#: kylin-burner-dev/src/process/processbasic.cpp:131 +#: kylin-burner-dev/src/process/processbasic.cpp:149 +#: kylin-burner-dev/src/process/processburndata.cpp:163 +#: kylin-burner-dev/src/process/processburndata.cpp:164 +#: kylin-burner-dev/src/process/processburndata.cpp:178 +#: kylin-burner-dev/src/process/processburndatadl.cpp:219 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:89 +#: kylin-burner-dev/src/process/processcopydisk.cpp:70 +#: kylin-burner-dev/src/process/processcopydisk.cpp:96 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:192 +#: kylin-burner-dev/src/process/processcreateiso.cpp:93 +#: kylin-burner-dev/src/process/processgetiso.cpp:97 +#: kylin-burner-dev/src/view/aboutdialog.cpp:12 +#: kylin-burner-dev/src/view/busnesssetting.cpp:211 +#: kylin-burner-dev/src/view/filefilterrules.cpp:35 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:166 +#: kylin-burner-pangux/src/data/datacdrom.cpp:174 +#: kylin-burner-pangux/src/data/datacdrom.cpp:176 +#: kylin-burner-pangux/src/data/datacdrom.cpp:246 +#: kylin-burner-pangux/src/data/datacdrom.cpp:248 +#: kylin-burner-pangux/src/data/datasetting.cpp:30 +#: kylin-burner-pangux/src/frame/logger.cpp:178 +#: kylin-burner-pangux/src/model/logicmain.cpp:156 +#: kylin-burner-pangux/src/process/processbasic.cpp:99 +#: kylin-burner-pangux/src/process/processbasic.cpp:117 +#: kylin-burner-pangux/src/process/processbasic.cpp:135 +#: kylin-burner-pangux/src/process/processburndata.cpp:153 +#: kylin-burner-pangux/src/process/processburndata.cpp:154 +#: kylin-burner-pangux/src/process/processburndata.cpp:169 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:217 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:87 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:70 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:96 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:99 +#: kylin-burner-pangux/src/process/processgetiso.cpp:93 +#: kylin-burner-pangux/src/view/aboutdialog.cpp:12 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:206 +#: kylin-burner-pangux/src/view/filefilterrules.cpp:34 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:205 +#: kylin-burner/src/data/datacdrom.cpp:195 +#: kylin-burner/src/data/datacdrom.cpp:197 +#: kylin-burner/src/data/datacdrom.cpp:262 +#: kylin-burner/src/data/datacdrom.cpp:264 +#: kylin-burner/src/data/datasetting.cpp:30 +#: kylin-burner/src/frame/logger.cpp:178 +#: kylin-burner/src/model/logicmain.cpp:207 +#: kylin-burner/src/process/processbasic.cpp:101 +#: kylin-burner/src/process/processbasic.cpp:131 +#: kylin-burner/src/process/processbasic.cpp:149 +#: kylin-burner/src/process/processburndata.cpp:180 +#: kylin-burner/src/process/processburndata.cpp:181 +#: kylin-burner/src/process/processburndata.cpp:195 +#: kylin-burner/src/process/processburndatadl.cpp:228 +#: kylin-burner/src/process/processburnudfdata.cpp:144 +#: kylin-burner/src/process/processburnudfdata.cpp:145 +#: kylin-burner/src/process/processburnudfdata.cpp:147 +#: kylin-burner/src/process/processcopydisk.cpp:70 +#: kylin-burner/src/process/processcopydisk.cpp:96 +#: kylin-burner/src/process/processcopydiskdl.cpp:192 +#: kylin-burner/src/process/processcreateiso.cpp:93 +#: kylin-burner/src/process/processgetiso.cpp:97 +#: kylin-burner/src/view/busnesssetting.cpp:197 +msgid "KylinBurner" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:212 +#: kylin-burner-64/src/data/datacdrom.cpp:528 +#: kylin-burner-dev/src/data/datacdrom.cpp:212 +#: kylin-burner-dev/src/data/datacdrom.cpp:528 +#: kylin-burner-pangux/src/data/datacdrom.cpp:198 +#: kylin-burner-pangux/src/data/datacdrom.cpp:519 +#: kylin-burner/src/data/datacdrom.cpp:220 +#, qt-format +msgid "Cannot load mount information.%1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:224 +#: kylin-burner-64/src/data/datacdrom.cpp:543 +#: kylin-burner-dev/src/data/datacdrom.cpp:224 +#: kylin-burner-dev/src/data/datacdrom.cpp:543 +#: kylin-burner-pangux/src/data/datacdrom.cpp:211 +#: kylin-burner-pangux/src/data/datacdrom.cpp:534 +#: kylin-burner/src/data/datacdrom.cpp:232 +#, qt-format +msgid "Medium %1 mounted by UDF" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:319 +#: kylin-burner-dev/src/data/datacdrom.cpp:319 +#: kylin-burner-pangux/src/data/datacdrom.cpp:310 +#: kylin-burner/src/data/datacdrom.cpp:323 +msgid "Can erase mediun" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:327 +#: kylin-burner-dev/src/data/datacdrom.cpp:327 +#: kylin-burner-pangux/src/data/datacdrom.cpp:318 +#: kylin-burner/src/data/datacdrom.cpp:331 +msgid "empty mediun." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:332 +#: kylin-burner-dev/src/data/datacdrom.cpp:332 +#: kylin-burner-pangux/src/data/datacdrom.cpp:323 +#: kylin-burner/src/data/datacdrom.cpp:336 +msgid "incomplete mediun." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:337 +#: kylin-burner-dev/src/data/datacdrom.cpp:337 +#: kylin-burner-pangux/src/data/datacdrom.cpp:328 +#: kylin-burner/src/data/datacdrom.cpp:341 +msgid "finalized mediun." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:368 +#: kylin-burner-dev/src/data/datacdrom.cpp:368 +#: kylin-burner-pangux/src/data/datacdrom.cpp:359 +#: kylin-burner/src/data/datacdrom.cpp:374 +msgid "Donot load type of finalized capacity." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:389 +#: kylin-burner-dev/src/data/datacdrom.cpp:389 +#: kylin-burner-pangux/src/data/datacdrom.cpp:380 +#, qt-format +msgid "SIZE IS %1 | %2" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:407 +#: kylin-burner-64/src/data/datacdrom.cpp:436 +#: kylin-burner-dev/src/data/datacdrom.cpp:407 +#: kylin-burner-dev/src/data/datacdrom.cpp:436 +#: kylin-burner-pangux/src/data/datacdrom.cpp:398 +#: kylin-burner-pangux/src/data/datacdrom.cpp:427 +#, qt-format +msgid "Capacity: %1 - used(%2) - free(%3)" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:495 +#: kylin-burner-dev/src/data/datacdrom.cpp:495 +#: kylin-burner-pangux/src/data/datacdrom.cpp:486 +#: kylin-burner/src/data/datacdrom.cpp:524 +msgid "Get invalid speed." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:505 +#: kylin-burner-dev/src/data/datacdrom.cpp:505 +#: kylin-burner-pangux/src/data/datacdrom.cpp:496 +#: kylin-burner/src/data/datacdrom.cpp:534 +#, qt-format +msgid "Speed %1 : %2x - rate : %3 Kbps" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:518 +#: kylin-burner-dev/src/data/datacdrom.cpp:518 +#: kylin-burner-pangux/src/data/datacdrom.cpp:509 +msgid "No mount point for empty type medium." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:553 +#: kylin-burner-dev/src/data/datacdrom.cpp:553 +#: kylin-burner-pangux/src/data/datacdrom.cpp:544 +#, qt-format +msgid "Mouted at %1, Medium name is %2" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:577 +#: kylin-burner-64/src/data/datafile.cpp:193 +#: kylin-burner-64/src/frame/auditlog.cpp:238 +#: kylin-burner-64/src/model/logicburndata.cpp:663 +#: kylin-burner-64/src/view/burnimage.cpp:264 +#: kylin-burner-dev/src/data/datacdrom.cpp:577 +#: kylin-burner-dev/src/data/datafile.cpp:193 +#: kylin-burner-dev/src/frame/auditlog.cpp:238 +#: kylin-burner-dev/src/model/logicburndata.cpp:663 +#: kylin-burner-dev/src/view/burnimage.cpp:264 +#: kylin-burner-pangux/src/data/datacdrom.cpp:568 +#: kylin-burner-pangux/src/data/datafile.cpp:166 +#: kylin-burner-pangux/src/frame/auditlog.cpp:219 +#: kylin-burner-pangux/src/model/logicburndata.cpp:599 +#: kylin-burner-pangux/src/view/burnimage.cpp:265 +#: kylin-burner/src/data/datacdrom.cpp:560 +#: kylin-burner/src/data/datafile.cpp:205 +#: kylin-burner/src/frame/auditlog.cpp:238 +#: kylin-burner/src/model/logicburndata.cpp:663 +#: kylin-burner/src/view/burnimage.cpp:260 +msgid "KB" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:580 +#: kylin-burner-64/src/data/datafile.cpp:196 +#: kylin-burner-64/src/frame/auditlog.cpp:241 +#: kylin-burner-64/src/model/logicburndata.cpp:666 +#: kylin-burner-64/src/view/burnimage.cpp:267 +#: kylin-burner-dev/src/data/datacdrom.cpp:580 +#: kylin-burner-dev/src/data/datafile.cpp:196 +#: kylin-burner-dev/src/frame/auditlog.cpp:241 +#: kylin-burner-dev/src/model/logicburndata.cpp:666 +#: kylin-burner-dev/src/view/burnimage.cpp:267 +#: kylin-burner-pangux/src/data/datacdrom.cpp:571 +#: kylin-burner-pangux/src/data/datafile.cpp:169 +#: kylin-burner-pangux/src/frame/auditlog.cpp:222 +#: kylin-burner-pangux/src/model/logicburndata.cpp:602 +#: kylin-burner-pangux/src/view/burnimage.cpp:268 +#: kylin-burner/src/data/datacdrom.cpp:563 +#: kylin-burner/src/data/datafile.cpp:208 +#: kylin-burner/src/frame/auditlog.cpp:241 +#: kylin-burner/src/model/logicburndata.cpp:666 +#: kylin-burner/src/view/burnimage.cpp:263 +msgid "MB" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:583 +#: kylin-burner-64/src/data/datafile.cpp:199 +#: kylin-burner-64/src/frame/auditlog.cpp:244 +#: kylin-burner-64/src/model/logicburndata.cpp:669 +#: kylin-burner-64/src/view/burnimage.cpp:270 +#: kylin-burner-dev/src/data/datacdrom.cpp:583 +#: kylin-burner-dev/src/data/datafile.cpp:199 +#: kylin-burner-dev/src/frame/auditlog.cpp:244 +#: kylin-burner-dev/src/model/logicburndata.cpp:669 +#: kylin-burner-dev/src/view/burnimage.cpp:270 +#: kylin-burner-pangux/src/data/datacdrom.cpp:574 +#: kylin-burner-pangux/src/data/datafile.cpp:172 +#: kylin-burner-pangux/src/frame/auditlog.cpp:225 +#: kylin-burner-pangux/src/model/logicburndata.cpp:605 +#: kylin-burner-pangux/src/view/burnimage.cpp:271 +#: kylin-burner/src/data/datacdrom.cpp:566 +#: kylin-burner/src/data/datafile.cpp:211 +#: kylin-burner/src/frame/auditlog.cpp:244 +#: kylin-burner/src/model/logicburndata.cpp:669 +#: kylin-burner/src/view/burnimage.cpp:266 +msgid "GB" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:586 +#: kylin-burner-64/src/data/datafile.cpp:202 +#: kylin-burner-64/src/frame/auditlog.cpp:247 +#: kylin-burner-64/src/model/logicburndata.cpp:672 +#: kylin-burner-64/src/view/burnimage.cpp:273 +#: kylin-burner-dev/src/data/datacdrom.cpp:586 +#: kylin-burner-dev/src/data/datafile.cpp:202 +#: kylin-burner-dev/src/frame/auditlog.cpp:247 +#: kylin-burner-dev/src/model/logicburndata.cpp:672 +#: kylin-burner-dev/src/view/burnimage.cpp:273 +#: kylin-burner-pangux/src/data/datacdrom.cpp:577 +#: kylin-burner-pangux/src/data/datafile.cpp:175 +#: kylin-burner-pangux/src/frame/auditlog.cpp:228 +#: kylin-burner-pangux/src/model/logicburndata.cpp:608 +#: kylin-burner-pangux/src/view/burnimage.cpp:274 +#: kylin-burner/src/data/datacdrom.cpp:569 +#: kylin-burner/src/data/datafile.cpp:214 +#: kylin-burner/src/frame/auditlog.cpp:247 +#: kylin-burner/src/model/logicburndata.cpp:672 +#: kylin-burner/src/view/burnimage.cpp:269 +msgid "B" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:618 +#: kylin-burner-dev/src/data/datacdrom.cpp:618 +#: kylin-burner-pangux/src/data/datacdrom.cpp:607 +#: kylin-burner/src/data/datacdrom.cpp:610 +#, qt-format +msgid "CDROM Data<%1>" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:654 +#: kylin-burner-64/src/data/datacdrom.cpp:680 +#: kylin-burner-dev/src/data/datacdrom.cpp:654 +#: kylin-burner-dev/src/data/datacdrom.cpp:680 +#: kylin-burner-pangux/src/data/datacdrom.cpp:643 +#: kylin-burner-pangux/src/data/datacdrom.cpp:669 +#: kylin-burner/src/data/datacdrom.cpp:632 +#: kylin-burner/src/data/datacdrom.cpp:658 +msgid "No need burner." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:999 +#: kylin-burner-64/src/model/logicburndata.cpp:1600 +#: kylin-burner-64/src/model/logicburndata.cpp:1664 +#: kylin-burner-64/src/model/logicburnimage.cpp:226 +#: kylin-burner-64/src/model/logiccopyimage.cpp:140 +#: kylin-burner-64/src/model/logiccopyimage.cpp:163 +#: kylin-burner-64/src/process/processburndata.cpp:322 +#: kylin-burner-64/src/process/processearse.cpp:88 +#: kylin-burner-64/src/process/processearse.cpp:218 +#: kylin-burner-dev/src/data/datacdrom.cpp:999 +#: kylin-burner-dev/src/model/logicburndata.cpp:1600 +#: kylin-burner-dev/src/model/logicburndata.cpp:1664 +#: kylin-burner-dev/src/model/logicburnimage.cpp:226 +#: kylin-burner-dev/src/model/logiccopyimage.cpp:140 +#: kylin-burner-dev/src/model/logiccopyimage.cpp:163 +#: kylin-burner-dev/src/process/processburndata.cpp:322 +#: kylin-burner-dev/src/process/processearse.cpp:88 +#: kylin-burner-dev/src/process/processearse.cpp:218 +#: kylin-burner/src/data/datacdrom.cpp:977 +#: kylin-burner/src/model/logicburndata.cpp:1589 +#: kylin-burner/src/model/logicburndata.cpp:1640 +#: kylin-burner/src/model/logicburndata.cpp:1680 +#: kylin-burner/src/model/logicburnimage.cpp:226 +#: kylin-burner/src/model/logiccopyimage.cpp:140 +#: kylin-burner/src/model/logiccopyimage.cpp:163 +#: kylin-burner/src/process/processburndata.cpp:344 +#: kylin-burner/src/process/processearse.cpp:88 +#: kylin-burner/src/process/processearse.cpp:218 +#, qt-format +msgid "Device '%1' is used by the '%2' application! Please try again later" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1021 +#: kylin-burner-dev/src/data/datacdrom.cpp:1021 +#: kylin-burner-pangux/src/data/datacdrom.cpp:976 +#: kylin-burner/src/data/datacdrom.cpp:999 +msgid "No medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1050 +#: kylin-burner-dev/src/data/datacdrom.cpp:1050 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1006 +#: kylin-burner/src/data/datacdrom.cpp:1036 +#, qt-format +msgid "Open block device %1 faied.%2" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1209 +#: kylin-burner-dev/src/data/datacdrom.cpp:1209 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1159 +#: kylin-burner/src/data/datacdrom.cpp:1195 +msgid "Unkown." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1219 +#: kylin-burner-dev/src/data/datacdrom.cpp:1219 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1168 +#: kylin-burner/src/data/datacdrom.cpp:1205 +#, qt-format +msgid "Vendor is %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1223 +#: kylin-burner-dev/src/data/datacdrom.cpp:1223 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1171 +#: kylin-burner/src/data/datacdrom.cpp:1209 +#, qt-format +msgid "Productor is %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1336 +#: kylin-burner-dev/src/data/datacdrom.cpp:1336 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1275 +#: kylin-burner/src/data/datacdrom.cpp:1322 +#, qt-format +msgid "%1 support read mode : CD-ROM" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1340 +#: kylin-burner-dev/src/data/datacdrom.cpp:1340 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1279 +#: kylin-burner/src/data/datacdrom.cpp:1326 +#, qt-format +msgid "%1 support read mode : CD-R" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1344 +#: kylin-burner-dev/src/data/datacdrom.cpp:1344 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1283 +#: kylin-burner/src/data/datacdrom.cpp:1330 +#, qt-format +msgid "%1 support read mode : CD-RW" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1349 +#: kylin-burner-dev/src/data/datacdrom.cpp:1349 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1288 +#: kylin-burner/src/data/datacdrom.cpp:1335 +#, qt-format +msgid "%1 support read mode : DVD-ROM" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1353 +#: kylin-burner-dev/src/data/datacdrom.cpp:1353 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1292 +#: kylin-burner/src/data/datacdrom.cpp:1339 +#, qt-format +msgid "%1 support read mode : DVD-R" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1357 +#: kylin-burner-dev/src/data/datacdrom.cpp:1357 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1296 +#: kylin-burner/src/data/datacdrom.cpp:1343 +#, qt-format +msgid "%1 support read mode : DVD-RAM" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1362 +#: kylin-burner-dev/src/data/datacdrom.cpp:1362 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1301 +#: kylin-burner/src/data/datacdrom.cpp:1348 +#, qt-format +msgid "%1 support read mode : DVD-RW(OVERWRITE)" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1366 +#: kylin-burner-dev/src/data/datacdrom.cpp:1366 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1305 +#: kylin-burner/src/data/datacdrom.cpp:1352 +#, qt-format +msgid "%1 support read mode : DVD-RW(SEQ)" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1370 +#: kylin-burner-dev/src/data/datacdrom.cpp:1370 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1309 +#: kylin-burner/src/data/datacdrom.cpp:1356 +#, qt-format +msgid "%1 support read mode : DVD-R-DL(SEQ)" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1374 +#: kylin-burner-dev/src/data/datacdrom.cpp:1374 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1313 +#: kylin-burner/src/data/datacdrom.cpp:1360 +#, qt-format +msgid "%1 support read mode : DVD-R-DL(JUMP)" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1378 +#: kylin-burner-dev/src/data/datacdrom.cpp:1378 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1317 +#: kylin-burner/src/data/datacdrom.cpp:1364 +#, qt-format +msgid "%1 support read mode : DVD+RW" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1382 +#: kylin-burner-dev/src/data/datacdrom.cpp:1382 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1321 +#: kylin-burner/src/data/datacdrom.cpp:1368 +#, qt-format +msgid "%1 support read mode : DVD+R" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1386 +#: kylin-burner-dev/src/data/datacdrom.cpp:1386 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1325 +#: kylin-burner/src/data/datacdrom.cpp:1372 +#, qt-format +msgid "%1 support read mode : DVD+R-DL" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1389 +#: kylin-burner-dev/src/data/datacdrom.cpp:1389 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1328 +#: kylin-burner/src/data/datacdrom.cpp:1375 +msgid "Removable CDROM." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1393 +#: kylin-burner-dev/src/data/datacdrom.cpp:1393 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1332 +#: kylin-burner/src/data/datacdrom.cpp:1379 +#, qt-format +msgid "Unkown medium type %1, to be supported in KylinBurner." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1413 +#: kylin-burner-dev/src/data/datacdrom.cpp:1413 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1352 +#: kylin-burner/src/data/datacdrom.cpp:1399 +#, qt-format +msgid "%1 supprot burn CD by mode TAO" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1415 +#: kylin-burner-64/src/data/datacdrom.cpp:1433 +#: kylin-burner-dev/src/data/datacdrom.cpp:1415 +#: kylin-burner-dev/src/data/datacdrom.cpp:1433 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1354 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1372 +#: kylin-burner/src/data/datacdrom.cpp:1401 +#: kylin-burner/src/data/datacdrom.cpp:1419 +#, qt-format +msgid "%1 support write mode : CD-R" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1419 +#: kylin-burner-64/src/data/datacdrom.cpp:1437 +#: kylin-burner-dev/src/data/datacdrom.cpp:1419 +#: kylin-burner-dev/src/data/datacdrom.cpp:1437 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1358 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1376 +#: kylin-burner/src/data/datacdrom.cpp:1405 +#: kylin-burner/src/data/datacdrom.cpp:1423 +#, qt-format +msgid "%1 support write mode : CD-RW" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1442 +#: kylin-burner-dev/src/data/datacdrom.cpp:1442 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1381 +#: kylin-burner/src/data/datacdrom.cpp:1428 +#, qt-format +msgid "%1 supprot burn CD by mode SAO" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1456 +#: kylin-burner-dev/src/data/datacdrom.cpp:1456 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1395 +#: kylin-burner/src/data/datacdrom.cpp:1442 +#, qt-format +msgid "%1 sure support read mode : DVD-ROM" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1471 +#: kylin-burner-64/src/data/datacdrom.cpp:1494 +#: kylin-burner-dev/src/data/datacdrom.cpp:1471 +#: kylin-burner-dev/src/data/datacdrom.cpp:1494 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1410 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1433 +#: kylin-burner/src/data/datacdrom.cpp:1457 +#: kylin-burner/src/data/datacdrom.cpp:1480 +#, qt-format +msgid "%1 support write mode : DVD+RW" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1476 +#: kylin-burner-dev/src/data/datacdrom.cpp:1476 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1415 +#: kylin-burner/src/data/datacdrom.cpp:1462 +#, qt-format +msgid "%1 support write mode : DVD-ROM" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1490 +#: kylin-burner-dev/src/data/datacdrom.cpp:1490 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1429 +#: kylin-burner/src/data/datacdrom.cpp:1476 +#, qt-format +msgid "%1 sure support read mode : DVD+R" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1508 +#: kylin-burner-dev/src/data/datacdrom.cpp:1508 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1447 +#: kylin-burner/src/data/datacdrom.cpp:1494 +#, qt-format +msgid "%1 sure support read mode : DVD-R" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1510 +#: kylin-burner-dev/src/data/datacdrom.cpp:1510 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1449 +#: kylin-burner/src/data/datacdrom.cpp:1496 +#, qt-format +msgid "%1 support write mode : DVD-R" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1512 +#: kylin-burner-dev/src/data/datacdrom.cpp:1512 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1451 +#: kylin-burner/src/data/datacdrom.cpp:1498 +#, qt-format +msgid "%1 sure support read mode : DVD-RW" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1516 +#: kylin-burner-dev/src/data/datacdrom.cpp:1516 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1455 +#: kylin-burner/src/data/datacdrom.cpp:1502 +#, qt-format +msgid "%1 support write mode : DVD-RW" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1522 +#: kylin-burner-dev/src/data/datacdrom.cpp:1522 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1461 +#: kylin-burner/src/data/datacdrom.cpp:1508 +#, qt-format +msgid "%1 support read mode : DVD-RW from adjust." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1560 +#: kylin-burner-dev/src/data/datacdrom.cpp:1560 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1502 +#: kylin-burner/src/data/datacdrom.cpp:1546 +msgid "No medium.Because the cdrom's door is open." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1639 +#: kylin-burner-dev/src/data/datacdrom.cpp:1639 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1581 +#: kylin-burner/src/data/datacdrom.cpp:1625 +#, qt-format +msgid "Loaded CD-ROM medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1642 +#: kylin-burner-dev/src/data/datacdrom.cpp:1642 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1584 +#: kylin-burner/src/data/datacdrom.cpp:1628 +#, qt-format +msgid "CDROM %1 cannot support to read CD-ROM medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1648 +#: kylin-burner-dev/src/data/datacdrom.cpp:1648 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1590 +#: kylin-burner/src/data/datacdrom.cpp:1634 +#, qt-format +msgid "Loaded CD-R medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1651 +#: kylin-burner-dev/src/data/datacdrom.cpp:1651 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1593 +#: kylin-burner/src/data/datacdrom.cpp:1637 +#, qt-format +msgid "CDROM %1 cannot support to read CD-R medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1657 +#: kylin-burner-dev/src/data/datacdrom.cpp:1657 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1599 +#: kylin-burner/src/data/datacdrom.cpp:1643 +#, qt-format +msgid "Loaded CD-RW medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1660 +#: kylin-burner-dev/src/data/datacdrom.cpp:1660 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1602 +#: kylin-burner/src/data/datacdrom.cpp:1646 +#, qt-format +msgid "CDROM %1 cannot support to read CD-RW medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1666 +#: kylin-burner-dev/src/data/datacdrom.cpp:1666 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1608 +#: kylin-burner/src/data/datacdrom.cpp:1652 +#, qt-format +msgid "Loaded DVD-ROM medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1669 +#: kylin-burner-dev/src/data/datacdrom.cpp:1669 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1611 +#: kylin-burner/src/data/datacdrom.cpp:1655 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-ROM medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1675 +#: kylin-burner-dev/src/data/datacdrom.cpp:1675 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1617 +#: kylin-burner/src/data/datacdrom.cpp:1661 +#, qt-format +msgid "Loaded DVD-R medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1678 +#: kylin-burner-dev/src/data/datacdrom.cpp:1678 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1620 +#: kylin-burner/src/data/datacdrom.cpp:1664 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-R medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1684 +#: kylin-burner-dev/src/data/datacdrom.cpp:1684 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1626 +#: kylin-burner/src/data/datacdrom.cpp:1670 +#, qt-format +msgid "Loaded DVD-RAM medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1687 +#: kylin-burner-dev/src/data/datacdrom.cpp:1687 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1629 +#: kylin-burner/src/data/datacdrom.cpp:1673 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RAM medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1693 +#: kylin-burner-dev/src/data/datacdrom.cpp:1693 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1635 +#: kylin-burner/src/data/datacdrom.cpp:1679 +#, qt-format +msgid "Loaded DVD-RW(OVERWRITE) medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1696 +#: kylin-burner-dev/src/data/datacdrom.cpp:1696 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1638 +#: kylin-burner/src/data/datacdrom.cpp:1682 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RW(OVERWRITE) medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1702 +#: kylin-burner-dev/src/data/datacdrom.cpp:1702 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1644 +#: kylin-burner/src/data/datacdrom.cpp:1688 +#, qt-format +msgid "Loaded DVD-RW medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1705 +#: kylin-burner-dev/src/data/datacdrom.cpp:1705 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1647 +#: kylin-burner/src/data/datacdrom.cpp:1691 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RW medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1711 +#: kylin-burner-dev/src/data/datacdrom.cpp:1711 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1653 +#: kylin-burner/src/data/datacdrom.cpp:1697 +#, qt-format +msgid "Loaded DVD+RW medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1714 +#: kylin-burner-dev/src/data/datacdrom.cpp:1714 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1656 +#: kylin-burner/src/data/datacdrom.cpp:1700 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+RW medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1720 +#: kylin-burner-dev/src/data/datacdrom.cpp:1720 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1662 +#: kylin-burner/src/data/datacdrom.cpp:1706 +#, qt-format +msgid "Loaded DVD+R medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1723 +#: kylin-burner-dev/src/data/datacdrom.cpp:1723 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1665 +#: kylin-burner/src/data/datacdrom.cpp:1709 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+R medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1729 +#: kylin-burner-dev/src/data/datacdrom.cpp:1729 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1671 +#: kylin-burner/src/data/datacdrom.cpp:1715 +#, qt-format +msgid "Loaded DVD+R DL medium in %1" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1732 +#: kylin-burner-dev/src/data/datacdrom.cpp:1732 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1674 +#: kylin-burner/src/data/datacdrom.cpp:1718 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+R DL medium" +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1746 +#: kylin-burner-dev/src/data/datacdrom.cpp:1746 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1692 +#: kylin-burner/src/data/datacdrom.cpp:1732 +#, qt-format +msgid "Created medium of type %1." +msgstr "" + +#: kylin-burner-64/src/data/datacdrom.cpp:1750 +#: kylin-burner-dev/src/data/datacdrom.cpp:1750 +#: kylin-burner-pangux/src/data/datacdrom.cpp:1696 +#: kylin-burner/src/data/datacdrom.cpp:1736 +msgid "There is no mediun in CDROM" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:112 +#: kylin-burner-dev/src/data/datadirectory.cpp:112 +#: kylin-burner-pangux/src/data/datadirectory.cpp:119 +#: kylin-burner/src/data/datadirectory.cpp:112 +msgid "Return to parent level." +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:118 +#: kylin-burner-64/src/model/logicburndata.cpp:576 +#: kylin-burner-64/src/model/logicburndata.cpp:589 +#: kylin-burner-64/src/view/burndata.cpp:152 +#: kylin-burner-64/src/view/burndata.cpp:563 +#: kylin-burner-64/src/view/burndata.cpp:1002 +#: kylin-burner-64/src/view/burndata.cpp:1008 +#: kylin-burner-64/src/view/burndata.cpp:1014 +#: kylin-burner-64/src/view/burndata.cpp:1022 +#: kylin-burner-64/src/view/burndata.cpp:1028 +#: kylin-burner-dev/src/data/datadirectory.cpp:118 +#: kylin-burner-dev/src/model/logicburndata.cpp:576 +#: kylin-burner-dev/src/model/logicburndata.cpp:589 +#: kylin-burner-dev/src/view/burndata.cpp:152 +#: kylin-burner-dev/src/view/burndata.cpp:563 +#: kylin-burner-dev/src/view/burndata.cpp:1002 +#: kylin-burner-dev/src/view/burndata.cpp:1008 +#: kylin-burner-dev/src/view/burndata.cpp:1014 +#: kylin-burner-dev/src/view/burndata.cpp:1022 +#: kylin-burner-dev/src/view/burndata.cpp:1028 +#: kylin-burner-pangux/src/data/datadirectory.cpp:125 +#: kylin-burner-pangux/src/model/logicburndata.cpp:518 +#: kylin-burner-pangux/src/model/logicburndata.cpp:528 +#: kylin-burner-pangux/src/view/burndata.cpp:129 +#: kylin-burner-pangux/src/view/burndata.cpp:539 +#: kylin-burner-pangux/src/view/burndata.cpp:975 +#: kylin-burner-pangux/src/view/burndata.cpp:981 +#: kylin-burner-pangux/src/view/burndata.cpp:987 +#: kylin-burner-pangux/src/view/burndata.cpp:994 +#: kylin-burner-pangux/src/view/burndata.cpp:1000 +#: kylin-burner/src/data/datadirectory.cpp:118 +#: kylin-burner/src/model/logicburndata.cpp:576 +#: kylin-burner/src/model/logicburndata.cpp:589 +#: kylin-burner/src/view/burndata.cpp:141 +#: kylin-burner/src/view/burndata.cpp:551 +#: kylin-burner/src/view/burndata.cpp:1031 +#: kylin-burner/src/view/burndata.cpp:1037 +#: kylin-burner/src/view/burndata.cpp:1043 +#: kylin-burner/src/view/burndata.cpp:1051 +#: kylin-burner/src/view/burndata.cpp:1057 +msgid "NewFolder" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:171 +#: kylin-burner-64/src/data/datadirectory.cpp:561 +#: kylin-burner-dev/src/data/datadirectory.cpp:171 +#: kylin-burner-dev/src/data/datadirectory.cpp:561 +#: kylin-burner-pangux/src/data/datadirectory.cpp:191 +#: kylin-burner-pangux/src/data/datadirectory.cpp:586 +#: kylin-burner/src/data/datadirectory.cpp:171 +#: kylin-burner/src/data/datadirectory.cpp:561 +#, qt-format +msgid "Duplicate child %1" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:186 +#: kylin-burner-64/src/data/datadirectory.cpp:569 +#: kylin-burner-64/src/model/logicburndata.cpp:268 +#: kylin-burner-64/src/model/logicburndata.cpp:274 +#: kylin-burner-64/src/model/logicburndata.cpp:280 +#: kylin-burner-64/src/view/burndata.cpp:561 +#: kylin-burner-64/src/view/settingdatas.cpp:65 +#: kylin-burner-dev/src/data/datadirectory.cpp:186 +#: kylin-burner-dev/src/data/datadirectory.cpp:569 +#: kylin-burner-dev/src/model/logicburndata.cpp:268 +#: kylin-burner-dev/src/model/logicburndata.cpp:274 +#: kylin-burner-dev/src/model/logicburndata.cpp:280 +#: kylin-burner-dev/src/view/burndata.cpp:561 +#: kylin-burner-dev/src/view/settingdatas.cpp:65 +#: kylin-burner-pangux/src/data/datadirectory.cpp:199 +#: kylin-burner-pangux/src/data/datadirectory.cpp:594 +#: kylin-burner-pangux/src/model/logicburndata.cpp:269 +#: kylin-burner-pangux/src/model/logicburndata.cpp:275 +#: kylin-burner-pangux/src/model/logicburndata.cpp:281 +#: kylin-burner-pangux/src/view/burndata.cpp:537 +#: kylin-burner-pangux/src/view/settingdatas.cpp:65 +#: kylin-burner/src/data/datadirectory.cpp:186 +#: kylin-burner/src/data/datadirectory.cpp:569 +#: kylin-burner/src/model/logicburndata.cpp:268 +#: kylin-burner/src/model/logicburndata.cpp:274 +#: kylin-burner/src/model/logicburndata.cpp:280 +#: kylin-burner/src/view/burndata.cpp:549 +#: kylin-burner/src/view/settingdatas.cpp:51 +msgid "Rename" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:186 +#: kylin-burner-64/src/data/datadirectory.cpp:569 +#: kylin-burner-64/src/view/inputchange.cpp:63 +#: kylin-burner-dev/src/data/datadirectory.cpp:186 +#: kylin-burner-dev/src/data/datadirectory.cpp:569 +#: kylin-burner-dev/src/view/inputchange.cpp:63 +#: kylin-burner-pangux/src/data/datadirectory.cpp:199 +#: kylin-burner-pangux/src/data/datadirectory.cpp:594 +#: kylin-burner-pangux/src/view/inputchange.cpp:63 +#: kylin-burner/src/data/datadirectory.cpp:186 +#: kylin-burner/src/data/datadirectory.cpp:569 +#: kylin-burner/src/view/inputchange.cpp:62 +msgid "File name duplicate, need to rename:" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:191 +#: kylin-burner-64/src/data/datadirectory.cpp:199 +#: kylin-burner-64/src/data/datadirectory.cpp:206 +#: kylin-burner-64/src/data/datadirectory.cpp:212 +#: kylin-burner-64/src/data/datadirectory.cpp:575 +#: kylin-burner-64/src/data/datadirectory.cpp:581 +#: kylin-burner-64/src/data/datadirectory.cpp:587 +#: kylin-burner-64/src/model/logicburndata.cpp:1123 +#: kylin-burner-64/src/view/burndata.cpp:927 +#: kylin-burner-dev/src/data/datadirectory.cpp:191 +#: kylin-burner-dev/src/data/datadirectory.cpp:199 +#: kylin-burner-dev/src/data/datadirectory.cpp:206 +#: kylin-burner-dev/src/data/datadirectory.cpp:212 +#: kylin-burner-dev/src/data/datadirectory.cpp:575 +#: kylin-burner-dev/src/data/datadirectory.cpp:581 +#: kylin-burner-dev/src/data/datadirectory.cpp:587 +#: kylin-burner-dev/src/model/logicburndata.cpp:1123 +#: kylin-burner-dev/src/view/burndata.cpp:927 +#: kylin-burner-pangux/src/data/datadirectory.cpp:203 +#: kylin-burner-pangux/src/data/datadirectory.cpp:209 +#: kylin-burner-pangux/src/data/datadirectory.cpp:215 +#: kylin-burner-pangux/src/data/datadirectory.cpp:599 +#: kylin-burner-pangux/src/data/datadirectory.cpp:605 +#: kylin-burner-pangux/src/data/datadirectory.cpp:611 +#: kylin-burner-pangux/src/model/logicburndata.cpp:909 +#: kylin-burner-pangux/src/view/burndata.cpp:895 +#: kylin-burner/src/data/datadirectory.cpp:191 +#: kylin-burner/src/data/datadirectory.cpp:199 +#: kylin-burner/src/data/datadirectory.cpp:206 +#: kylin-burner/src/data/datadirectory.cpp:212 +#: kylin-burner/src/data/datadirectory.cpp:575 +#: kylin-burner/src/data/datadirectory.cpp:581 +#: kylin-burner/src/data/datadirectory.cpp:587 +#: kylin-burner/src/model/logicburndata.cpp:1123 +#: kylin-burner/src/view/burndata.cpp:956 +msgid "Add File(s)" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:191 +#: kylin-burner-64/src/data/datadirectory.cpp:575 +#: kylin-burner-64/src/model/logicburndata.cpp:268 +#: kylin-burner-64/src/view/burndata.cpp:1008 +#: kylin-burner-64/src/view/burndata.cpp:1014 +#: kylin-burner-dev/src/data/datadirectory.cpp:191 +#: kylin-burner-dev/src/data/datadirectory.cpp:575 +#: kylin-burner-dev/src/model/logicburndata.cpp:268 +#: kylin-burner-dev/src/view/burndata.cpp:1008 +#: kylin-burner-dev/src/view/burndata.cpp:1014 +#: kylin-burner-pangux/src/data/datadirectory.cpp:203 +#: kylin-burner-pangux/src/data/datadirectory.cpp:599 +#: kylin-burner-pangux/src/model/logicburndata.cpp:269 +#: kylin-burner-pangux/src/view/burndata.cpp:981 +#: kylin-burner-pangux/src/view/burndata.cpp:987 +#: kylin-burner/src/data/datadirectory.cpp:191 +#: kylin-burner/src/data/datadirectory.cpp:575 +#: kylin-burner/src/model/logicburndata.cpp:268 +#: kylin-burner/src/view/burndata.cpp:1037 +#: kylin-burner/src/view/burndata.cpp:1043 +msgid "Empty Name" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:192 +#: kylin-burner-64/src/data/datadirectory.cpp:576 +#: kylin-burner-dev/src/data/datadirectory.cpp:192 +#: kylin-burner-dev/src/data/datadirectory.cpp:576 +#: kylin-burner-pangux/src/data/datadirectory.cpp:204 +#: kylin-burner-pangux/src/data/datadirectory.cpp:600 +#: kylin-burner/src/data/datadirectory.cpp:192 +#: kylin-burner/src/data/datadirectory.cpp:576 +msgid "Cannot named with empty." +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:199 +#: kylin-burner-dev/src/data/datadirectory.cpp:199 +#: kylin-burner/src/data/datadirectory.cpp:199 +msgid "Not Hidden Name" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:200 +#: kylin-burner-dev/src/data/datadirectory.cpp:200 +#: kylin-burner/src/data/datadirectory.cpp:200 +msgid "Cannot named with None hidden name" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:206 +#: kylin-burner-64/src/data/datadirectory.cpp:581 +#: kylin-burner-64/src/model/logicburndata.cpp:280 +#: kylin-burner-64/src/view/burndata.cpp:1028 +#: kylin-burner-dev/src/data/datadirectory.cpp:206 +#: kylin-burner-dev/src/data/datadirectory.cpp:581 +#: kylin-burner-dev/src/model/logicburndata.cpp:280 +#: kylin-burner-dev/src/view/burndata.cpp:1028 +#: kylin-burner-pangux/src/data/datadirectory.cpp:209 +#: kylin-burner-pangux/src/data/datadirectory.cpp:605 +#: kylin-burner-pangux/src/model/logicburndata.cpp:281 +#: kylin-burner-pangux/src/view/burndata.cpp:1000 +#: kylin-burner/src/data/datadirectory.cpp:206 +#: kylin-burner/src/data/datadirectory.cpp:581 +#: kylin-burner/src/model/logicburndata.cpp:280 +#: kylin-burner/src/view/burndata.cpp:1057 +msgid "Duplicate Name" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:207 +#: kylin-burner-64/src/data/datadirectory.cpp:582 +#: kylin-burner-dev/src/data/datadirectory.cpp:207 +#: kylin-burner-dev/src/data/datadirectory.cpp:582 +#: kylin-burner-pangux/src/data/datadirectory.cpp:210 +#: kylin-burner-pangux/src/data/datadirectory.cpp:606 +#: kylin-burner/src/data/datadirectory.cpp:207 +#: kylin-burner/src/data/datadirectory.cpp:582 +#, qt-format +msgid "There is data named %1" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:212 +#: kylin-burner-64/src/data/datadirectory.cpp:587 +#: kylin-burner-64/src/model/logicburndata.cpp:274 +#: kylin-burner-64/src/view/burndata.cpp:1022 +#: kylin-burner-dev/src/data/datadirectory.cpp:212 +#: kylin-burner-dev/src/data/datadirectory.cpp:587 +#: kylin-burner-dev/src/model/logicburndata.cpp:274 +#: kylin-burner-dev/src/view/burndata.cpp:1022 +#: kylin-burner-pangux/src/data/datadirectory.cpp:215 +#: kylin-burner-pangux/src/data/datadirectory.cpp:611 +#: kylin-burner-pangux/src/model/logicburndata.cpp:275 +#: kylin-burner-pangux/src/view/burndata.cpp:994 +#: kylin-burner/src/data/datadirectory.cpp:212 +#: kylin-burner/src/data/datadirectory.cpp:587 +#: kylin-burner/src/model/logicburndata.cpp:274 +#: kylin-burner/src/view/burndata.cpp:1051 +msgid "Name Too Long" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:213 +#: kylin-burner-64/src/data/datadirectory.cpp:588 +#: kylin-burner-dev/src/data/datadirectory.cpp:213 +#: kylin-burner-dev/src/data/datadirectory.cpp:588 +#: kylin-burner-pangux/src/data/datadirectory.cpp:216 +#: kylin-burner-pangux/src/data/datadirectory.cpp:612 +#: kylin-burner/src/data/datadirectory.cpp:213 +#: kylin-burner/src/data/datadirectory.cpp:588 +msgid "Cannot add named length more than 103 unicode charsets." +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:268 +#: kylin-burner-64/src/data/datadirectory.cpp:653 +#: kylin-burner-dev/src/data/datadirectory.cpp:268 +#: kylin-burner-dev/src/data/datadirectory.cpp:653 +#: kylin-burner-pangux/src/data/datadirectory.cpp:258 +#: kylin-burner-pangux/src/data/datadirectory.cpp:662 +#: kylin-burner/src/data/datadirectory.cpp:268 +#: kylin-burner/src/data/datadirectory.cpp:653 +#, qt-format +msgid "Add child %1" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:402 +#: kylin-burner-dev/src/data/datadirectory.cpp:402 +#: kylin-burner-pangux/src/data/datadirectory.cpp:374 +#: kylin-burner/src/data/datadirectory.cpp:402 +#, qt-format +msgid "Copied dir %1 to %2" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:511 +#: kylin-burner-dev/src/data/datadirectory.cpp:511 +#: kylin-burner-pangux/src/data/datadirectory.cpp:533 +#: kylin-burner/src/data/datadirectory.cpp:511 +#, qt-format +msgid "Add size %1, now size is %2" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:520 +#: kylin-burner-dev/src/data/datadirectory.cpp:520 +#: kylin-burner-pangux/src/data/datadirectory.cpp:542 +#: kylin-burner/src/data/datadirectory.cpp:520 +#, qt-format +msgid "Sub size %1, now size is %2" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:533 +#: kylin-burner-dev/src/data/datadirectory.cpp:533 +#: kylin-burner-pangux/src/data/datadirectory.cpp:555 +#: kylin-burner/src/data/datadirectory.cpp:533 +#, qt-format +msgid "Includes %1 dir(s), after %2" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:533 +#: kylin-burner-64/src/data/datadirectory.cpp:543 +#: kylin-burner-dev/src/data/datadirectory.cpp:533 +#: kylin-burner-dev/src/data/datadirectory.cpp:543 +#: kylin-burner-pangux/src/data/datadirectory.cpp:555 +#: kylin-burner-pangux/src/data/datadirectory.cpp:565 +#: kylin-burner/src/data/datadirectory.cpp:533 +#: kylin-burner/src/data/datadirectory.cpp:543 +msgid "add" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:533 +#: kylin-burner-64/src/data/datadirectory.cpp:543 +#: kylin-burner-dev/src/data/datadirectory.cpp:533 +#: kylin-burner-dev/src/data/datadirectory.cpp:543 +#: kylin-burner-pangux/src/data/datadirectory.cpp:555 +#: kylin-burner-pangux/src/data/datadirectory.cpp:565 +#: kylin-burner/src/data/datadirectory.cpp:533 +#: kylin-burner/src/data/datadirectory.cpp:543 +msgid "delete" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:543 +#: kylin-burner-dev/src/data/datadirectory.cpp:543 +#: kylin-burner-pangux/src/data/datadirectory.cpp:565 +#: kylin-burner/src/data/datadirectory.cpp:543 +#, qt-format +msgid "Includes %1 file(s), after %2" +msgstr "" + +#: kylin-burner-64/src/data/datadirectory.cpp:668 +#: kylin-burner-dev/src/data/datadirectory.cpp:668 +#: kylin-burner-pangux/src/data/datadirectory.cpp:676 +#: kylin-burner/src/data/datadirectory.cpp:668 +#, qt-format +msgid "Move child %1 out" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:43 +#: kylin-burner-dev/src/data/datafile.cpp:43 +#: kylin-burner-pangux/src/data/datafile.cpp:43 +#: kylin-burner/src/data/datafile.cpp:45 +#, qt-format +msgid "FILE %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:45 +#: kylin-burner-dev/src/data/datafile.cpp:45 +#: kylin-burner-pangux/src/data/datafile.cpp:45 +#: kylin-burner/src/data/datafile.cpp:47 +#, qt-format +msgid "DIR %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:52 +#: kylin-burner-dev/src/data/datafile.cpp:52 +#: kylin-burner-pangux/src/data/datafile.cpp:49 +#: kylin-burner/src/data/datafile.cpp:54 +#, qt-format +msgid "Create time : %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:53 +#: kylin-burner-dev/src/data/datafile.cpp:53 +#: kylin-burner-pangux/src/data/datafile.cpp:47 +#: kylin-burner/src/data/datafile.cpp:55 +#, qt-format +msgid "Size : %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:54 +#: kylin-burner-dev/src/data/datafile.cpp:54 +#: kylin-burner-pangux/src/data/datafile.cpp:51 +#: kylin-burner/src/data/datafile.cpp:56 +#, qt-format +msgid "Add time : %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:61 +#: kylin-burner-dev/src/data/datafile.cpp:61 +#: kylin-burner-pangux/src/data/datafile.cpp:55 +#: kylin-burner/src/data/datafile.cpp:73 +#, qt-format +msgid "Type : %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:62 +#: kylin-burner-dev/src/data/datafile.cpp:62 +#: kylin-burner-pangux/src/data/datafile.cpp:57 +#: kylin-burner/src/data/datafile.cpp:74 +#, qt-format +msgid "Source path : %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:68 +#: kylin-burner-dev/src/data/datafile.cpp:68 +#: kylin-burner-pangux/src/data/datafile.cpp:60 +#: kylin-burner/src/data/datafile.cpp:80 +#, qt-format +msgid "is %1HIDDEN." +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:69 +#: kylin-burner-dev/src/data/datafile.cpp:69 +#: kylin-burner-pangux/src/data/datafile.cpp:62 +#: kylin-burner/src/data/datafile.cpp:81 +#, c-format, qt-format +msgid "is %1SymbolLink." +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:106 +#: kylin-burner-dev/src/data/datafile.cpp:106 +#: kylin-burner-pangux/src/data/datafile.cpp:91 +#: kylin-burner/src/data/datafile.cpp:118 +#, qt-format +msgid "Symbol link target : %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:249 +#: kylin-burner-dev/src/data/datafile.cpp:249 +#: kylin-burner-pangux/src/data/datafile.cpp:220 +#: kylin-burner/src/data/datafile.cpp:261 +#, qt-format +msgid "Copied file %1 to %2" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:337 +#: kylin-burner-dev/src/data/datafile.cpp:337 +#: kylin-burner-pangux/src/data/datafile.cpp:288 +#: kylin-burner/src/data/datafile.cpp:350 +#, qt-format +msgid "Update destination to %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:359 +#: kylin-burner-dev/src/data/datafile.cpp:359 +#: kylin-burner-pangux/src/data/datafile.cpp:308 +#: kylin-burner/src/data/datafile.cpp:372 +#, qt-format +msgid "Filter hidden file. %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:397 +#: kylin-burner-dev/src/data/datafile.cpp:397 +#: kylin-burner-pangux/src/data/datafile.cpp:342 +#: kylin-burner/src/data/datafile.cpp:410 +#, qt-format +msgid "Symbo link file %1 has target file %2, do not filter." +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:415 +#: kylin-burner-dev/src/data/datafile.cpp:415 +#: kylin-burner-pangux/src/data/datafile.cpp:353 +#: kylin-burner/src/data/datafile.cpp:428 +#, qt-format +msgid "Filter broken symbol link file. %1" +msgstr "" + +#: kylin-burner-64/src/data/datafile.cpp:451 +#: kylin-burner-dev/src/data/datafile.cpp:451 +#: kylin-burner-pangux/src/data/datafile.cpp:387 +#: kylin-burner/src/data/datafile.cpp:464 +#, qt-format +msgid "Repleace symbol link file. %1" +msgstr "" + +#: kylin-burner-64/src/data/datasetting.cpp:27 +#: kylin-burner-dev/src/data/datasetting.cpp:27 +#: kylin-burner-pangux/src/data/datasetting.cpp:27 +#: kylin-burner/src/data/datasetting.cpp:27 +msgid "KylinSoft" +msgstr "" + +#: kylin-burner-64/src/data/datasetting.cpp:31 +#: kylin-burner-dev/src/data/datasetting.cpp:31 +#: kylin-burner-pangux/src/data/datasetting.cpp:31 +#: kylin-burner/src/data/datasetting.cpp:31 +#, qt-format +msgid "Kylinsoft © %1 All rights." +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:34 +#: kylin-burner-64/src/frame/auditlog.cpp:72 +#: kylin-burner-64/src/frame/auditlog.cpp:118 +#: kylin-burner-dev/src/frame/auditlog.cpp:34 +#: kylin-burner-dev/src/frame/auditlog.cpp:72 +#: kylin-burner-dev/src/frame/auditlog.cpp:118 +#: kylin-burner-pangux/src/frame/auditlog.cpp:36 +#: kylin-burner-pangux/src/frame/auditlog.cpp:69 +#: kylin-burner-pangux/src/frame/auditlog.cpp:107 +#: kylin-burner/src/frame/auditlog.cpp:34 +#: kylin-burner/src/frame/auditlog.cpp:72 +#: kylin-burner/src/frame/auditlog.cpp:118 +msgid "Time" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:35 +#: kylin-burner-64/src/frame/auditlog.cpp:73 +#: kylin-burner-64/src/frame/auditlog.cpp:119 +#: kylin-burner-64/src/process/processbasic.cpp:101 +#: kylin-burner-64/src/process/processbasic.cpp:131 +#: kylin-burner-64/src/process/processbasic.cpp:149 +#: kylin-burner-dev/src/frame/auditlog.cpp:35 +#: kylin-burner-dev/src/frame/auditlog.cpp:73 +#: kylin-burner-dev/src/frame/auditlog.cpp:119 +#: kylin-burner-dev/src/process/processbasic.cpp:101 +#: kylin-burner-dev/src/process/processbasic.cpp:131 +#: kylin-burner-dev/src/process/processbasic.cpp:149 +#: kylin-burner-pangux/src/frame/auditlog.cpp:37 +#: kylin-burner-pangux/src/frame/auditlog.cpp:70 +#: kylin-burner-pangux/src/frame/auditlog.cpp:108 +#: kylin-burner-pangux/src/process/processbasic.cpp:99 +#: kylin-burner-pangux/src/process/processbasic.cpp:117 +#: kylin-burner-pangux/src/process/processbasic.cpp:135 +#: kylin-burner/src/frame/auditlog.cpp:35 +#: kylin-burner/src/frame/auditlog.cpp:73 +#: kylin-burner/src/frame/auditlog.cpp:119 +#: kylin-burner/src/process/processbasic.cpp:101 +#: kylin-burner/src/process/processbasic.cpp:131 +#: kylin-burner/src/process/processbasic.cpp:149 +msgid "User" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:36 +#: kylin-burner-64/src/frame/auditlog.cpp:74 +#: kylin-burner-64/src/frame/auditlog.cpp:120 +#: kylin-burner-dev/src/frame/auditlog.cpp:36 +#: kylin-burner-dev/src/frame/auditlog.cpp:74 +#: kylin-burner-dev/src/frame/auditlog.cpp:120 +#: kylin-burner-pangux/src/frame/auditlog.cpp:38 +#: kylin-burner-pangux/src/frame/auditlog.cpp:71 +#: kylin-burner-pangux/src/frame/auditlog.cpp:109 +#: kylin-burner/src/frame/auditlog.cpp:36 +#: kylin-burner/src/frame/auditlog.cpp:74 +#: kylin-burner/src/frame/auditlog.cpp:120 +msgid "RecorderType" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:37 +#: kylin-burner-64/src/frame/auditlog.cpp:75 +#: kylin-burner-64/src/frame/auditlog.cpp:121 +#: kylin-burner-dev/src/frame/auditlog.cpp:37 +#: kylin-burner-dev/src/frame/auditlog.cpp:75 +#: kylin-burner-dev/src/frame/auditlog.cpp:121 +#: kylin-burner-pangux/src/frame/auditlog.cpp:39 +#: kylin-burner-pangux/src/frame/auditlog.cpp:72 +#: kylin-burner-pangux/src/frame/auditlog.cpp:110 +#: kylin-burner/src/frame/auditlog.cpp:37 +#: kylin-burner/src/frame/auditlog.cpp:75 +#: kylin-burner/src/frame/auditlog.cpp:121 +msgid "DiscProperty" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:38 +#: kylin-burner-64/src/frame/auditlog.cpp:85 +#: kylin-burner-64/src/frame/auditlog.cpp:122 +#: kylin-burner-64/src/view/burndata.cpp:191 +#: kylin-burner-64/src/view/viewfilterfiles.cpp:287 +#: kylin-burner-dev/src/frame/auditlog.cpp:38 +#: kylin-burner-dev/src/frame/auditlog.cpp:85 +#: kylin-burner-dev/src/frame/auditlog.cpp:122 +#: kylin-burner-dev/src/view/burndata.cpp:191 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:287 +#: kylin-burner-pangux/src/frame/auditlog.cpp:40 +#: kylin-burner-pangux/src/frame/auditlog.cpp:82 +#: kylin-burner-pangux/src/frame/auditlog.cpp:111 +#: kylin-burner-pangux/src/view/burndata.cpp:166 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:332 +#: kylin-burner/src/frame/auditlog.cpp:38 +#: kylin-burner/src/frame/auditlog.cpp:85 +#: kylin-burner/src/frame/auditlog.cpp:122 +#: kylin-burner/src/view/burndata.cpp:174 +#: kylin-burner/src/view/viewfilterfiles.cpp:303 +msgid "FileName" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:47 +#: kylin-burner-dev/src/frame/auditlog.cpp:47 +#: kylin-burner-pangux/src/frame/auditlog.cpp:46 +#: kylin-burner/src/frame/auditlog.cpp:47 +msgid "Current operation donot need file" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:51 +#: kylin-burner-64/src/frame/auditlog.cpp:94 +#: kylin-burner-64/src/frame/auditlog.cpp:130 +#: kylin-burner-dev/src/frame/auditlog.cpp:51 +#: kylin-burner-dev/src/frame/auditlog.cpp:94 +#: kylin-burner-dev/src/frame/auditlog.cpp:130 +#: kylin-burner-pangux/src/frame/auditlog.cpp:49 +#: kylin-burner-pangux/src/frame/auditlog.cpp:88 +#: kylin-burner-pangux/src/frame/auditlog.cpp:119 +#: kylin-burner/src/frame/auditlog.cpp:51 +#: kylin-burner/src/frame/auditlog.cpp:94 +#: kylin-burner/src/frame/auditlog.cpp:130 +msgid "Operation" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:52 +#: kylin-burner-64/src/frame/auditlog.cpp:95 +#: kylin-burner-64/src/frame/auditlog.cpp:131 +#: kylin-burner-dev/src/frame/auditlog.cpp:52 +#: kylin-burner-dev/src/frame/auditlog.cpp:95 +#: kylin-burner-dev/src/frame/auditlog.cpp:131 +#: kylin-burner-pangux/src/frame/auditlog.cpp:50 +#: kylin-burner-pangux/src/frame/auditlog.cpp:89 +#: kylin-burner-pangux/src/frame/auditlog.cpp:120 +#: kylin-burner/src/frame/auditlog.cpp:52 +#: kylin-burner/src/frame/auditlog.cpp:95 +#: kylin-burner/src/frame/auditlog.cpp:131 +msgid "Result" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:52 +#: kylin-burner-64/src/frame/auditlog.cpp:95 +#: kylin-burner-64/src/frame/auditlog.cpp:131 +#: kylin-burner-dev/src/frame/auditlog.cpp:52 +#: kylin-burner-dev/src/frame/auditlog.cpp:95 +#: kylin-burner-dev/src/frame/auditlog.cpp:131 +#: kylin-burner-pangux/src/frame/auditlog.cpp:50 +#: kylin-burner-pangux/src/frame/auditlog.cpp:89 +#: kylin-burner-pangux/src/frame/auditlog.cpp:120 +#: kylin-burner/src/frame/auditlog.cpp:52 +#: kylin-burner/src/frame/auditlog.cpp:95 +#: kylin-burner/src/frame/auditlog.cpp:131 +msgid "success" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:52 +#: kylin-burner-64/src/frame/auditlog.cpp:95 +#: kylin-burner-64/src/frame/auditlog.cpp:131 +#: kylin-burner-dev/src/frame/auditlog.cpp:52 +#: kylin-burner-dev/src/frame/auditlog.cpp:95 +#: kylin-burner-dev/src/frame/auditlog.cpp:131 +#: kylin-burner-pangux/src/frame/auditlog.cpp:50 +#: kylin-burner-pangux/src/frame/auditlog.cpp:89 +#: kylin-burner-pangux/src/frame/auditlog.cpp:120 +#: kylin-burner/src/frame/auditlog.cpp:52 +#: kylin-burner/src/frame/auditlog.cpp:95 +#: kylin-burner/src/frame/auditlog.cpp:131 +msgid "fail" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:79 +#: kylin-burner-64/src/frame/auditlog.cpp:121 +#: kylin-burner-dev/src/frame/auditlog.cpp:79 +#: kylin-burner-dev/src/frame/auditlog.cpp:121 +#: kylin-burner-pangux/src/frame/auditlog.cpp:76 +#: kylin-burner-pangux/src/frame/auditlog.cpp:110 +#: kylin-burner/src/frame/auditlog.cpp:79 +#: kylin-burner/src/frame/auditlog.cpp:121 +msgid "Donot need disc" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:129 +#: kylin-burner-dev/src/frame/auditlog.cpp:129 +#: kylin-burner-pangux/src/frame/auditlog.cpp:118 +#: kylin-burner/src/frame/auditlog.cpp:129 +msgid "ImageFile" +msgstr "" + +#: kylin-burner-64/src/frame/auditlog.cpp:130 +#: kylin-burner-64/src/process/processcreateiso.cpp:22 +#: kylin-burner-64/src/process/processcreateiso.cpp:205 +#: kylin-burner-64/src/process/processcreateiso.cpp:214 +#: kylin-burner-dev/src/frame/auditlog.cpp:130 +#: kylin-burner-dev/src/process/processcreateiso.cpp:22 +#: kylin-burner-dev/src/process/processcreateiso.cpp:205 +#: kylin-burner-dev/src/process/processcreateiso.cpp:214 +#: kylin-burner-pangux/src/frame/auditlog.cpp:119 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:22 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:214 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:224 +#: kylin-burner/src/frame/auditlog.cpp:130 +#: kylin-burner/src/process/processcreateiso.cpp:22 +#: kylin-burner/src/process/processcreateiso.cpp:205 +#: kylin-burner/src/process/processcreateiso.cpp:214 +msgid "Creating ISO" +msgstr "" + +#: kylin-burner-64/src/frame/logger.cpp:26 +#: kylin-burner-dev/src/frame/logger.cpp:26 +#: kylin-burner-pangux/src/frame/logger.cpp:26 +#: kylin-burner/src/frame/logger.cpp:26 +msgid "info" +msgstr "" + +#: kylin-burner-64/src/frame/logger.cpp:26 +#: kylin-burner-dev/src/frame/logger.cpp:26 +#: kylin-burner-pangux/src/frame/logger.cpp:26 +#: kylin-burner/src/frame/logger.cpp:26 +msgid "warn" +msgstr "" + +#: kylin-burner-64/src/frame/logger.cpp:26 +#: kylin-burner-dev/src/frame/logger.cpp:26 +#: kylin-burner-pangux/src/frame/logger.cpp:26 +#: kylin-burner/src/frame/logger.cpp:26 +msgid "error" +msgstr "" + +#: kylin-burner-64/src/frame/logger.cpp:26 +#: kylin-burner-dev/src/frame/logger.cpp:26 +#: kylin-burner-pangux/src/frame/logger.cpp:26 +#: kylin-burner/src/frame/logger.cpp:26 +msgid "debug" +msgstr "" + +#: kylin-burner-64/src/frame/logger.cpp:62 +#: kylin-burner-dev/src/frame/logger.cpp:62 +#: kylin-burner-pangux/src/frame/logger.cpp:62 +#: kylin-burner/src/frame/logger.cpp:62 +#, qt-format +msgid "logger path : %1" +msgstr "" + +#: kylin-burner-64/src/frame/logger.cpp:63 +#: kylin-burner-dev/src/frame/logger.cpp:63 +#: kylin-burner-pangux/src/frame/logger.cpp:63 +#: kylin-burner/src/frame/logger.cpp:63 +#, qt-format +msgid "Will record under %1 level log." +msgstr "" + +#: kylin-burner-64/src/frame/logger.cpp:148 +#: kylin-burner-dev/src/frame/logger.cpp:148 +#: kylin-burner-pangux/src/frame/logger.cpp:148 +#: kylin-burner/src/frame/logger.cpp:148 +msgid "common" +msgstr "" + +#: kylin-burner-64/src/main.cpp:105 kylin-burner-dev/src/main.cpp:105 +#: kylin-burner-pangux/src/main.cpp:83 kylin-burner/src/main.cpp:105 +msgid "file(s) to open" +msgstr "" + +#: kylin-burner-64/src/main.cpp:106 kylin-burner-dev/src/main.cpp:106 +#: kylin-burner-pangux/src/main.cpp:84 kylin-burner/src/main.cpp:106 +msgid "Running as debug model." +msgstr "" + +#: kylin-burner-64/src/main.cpp:115 kylin-burner-64/src/view/burndata.cpp:927 +#: kylin-burner-64/src/view/mainwindow.cpp:194 +#: kylin-burner-64/src/view/modaldialog.cpp:189 +#: kylin-burner-64/src/view/viewfilterfiles.cpp:206 +#: kylin-burner-dev/src/main.cpp:115 kylin-burner-dev/src/view/burndata.cpp:927 +#: kylin-burner-dev/src/view/mainwindow.cpp:194 +#: kylin-burner-dev/src/view/modaldialog.cpp:189 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:206 +#: kylin-burner-pangux/src/main.cpp:93 +#: kylin-burner-pangux/src/view/burndata.cpp:895 +#: kylin-burner-pangux/src/view/mainwindow.cpp:201 +#: kylin-burner-pangux/src/view/modaldialog.cpp:204 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:245 +#: kylin-burner/src/main.cpp:115 kylin-burner/src/view/aboutdialog.cpp:12 +#: kylin-burner/src/view/burndata.cpp:956 +#: kylin-burner/src/view/filefilterrules.cpp:35 +#: kylin-burner/src/view/mainwindow.cpp:194 +#: kylin-burner/src/view/modaldialog.cpp:199 +#: kylin-burner/src/view/viewfilterfiles.cpp:182 +#: kylin-burner/src/view/viewfilterfiles.cpp:222 +msgid "Burner" +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:37 +#: kylin-burner-dev/src/model/logicburndata.cpp:37 +#: kylin-burner-pangux/src/model/logicburndata.cpp:35 +#: kylin-burner/src/model/logicburndata.cpp:37 +msgid "BURNDATA" +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:196 +#: kylin-burner-dev/src/model/logicburndata.cpp:196 +#: kylin-burner-pangux/src/model/logicburndata.cpp:197 +#: kylin-burner/src/model/logicburndata.cpp:196 +msgid "Parent" +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:269 +#: kylin-burner-dev/src/model/logicburndata.cpp:269 +#: kylin-burner-pangux/src/model/logicburndata.cpp:270 +#: kylin-burner/src/model/logicburndata.cpp:269 +msgid "Cannot rename to empty." +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:275 +#: kylin-burner-dev/src/model/logicburndata.cpp:275 +#: kylin-burner-pangux/src/model/logicburndata.cpp:276 +#: kylin-burner/src/model/logicburndata.cpp:275 +msgid "New name length must be less than 103 unicode charset." +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:281 +#: kylin-burner-dev/src/model/logicburndata.cpp:281 +#: kylin-burner-pangux/src/model/logicburndata.cpp:282 +#: kylin-burner/src/model/logicburndata.cpp:281 +#, qt-format +msgid "There is a item named by %1." +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:1495 +#: kylin-burner-dev/src/model/logicburndata.cpp:1495 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1259 +#: kylin-burner/src/model/logicburndata.cpp:1488 +#, qt-format +msgid "Add new create iso data file. %1" +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:1700 +#: kylin-burner-dev/src/model/logicburndata.cpp:1700 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1425 +#: kylin-burner/src/model/logicburndata.cpp:1693 +msgid "Add new create iso data file." +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:1804 +#: kylin-burner-dev/src/model/logicburndata.cpp:1804 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1488 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1501 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1510 +#: kylin-burner/src/model/logicburndata.cpp:1797 +msgid "Loading Disk Data." +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:1839 +#: kylin-burner-dev/src/model/logicburndata.cpp:1839 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1531 +#: kylin-burner/src/model/logicburndata.cpp:1832 +#, qt-format +msgid "Loading %1..." +msgstr "" + +#: kylin-burner-64/src/model/logicburndata.cpp:1944 +#: kylin-burner-64/src/model/logicburndata.cpp:1984 +#: kylin-burner-dev/src/model/logicburndata.cpp:1944 +#: kylin-burner-dev/src/model/logicburndata.cpp:1984 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1626 +#: kylin-burner-pangux/src/model/logicburndata.cpp:1652 +#: kylin-burner/src/model/logicburndata.cpp:1937 +#: kylin-burner/src/model/logicburndata.cpp:1977 +#, qt-format +msgid "Added %1 to %2" +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:21 +#: kylin-burner-dev/src/model/logicburnimage.cpp:21 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:19 +#: kylin-burner/src/model/logicburnimage.cpp:21 +msgid "BURNIMAGE" +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:59 +#: kylin-burner-64/src/model/logicburnimage.cpp:74 +#: kylin-burner-64/src/model/logicburnimage.cpp:145 +#: kylin-burner-64/src/model/logicburnimage.cpp:159 +#: kylin-burner-dev/src/model/logicburnimage.cpp:59 +#: kylin-burner-dev/src/model/logicburnimage.cpp:74 +#: kylin-burner-dev/src/model/logicburnimage.cpp:145 +#: kylin-burner-dev/src/model/logicburnimage.cpp:159 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:69 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:84 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:155 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:169 +#: kylin-burner/src/model/logicburnimage.cpp:59 +#: kylin-burner/src/model/logicburnimage.cpp:74 +#: kylin-burner/src/model/logicburnimage.cpp:145 +#: kylin-burner/src/model/logicburnimage.cpp:159 +msgid "No valid burner,need burner which with empty meduim." +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:69 +#: kylin-burner-64/src/model/logicburnimage.cpp:156 +#: kylin-burner-dev/src/model/logicburnimage.cpp:69 +#: kylin-burner-dev/src/model/logicburnimage.cpp:156 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:79 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:166 +#: kylin-burner/src/model/logicburnimage.cpp:69 +#: kylin-burner/src/model/logicburnimage.cpp:156 +msgid "This disc is a non-empty disc and needs to be erased!" +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:118 +#: kylin-burner-dev/src/model/logicburnimage.cpp:118 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:128 +#: kylin-burner/src/model/logicburnimage.cpp:118 +#, qt-format +msgid "Record new iso file path <%1>" +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:121 +#: kylin-burner-dev/src/model/logicburnimage.cpp:121 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:131 +#: kylin-burner/src/model/logicburnimage.cpp:121 +#, qt-format +msgid "Ready to burn : %1" +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:128 +#: kylin-burner-dev/src/model/logicburnimage.cpp:128 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:138 +#: kylin-burner/src/model/logicburnimage.cpp:128 +#, qt-format +msgid "Current index for burning is %1" +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:168 +#: kylin-burner-dev/src/model/logicburnimage.cpp:168 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:178 +#: kylin-burner/src/model/logicburnimage.cpp:168 +msgid "Too long to burn to current medium." +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:169 +#: kylin-burner-dev/src/model/logicburnimage.cpp:169 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:179 +#: kylin-burner/src/model/logicburnimage.cpp:169 +msgid "Current medium has not enough space for burning current iso file." +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:173 +#: kylin-burner-dev/src/model/logicburnimage.cpp:173 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:183 +#: kylin-burner/src/model/logicburnimage.cpp:173 +msgid "Ready to burn,please click [BurnImage] button." +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:189 +#: kylin-burner-dev/src/model/logicburnimage.cpp:189 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:199 +#: kylin-burner/src/model/logicburnimage.cpp:189 +#, qt-format +msgid "New empty medium burner %1, medium %2" +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:202 +#: kylin-burner-dev/src/model/logicburnimage.cpp:202 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:212 +#: kylin-burner/src/model/logicburnimage.cpp:202 +msgid "Remove burner." +msgstr "" + +#: kylin-burner-64/src/model/logicburnimage.cpp:219 +#: kylin-burner-dev/src/model/logicburnimage.cpp:219 +#: kylin-burner-pangux/src/model/logicburnimage.cpp:230 +#: kylin-burner/src/model/logicburnimage.cpp:219 +#, qt-format +msgid "Begin to burn image, burn image<%1> to medium in <%2>" +msgstr "" + +#: kylin-burner-64/src/model/logiccopyimage.cpp:170 +#: kylin-burner-dev/src/model/logiccopyimage.cpp:170 +#: kylin-burner-pangux/src/model/logiccopyimage.cpp:147 +#: kylin-burner/src/model/logiccopyimage.cpp:170 +msgid "This disc is a CD, and copying to DVD is not supported" +msgstr "" + +#: kylin-burner-64/src/model/logiccopyimage.cpp:174 +#: kylin-burner-dev/src/model/logiccopyimage.cpp:174 +#: kylin-burner-pangux/src/model/logiccopyimage.cpp:151 +#: kylin-burner/src/model/logiccopyimage.cpp:174 +msgid "This disc is a DVD, and copying to CD is not supported" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:39 +#: kylin-burner-dev/src/model/logicmain.cpp:39 +#: kylin-burner-pangux/src/model/logicmain.cpp:32 +#: kylin-burner/src/model/logicmain.cpp:39 +msgid "MAIN" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:68 +#: kylin-burner-dev/src/model/logicmain.cpp:68 +#: kylin-burner-pangux/src/model/logicmain.cpp:73 +#: kylin-burner/src/model/logicmain.cpp:90 +msgid "" +"Connect MONITOR signal addCDROM to createCDROM, for creating new cdrom " +"information." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:170 +#: kylin-burner-dev/src/model/logicmain.cpp:170 +#: kylin-burner-pangux/src/model/logicmain.cpp:159 +#: kylin-burner/src/model/logicmain.cpp:210 +#, qt-format +msgid "Creating new cdrom named %1" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:342 +#: kylin-burner-dev/src/model/logicmain.cpp:342 +#: kylin-burner-pangux/src/model/logicmain.cpp:467 +#: kylin-burner/src/model/logicmain.cpp:382 +#, qt-format +msgid "Get empty medium in CDROM %1" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:343 +#: kylin-burner-64/src/model/logicmain.cpp:354 +#: kylin-burner-64/src/model/logicmain.cpp:366 +#: kylin-burner-dev/src/model/logicmain.cpp:343 +#: kylin-burner-dev/src/model/logicmain.cpp:354 +#: kylin-burner-dev/src/model/logicmain.cpp:366 +#: kylin-burner-pangux/src/model/logicmain.cpp:468 +#: kylin-burner-pangux/src/model/logicmain.cpp:480 +#: kylin-burner-pangux/src/model/logicmain.cpp:493 +#: kylin-burner/src/model/logicmain.cpp:383 +#: kylin-burner/src/model/logicmain.cpp:394 +#: kylin-burner/src/model/logicmain.cpp:406 +#, qt-format +msgid "BurnerName : %1 DiskName : %2" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:353 +#: kylin-burner-dev/src/model/logicmain.cpp:353 +#: kylin-burner-pangux/src/model/logicmain.cpp:479 +#: kylin-burner/src/model/logicmain.cpp:393 +#, qt-format +msgid "Get appendable medium in CDROM %1" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:365 +#: kylin-burner-dev/src/model/logicmain.cpp:365 +#: kylin-burner-pangux/src/model/logicmain.cpp:492 +#: kylin-burner/src/model/logicmain.cpp:405 +#, qt-format +msgid "Get finished medium in CDROM %1" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:384 +#: kylin-burner-dev/src/model/logicmain.cpp:384 +#: kylin-burner-pangux/src/model/logicmain.cpp:509 +#: kylin-burner/src/model/logicmain.cpp:424 +msgid "Undefined busness." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:390 +#: kylin-burner-dev/src/model/logicmain.cpp:390 +#: kylin-burner-pangux/src/model/logicmain.cpp:515 +#: kylin-burner/src/model/logicmain.cpp:430 +#, qt-format +msgid "Change to do busness %1" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:398 +#: kylin-burner-dev/src/model/logicmain.cpp:398 +#: kylin-burner-pangux/src/model/logicmain.cpp:523 +#: kylin-burner/src/model/logicmain.cpp:438 +msgid "Prepare to create iso file." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:402 +#: kylin-burner-dev/src/model/logicmain.cpp:402 +#: kylin-burner-pangux/src/model/logicmain.cpp:527 +#: kylin-burner/src/model/logicmain.cpp:442 +msgid "Prepare to burn data." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:407 +#: kylin-burner-dev/src/model/logicmain.cpp:407 +#: kylin-burner-pangux/src/model/logicmain.cpp:532 +#: kylin-burner/src/model/logicmain.cpp:447 +msgid "Prepare to burn UDF Format data." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:411 +#: kylin-burner-dev/src/model/logicmain.cpp:411 +#: kylin-burner-pangux/src/model/logicmain.cpp:536 +#: kylin-burner/src/model/logicmain.cpp:451 +msgid "Prepare to append burn." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:415 +#: kylin-burner-dev/src/model/logicmain.cpp:415 +#: kylin-burner-pangux/src/model/logicmain.cpp:540 +#: kylin-burner/src/model/logicmain.cpp:455 +msgid "Prepare to burn image." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:419 +#: kylin-burner-dev/src/model/logicmain.cpp:419 +#: kylin-burner-pangux/src/model/logicmain.cpp:544 +#: kylin-burner/src/model/logicmain.cpp:459 +msgid "Prepare to copy disk data." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:423 +#: kylin-burner-dev/src/model/logicmain.cpp:423 +#: kylin-burner-pangux/src/model/logicmain.cpp:548 +#: kylin-burner/src/model/logicmain.cpp:463 +msgid "Prepare to get iso from disk data." +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:427 +#: kylin-burner-dev/src/model/logicmain.cpp:427 +#: kylin-burner-pangux/src/model/logicmain.cpp:552 +#: kylin-burner/src/model/logicmain.cpp:467 +#, qt-format +msgid "Invalid busness [%1]" +msgstr "" + +#: kylin-burner-64/src/model/logicmain.cpp:543 +#: kylin-burner-dev/src/model/logicmain.cpp:543 +#: kylin-burner-pangux/src/model/logicmain.cpp:451 +#: kylin-burner/src/model/logicmain.cpp:583 +#, qt-format +msgid "Remove CDROM %1" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:26 +#: kylin-burner-64/src/view/burnimage.cpp:50 +#: kylin-burner-64/src/view/copyimage.cpp:281 +#: kylin-burner-64/src/view/mainwindow.cpp:468 +#: kylin-burner-64/src/view/mainwindow.cpp:588 +#: kylin-burner-64/src/view/mainwindow.cpp:593 +#: kylin-burner-64/src/view/mainwindow.cpp:600 +#: kylin-burner-64/src/view/mainwindow.cpp:780 +#: kylin-burner-dev/src/model/menufactory.cpp:26 +#: kylin-burner-dev/src/view/burnimage.cpp:50 +#: kylin-burner-dev/src/view/copyimage.cpp:281 +#: kylin-burner-dev/src/view/mainwindow.cpp:468 +#: kylin-burner-dev/src/view/mainwindow.cpp:588 +#: kylin-burner-dev/src/view/mainwindow.cpp:593 +#: kylin-burner-dev/src/view/mainwindow.cpp:600 +#: kylin-burner-dev/src/view/mainwindow.cpp:780 +#: kylin-burner-pangux/src/model/menufactory.cpp:25 +#: kylin-burner-pangux/src/view/burnimage.cpp:50 +#: kylin-burner-pangux/src/view/copyimage.cpp:281 +#: kylin-burner-pangux/src/view/mainwindow.cpp:489 +#: kylin-burner-pangux/src/view/mainwindow.cpp:599 +#: kylin-burner-pangux/src/view/mainwindow.cpp:604 +#: kylin-burner-pangux/src/view/mainwindow.cpp:611 +#: kylin-burner-pangux/src/view/mainwindow.cpp:786 +#: kylin-burner/src/model/menufactory.cpp:26 +#: kylin-burner/src/view/burnimage.cpp:42 +#: kylin-burner/src/view/copyimage.cpp:288 +#: kylin-burner/src/view/mainwindow.cpp:444 +#: kylin-burner/src/view/mainwindow.cpp:572 +#: kylin-burner/src/view/mainwindow.cpp:577 +#: kylin-burner/src/view/mainwindow.cpp:584 +#: kylin-burner/src/view/mainwindow.cpp:756 +msgid "Setting" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:27 +#: kylin-burner-64/src/view/settingdatas.cpp:91 +#: kylin-burner-dev/src/model/menufactory.cpp:27 +#: kylin-burner-dev/src/view/settingdatas.cpp:91 +#: kylin-burner-pangux/src/model/menufactory.cpp:26 +#: kylin-burner-pangux/src/view/settingdatas.cpp:91 +#: kylin-burner/src/model/menufactory.cpp:27 +#: kylin-burner/src/view/settingdatas.cpp:78 +msgid "Data Setting" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:28 +#: kylin-burner-dev/src/model/menufactory.cpp:28 +#: kylin-burner-pangux/src/model/menufactory.cpp:27 +#: kylin-burner/src/model/menufactory.cpp:28 +msgid "File Filter" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:29 +#: kylin-burner-dev/src/model/menufactory.cpp:29 +#: kylin-burner-pangux/src/model/menufactory.cpp:28 +#: kylin-burner/src/model/menufactory.cpp:29 +msgid "View Filter File(s)" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:30 +#: kylin-burner-64/src/process/processmd5sum.cpp:18 +#: kylin-burner-64/src/view/diskcheck.cpp:39 +#: kylin-burner-64/src/view/modaldialog.cpp:128 +#: kylin-burner-dev/src/model/menufactory.cpp:30 +#: kylin-burner-dev/src/process/processmd5sum.cpp:18 +#: kylin-burner-dev/src/view/diskcheck.cpp:39 +#: kylin-burner-dev/src/view/modaldialog.cpp:128 +#: kylin-burner-pangux/src/model/menufactory.cpp:29 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:18 +#: kylin-burner-pangux/src/view/diskcheck.cpp:39 +#: kylin-burner-pangux/src/view/modaldialog.cpp:142 +#: kylin-burner/src/model/menufactory.cpp:30 +#: kylin-burner/src/process/processmd5sum.cpp:18 +#: kylin-burner/src/view/diskcheck.cpp:19 +#: kylin-burner/src/view/modaldialog.cpp:126 +msgid "Disk Check" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:31 +#: kylin-burner-dev/src/model/menufactory.cpp:31 +#: kylin-burner-pangux/src/model/menufactory.cpp:30 +#: kylin-burner/src/model/menufactory.cpp:31 +msgid "Burner Setting" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:32 +#: kylin-burner-dev/src/model/menufactory.cpp:32 +#: kylin-burner-pangux/src/model/menufactory.cpp:31 +#: kylin-burner/src/model/menufactory.cpp:32 +msgid "Eject" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:33 +#: kylin-burner-64/src/process/processbasic.cpp:58 +#: kylin-burner-64/src/process/processbasic.cpp:87 +#: kylin-burner-64/src/process/processearse.cpp:30 +#: kylin-burner-dev/src/model/menufactory.cpp:33 +#: kylin-burner-dev/src/process/processbasic.cpp:58 +#: kylin-burner-dev/src/process/processbasic.cpp:87 +#: kylin-burner-dev/src/process/processearse.cpp:30 +#: kylin-burner-pangux/src/model/menufactory.cpp:32 +#: kylin-burner-pangux/src/process/processbasic.cpp:56 +#: kylin-burner-pangux/src/process/processbasic.cpp:85 +#: kylin-burner-pangux/src/process/processearse.cpp:27 +#: kylin-burner/src/model/menufactory.cpp:33 +#: kylin-burner/src/process/processbasic.cpp:58 +#: kylin-burner/src/process/processbasic.cpp:87 +#: kylin-burner/src/process/processearse.cpp:30 +msgid "Earse" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:34 +#: kylin-burner-64/src/view/aboutdialog.cpp:13 +#: kylin-burner-dev/src/model/menufactory.cpp:34 +#: kylin-burner-dev/src/view/aboutdialog.cpp:13 +#: kylin-burner-pangux/src/model/menufactory.cpp:33 +#: kylin-burner-pangux/src/view/aboutdialog.cpp:13 +#: kylin-burner/src/model/menufactory.cpp:34 +#: kylin-burner/src/view/aboutdialog.cpp:13 +msgid "Version" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:35 +#: kylin-burner-dev/src/model/menufactory.cpp:35 +#: kylin-burner-pangux/src/model/menufactory.cpp:34 +#: kylin-burner/src/model/menufactory.cpp:35 +msgid "About" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:36 +#: kylin-burner-dev/src/model/menufactory.cpp:36 +#: kylin-burner-pangux/src/model/menufactory.cpp:35 +#: kylin-burner/src/model/menufactory.cpp:36 +msgid "Help" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:37 +#: kylin-burner-dev/src/model/menufactory.cpp:37 +#: kylin-burner-pangux/src/model/menufactory.cpp:36 +#: kylin-burner/src/model/menufactory.cpp:37 +msgid "Exit" +msgstr "" + +#: kylin-burner-64/src/model/menufactory.cpp:49 +#: kylin-burner-dev/src/model/menufactory.cpp:49 +#: kylin-burner-pangux/src/model/menufactory.cpp:67 +#: kylin-burner/src/model/menufactory.cpp:44 +msgid "Eject All" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:23 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:23 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:23 +#: kylin-burner/src/model/monitorcdrom.cpp:23 +msgid "Monitor" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:61 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:61 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:61 +#: kylin-burner/src/model/monitorcdrom.cpp:61 +#, qt-format +msgid "Calling MAIN to add a CDROM, block name is %1" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:125 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:125 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:125 +#: kylin-burner/src/model/monitorcdrom.cpp:125 +#, qt-format +msgid "Build netlink socket error. %1" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:132 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:132 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:132 +#: kylin-burner/src/model/monitorcdrom.cpp:132 +#, qt-format +msgid "Bind netlink socket error. %1" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:154 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:154 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:154 +#: kylin-burner/src/model/monitorcdrom.cpp:154 +#, qt-format +msgid "Open system path %1 failed.%2" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:165 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:165 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:165 +#: kylin-burner/src/model/monitorcdrom.cpp:165 +#, qt-format +msgid "Cannot search block from %1" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:172 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:172 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:172 +#: kylin-burner/src/model/monitorcdrom.cpp:172 +msgid "There is no block in current system" +msgstr "" + +#: kylin-burner-64/src/model/monitorcdrom.cpp:182 +#: kylin-burner-dev/src/model/monitorcdrom.cpp:182 +#: kylin-burner-pangux/src/model/monitorcdrom.cpp:182 +#: kylin-burner/src/model/monitorcdrom.cpp:182 +#, qt-format +msgid "Update block named %1 into application" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:80 +#: kylin-burner-64/src/process/processcopydisk.cpp:26 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:112 +#: kylin-burner-dev/src/process/processbasic.cpp:80 +#: kylin-burner-dev/src/process/processcopydisk.cpp:26 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:112 +#: kylin-burner-pangux/src/process/processbasic.cpp:78 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:26 +#: kylin-burner/src/process/processbasic.cpp:80 +#: kylin-burner/src/process/processcopydisk.cpp:26 +#: kylin-burner/src/process/processcopydiskdl.cpp:112 +msgid "Copy Disk" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:84 +#: kylin-burner-64/src/process/processburndata.cpp:65 +#: kylin-burner-64/src/process/processburndata.cpp:647 +#: kylin-burner-64/src/process/processburndatadl.cpp:115 +#: kylin-burner-64/src/process/processburnudfdata.cpp:251 +#: kylin-burner-64/src/process/processearse.cpp:206 +#: kylin-burner-dev/src/process/processbasic.cpp:84 +#: kylin-burner-dev/src/process/processburndata.cpp:65 +#: kylin-burner-dev/src/process/processburndata.cpp:647 +#: kylin-burner-dev/src/process/processburndatadl.cpp:115 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:251 +#: kylin-burner-dev/src/process/processearse.cpp:206 +#: kylin-burner-pangux/src/process/processbasic.cpp:82 +#: kylin-burner-pangux/src/process/processburndata.cpp:64 +#: kylin-burner-pangux/src/process/processburndata.cpp:608 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:114 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:257 +#: kylin-burner-pangux/src/process/processearse.cpp:173 +#: kylin-burner/src/process/processbasic.cpp:84 +#: kylin-burner/src/process/processburndata.cpp:64 +#: kylin-burner/src/process/processburndata.cpp:701 +#: kylin-burner/src/process/processburndatadl.cpp:124 +#: kylin-burner/src/process/processburnudfdata.cpp:351 +#: kylin-burner/src/process/processburnudfdata.cpp:463 +#: kylin-burner/src/process/processearse.cpp:206 +msgid "Burn Data" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:84 +#: kylin-burner-64/src/process/processburndata.cpp:72 +#: kylin-burner-64/src/process/processburndatadl.cpp:120 +#: kylin-burner-dev/src/process/processbasic.cpp:84 +#: kylin-burner-dev/src/process/processburndata.cpp:72 +#: kylin-burner-dev/src/process/processburndatadl.cpp:120 +#: kylin-burner-pangux/src/process/processbasic.cpp:82 +#: kylin-burner-pangux/src/process/processburndata.cpp:71 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:118 +#: kylin-burner/src/process/processbasic.cpp:84 +#: kylin-burner/src/process/processburndata.cpp:71 +#: kylin-burner/src/process/processburndatadl.cpp:129 +msgid "Append Burn" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:85 +#: kylin-burner-64/src/process/processburnudfdata.cpp:33 +#: kylin-burner-dev/src/process/processbasic.cpp:85 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:33 +#: kylin-burner-pangux/src/process/processbasic.cpp:83 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:33 +#: kylin-burner/src/process/processbasic.cpp:85 +#: kylin-burner/src/process/processburnudfdata.cpp:60 +msgid "Burn UDF Format Data" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:85 +#: kylin-burner-64/src/process/processburnudfdata.cpp:39 +#: kylin-burner-dev/src/process/processbasic.cpp:85 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:39 +#: kylin-burner-pangux/src/process/processbasic.cpp:83 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:39 +#: kylin-burner/src/process/processbasic.cpp:85 +#: kylin-burner/src/process/processburnudfdata.cpp:66 +msgid "UDF Append Burn" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:86 +#: kylin-burner-64/src/process/processburnimage.cpp:26 +#: kylin-burner-dev/src/process/processbasic.cpp:86 +#: kylin-burner-dev/src/process/processburnimage.cpp:26 +#: kylin-burner-pangux/src/process/processbasic.cpp:84 +#: kylin-burner-pangux/src/process/processburnimage.cpp:26 +#: kylin-burner/src/process/processbasic.cpp:86 +#: kylin-burner/src/process/processburnimage.cpp:26 +msgid "Burn Image" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:94 +#: kylin-burner-64/src/process/processbasic.cpp:101 +#: kylin-burner-64/src/process/processbasic.cpp:199 +#: kylin-burner-dev/src/process/processbasic.cpp:94 +#: kylin-burner-dev/src/process/processbasic.cpp:101 +#: kylin-burner-dev/src/process/processbasic.cpp:199 +#: kylin-burner-pangux/src/process/processbasic.cpp:92 +#: kylin-burner-pangux/src/process/processbasic.cpp:99 +#: kylin-burner-pangux/src/process/processbasic.cpp:185 +#: kylin-burner/src/process/processbasic.cpp:94 +#: kylin-burner/src/process/processbasic.cpp:101 +#: kylin-burner/src/process/processbasic.cpp:199 +msgid "User canceled." +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:101 +#: kylin-burner-64/src/process/processbasic.cpp:131 +#: kylin-burner-64/src/process/processbasic.cpp:149 +#: kylin-burner-dev/src/process/processbasic.cpp:101 +#: kylin-burner-dev/src/process/processbasic.cpp:131 +#: kylin-burner-dev/src/process/processbasic.cpp:149 +#: kylin-burner-pangux/src/process/processbasic.cpp:99 +#: kylin-burner-pangux/src/process/processbasic.cpp:117 +#: kylin-burner-pangux/src/process/processbasic.cpp:135 +#: kylin-burner/src/process/processbasic.cpp:101 +#: kylin-burner/src/process/processbasic.cpp:131 +#: kylin-burner/src/process/processbasic.cpp:149 +msgid "Destination" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:101 +#: kylin-burner-64/src/process/processbasic.cpp:131 +#: kylin-burner-64/src/process/processbasic.cpp:149 +#: kylin-burner-dev/src/process/processbasic.cpp:101 +#: kylin-burner-dev/src/process/processbasic.cpp:131 +#: kylin-burner-dev/src/process/processbasic.cpp:149 +#: kylin-burner-pangux/src/process/processbasic.cpp:99 +#: kylin-burner-pangux/src/process/processbasic.cpp:117 +#: kylin-burner-pangux/src/process/processbasic.cpp:135 +#: kylin-burner/src/process/processbasic.cpp:101 +#: kylin-burner/src/process/processbasic.cpp:131 +#: kylin-burner/src/process/processbasic.cpp:149 +msgid "Burn result" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:112 +#: kylin-burner-dev/src/process/processbasic.cpp:112 +#: kylin-burner/src/process/processbasic.cpp:112 +msgid "Disc is occupied, Burning failed!" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:117 +#: kylin-burner-64/src/process/processbasic.cpp:125 +#: kylin-burner-dev/src/process/processbasic.cpp:117 +#: kylin-burner-dev/src/process/processbasic.cpp:125 +#: kylin-burner-pangux/src/process/processbasic.cpp:111 +#: kylin-burner/src/process/processbasic.cpp:117 +#: kylin-burner/src/process/processbasic.cpp:125 +#, qt-format +msgid "Step.%1 error happened." +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:131 +#: kylin-burner-64/src/view/tip_burnresult.cpp:115 +#: kylin-burner-64/src/view/tips.cpp:104 +#: kylin-burner-dev/src/process/processbasic.cpp:131 +#: kylin-burner-dev/src/view/tip_burnresult.cpp:115 +#: kylin-burner-dev/src/view/tips.cpp:104 +#: kylin-burner-pangux/src/process/processbasic.cpp:117 +#: kylin-burner-pangux/src/view/tip_burnresult.cpp:124 +#: kylin-burner-pangux/src/view/tips.cpp:104 +#: kylin-burner/src/process/processbasic.cpp:131 +#: kylin-burner/src/view/tip_burnresult.cpp:95 +#: kylin-burner/src/view/tips.cpp:100 +msgid " Failed" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:143 +#: kylin-burner-64/src/process/processisoinfo.cpp:11 +#: kylin-burner-dev/src/process/processbasic.cpp:143 +#: kylin-burner-dev/src/process/processisoinfo.cpp:11 +#: kylin-burner-pangux/src/process/processbasic.cpp:129 +#: kylin-burner-pangux/src/process/processisoinfo.cpp:11 +#: kylin-burner/src/process/processbasic.cpp:143 +#: kylin-burner/src/process/processisoinfo.cpp:11 +msgid "load" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:143 +#: kylin-burner-64/src/process/processbasic.cpp:190 +#: kylin-burner-64/src/process/processmediainfo.cpp:13 +#: kylin-burner-64/src/view/busnesssetting.cpp:116 +#: kylin-burner-dev/src/process/processbasic.cpp:143 +#: kylin-burner-dev/src/process/processbasic.cpp:190 +#: kylin-burner-dev/src/process/processmediainfo.cpp:13 +#: kylin-burner-dev/src/view/busnesssetting.cpp:116 +#: kylin-burner-pangux/src/process/processbasic.cpp:129 +#: kylin-burner-pangux/src/process/processbasic.cpp:176 +#: kylin-burner-pangux/src/process/processmediainfo.cpp:13 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:106 +#: kylin-burner/src/process/processbasic.cpp:143 +#: kylin-burner/src/process/processbasic.cpp:190 +#: kylin-burner/src/process/processmediainfo.cpp:13 +#: kylin-burner/src/view/busnesssetting.cpp:102 +msgid "Media Info" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:149 +#: kylin-burner-64/src/view/tip_burnresult.cpp:95 +#: kylin-burner-64/src/view/tips.cpp:87 +#: kylin-burner-dev/src/process/processbasic.cpp:149 +#: kylin-burner-dev/src/view/tip_burnresult.cpp:95 +#: kylin-burner-dev/src/view/tips.cpp:87 +#: kylin-burner-pangux/src/process/processbasic.cpp:135 +#: kylin-burner-pangux/src/view/tip_burnresult.cpp:103 +#: kylin-burner-pangux/src/view/tips.cpp:87 +#: kylin-burner/src/process/processbasic.cpp:149 +#: kylin-burner/src/view/tip_burnresult.cpp:82 +#: kylin-burner/src/view/tips.cpp:83 +msgid " Success" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:167 +#: kylin-burner-64/src/process/processburndata.cpp:405 +#: kylin-burner-64/src/process/processburnudfdata.cpp:151 +#: kylin-burner-dev/src/process/processbasic.cpp:167 +#: kylin-burner-dev/src/process/processburndata.cpp:405 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:151 +#: kylin-burner-pangux/src/process/processbasic.cpp:153 +#: kylin-burner-pangux/src/process/processburndata.cpp:367 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:155 +#: kylin-burner/src/process/processbasic.cpp:167 +#: kylin-burner/src/process/processburndata.cpp:444 +#, qt-format +msgid "Argument setted for %1:" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:170 +#: kylin-burner-64/src/process/processburndata.cpp:408 +#: kylin-burner-64/src/process/processburnudfdata.cpp:154 +#: kylin-burner-dev/src/process/processbasic.cpp:170 +#: kylin-burner-dev/src/process/processburndata.cpp:408 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:154 +#: kylin-burner-pangux/src/process/processbasic.cpp:156 +#: kylin-burner-pangux/src/process/processburndata.cpp:370 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:158 +#: kylin-burner/src/process/processbasic.cpp:170 +#: kylin-burner/src/process/processburndata.cpp:447 +#, qt-format +msgid "Arg.%1 - %2" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:175 +#: kylin-burner-dev/src/process/processbasic.cpp:175 +#: kylin-burner-pangux/src/process/processbasic.cpp:161 +#: kylin-burner/src/process/processbasic.cpp:175 +#, qt-format +msgid "starting process %1" +msgstr "" + +#: kylin-burner-64/src/process/processbasic.cpp:196 +#: kylin-burner-64/src/process/processburndatadl.cpp:370 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:334 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:339 +#: kylin-burner-dev/src/process/processbasic.cpp:196 +#: kylin-burner-dev/src/process/processburndatadl.cpp:370 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:334 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:339 +#: kylin-burner-pangux/src/process/processbasic.cpp:182 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:361 +#: kylin-burner/src/process/processbasic.cpp:196 +#: kylin-burner/src/process/processburndatadl.cpp:379 +#: kylin-burner/src/process/processcopydiskdl.cpp:334 +#: kylin-burner/src/process/processcopydiskdl.cpp:339 +msgid "Stop process when user canceled." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:63 +#: kylin-burner-64/src/process/processburndatadl.cpp:130 +#: kylin-burner-dev/src/process/processburndata.cpp:63 +#: kylin-burner-dev/src/process/processburndatadl.cpp:130 +#: kylin-burner-pangux/src/process/processburndata.cpp:62 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:128 +#: kylin-burner/src/process/processburndata.cpp:62 +#: kylin-burner/src/process/processburndatadl.cpp:139 +msgid "PROCESS_BD" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:64 +#: kylin-burner-64/src/process/processburndatadl.cpp:131 +#: kylin-burner-dev/src/process/processburndata.cpp:64 +#: kylin-burner-dev/src/process/processburndatadl.cpp:131 +#: kylin-burner-pangux/src/process/processburndata.cpp:63 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:129 +#: kylin-burner/src/process/processburndata.cpp:63 +#: kylin-burner/src/process/processburndatadl.cpp:140 +msgid "Burning Data" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:70 +#: kylin-burner-64/src/process/processburndatadl.cpp:134 +#: kylin-burner-dev/src/process/processburndata.cpp:70 +#: kylin-burner-dev/src/process/processburndatadl.cpp:134 +#: kylin-burner-pangux/src/process/processburndata.cpp:69 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:132 +#: kylin-burner/src/process/processburndata.cpp:69 +#: kylin-burner/src/process/processburndatadl.cpp:143 +msgid "PROCESS_AB" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:71 +#: kylin-burner-64/src/process/processburndatadl.cpp:135 +#: kylin-burner-dev/src/process/processburndata.cpp:71 +#: kylin-burner-dev/src/process/processburndatadl.cpp:135 +#: kylin-burner-pangux/src/process/processburndata.cpp:70 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:133 +#: kylin-burner/src/process/processburndata.cpp:70 +#: kylin-burner/src/process/processburndatadl.cpp:144 +msgid "Append Burning" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:98 +#: kylin-burner-64/src/process/processburndatadl.cpp:215 +#: kylin-burner-64/src/process/processburnudfdata.cpp:68 +#: kylin-burner-64/src/process/processcopydisk.cpp:46 +#: kylin-burner-64/src/process/processcreateiso.cpp:100 +#: kylin-burner-dev/src/process/processburndata.cpp:98 +#: kylin-burner-dev/src/process/processburndatadl.cpp:215 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:68 +#: kylin-burner-dev/src/process/processcopydisk.cpp:46 +#: kylin-burner-dev/src/process/processcreateiso.cpp:100 +#: kylin-burner-pangux/src/process/processburndata.cpp:99 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:213 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:67 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:46 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:106 +#: kylin-burner/src/process/processburndata.cpp:110 +#: kylin-burner/src/process/processburndatadl.cpp:224 +#: kylin-burner/src/process/processburnudfdata.cpp:91 +#: kylin-burner/src/process/processcopydisk.cpp:46 +#: kylin-burner/src/process/processcreateiso.cpp:100 +msgid "KylinOS" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:121 +#: kylin-burner-64/src/process/processburndatadl.cpp:90 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:81 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:92 +#: kylin-burner-dev/src/process/processburndata.cpp:121 +#: kylin-burner-dev/src/process/processburndatadl.cpp:90 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:81 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:92 +#: kylin-burner-pangux/src/process/processburndata.cpp:111 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:90 +#: kylin-burner/src/process/processburndata.cpp:138 +#: kylin-burner/src/process/processburndatadl.cpp:99 +#: kylin-burner/src/process/processcopydiskdl.cpp:81 +#: kylin-burner/src/process/processcopydiskdl.cpp:92 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the cdrecord, " +"growisofs and xorriso is exists or not, and give the right permissions.%2 " +"exiting..." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:137 +#: kylin-burner-64/src/process/processearse.cpp:62 +#: kylin-burner-dev/src/process/processburndata.cpp:137 +#: kylin-burner-dev/src/process/processearse.cpp:62 +#: kylin-burner-pangux/src/process/processburndata.cpp:127 +#: kylin-burner-pangux/src/process/processearse.cpp:50 +#: kylin-burner/src/process/processburndata.cpp:154 +#: kylin-burner/src/process/processburnudfdata.cpp:116 +#: kylin-burner/src/process/processearse.cpp:62 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the mkisofs is " +"exists or not, and give the right permissions.%2 exiting..." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:150 +#: kylin-burner-64/src/view/busnesssetting.cpp:64 +#: kylin-burner-dev/src/process/processburndata.cpp:150 +#: kylin-burner-dev/src/view/busnesssetting.cpp:64 +#: kylin-burner-pangux/src/process/processburndata.cpp:140 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:68 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:64 +#: kylin-burner/src/process/processburndata.cpp:167 +#: kylin-burner/src/process/processburnudfdata.cpp:129 +#: kylin-burner/src/view/busnesssetting.cpp:47 +msgid "Create ISO" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:150 +#: kylin-burner-64/src/process/processgetiso.cpp:72 +#: kylin-burner-dev/src/process/processburndata.cpp:150 +#: kylin-burner-dev/src/process/processgetiso.cpp:72 +#: kylin-burner-pangux/src/process/processburndata.cpp:140 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:68 +#: kylin-burner-pangux/src/process/processgetiso.cpp:75 +#: kylin-burner/src/process/processburndata.cpp:167 +#: kylin-burner/src/process/processburnudfdata.cpp:129 +#: kylin-burner/src/process/processgetiso.cpp:72 +msgid "Already Exists" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:151 +#: kylin-burner-64/src/process/processcreateiso.cpp:70 +#: kylin-burner-64/src/process/processgetiso.cpp:73 +#: kylin-burner-dev/src/process/processburndata.cpp:151 +#: kylin-burner-dev/src/process/processcreateiso.cpp:70 +#: kylin-burner-dev/src/process/processgetiso.cpp:73 +#: kylin-burner-pangux/src/process/processburndata.cpp:141 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:69 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:74 +#: kylin-burner-pangux/src/process/processgetiso.cpp:76 +#: kylin-burner/src/process/processburndata.cpp:168 +#: kylin-burner/src/process/processburnudfdata.cpp:130 +#: kylin-burner/src/process/processcreateiso.cpp:70 +#: kylin-burner/src/process/processgetiso.cpp:73 +#, qt-format +msgid "There is already have the iso file named %1,replace it or not?" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:169 +#: kylin-burner-dev/src/process/processburndata.cpp:169 +#: kylin-burner-pangux/src/process/processburndata.cpp:159 +#: kylin-burner/src/process/processburndata.cpp:186 +msgid "Prepare to burn data to CD." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:173 +#: kylin-burner-dev/src/process/processburndata.cpp:173 +#: kylin-burner-pangux/src/process/processburndata.cpp:164 +#: kylin-burner/src/process/processburndata.cpp:190 +msgid "Prepare to burn data to DVD+R." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:179 +#: kylin-burner-64/src/process/processburndatadl.cpp:217 +#: kylin-burner-dev/src/process/processburndata.cpp:179 +#: kylin-burner-dev/src/process/processburndatadl.cpp:217 +#: kylin-burner-pangux/src/process/processburndata.cpp:170 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:215 +#: kylin-burner/src/process/processburndata.cpp:196 +#: kylin-burner/src/process/processburndatadl.cpp:226 +msgid "Prepare to burn data to DVD." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:225 +#: kylin-burner-64/src/process/processburndatadl.cpp:248 +#: kylin-burner-dev/src/process/processburndata.cpp:225 +#: kylin-burner-dev/src/process/processburndatadl.cpp:248 +#: kylin-burner-pangux/src/process/processburndata.cpp:215 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:246 +#: kylin-burner/src/process/processburndata.cpp:242 +#: kylin-burner/src/process/processburndatadl.cpp:257 +msgid "Prepare to start burn data." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:382 +#: kylin-burner-dev/src/process/processburndata.cpp:382 +#: kylin-burner-pangux/src/process/processburndata.cpp:348 +#: kylin-burner/src/process/processburndata.cpp:406 +#, qt-format +msgid "the command for xorriso is: %1" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:454 +#: kylin-burner-64/src/process/processburnimage.cpp:233 +#: kylin-burner-64/src/process/processcopydisk.cpp:133 +#: kylin-burner-64/src/process/processearse.cpp:147 +#: kylin-burner-dev/src/process/processburndata.cpp:454 +#: kylin-burner-dev/src/process/processburnimage.cpp:233 +#: kylin-burner-dev/src/process/processcopydisk.cpp:133 +#: kylin-burner-dev/src/process/processearse.cpp:147 +#: kylin-burner-pangux/src/process/processburndata.cpp:417 +#: kylin-burner-pangux/src/process/processburnimage.cpp:229 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:133 +#: kylin-burner-pangux/src/process/processearse.cpp:118 +#: kylin-burner/src/process/processburndata.cpp:493 +#: kylin-burner/src/process/processburnimage.cpp:233 +#: kylin-burner/src/process/processcopydisk.cpp:133 +#: kylin-burner/src/process/processearse.cpp:147 +msgid "Performing OPC" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:478 +#: kylin-burner-64/src/process/processcopydisk.cpp:152 +#: kylin-burner-dev/src/process/processburndata.cpp:478 +#: kylin-burner-dev/src/process/processcopydisk.cpp:152 +#: kylin-burner-pangux/src/process/processburndata.cpp:443 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:152 +#: kylin-burner/src/process/processburndata.cpp:517 +#: kylin-burner/src/process/processcopydisk.cpp:152 +#, qt-format +msgid "Writing track %1 speed %2 written %3 %4." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:484 +#: kylin-burner-64/src/process/processcopydisk.cpp:158 +#: kylin-burner-64/src/process/processearse.cpp:150 +#: kylin-burner-dev/src/process/processburndata.cpp:484 +#: kylin-burner-dev/src/process/processcopydisk.cpp:158 +#: kylin-burner-dev/src/process/processearse.cpp:150 +#: kylin-burner-pangux/src/process/processburndata.cpp:449 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:158 +#: kylin-burner-pangux/src/process/processearse.cpp:121 +#: kylin-burner/src/process/processburndata.cpp:523 +#: kylin-burner/src/process/processcopydisk.cpp:158 +#: kylin-burner/src/process/processearse.cpp:150 +msgid "Fixating(Will wait minutes)" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:512 +#: kylin-burner-64/src/process/processburndatadl.cpp:406 +#: kylin-burner-64/src/process/processburnimage.cpp:310 +#: kylin-burner-64/src/process/processburnimage.cpp:427 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:359 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:424 +#: kylin-burner-dev/src/process/processburndata.cpp:512 +#: kylin-burner-dev/src/process/processburndatadl.cpp:406 +#: kylin-burner-dev/src/process/processburnimage.cpp:310 +#: kylin-burner-dev/src/process/processburnimage.cpp:427 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:359 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:424 +#: kylin-burner-pangux/src/process/processburndata.cpp:468 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:388 +#: kylin-burner-pangux/src/process/processburnimage.cpp:301 +#: kylin-burner-pangux/src/process/processburnimage.cpp:408 +#: kylin-burner/src/process/processburndata.cpp:551 +#: kylin-burner/src/process/processburndatadl.cpp:415 +#: kylin-burner/src/process/processburnimage.cpp:310 +#: kylin-burner/src/process/processburnimage.cpp:427 +#: kylin-burner/src/process/processburnudfdata.cpp:311 +#: kylin-burner/src/process/processcopydiskdl.cpp:359 +#: kylin-burner/src/process/processcopydiskdl.cpp:424 +msgid "" +"Input/output error. Disc may be damaged, please clean or replace a disc and " +"try again." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:533 +#: kylin-burner-dev/src/process/processburndata.cpp:533 +#: kylin-burner-pangux/src/process/processburndata.cpp:501 +#: kylin-burner/src/process/processburndata.cpp:586 +msgid "" +"An error occurs when the CD is removed during data burning. The image " +"burning process is terminated." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:561 +#: kylin-burner-dev/src/process/processburndata.cpp:561 +#: kylin-burner/src/process/processburndata.cpp:615 +msgid "medium is burning..." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:578 +#: kylin-burner-dev/src/process/processburndata.cpp:578 +#: kylin-burner-pangux/src/process/processburndata.cpp:546 +#: kylin-burner/src/process/processburndata.cpp:632 +msgid "completed successfully." +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:603 +#: kylin-burner-dev/src/process/processburndata.cpp:603 +#: kylin-burner-pangux/src/process/processburndata.cpp:565 +#: kylin-burner/src/process/processburndata.cpp:657 +#, qt-format +msgid "Building ISO %1" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:606 +#: kylin-burner-64/src/process/processburndatadl.cpp:429 +#: kylin-burner-64/src/process/processburnudfdata.cpp:217 +#: kylin-burner-64/src/process/processcopydisk.cpp:196 +#: kylin-burner-dev/src/process/processburndata.cpp:606 +#: kylin-burner-dev/src/process/processburndatadl.cpp:429 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:217 +#: kylin-burner-dev/src/process/processcopydisk.cpp:196 +#: kylin-burner-pangux/src/process/processburndata.cpp:569 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:416 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:222 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:198 +#: kylin-burner/src/process/processburndata.cpp:660 +#: kylin-burner/src/process/processburndatadl.cpp:438 +#: kylin-burner/src/process/processcopydisk.cpp:196 +#, c-format, qt-format +msgid "Burning by speed %1x" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:645 +#: kylin-burner-dev/src/process/processburndata.cpp:645 +#: kylin-burner/src/process/processburndata.cpp:699 +#, qt-format +msgid "Exit code is %1, status : %2, m_oKeep : %3, m_umountError : %4" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:723 +#: kylin-burner-64/src/process/processburndata.cpp:724 +#: kylin-burner-64/src/process/processburndatadl.cpp:344 +#: kylin-burner-64/src/process/processburndatadl.cpp:345 +#: kylin-burner-64/src/process/processburnudfdata.cpp:286 +#: kylin-burner-64/src/process/processburnudfdata.cpp:287 +#: kylin-burner-64/src/process/processcreateiso.cpp:247 +#: kylin-burner-64/src/process/processcreateiso.cpp:248 +#: kylin-burner-dev/src/process/processburndata.cpp:723 +#: kylin-burner-dev/src/process/processburndata.cpp:724 +#: kylin-burner-dev/src/process/processburndatadl.cpp:344 +#: kylin-burner-dev/src/process/processburndatadl.cpp:345 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:286 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:287 +#: kylin-burner-dev/src/process/processcreateiso.cpp:247 +#: kylin-burner-dev/src/process/processcreateiso.cpp:248 +#: kylin-burner-pangux/src/process/processburndata.cpp:682 +#: kylin-burner-pangux/src/process/processburndata.cpp:683 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:339 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:340 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:292 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:293 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:257 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:258 +#: kylin-burner/src/process/processburndata.cpp:777 +#: kylin-burner/src/process/processburndata.cpp:778 +#: kylin-burner/src/process/processburndatadl.cpp:353 +#: kylin-burner/src/process/processburndatadl.cpp:354 +#: kylin-burner/src/process/processburnudfdata.cpp:444 +#: kylin-burner/src/process/processburnudfdata.cpp:445 +#: kylin-burner/src/process/processcreateiso.cpp:247 +#: kylin-burner/src/process/processcreateiso.cpp:248 +#, qt-format +msgid "Copied %1 to %2" +msgstr "" + +#: kylin-burner-64/src/process/processburndata.cpp:732 +#: kylin-burner-64/src/process/processburndatadl.cpp:356 +#: kylin-burner-64/src/process/processburndatadl.cpp:444 +#: kylin-burner-64/src/process/processcopydisk.cpp:213 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:420 +#: kylin-burner-dev/src/process/processburndata.cpp:732 +#: kylin-burner-dev/src/process/processburndatadl.cpp:356 +#: kylin-burner-dev/src/process/processburndatadl.cpp:444 +#: kylin-burner-dev/src/process/processcopydisk.cpp:213 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:420 +#: kylin-burner-pangux/src/process/processburndata.cpp:585 +#: kylin-burner-pangux/src/process/processburndata.cpp:692 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:347 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:428 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:213 +#: kylin-burner/src/process/processburndata.cpp:786 +#: kylin-burner/src/process/processburndatadl.cpp:365 +#: kylin-burner/src/process/processburndatadl.cpp:453 +#: kylin-burner/src/process/processcopydisk.cpp:213 +#: kylin-burner/src/process/processcopydiskdl.cpp:420 +msgid "closing track" +msgstr "" + +#: kylin-burner-64/src/process/processburndatadl.cpp:440 +#: kylin-burner-64/src/process/processburnudfdata.cpp:230 +#: kylin-burner-64/src/process/processcopydisk.cpp:209 +#: kylin-burner-dev/src/process/processburndatadl.cpp:440 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:230 +#: kylin-burner-dev/src/process/processcopydisk.cpp:209 +#: kylin-burner-pangux/src/process/processburndata.cpp:581 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:425 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:234 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:209 +#: kylin-burner/src/process/processburndatadl.cpp:449 +#: kylin-burner/src/process/processcopydisk.cpp:209 +msgid "flushing cache" +msgstr "" + +#: kylin-burner-64/src/process/processburndatadl.cpp:448 +#: kylin-burner-64/src/process/processcopydisk.cpp:217 +#: kylin-burner-dev/src/process/processburndatadl.cpp:448 +#: kylin-burner-dev/src/process/processcopydisk.cpp:217 +#: kylin-burner-pangux/src/process/processburndata.cpp:589 +#: kylin-burner-pangux/src/process/processburndatadl.cpp:431 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:217 +#: kylin-burner/src/process/processburndatadl.cpp:457 +#: kylin-burner/src/process/processcopydisk.cpp:217 +msgid "closing session" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:24 +#: kylin-burner-dev/src/process/processburnimage.cpp:24 +#: kylin-burner-pangux/src/process/processburnimage.cpp:24 +#: kylin-burner/src/process/processburnimage.cpp:24 +msgid "PROCESS_BI" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:25 +#: kylin-burner-dev/src/process/processburnimage.cpp:25 +#: kylin-burner-pangux/src/process/processburnimage.cpp:25 +#: kylin-burner/src/process/processburnimage.cpp:25 +msgid "Burning Image" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:36 +#: kylin-burner-64/src/process/processburnimage.cpp:37 +#: kylin-burner-dev/src/process/processburnimage.cpp:36 +#: kylin-burner-dev/src/process/processburnimage.cpp:37 +#: kylin-burner-pangux/src/process/processburnimage.cpp:36 +#: kylin-burner-pangux/src/process/processburnimage.cpp:37 +#: kylin-burner/src/process/processburnimage.cpp:36 +#: kylin-burner/src/process/processburnimage.cpp:37 +#, qt-format +msgid "Step.%1: preparing..." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:46 +#: kylin-burner-64/src/process/processburnimage.cpp:48 +#: kylin-burner-dev/src/process/processburnimage.cpp:46 +#: kylin-burner-dev/src/process/processburnimage.cpp:48 +#: kylin-burner-pangux/src/process/processburnimage.cpp:46 +#: kylin-burner-pangux/src/process/processburnimage.cpp:48 +#: kylin-burner/src/process/processburnimage.cpp:46 +#: kylin-burner/src/process/processburnimage.cpp:48 +#, qt-format +msgid "Image file %1 already been removed." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:51 +#: kylin-burner-64/src/process/processburnimage.cpp:52 +#: kylin-burner-dev/src/process/processburnimage.cpp:51 +#: kylin-burner-dev/src/process/processburnimage.cpp:52 +#: kylin-burner-pangux/src/process/processburnimage.cpp:51 +#: kylin-burner-pangux/src/process/processburnimage.cpp:52 +#: kylin-burner/src/process/processburnimage.cpp:51 +#: kylin-burner/src/process/processburnimage.cpp:52 +msgid "Checked image already exists." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:64 +#: kylin-burner-64/src/process/processburnimage.cpp:66 +#: kylin-burner-64/src/process/processburnimage.cpp:89 +#: kylin-burner-64/src/process/processburnimage.cpp:91 +#: kylin-burner-64/src/process/processburnimage.cpp:118 +#: kylin-burner-64/src/process/processburnimage.cpp:120 +#: kylin-burner-64/src/process/processcreateiso.cpp:51 +#: kylin-burner-64/src/process/processcreateiso.cpp:53 +#: kylin-burner-64/src/process/processgetiso.cpp:40 +#: kylin-burner-64/src/process/processgetiso.cpp:41 +#: kylin-burner-dev/src/process/processburnimage.cpp:64 +#: kylin-burner-dev/src/process/processburnimage.cpp:66 +#: kylin-burner-dev/src/process/processburnimage.cpp:89 +#: kylin-burner-dev/src/process/processburnimage.cpp:91 +#: kylin-burner-dev/src/process/processburnimage.cpp:118 +#: kylin-burner-dev/src/process/processburnimage.cpp:120 +#: kylin-burner-dev/src/process/processcreateiso.cpp:51 +#: kylin-burner-dev/src/process/processcreateiso.cpp:53 +#: kylin-burner-dev/src/process/processgetiso.cpp:40 +#: kylin-burner-dev/src/process/processgetiso.cpp:41 +#: kylin-burner-pangux/src/process/processburnimage.cpp:64 +#: kylin-burner-pangux/src/process/processburnimage.cpp:66 +#: kylin-burner-pangux/src/process/processburnimage.cpp:87 +#: kylin-burner-pangux/src/process/processburnimage.cpp:89 +#: kylin-burner-pangux/src/process/processburnimage.cpp:114 +#: kylin-burner-pangux/src/process/processburnimage.cpp:116 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:50 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:52 +#: kylin-burner-pangux/src/process/processgetiso.cpp:44 +#: kylin-burner-pangux/src/process/processgetiso.cpp:46 +#: kylin-burner/src/process/processburnimage.cpp:64 +#: kylin-burner/src/process/processburnimage.cpp:66 +#: kylin-burner/src/process/processburnimage.cpp:89 +#: kylin-burner/src/process/processburnimage.cpp:91 +#: kylin-burner/src/process/processburnimage.cpp:118 +#: kylin-burner/src/process/processburnimage.cpp:120 +#: kylin-burner/src/process/processcreateiso.cpp:51 +#: kylin-burner/src/process/processcreateiso.cpp:53 +#: kylin-burner/src/process/processgetiso.cpp:40 +#: kylin-burner/src/process/processgetiso.cpp:41 +#, qt-format +msgid "Cannot find program <%1>." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:71 +#: kylin-burner-64/src/process/processburnimage.cpp:73 +#: kylin-burner-64/src/process/processburnimage.cpp:97 +#: kylin-burner-64/src/process/processburnimage.cpp:99 +#: kylin-burner-64/src/process/processburnimage.cpp:125 +#: kylin-burner-64/src/process/processburnimage.cpp:127 +#: kylin-burner-64/src/process/processcreateiso.cpp:58 +#: kylin-burner-64/src/process/processcreateiso.cpp:60 +#: kylin-burner-64/src/process/processgetiso.cpp:47 +#: kylin-burner-64/src/process/processgetiso.cpp:48 +#: kylin-burner-dev/src/process/processburnimage.cpp:71 +#: kylin-burner-dev/src/process/processburnimage.cpp:73 +#: kylin-burner-dev/src/process/processburnimage.cpp:97 +#: kylin-burner-dev/src/process/processburnimage.cpp:99 +#: kylin-burner-dev/src/process/processburnimage.cpp:125 +#: kylin-burner-dev/src/process/processburnimage.cpp:127 +#: kylin-burner-dev/src/process/processcreateiso.cpp:58 +#: kylin-burner-dev/src/process/processcreateiso.cpp:60 +#: kylin-burner-dev/src/process/processgetiso.cpp:47 +#: kylin-burner-dev/src/process/processgetiso.cpp:48 +#: kylin-burner-pangux/src/process/processburnimage.cpp:71 +#: kylin-burner-pangux/src/process/processburnimage.cpp:73 +#: kylin-burner-pangux/src/process/processburnimage.cpp:94 +#: kylin-burner-pangux/src/process/processburnimage.cpp:96 +#: kylin-burner-pangux/src/process/processburnimage.cpp:121 +#: kylin-burner-pangux/src/process/processburnimage.cpp:123 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:57 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:59 +#: kylin-burner-pangux/src/process/processgetiso.cpp:51 +#: kylin-burner-pangux/src/process/processgetiso.cpp:53 +#: kylin-burner/src/process/processburnimage.cpp:71 +#: kylin-burner/src/process/processburnimage.cpp:73 +#: kylin-burner/src/process/processburnimage.cpp:97 +#: kylin-burner/src/process/processburnimage.cpp:99 +#: kylin-burner/src/process/processburnimage.cpp:125 +#: kylin-burner/src/process/processburnimage.cpp:127 +#: kylin-burner/src/process/processcreateiso.cpp:58 +#: kylin-burner/src/process/processcreateiso.cpp:60 +#: kylin-burner/src/process/processgetiso.cpp:47 +#: kylin-burner/src/process/processgetiso.cpp:48 +#, qt-format +msgid "Program %1 is not executable file." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:146 +#: kylin-burner-64/src/process/processburnimage.cpp:148 +#: kylin-burner-dev/src/process/processburnimage.cpp:146 +#: kylin-burner-dev/src/process/processburnimage.cpp:148 +#: kylin-burner-pangux/src/process/processburnimage.cpp:140 +#: kylin-burner-pangux/src/process/processburnimage.cpp:142 +#: kylin-burner/src/process/processburnimage.cpp:146 +#: kylin-burner/src/process/processburnimage.cpp:148 +#, qt-format +msgid "Donot suppot medium type %1 in CDROM." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:151 +#: kylin-burner-64/src/process/processburnimage.cpp:152 +#: kylin-burner-64/src/process/processcreateiso.cpp:63 +#: kylin-burner-dev/src/process/processburnimage.cpp:151 +#: kylin-burner-dev/src/process/processburnimage.cpp:152 +#: kylin-burner-dev/src/process/processcreateiso.cpp:63 +#: kylin-burner-pangux/src/process/processburnimage.cpp:145 +#: kylin-burner-pangux/src/process/processburnimage.cpp:146 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:62 +#: kylin-burner/src/process/processburnimage.cpp:151 +#: kylin-burner/src/process/processburnimage.cpp:152 +#: kylin-burner/src/process/processcreateiso.cpp:63 +#, qt-format +msgid "Checking program %1 can be supported." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:161 +#: kylin-burner-64/src/process/processburnimage.cpp:162 +#: kylin-burner-dev/src/process/processburnimage.cpp:161 +#: kylin-burner-dev/src/process/processburnimage.cpp:162 +#: kylin-burner-pangux/src/process/processburnimage.cpp:155 +#: kylin-burner-pangux/src/process/processburnimage.cpp:156 +#: kylin-burner/src/process/processburnimage.cpp:161 +#: kylin-burner/src/process/processburnimage.cpp:162 +#, qt-format +msgid "Step.%1: getting..." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:169 +#: kylin-burner-64/src/process/processburnimage.cpp:170 +#: kylin-burner-dev/src/process/processburnimage.cpp:169 +#: kylin-burner-dev/src/process/processburnimage.cpp:170 +#: kylin-burner-pangux/src/process/processburnimage.cpp:163 +#: kylin-burner-pangux/src/process/processburnimage.cpp:164 +#: kylin-burner/src/process/processburnimage.cpp:169 +#: kylin-burner/src/process/processburnimage.cpp:170 +msgid "Speed config to 0, means auto." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:202 +#: kylin-burner-64/src/process/processburnimage.cpp:203 +#: kylin-burner-dev/src/process/processburnimage.cpp:202 +#: kylin-burner-dev/src/process/processburnimage.cpp:203 +#: kylin-burner-pangux/src/process/processburnimage.cpp:197 +#: kylin-burner-pangux/src/process/processburnimage.cpp:198 +#: kylin-burner/src/process/processburnimage.cpp:202 +#: kylin-burner/src/process/processburnimage.cpp:203 +#, qt-format +msgid "Started process %1" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:226 +#: kylin-burner-dev/src/process/processburnimage.cpp:226 +#: kylin-burner-pangux/src/process/processburnimage.cpp:223 +#: kylin-burner/src/process/processburnimage.cpp:226 +#, qt-format +msgid "Start left %1 seconds." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:228 +#: kylin-burner-dev/src/process/processburnimage.cpp:228 +#: kylin-burner-pangux/src/process/processburnimage.cpp:225 +#: kylin-burner/src/process/processburnimage.cpp:228 +msgid "Started burn image, cannot stop." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:256 +#: kylin-burner-dev/src/process/processburnimage.cpp:256 +#: kylin-burner-pangux/src/process/processburnimage.cpp:251 +#: kylin-burner/src/process/processburnimage.cpp:256 +#, qt-format +msgid "Writing track %1 speed %2 %3 of %4 %5 written." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:263 +#: kylin-burner-dev/src/process/processburnimage.cpp:263 +#: kylin-burner-pangux/src/process/processburnimage.cpp:257 +#: kylin-burner/src/process/processburnimage.cpp:263 +msgid "Fixating...(need waiting a moment.)" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:269 +#: kylin-burner-dev/src/process/processburnimage.cpp:269 +#: kylin-burner-pangux/src/process/processburnimage.cpp:263 +#: kylin-burner/src/process/processburnimage.cpp:269 +#, qt-format +msgid "%1 output : \"%2\"" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:284 +#: kylin-burner-dev/src/process/processburnimage.cpp:284 +#: kylin-burner-pangux/src/process/processburnimage.cpp:278 +#: kylin-burner/src/process/processburnimage.cpp:284 +#, c-format, qt-format +msgid "Burning image by speed %1x" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:314 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:374 +#: kylin-burner-dev/src/process/processburnimage.cpp:314 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:374 +#: kylin-burner-pangux/src/process/processburnimage.cpp:305 +#: kylin-burner/src/process/processburnimage.cpp:314 +#: kylin-burner/src/process/processcopydiskdl.cpp:374 +msgid "Burning command aborted." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:319 +#: kylin-burner-dev/src/process/processburnimage.cpp:319 +#: kylin-burner-pangux/src/process/processburnimage.cpp:310 +#: kylin-burner/src/process/processburnimage.cpp:319 +msgid "Disc umount failed." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:324 +#: kylin-burner-64/src/process/processburnimage.cpp:330 +#: kylin-burner-dev/src/process/processburnimage.cpp:324 +#: kylin-burner-dev/src/process/processburnimage.cpp:330 +#: kylin-burner-pangux/src/process/processburnimage.cpp:315 +#: kylin-burner-pangux/src/process/processburnimage.cpp:320 +#: kylin-burner/src/process/processburnimage.cpp:324 +#: kylin-burner/src/process/processburnimage.cpp:330 +msgid "Disc is busy , umount failed." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:334 +#: kylin-burner-dev/src/process/processburnimage.cpp:334 +#: kylin-burner-pangux/src/process/processburnimage.cpp:323 +#: kylin-burner/src/process/processburnimage.cpp:334 +msgid "No such device." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:341 +#: kylin-burner-dev/src/process/processburnimage.cpp:341 +#: kylin-burner-pangux/src/process/processburnimage.cpp:330 +#: kylin-burner/src/process/processburnimage.cpp:341 +msgid "" +"An error occurs when the CD is removed during image burning. The image " +"burning process is terminated." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:369 +#: kylin-burner-dev/src/process/processburnimage.cpp:369 +#: kylin-burner-pangux/src/process/processburnimage.cpp:357 +#: kylin-burner/src/process/processburnimage.cpp:369 +msgid "Blanking... " +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:374 +#: kylin-burner-dev/src/process/processburnimage.cpp:374 +#: kylin-burner-pangux/src/process/processburnimage.cpp:362 +#: kylin-burner/src/process/processburnimage.cpp:374 +msgid "Formatting..." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:378 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:379 +#: kylin-burner-dev/src/process/processburnimage.cpp:378 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:379 +#: kylin-burner-pangux/src/process/processburnimage.cpp:366 +#: kylin-burner/src/process/processburnimage.cpp:378 +#: kylin-burner/src/process/processcopydiskdl.cpp:379 +msgid "Preparing for burning image(wait a few minutes)" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:404 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:415 +#: kylin-burner-dev/src/process/processburnimage.cpp:404 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:415 +#: kylin-burner-pangux/src/process/processburnimage.cpp:393 +#: kylin-burner/src/process/processburnimage.cpp:404 +#: kylin-burner/src/process/processcopydiskdl.cpp:415 +#, qt-format +msgid "Burning image by speed %1. %2 of %3 written." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:409 +#: kylin-burner-dev/src/process/processburnimage.cpp:409 +#: kylin-burner-pangux/src/process/processburnimage.cpp:398 +#: kylin-burner/src/process/processburnimage.cpp:409 +msgid "Blanking done" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:412 +#: kylin-burner-dev/src/process/processburnimage.cpp:412 +#: kylin-burner-pangux/src/process/processburnimage.cpp:401 +#: kylin-burner/src/process/processburnimage.cpp:412 +msgid "Closing track/session" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:415 +#: kylin-burner-dev/src/process/processburnimage.cpp:415 +#: kylin-burner-pangux/src/process/processburnimage.cpp:403 +#: kylin-burner/src/process/processburnimage.cpp:415 +msgid "burn successfully" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:434 +#: kylin-burner-64/src/process/processburnudfdata.cpp:247 +#: kylin-burner-64/src/process/processcopydisk.cpp:237 +#: kylin-burner-64/src/process/processcreateiso.cpp:213 +#: kylin-burner-64/src/process/processgetiso.cpp:166 +#: kylin-burner-dev/src/process/processburnimage.cpp:434 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:247 +#: kylin-burner-dev/src/process/processcopydisk.cpp:237 +#: kylin-burner-dev/src/process/processcreateiso.cpp:213 +#: kylin-burner-dev/src/process/processgetiso.cpp:166 +#: kylin-burner-pangux/src/process/processburnimage.cpp:417 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:251 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:234 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:223 +#: kylin-burner-pangux/src/process/processearse.cpp:169 +#: kylin-burner-pangux/src/process/processgetiso.cpp:157 +#: kylin-burner/src/process/processburnimage.cpp:434 +#: kylin-burner/src/process/processcopydisk.cpp:237 +#: kylin-burner/src/process/processcreateiso.cpp:213 +#: kylin-burner/src/process/processgetiso.cpp:166 +#, qt-format +msgid "Exit code is %1, status : %2" +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:489 +#: kylin-burner-64/src/process/processburnimage.cpp:490 +#: kylin-burner-dev/src/process/processburnimage.cpp:489 +#: kylin-burner-dev/src/process/processburnimage.cpp:490 +#: kylin-burner-pangux/src/process/processburnimage.cpp:472 +#: kylin-burner-pangux/src/process/processburnimage.cpp:473 +#: kylin-burner/src/process/processburnimage.cpp:489 +#: kylin-burner/src/process/processburnimage.cpp:490 +msgid "CDROM doesnot exists any more." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:495 +#: kylin-burner-64/src/process/processburnimage.cpp:496 +#: kylin-burner-dev/src/process/processburnimage.cpp:495 +#: kylin-burner-dev/src/process/processburnimage.cpp:496 +#: kylin-burner-pangux/src/process/processburnimage.cpp:478 +#: kylin-burner-pangux/src/process/processburnimage.cpp:479 +#: kylin-burner/src/process/processburnimage.cpp:495 +#: kylin-burner/src/process/processburnimage.cpp:496 +msgid "CDROM doesnot a real physical cdrom." +msgstr "" + +#: kylin-burner-64/src/process/processburnimage.cpp:501 +#: kylin-burner-64/src/process/processburnimage.cpp:502 +#: kylin-burner-dev/src/process/processburnimage.cpp:501 +#: kylin-burner-dev/src/process/processburnimage.cpp:502 +#: kylin-burner-pangux/src/process/processburnimage.cpp:484 +#: kylin-burner-pangux/src/process/processburnimage.cpp:485 +#: kylin-burner/src/process/processburnimage.cpp:501 +#: kylin-burner/src/process/processburnimage.cpp:502 +msgid "Medium in CDROM is not empty any more." +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:31 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:31 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:31 +#: kylin-burner/src/process/processburnudfdata.cpp:58 +msgid "PROCESS_UDF_DATA" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:32 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:32 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:32 +#: kylin-burner/src/process/processburnudfdata.cpp:59 +msgid "Burning UDF Format Data" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:38 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:38 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:38 +#: kylin-burner/src/process/processburnudfdata.cpp:65 +msgid "Media Not Empty,Not Burn UDF Format" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:74 +#: kylin-burner-64/src/process/processcopydisk.cpp:54 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:74 +#: kylin-burner-dev/src/process/processcopydisk.cpp:54 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:73 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:54 +#: kylin-burner/src/process/processburnudfdata.cpp:99 +#: kylin-burner/src/process/processcopydisk.cpp:54 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the cdrecord and " +"growisofs is exists or not, and give the right permissions.%2 exiting..." +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:90 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:90 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:88 +#: kylin-burner/src/process/processburnudfdata.cpp:151 +msgid "Prepare to burn UDF format data to DVD." +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:116 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:116 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:120 +#: kylin-burner/src/process/processburnudfdata.cpp:179 +msgid "Prepare to start burn UFD format data." +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:130 +#: kylin-burner-64/src/process/processcreateiso.cpp:105 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:130 +#: kylin-burner-dev/src/process/processcreateiso.cpp:105 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:134 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:111 +#: kylin-burner/src/process/processcreateiso.cpp:105 +#, qt-format +msgid "%1 data size more than 2 GB, need allow-limited-size extension" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:131 +#: kylin-burner-64/src/process/processcreateiso.cpp:106 +#: kylin-burner-64/src/process/processcreateiso.cpp:110 +#: kylin-burner-64/src/process/processcreateiso.cpp:114 +#: kylin-burner-64/src/process/processcreateiso.cpp:117 +#: kylin-burner-64/src/view/mainwindow.cpp:449 +#: kylin-burner-64/src/view/mainwindow.cpp:505 +#: kylin-burner-64/src/view/mainwindow.cpp:753 +#: kylin-burner-64/src/view/mainwindow.cpp:757 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:131 +#: kylin-burner-dev/src/process/processcreateiso.cpp:106 +#: kylin-burner-dev/src/process/processcreateiso.cpp:110 +#: kylin-burner-dev/src/process/processcreateiso.cpp:114 +#: kylin-burner-dev/src/process/processcreateiso.cpp:117 +#: kylin-burner-dev/src/view/mainwindow.cpp:449 +#: kylin-burner-dev/src/view/mainwindow.cpp:505 +#: kylin-burner-dev/src/view/mainwindow.cpp:753 +#: kylin-burner-dev/src/view/mainwindow.cpp:757 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:135 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:112 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:116 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:120 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:123 +#: kylin-burner-pangux/src/view/mainwindow.cpp:469 +#: kylin-burner-pangux/src/view/mainwindow.cpp:527 +#: kylin-burner-pangux/src/view/mainwindow.cpp:759 +#: kylin-burner-pangux/src/view/mainwindow.cpp:763 +#: kylin-burner/src/process/processcreateiso.cpp:106 +#: kylin-burner/src/process/processcreateiso.cpp:110 +#: kylin-burner/src/process/processcreateiso.cpp:114 +#: kylin-burner/src/process/processcreateiso.cpp:117 +#: kylin-burner/src/view/mainwindow.cpp:425 +#: kylin-burner/src/view/mainwindow.cpp:481 +#: kylin-burner/src/view/mainwindow.cpp:729 +#: kylin-burner/src/view/mainwindow.cpp:733 +msgid "CreateISO" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:180 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:180 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:184 +#, qt-format +msgid "ProcessBurnUDFData::slotsOutput output==[%1]" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:193 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:193 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:197 +#, qt-format +msgid "ProcessBurnUDFData::slotsError output==[%1]" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:234 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:234 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:238 +msgid "writing lead-out" +msgstr "" + +#: kylin-burner-64/src/process/processburnudfdata.cpp:238 +#: kylin-burner-dev/src/process/processburnudfdata.cpp:238 +#: kylin-burner-pangux/src/process/processburnudfdata.cpp:242 +msgid "reloading tray" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:25 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:113 +#: kylin-burner-dev/src/process/processcopydisk.cpp:25 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:113 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:25 +#: kylin-burner/src/process/processcopydisk.cpp:25 +#: kylin-burner/src/process/processcopydiskdl.cpp:113 +msgid "PROCESS_CD" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:72 +#: kylin-burner-64/src/process/processcopydisk.cpp:103 +#: kylin-burner-64/src/process/processgetiso.cpp:105 +#: kylin-burner-dev/src/process/processcopydisk.cpp:72 +#: kylin-burner-dev/src/process/processcopydisk.cpp:103 +#: kylin-burner-dev/src/process/processgetiso.cpp:105 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:72 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:103 +#: kylin-burner-pangux/src/process/processgetiso.cpp:100 +#: kylin-burner/src/process/processcopydisk.cpp:72 +#: kylin-burner/src/process/processcopydisk.cpp:103 +#: kylin-burner/src/process/processgetiso.cpp:105 +#, qt-format +msgid "Preparer %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:74 +#: kylin-burner-64/src/process/processcopydisk.cpp:106 +#: kylin-burner-64/src/process/processgetiso.cpp:109 +#: kylin-burner-dev/src/process/processcopydisk.cpp:74 +#: kylin-burner-dev/src/process/processcopydisk.cpp:106 +#: kylin-burner-dev/src/process/processgetiso.cpp:109 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:74 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:106 +#: kylin-burner-pangux/src/process/processgetiso.cpp:103 +#: kylin-burner/src/process/processcopydisk.cpp:74 +#: kylin-burner/src/process/processcopydisk.cpp:106 +#: kylin-burner/src/process/processgetiso.cpp:109 +#, qt-format +msgid "Publisher %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:76 +#: kylin-burner-64/src/process/processcopydisk.cpp:109 +#: kylin-burner-64/src/process/processgetiso.cpp:113 +#: kylin-burner-dev/src/process/processcopydisk.cpp:76 +#: kylin-burner-dev/src/process/processcopydisk.cpp:109 +#: kylin-burner-dev/src/process/processgetiso.cpp:113 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:76 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:109 +#: kylin-burner-pangux/src/process/processgetiso.cpp:106 +#: kylin-burner/src/process/processcopydisk.cpp:76 +#: kylin-burner/src/process/processcopydisk.cpp:109 +#: kylin-burner/src/process/processgetiso.cpp:113 +#, qt-format +msgid "Copyright %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:78 +#: kylin-burner-64/src/process/processcopydisk.cpp:100 +#: kylin-burner-64/src/process/processgetiso.cpp:101 +#: kylin-burner-dev/src/process/processcopydisk.cpp:78 +#: kylin-burner-dev/src/process/processcopydisk.cpp:100 +#: kylin-burner-dev/src/process/processgetiso.cpp:101 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:78 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:100 +#: kylin-burner-pangux/src/process/processgetiso.cpp:97 +#: kylin-burner/src/process/processcopydisk.cpp:78 +#: kylin-burner/src/process/processcopydisk.cpp:100 +#: kylin-burner/src/process/processgetiso.cpp:101 +#, qt-format +msgid "Volumn ID %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:99 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:202 +#: kylin-burner-64/src/process/processcreateiso.cpp:132 +#: kylin-burner-64/src/process/processgetiso.cpp:100 +#: kylin-burner-dev/src/process/processcopydisk.cpp:99 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:202 +#: kylin-burner-dev/src/process/processcreateiso.cpp:132 +#: kylin-burner-dev/src/process/processgetiso.cpp:100 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:99 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:138 +#: kylin-burner-pangux/src/process/processgetiso.cpp:96 +#: kylin-burner/src/process/processcopydisk.cpp:99 +#: kylin-burner/src/process/processcopydiskdl.cpp:202 +#: kylin-burner/src/process/processcreateiso.cpp:132 +#: kylin-burner/src/process/processgetiso.cpp:100 +#, qt-format +msgid "Volumn ID : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:102 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:203 +#: kylin-burner-64/src/process/processcreateiso.cpp:135 +#: kylin-burner-64/src/process/processgetiso.cpp:104 +#: kylin-burner-dev/src/process/processcopydisk.cpp:102 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:203 +#: kylin-burner-dev/src/process/processcreateiso.cpp:135 +#: kylin-burner-dev/src/process/processgetiso.cpp:104 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:102 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:141 +#: kylin-burner-pangux/src/process/processgetiso.cpp:99 +#: kylin-burner/src/process/processcopydisk.cpp:102 +#: kylin-burner/src/process/processcopydiskdl.cpp:203 +#: kylin-burner/src/process/processcreateiso.cpp:135 +#: kylin-burner/src/process/processgetiso.cpp:104 +#, qt-format +msgid "Preparer : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:105 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:204 +#: kylin-burner-64/src/process/processcreateiso.cpp:138 +#: kylin-burner-64/src/process/processgetiso.cpp:108 +#: kylin-burner-dev/src/process/processcopydisk.cpp:105 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:204 +#: kylin-burner-dev/src/process/processcreateiso.cpp:138 +#: kylin-burner-dev/src/process/processgetiso.cpp:108 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:105 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:144 +#: kylin-burner-pangux/src/process/processgetiso.cpp:102 +#: kylin-burner/src/process/processcopydisk.cpp:105 +#: kylin-burner/src/process/processcopydiskdl.cpp:204 +#: kylin-burner/src/process/processcreateiso.cpp:138 +#: kylin-burner/src/process/processgetiso.cpp:108 +#, qt-format +msgid "Publisher : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydisk.cpp:108 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:205 +#: kylin-burner-64/src/process/processcreateiso.cpp:141 +#: kylin-burner-64/src/process/processgetiso.cpp:112 +#: kylin-burner-dev/src/process/processcopydisk.cpp:108 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:205 +#: kylin-burner-dev/src/process/processcreateiso.cpp:141 +#: kylin-burner-dev/src/process/processgetiso.cpp:112 +#: kylin-burner-pangux/src/process/processcopydisk.cpp:108 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:147 +#: kylin-burner-pangux/src/process/processgetiso.cpp:105 +#: kylin-burner/src/process/processcopydisk.cpp:108 +#: kylin-burner/src/process/processcopydiskdl.cpp:205 +#: kylin-burner/src/process/processcreateiso.cpp:141 +#: kylin-burner/src/process/processgetiso.cpp:112 +#, qt-format +msgid "Copyright : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcopydiskdl.cpp:199 +#: kylin-burner-64/src/process/processgetiso.cpp:53 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:199 +#: kylin-burner-dev/src/process/processgetiso.cpp:53 +#: kylin-burner-pangux/src/process/processgetiso.cpp:58 +#: kylin-burner/src/process/processcopydiskdl.cpp:199 +#: kylin-burner/src/process/processgetiso.cpp:53 +msgid "Preparing get iso file." +msgstr "" + +#: kylin-burner-64/src/process/processcopydiskdl.cpp:433 +#: kylin-burner-64/src/process/processcopydiskdl.cpp:505 +#: kylin-burner-64/src/process/processgetiso.cpp:26 +#: kylin-burner-64/src/process/processgetiso.cpp:138 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:433 +#: kylin-burner-dev/src/process/processcopydiskdl.cpp:505 +#: kylin-burner-dev/src/process/processgetiso.cpp:26 +#: kylin-burner-dev/src/process/processgetiso.cpp:138 +#: kylin-burner-pangux/src/process/processgetiso.cpp:27 +#: kylin-burner-pangux/src/process/processgetiso.cpp:131 +#: kylin-burner/src/process/processcopydiskdl.cpp:433 +#: kylin-burner/src/process/processcopydiskdl.cpp:505 +#: kylin-burner/src/process/processgetiso.cpp:26 +#: kylin-burner/src/process/processgetiso.cpp:138 +msgid "Getting ISO" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:21 +#: kylin-burner-dev/src/process/processcreateiso.cpp:21 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:21 +#: kylin-burner/src/process/processcreateiso.cpp:21 +msgid "PROCESS_CI" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:73 +#: kylin-burner-64/src/view/execdialog.cpp:43 +#: kylin-burner-64/src/view/filefilterrules.cpp:155 +#: kylin-burner-64/src/view/inputchange.cpp:42 +#: kylin-burner-64/src/view/modaldialog.cpp:52 +#: kylin-burner-64/src/view/tip_burnresult.cpp:34 +#: kylin-burner-64/src/view/tipschange.cpp:35 +#: kylin-burner-dev/src/process/processcreateiso.cpp:73 +#: kylin-burner-dev/src/view/execdialog.cpp:43 +#: kylin-burner-dev/src/view/filefilterrules.cpp:155 +#: kylin-burner-dev/src/view/inputchange.cpp:42 +#: kylin-burner-dev/src/view/modaldialog.cpp:52 +#: kylin-burner-dev/src/view/tip_burnresult.cpp:34 +#: kylin-burner-dev/src/view/tipschange.cpp:35 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:77 +#: kylin-burner-pangux/src/view/execdialog.cpp:43 +#: kylin-burner-pangux/src/view/filefilterrules.cpp:168 +#: kylin-burner-pangux/src/view/inputchange.cpp:42 +#: kylin-burner-pangux/src/view/modaldialog.cpp:53 +#: kylin-burner-pangux/src/view/tip_burnresult.cpp:37 +#: kylin-burner-pangux/src/view/tipschange.cpp:35 +#: kylin-burner/src/process/processcreateiso.cpp:73 +#: kylin-burner/src/view/execdialog.cpp:43 +#: kylin-burner/src/view/filefilterrules.cpp:144 +#: kylin-burner/src/view/inputchange.cpp:38 +#: kylin-burner/src/view/modaldialog.cpp:47 +#: kylin-burner/src/view/tip_burnresult.cpp:33 +#: kylin-burner/src/view/tipschange.cpp:33 +msgid "OK" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:74 +#: kylin-burner-64/src/view/execdialog.cpp:42 +#: kylin-burner-64/src/view/filefilterrules.cpp:154 +#: kylin-burner-64/src/view/inputchange.cpp:41 +#: kylin-burner-64/src/view/modaldialog.cpp:51 +#: kylin-burner-64/src/view/tipschange.cpp:34 +#: kylin-burner-dev/src/process/processcreateiso.cpp:74 +#: kylin-burner-dev/src/view/execdialog.cpp:42 +#: kylin-burner-dev/src/view/filefilterrules.cpp:154 +#: kylin-burner-dev/src/view/inputchange.cpp:41 +#: kylin-burner-dev/src/view/modaldialog.cpp:51 +#: kylin-burner-dev/src/view/tipschange.cpp:34 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:78 +#: kylin-burner-pangux/src/view/execdialog.cpp:42 +#: kylin-burner-pangux/src/view/filefilterrules.cpp:167 +#: kylin-burner-pangux/src/view/inputchange.cpp:41 +#: kylin-burner-pangux/src/view/modaldialog.cpp:52 +#: kylin-burner-pangux/src/view/tipschange.cpp:34 +#: kylin-burner/src/process/processcreateiso.cpp:74 +#: kylin-burner/src/view/execdialog.cpp:42 +#: kylin-burner/src/view/filefilterrules.cpp:143 +#: kylin-burner/src/view/inputchange.cpp:37 +#: kylin-burner/src/view/modaldialog.cpp:46 +#: kylin-burner/src/view/tipschange.cpp:32 +msgid "Cancel" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:88 +#: kylin-burner-dev/src/process/processcreateiso.cpp:88 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:94 +#: kylin-burner/src/process/processcreateiso.cpp:88 +#, qt-format +msgid "Ready to create %1 file." +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:102 +#: kylin-burner-dev/src/process/processcreateiso.cpp:102 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:108 +#: kylin-burner/src/process/processcreateiso.cpp:102 +msgid "Initlized default arguments." +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:109 +#: kylin-burner-dev/src/process/processcreateiso.cpp:109 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:115 +#: kylin-burner/src/process/processcreateiso.cpp:109 +#, qt-format +msgid "%1 check need allow-limited-size extension or not" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:113 +#: kylin-burner-dev/src/process/processcreateiso.cpp:113 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:119 +#: kylin-burner/src/process/processcreateiso.cpp:113 +#, qt-format +msgid "%1 data size more than 4 GB, need UDF extension" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:117 +#: kylin-burner-dev/src/process/processcreateiso.cpp:117 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:123 +#: kylin-burner/src/process/processcreateiso.cpp:117 +#, qt-format +msgid "%1 check need UDF extension or not" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:131 +#: kylin-burner-dev/src/process/processcreateiso.cpp:131 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:137 +#: kylin-burner/src/process/processcreateiso.cpp:131 +#, qt-format +msgid "Setted volumn ID : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:134 +#: kylin-burner-dev/src/process/processcreateiso.cpp:134 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:140 +#: kylin-burner/src/process/processcreateiso.cpp:134 +#, qt-format +msgid "Setted preparer : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:137 +#: kylin-burner-dev/src/process/processcreateiso.cpp:137 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:143 +#: kylin-burner/src/process/processcreateiso.cpp:137 +#, qt-format +msgid "Setted publisher : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:140 +#: kylin-burner-dev/src/process/processcreateiso.cpp:140 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:146 +#: kylin-burner/src/process/processcreateiso.cpp:140 +#, qt-format +msgid "Setted copyright : %1" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:145 +#: kylin-burner-dev/src/process/processcreateiso.cpp:145 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:151 +#: kylin-burner/src/process/processcreateiso.cpp:145 +msgid "Invalid temporary storage path." +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:150 +#: kylin-burner-dev/src/process/processcreateiso.cpp:150 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:156 +#: kylin-burner/src/process/processcreateiso.cpp:150 +msgid "Temporary storage has not enough space for create iso." +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:153 +#: kylin-burner-dev/src/process/processcreateiso.cpp:153 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:159 +#: kylin-burner/src/process/processcreateiso.cpp:153 +msgid "Check storage space over." +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:158 +#: kylin-burner-dev/src/process/processcreateiso.cpp:158 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:164 +#: kylin-burner/src/process/processcreateiso.cpp:158 +#, qt-format +msgid "Need to copy %1 file(s)" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:186 +#: kylin-burner-dev/src/process/processcreateiso.cpp:186 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:192 +#: kylin-burner/src/process/processcreateiso.cpp:186 +msgid "Started Create ISO" +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:187 +#: kylin-burner-dev/src/process/processcreateiso.cpp:187 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:193 +#: kylin-burner/src/process/processcreateiso.cpp:187 +msgid "Create ISO started." +msgstr "" + +#: kylin-burner-64/src/process/processcreateiso.cpp:217 +#: kylin-burner-dev/src/process/processcreateiso.cpp:217 +#: kylin-burner-pangux/src/process/processcreateiso.cpp:227 +#: kylin-burner/src/process/processcreateiso.cpp:217 +msgid "Created ISO" +msgstr "" + +#: kylin-burner-64/src/process/processearse.cpp:27 +#: kylin-burner-dev/src/process/processearse.cpp:27 +#: kylin-burner-pangux/src/process/processearse.cpp:24 +#: kylin-burner/src/process/processearse.cpp:27 +msgid "PROCESS_EARSE" +msgstr "" + +#: kylin-burner-64/src/process/processearse.cpp:29 +#: kylin-burner-dev/src/process/processearse.cpp:29 +#: kylin-burner-pangux/src/process/processearse.cpp:26 +#: kylin-burner/src/process/processearse.cpp:29 +msgid "Earsing" +msgstr "" + +#: kylin-burner-64/src/process/processearse.cpp:114 +#: kylin-burner-dev/src/process/processearse.cpp:114 +#: kylin-burner-pangux/src/process/processearse.cpp:80 +#: kylin-burner/src/process/processearse.cpp:114 +msgid "Umount CD, and prepare to blank CD." +msgstr "" + +#: kylin-burner-64/src/process/processearse.cpp:192 +#: kylin-burner-64/src/process/processearse.cpp:202 +#: kylin-burner-dev/src/process/processearse.cpp:192 +#: kylin-burner-dev/src/process/processearse.cpp:202 +#: kylin-burner-pangux/src/process/processearse.cpp:162 +#: kylin-burner-pangux/src/process/processearse.cpp:170 +#: kylin-burner/src/process/processearse.cpp:192 +#: kylin-burner/src/process/processearse.cpp:202 +msgid "earsing...." +msgstr "" + +#: kylin-burner-64/src/process/processearse.cpp:237 +#: kylin-burner-dev/src/process/processearse.cpp:237 +#: kylin-burner-pangux/src/process/processearse.cpp:196 +#: kylin-burner/src/process/processearse.cpp:237 +msgid "Blanking..." +msgstr "" + +#: kylin-burner-64/src/process/processgetiso.cpp:23 +#: kylin-burner-dev/src/process/processgetiso.cpp:23 +#: kylin-burner-pangux/src/process/processgetiso.cpp:25 +#: kylin-burner/src/process/processgetiso.cpp:23 +msgid "PROCESS_GI" +msgstr "" + +#: kylin-burner-64/src/process/processgetiso.cpp:24 +#: kylin-burner-64/src/process/processgetiso.cpp:72 +#: kylin-burner-dev/src/process/processgetiso.cpp:24 +#: kylin-burner-dev/src/process/processgetiso.cpp:72 +#: kylin-burner-pangux/src/process/processgetiso.cpp:26 +#: kylin-burner-pangux/src/process/processgetiso.cpp:75 +#: kylin-burner/src/process/processgetiso.cpp:24 +#: kylin-burner/src/process/processgetiso.cpp:72 +msgid "Get ISO" +msgstr "" + +#: kylin-burner-64/src/process/processgetiso.cpp:63 +#: kylin-burner-dev/src/process/processgetiso.cpp:63 +#: kylin-burner-pangux/src/process/processgetiso.cpp:67 +#: kylin-burner/src/process/processgetiso.cpp:63 +#, qt-format +msgid "Medium in CDROM %1 donot been mounted." +msgstr "" + +#: kylin-burner-64/src/process/processgetiso.cpp:86 +#: kylin-burner-dev/src/process/processgetiso.cpp:86 +#: kylin-burner-pangux/src/process/processgetiso.cpp:83 +#: kylin-burner/src/process/processgetiso.cpp:86 +#, qt-format +msgid "File %1 exists." +msgstr "" + +#: kylin-burner-64/src/process/processgetiso.cpp:129 +#: kylin-burner-dev/src/process/processgetiso.cpp:129 +#: kylin-burner-pangux/src/process/processgetiso.cpp:123 +#: kylin-burner/src/process/processgetiso.cpp:129 +msgid "Bad sector detected, please clean or replace a disc and try again." +msgstr "" + +#: kylin-burner-64/src/process/processisoinfo.cpp:19 +#: kylin-burner-dev/src/process/processisoinfo.cpp:19 +#: kylin-burner-pangux/src/process/processisoinfo.cpp:19 +#: kylin-burner/src/process/processisoinfo.cpp:19 +msgid "ERROR:ISOINFO-PREPARE" +msgstr "" + +#: kylin-burner-64/src/process/processmd5sum.cpp:19 +#: kylin-burner-dev/src/process/processmd5sum.cpp:19 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:19 +#: kylin-burner/src/process/processmd5sum.cpp:19 +msgid "PROCESS_DC" +msgstr "" + +#: kylin-burner-64/src/process/processmd5sum.cpp:20 +#: kylin-burner-dev/src/process/processmd5sum.cpp:20 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:20 +#: kylin-burner/src/process/processmd5sum.cpp:20 +msgid "Checking disk" +msgstr "" + +#: kylin-burner-64/src/process/processmd5sum.cpp:61 +#: kylin-burner-64/src/process/processmd5sum.cpp:88 +#: kylin-burner-64/src/process/processmd5sum.cpp:106 +#: kylin-burner-dev/src/process/processmd5sum.cpp:61 +#: kylin-burner-dev/src/process/processmd5sum.cpp:88 +#: kylin-burner-dev/src/process/processmd5sum.cpp:106 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:61 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:88 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:109 +#: kylin-burner/src/process/processmd5sum.cpp:61 +#: kylin-burner/src/process/processmd5sum.cpp:88 +#: kylin-burner/src/process/processmd5sum.cpp:106 +msgid "Checking..." +msgstr "" + +#: kylin-burner-64/src/process/processmd5sum.cpp:89 +#: kylin-burner-dev/src/process/processmd5sum.cpp:89 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:89 +#: kylin-burner/src/process/processmd5sum.cpp:89 +msgid "Fail" +msgstr "" + +#: kylin-burner-64/src/process/processmd5sum.cpp:89 +#: kylin-burner-dev/src/process/processmd5sum.cpp:89 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:89 +#: kylin-burner/src/process/processmd5sum.cpp:89 +msgid "FAILED" +msgstr "" + +#: kylin-burner-64/src/process/processmd5sum.cpp:101 +#: kylin-burner-dev/src/process/processmd5sum.cpp:101 +#: kylin-burner-pangux/src/process/processmd5sum.cpp:104 +#: kylin-burner/src/process/processmd5sum.cpp:101 +#, qt-format +msgid "Error happened when checking disk,content: %1" +msgstr "" + +#: kylin-burner-64/src/status-fix/discmonitor.cpp:112 +#: kylin-burner-dev/src/status-fix/discmonitor.cpp:112 +#: kylin-burner/src/status-fix/discmonitor.cpp:112 +msgid "CD Drive" +msgstr "" + +#: kylin-burner-64/src/status-fix/discmonitor.cpp:112 +#: kylin-burner-dev/src/status-fix/discmonitor.cpp:112 +#: kylin-burner/src/status-fix/discmonitor.cpp:112 +msgid "CD/DVD Drive" +msgstr "" + +#: kylin-burner-64/src/view/aboutdialog.cpp:16 +#: kylin-burner-64/src/view/windowtitle.cpp:46 +#: kylin-burner-dev/src/view/aboutdialog.cpp:16 +#: kylin-burner-dev/src/view/windowtitle.cpp:46 +#: kylin-burner-pangux/src/view/aboutdialog.cpp:16 +#: kylin-burner-pangux/src/view/windowtitle.cpp:46 +#: kylin-burner/src/view/aboutdialog.cpp:16 +#: kylin-burner/src/view/windowtitle.cpp:25 +msgid "Close" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:74 +#: kylin-burner-64/src/view/mainwindow.cpp:484 +#: kylin-burner-64/src/view/mainwindow.cpp:589 +#: kylin-burner-64/src/view/mainwindow.cpp:796 +#: kylin-burner-64/src/view/mainwindow.cpp:1016 +#: kylin-burner-dev/src/view/burndata.cpp:74 +#: kylin-burner-dev/src/view/mainwindow.cpp:484 +#: kylin-burner-dev/src/view/mainwindow.cpp:589 +#: kylin-burner-dev/src/view/mainwindow.cpp:796 +#: kylin-burner-dev/src/view/mainwindow.cpp:1015 +#: kylin-burner-pangux/src/view/burndata.cpp:50 +#: kylin-burner-pangux/src/view/mainwindow.cpp:505 +#: kylin-burner-pangux/src/view/mainwindow.cpp:600 +#: kylin-burner-pangux/src/view/mainwindow.cpp:802 +#: kylin-burner-pangux/src/view/mainwindow.cpp:1022 +#: kylin-burner/src/view/burndata.cpp:69 +#: kylin-burner/src/view/mainwindow.cpp:460 +#: kylin-burner/src/view/mainwindow.cpp:573 +#: kylin-burner/src/view/mainwindow.cpp:772 +#: kylin-burner/src/view/mainwindow.cpp:990 +msgid "BurnData" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:87 +#: kylin-burner-dev/src/view/burndata.cpp:87 +#: kylin-burner-pangux/src/view/burndata.cpp:65 +#: kylin-burner/src/view/burndata.cpp:82 +msgid "Go Back" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:96 +#: kylin-burner-dev/src/view/burndata.cpp:96 +#: kylin-burner-pangux/src/view/burndata.cpp:74 +#: kylin-burner/src/view/burndata.cpp:91 +msgid "Go Forward" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:123 +#: kylin-burner-dev/src/view/burndata.cpp:123 +#: kylin-burner-pangux/src/view/burndata.cpp:101 +#: kylin-burner/src/view/burndata.cpp:112 +msgid "Add" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:136 +#: kylin-burner-64/src/view/burndata.cpp:562 +#: kylin-burner-64/src/view/burndata.cpp:945 +#: kylin-burner-64/src/view/tipschange.cpp:61 +#: kylin-burner-64/src/view/tipschange.cpp:67 +#: kylin-burner-64/src/view/tipschange.cpp:73 +#: kylin-burner-dev/src/view/burndata.cpp:136 +#: kylin-burner-dev/src/view/burndata.cpp:562 +#: kylin-burner-dev/src/view/burndata.cpp:945 +#: kylin-burner-dev/src/view/tipschange.cpp:61 +#: kylin-burner-dev/src/view/tipschange.cpp:67 +#: kylin-burner-dev/src/view/tipschange.cpp:73 +#: kylin-burner-pangux/src/view/burndata.cpp:113 +#: kylin-burner-pangux/src/view/burndata.cpp:538 +#: kylin-burner-pangux/src/view/burndata.cpp:916 +#: kylin-burner-pangux/src/view/tipschange.cpp:61 +#: kylin-burner-pangux/src/view/tipschange.cpp:67 +#: kylin-burner-pangux/src/view/tipschange.cpp:73 +#: kylin-burner/src/view/burndata.cpp:125 +#: kylin-burner/src/view/burndata.cpp:550 +#: kylin-burner/src/view/burndata.cpp:974 +#: kylin-burner/src/view/tipschange.cpp:73 +#: kylin-burner/src/view/tipschange.cpp:79 +#: kylin-burner/src/view/tipschange.cpp:85 +msgid "Delete" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:144 +#: kylin-burner-64/src/view/burndata.cpp:964 +#: kylin-burner-dev/src/view/burndata.cpp:144 +#: kylin-burner-dev/src/view/burndata.cpp:964 +#: kylin-burner-pangux/src/view/burndata.cpp:121 +#: kylin-burner-pangux/src/view/burndata.cpp:949 +#: kylin-burner/src/view/burndata.cpp:133 +#: kylin-burner/src/view/burndata.cpp:993 +msgid "Clean" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:165 +#: kylin-burner-dev/src/view/burndata.cpp:165 +#: kylin-burner-pangux/src/view/burndata.cpp:141 +#: kylin-burner/src/view/burndata.cpp:150 +msgid "Welcome to use KylinBurner." +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:178 +#: kylin-burner-dev/src/view/burndata.cpp:178 +#: kylin-burner-pangux/src/view/burndata.cpp:154 +#: kylin-burner/src/view/burndata.cpp:163 +msgid "ProjectSize:" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:180 +#: kylin-burner-dev/src/view/burndata.cpp:180 +#: kylin-burner-pangux/src/view/burndata.cpp:156 +#: kylin-burner/src/view/burndata.cpp:164 +msgid "0.00 MB" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:192 +#: kylin-burner-dev/src/view/burndata.cpp:192 +#: kylin-burner-pangux/src/view/burndata.cpp:167 +#: kylin-burner/src/view/burndata.cpp:175 +msgid "FileType" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:193 +#: kylin-burner-dev/src/view/burndata.cpp:193 +#: kylin-burner-pangux/src/view/burndata.cpp:168 +#: kylin-burner/src/view/burndata.cpp:176 +msgid "FileSize" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:194 +#: kylin-burner-64/src/view/viewfilterfiles.cpp:288 +#: kylin-burner-dev/src/view/burndata.cpp:194 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:288 +#: kylin-burner-pangux/src/view/burndata.cpp:169 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:333 +#: kylin-burner/src/view/burndata.cpp:177 +#: kylin-burner/src/view/viewfilterfiles.cpp:304 +msgid "FilePath" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:195 +#: kylin-burner-64/src/view/viewfilterfiles.cpp:289 +#: kylin-burner-dev/src/view/burndata.cpp:195 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:289 +#: kylin-burner-pangux/src/view/burndata.cpp:170 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:334 +#: kylin-burner/src/view/burndata.cpp:178 +#: kylin-burner/src/view/viewfilterfiles.cpp:305 +msgid "FileTime" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:363 +#: kylin-burner-dev/src/view/burndata.cpp:363 +#: kylin-burner-pangux/src/view/burndata.cpp:319 +#: kylin-burner/src/view/burndata.cpp:349 +#, qt-format +msgid "Selected %1 files of total %2 files" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:366 +#: kylin-burner-dev/src/view/burndata.cpp:366 +#: kylin-burner-pangux/src/view/burndata.cpp:322 +#: kylin-burner/src/view/burndata.cpp:352 +#, qt-format +msgid "Selected %1 file of total %2 file(s)" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:559 +#: kylin-burner-dev/src/view/burndata.cpp:559 +#: kylin-burner-pangux/src/view/burndata.cpp:535 +#: kylin-burner/src/view/burndata.cpp:547 +msgid "Open" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:560 +#: kylin-burner-dev/src/view/burndata.cpp:560 +#: kylin-burner-pangux/src/view/burndata.cpp:536 +#: kylin-burner/src/view/burndata.cpp:548 +msgid "OpenInLocal" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:564 +#: kylin-burner-dev/src/view/burndata.cpp:564 +#: kylin-burner-pangux/src/view/burndata.cpp:540 +#: kylin-burner/src/view/burndata.cpp:552 +msgid "Properties" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:674 +#: kylin-burner-64/src/view/burndata.cpp:748 +#: kylin-burner-dev/src/view/burndata.cpp:674 +#: kylin-burner-dev/src/view/burndata.cpp:748 +#: kylin-burner-pangux/src/view/burndata.cpp:650 +#: kylin-burner-pangux/src/view/burndata.cpp:700 +#: kylin-burner/src/view/burndata.cpp:662 +#: kylin-burner/src/view/burndata.cpp:736 +msgid "All files" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:776 +#: kylin-burner-dev/src/view/burndata.cpp:776 +#: kylin-burner-pangux/src/view/burndata.cpp:723 +#: kylin-burner/src/view/burndata.cpp:805 +msgid "" +"Click the \"+\" icon\n" +"Or drag the files here to add the files" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:945 +#: kylin-burner-dev/src/view/burndata.cpp:945 +#: kylin-burner-pangux/src/view/burndata.cpp:916 +#: kylin-burner/src/view/burndata.cpp:974 +msgid "Delete file(s) selected?" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:964 +#: kylin-burner-dev/src/view/burndata.cpp:964 +#: kylin-burner-pangux/src/view/burndata.cpp:949 +#: kylin-burner/src/view/burndata.cpp:993 +msgid "Clean all files(s)?" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:1002 +#: kylin-burner-dev/src/view/burndata.cpp:1002 +#: kylin-burner-pangux/src/view/burndata.cpp:975 +#: kylin-burner/src/view/burndata.cpp:1031 +msgid "Please input new folder name" +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:1009 +#: kylin-burner-dev/src/view/burndata.cpp:1009 +#: kylin-burner-pangux/src/view/burndata.cpp:982 +#: kylin-burner/src/view/burndata.cpp:1038 +msgid "New Folder cannot be named with empty." +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:1015 +#: kylin-burner-dev/src/view/burndata.cpp:1015 +#: kylin-burner-pangux/src/view/burndata.cpp:988 +#: kylin-burner/src/view/burndata.cpp:1044 +msgid "New Folder cannot be named with /." +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:1023 +#: kylin-burner-dev/src/view/burndata.cpp:1023 +#: kylin-burner-pangux/src/view/burndata.cpp:995 +#: kylin-burner/src/view/burndata.cpp:1052 +msgid "Need less than 103 unicode charset for naming new folder." +msgstr "" + +#: kylin-burner-64/src/view/burndata.cpp:1029 +#: kylin-burner-dev/src/view/burndata.cpp:1029 +#: kylin-burner-pangux/src/view/burndata.cpp:1001 +#: kylin-burner/src/view/burndata.cpp:1058 +#, qt-format +msgid "There is a item named by %1" +msgstr "" + +#: kylin-burner-64/src/view/burnimage.cpp:35 +#: kylin-burner-64/src/view/mainwindow.cpp:201 +#: kylin-burner-64/src/view/mainwindow.cpp:202 +#: kylin-burner-64/src/view/mainwindow.cpp:440 +#: kylin-burner-64/src/view/mainwindow.cpp:1017 +#: kylin-burner-dev/src/view/burnimage.cpp:35 +#: kylin-burner-dev/src/view/mainwindow.cpp:201 +#: kylin-burner-dev/src/view/mainwindow.cpp:202 +#: kylin-burner-dev/src/view/mainwindow.cpp:440 +#: kylin-burner-dev/src/view/mainwindow.cpp:1016 +#: kylin-burner-pangux/src/view/burnimage.cpp:35 +#: kylin-burner-pangux/src/view/mainwindow.cpp:215 +#: kylin-burner-pangux/src/view/mainwindow.cpp:216 +#: kylin-burner-pangux/src/view/mainwindow.cpp:460 +#: kylin-burner-pangux/src/view/mainwindow.cpp:1023 +#: kylin-burner/src/view/burnimage.cpp:30 +#: kylin-burner/src/view/mainwindow.cpp:416 +#: kylin-burner/src/view/mainwindow.cpp:991 +msgid "BurnImage" +msgstr "" + +#: kylin-burner-64/src/view/burnimage.cpp:48 +#: kylin-burner-64/src/view/busnesssetting.cpp:408 +#: kylin-burner-64/src/view/busnesssetting.cpp:494 +#: kylin-burner-64/src/view/diskcheck.cpp:42 +#: kylin-burner-64/src/view/mainwindow.cpp:504 +#: kylin-burner-dev/src/view/burnimage.cpp:48 +#: kylin-burner-dev/src/view/busnesssetting.cpp:277 +#: kylin-burner-dev/src/view/busnesssetting.cpp:355 +#: kylin-burner-dev/src/view/diskcheck.cpp:42 +#: kylin-burner-dev/src/view/mainwindow.cpp:504 +#: kylin-burner-pangux/src/view/burnimage.cpp:48 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:398 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:484 +#: kylin-burner-pangux/src/view/diskcheck.cpp:42 +#: kylin-burner-pangux/src/view/mainwindow.cpp:526 +#: kylin-burner/src/view/burnimage.cpp:40 +#: kylin-burner/src/view/busnesssetting.cpp:296 +#: kylin-burner/src/view/busnesssetting.cpp:372 +#: kylin-burner/src/view/diskcheck.cpp:22 +#: kylin-burner/src/view/mainwindow.cpp:480 +msgid "Browse" +msgstr "" + +#: kylin-burner-64/src/view/burnimage.cpp:53 +#: kylin-burner-dev/src/view/burnimage.cpp:53 +#: kylin-burner-pangux/src/view/burnimage.cpp:53 +#: kylin-burner/src/view/burnimage.cpp:46 +msgid "Please select ISO file which will to be burned" +msgstr "" + +#: kylin-burner-64/src/view/burnimage.cpp:55 +#: kylin-burner-dev/src/view/burnimage.cpp:55 +#: kylin-burner-pangux/src/view/burnimage.cpp:55 +#: kylin-burner/src/view/burnimage.cpp:48 +msgid "Please select burner which will burned to" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:40 +#: kylin-burner-dev/src/view/busnesssetting.cpp:40 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:40 +#: kylin-burner/src/view/busnesssetting.cpp:30 +msgid "Copyright" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:42 +#: kylin-burner-dev/src/view/busnesssetting.cpp:42 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:42 +#: kylin-burner/src/view/busnesssetting.cpp:32 +msgid "Preparer" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:44 +#: kylin-burner-dev/src/view/busnesssetting.cpp:44 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:44 +#: kylin-burner/src/view/busnesssetting.cpp:34 +msgid "Publisher" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:46 +#: kylin-burner-64/src/view/busnesssetting.cpp:122 +#: kylin-burner-dev/src/view/busnesssetting.cpp:46 +#: kylin-burner-dev/src/view/busnesssetting.cpp:122 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:46 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:112 +#: kylin-burner/src/view/busnesssetting.cpp:36 +#: kylin-burner/src/view/busnesssetting.cpp:108 +msgid "VoumnID" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:48 +#: kylin-burner-dev/src/view/busnesssetting.cpp:48 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:48 +#: kylin-burner/src/view/busnesssetting.cpp:38 +msgid "Temporary File" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:50 +#: kylin-burner-dev/src/view/busnesssetting.cpp:50 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:50 +#: kylin-burner/src/view/busnesssetting.cpp:40 +msgid "Burn Speed" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:52 +#: kylin-burner-dev/src/view/busnesssetting.cpp:52 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:52 +#: kylin-burner/src/view/busnesssetting.cpp:42 +msgid "File System" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:62 +#: kylin-burner-dev/src/view/busnesssetting.cpp:62 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:62 +#: kylin-burner/src/view/busnesssetting.cpp:45 +msgid "Close session" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:66 +#: kylin-burner-dev/src/view/busnesssetting.cpp:66 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:66 +#: kylin-burner/src/view/busnesssetting.cpp:49 +msgid "Data Verfication" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:117 +#: kylin-burner-dev/src/view/busnesssetting.cpp:117 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:107 +#: kylin-burner/src/view/busnesssetting.cpp:103 +msgid "Medium Name" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:121 +#: kylin-burner-dev/src/view/busnesssetting.cpp:121 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:111 +#: kylin-burner/src/view/busnesssetting.cpp:107 +msgid "ISO info" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:229 +#: kylin-burner-64/src/view/busnesssetting.cpp:230 +#: kylin-burner-dev/src/view/busnesssetting.cpp:218 +#: kylin-burner-dev/src/view/busnesssetting.cpp:219 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:219 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:220 +#: kylin-burner/src/view/busnesssetting.cpp:206 +#: kylin-burner/src/view/busnesssetting.cpp:207 +msgid "BurnSetting" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:251 +#: kylin-burner-64/src/view/busnesssetting.cpp:252 +#: kylin-burner-dev/src/view/busnesssetting.cpp:234 +#: kylin-burner-dev/src/view/busnesssetting.cpp:235 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:241 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:242 +#: kylin-burner/src/view/busnesssetting.cpp:221 +#: kylin-burner/src/view/busnesssetting.cpp:222 +msgid "ISOSetting" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:420 +#: kylin-burner-64/src/view/mainwindow.cpp:714 +#: kylin-burner-dev/src/view/busnesssetting.cpp:289 +#: kylin-burner-dev/src/view/mainwindow.cpp:714 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:410 +#: kylin-burner-pangux/src/view/mainwindow.cpp:720 +#: kylin-burner/src/view/busnesssetting.cpp:308 +msgid "Invalid path" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:421 +#: kylin-burner-dev/src/view/busnesssetting.cpp:290 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:411 +#: kylin-burner/src/view/busnesssetting.cpp:309 +#, qt-format +msgid "Cannot choose a read only path %1 to temporary path" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:504 +#: kylin-burner-dev/src/view/busnesssetting.cpp:365 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:494 +#: kylin-burner/src/view/busnesssetting.cpp:382 +msgid "Please select a path" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:523 +#: kylin-burner-dev/src/view/busnesssetting.cpp:384 +#: kylin-burner-pangux/src/view/busnesssetting.cpp:513 +#: kylin-burner/src/view/busnesssetting.cpp:423 +msgid "Name is longer than 32 characters" +msgstr "" + +#: kylin-burner-64/src/view/busnesssetting.cpp:541 +#: kylin-burner-dev/src/view/busnesssetting.cpp:402 +#: kylin-burner/src/view/busnesssetting.cpp:441 +msgid "Content is longer than 37 characters" +msgstr "" + +#: kylin-burner-64/src/view/copyimage.cpp:30 +#: kylin-burner-64/src/view/mainwindow.cpp:208 +#: kylin-burner-64/src/view/mainwindow.cpp:209 +#: kylin-burner-64/src/view/mainwindow.cpp:1018 +#: kylin-burner-dev/src/view/copyimage.cpp:30 +#: kylin-burner-dev/src/view/mainwindow.cpp:208 +#: kylin-burner-dev/src/view/mainwindow.cpp:209 +#: kylin-burner-dev/src/view/mainwindow.cpp:1017 +#: kylin-burner-pangux/src/view/copyimage.cpp:30 +#: kylin-burner-pangux/src/view/mainwindow.cpp:222 +#: kylin-burner-pangux/src/view/mainwindow.cpp:223 +#: kylin-burner-pangux/src/view/mainwindow.cpp:1024 +#: kylin-burner/src/view/copyimage.cpp:26 +#: kylin-burner/src/view/mainwindow.cpp:992 +msgid "CopyDisk" +msgstr "" + +#: kylin-burner-64/src/view/copyimage.cpp:46 +#: kylin-burner-64/src/view/copyimage.cpp:286 +#: kylin-burner-dev/src/view/copyimage.cpp:46 +#: kylin-burner-dev/src/view/copyimage.cpp:286 +#: kylin-burner-pangux/src/view/copyimage.cpp:46 +#: kylin-burner-pangux/src/view/copyimage.cpp:286 +#: kylin-burner/src/view/copyimage.cpp:30 +#: kylin-burner/src/view/copyimage.cpp:293 +msgid "SelectPath" +msgstr "" + +#: kylin-burner-64/src/view/copyimage.cpp:49 +#: kylin-burner-dev/src/view/copyimage.cpp:49 +#: kylin-burner-pangux/src/view/copyimage.cpp:49 +#: kylin-burner/src/view/copyimage.cpp:31 +msgid "Please select disk which to be copied" +msgstr "" + +#: kylin-burner-64/src/view/copyimage.cpp:51 +#: kylin-burner-dev/src/view/copyimage.cpp:51 +#: kylin-burner-pangux/src/view/copyimage.cpp:51 +#: kylin-burner/src/view/copyimage.cpp:32 +msgid "Please select the image/disk you want to write" +msgstr "" + +#: kylin-burner-64/src/view/copyimage.cpp:259 +#: kylin-burner-dev/src/view/copyimage.cpp:259 +#: kylin-burner-pangux/src/view/copyimage.cpp:259 +#: kylin-burner/src/view/copyimage.cpp:240 +msgid "Browse ISO Path" +msgstr "" + +#: kylin-burner-64/src/view/copyimage.cpp:259 +#: kylin-burner-dev/src/view/copyimage.cpp:259 +#: kylin-burner-pangux/src/view/copyimage.cpp:259 +#: kylin-burner/src/view/copyimage.cpp:240 +#, qt-format +msgid "Path %1 owner have no write permission." +msgstr "" + +#: kylin-burner-64/src/view/diskcheck.cpp:40 +#: kylin-burner-dev/src/view/diskcheck.cpp:40 +#: kylin-burner-pangux/src/view/diskcheck.cpp:40 +#: kylin-burner/src/view/diskcheck.cpp:20 +msgid "Select a disc" +msgstr "" + +#: kylin-burner-64/src/view/diskcheck.cpp:41 +#: kylin-burner-dev/src/view/diskcheck.cpp:41 +#: kylin-burner-pangux/src/view/diskcheck.cpp:41 +#: kylin-burner/src/view/diskcheck.cpp:21 +msgid "Check the disc using the MD5 file" +msgstr "" + +#: kylin-burner-64/src/view/diskcheck.cpp:69 +#: kylin-burner-64/src/view/diskcheck.cpp:95 +#: kylin-burner-dev/src/view/diskcheck.cpp:69 +#: kylin-burner-dev/src/view/diskcheck.cpp:95 +#: kylin-burner-pangux/src/view/diskcheck.cpp:67 +#: kylin-burner-pangux/src/view/diskcheck.cpp:93 +#: kylin-burner/src/view/diskcheck.cpp:75 +#: kylin-burner/src/view/diskcheck.cpp:101 +msgid "Non md5sum.txt in the current Disk;Verification is not supported" +msgstr "" + +#: kylin-burner-64/src/view/filefilterrules.cpp:45 +#: kylin-burner-dev/src/view/filefilterrules.cpp:45 +#: kylin-burner-pangux/src/view/filefilterrules.cpp:42 +#: kylin-burner/src/view/filefilterrules.cpp:40 +msgid "FileFilterRules" +msgstr "" + +#: kylin-burner-64/src/view/filefilterrules.cpp:52 +#: kylin-burner-dev/src/view/filefilterrules.cpp:52 +#: kylin-burner-pangux/src/view/filefilterrules.cpp:48 +#: kylin-burner/src/view/filefilterrules.cpp:42 +msgid "Filter hidden file(s)." +msgstr "" + +#: kylin-burner-64/src/view/filefilterrules.cpp:55 +#: kylin-burner-dev/src/view/filefilterrules.cpp:55 +#: kylin-burner-pangux/src/view/filefilterrules.cpp:50 +#: kylin-burner/src/view/filefilterrules.cpp:43 +msgid "Filter broken symbol links." +msgstr "" + +#: kylin-burner-64/src/view/filefilterrules.cpp:58 +#: kylin-burner-dev/src/view/filefilterrules.cpp:58 +#: kylin-burner-pangux/src/view/filefilterrules.cpp:52 +#: kylin-burner/src/view/filefilterrules.cpp:44 +msgid "Repleace symbol link file(s)." +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:95 +#: kylin-burner-dev/src/view/mainwindow.cpp:95 +#: kylin-burner-pangux/src/view/mainwindow.cpp:93 +#: kylin-burner/src/view/mainwindow.cpp:94 +msgid "MainWindow" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:227 +#: kylin-burner-dev/src/view/mainwindow.cpp:227 +#: kylin-burner-pangux/src/view/mainwindow.cpp:241 +#: kylin-burner/src/view/mainwindow.cpp:200 +msgid "BurnerName" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:228 +#: kylin-burner-dev/src/view/mainwindow.cpp:228 +#: kylin-burner-pangux/src/view/mainwindow.cpp:242 +#: kylin-burner/src/view/mainwindow.cpp:201 +msgid "DiskName" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:229 +#: kylin-burner-dev/src/view/mainwindow.cpp:229 +#: kylin-burner-pangux/src/view/mainwindow.cpp:246 +#: kylin-burner/src/view/mainwindow.cpp:202 +msgid "Loaded over" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:388 +#: kylin-burner-dev/src/view/mainwindow.cpp:388 +#: kylin-burner-pangux/src/view/mainwindow.cpp:395 +#: kylin-burner/src/view/mainwindow.cpp:367 +msgid "kylin-burner process already exists" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:396 +#: kylin-burner-dev/src/view/mainwindow.cpp:396 +#: kylin-burner-pangux/src/view/mainwindow.cpp:403 +msgid "The minimized main screen is displayed" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:404 +#: kylin-burner-dev/src/view/mainwindow.cpp:404 +#: kylin-burner-pangux/src/view/mainwindow.cpp:411 +msgid "The MainWindow is set to the topmost window" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:411 +#: kylin-burner-dev/src/view/mainwindow.cpp:411 +#: kylin-burner-pangux/src/view/mainwindow.cpp:418 +msgid "The MainWindow is topmost windows" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:418 +#: kylin-burner-dev/src/view/mainwindow.cpp:418 +#: kylin-burner-pangux/src/view/mainwindow.cpp:438 +#: kylin-burner/src/view/mainwindow.cpp:371 +msgid "New kylin-burner process exit" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:474 +#: kylin-burner-64/src/view/mainwindow.cpp:579 +#: kylin-burner-64/src/view/mainwindow.cpp:786 +#: kylin-burner-dev/src/view/mainwindow.cpp:474 +#: kylin-burner-dev/src/view/mainwindow.cpp:579 +#: kylin-burner-dev/src/view/mainwindow.cpp:786 +#: kylin-burner-pangux/src/view/mainwindow.cpp:495 +#: kylin-burner-pangux/src/view/mainwindow.cpp:589 +#: kylin-burner-pangux/src/view/mainwindow.cpp:792 +#: kylin-burner/src/view/mainwindow.cpp:450 +#: kylin-burner/src/view/mainwindow.cpp:563 +#: kylin-burner/src/view/mainwindow.cpp:762 +msgid "BurnUDFData" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:488 +#: kylin-burner-64/src/view/mainwindow.cpp:594 +#: kylin-burner-64/src/view/mainwindow.cpp:800 +#: kylin-burner-dev/src/view/mainwindow.cpp:488 +#: kylin-burner-dev/src/view/mainwindow.cpp:594 +#: kylin-burner-dev/src/view/mainwindow.cpp:800 +#: kylin-burner-pangux/src/view/mainwindow.cpp:509 +#: kylin-burner-pangux/src/view/mainwindow.cpp:605 +#: kylin-burner-pangux/src/view/mainwindow.cpp:806 +#: kylin-burner/src/view/mainwindow.cpp:464 +#: kylin-burner/src/view/mainwindow.cpp:578 +#: kylin-burner/src/view/mainwindow.cpp:776 +msgid "AppendBurn" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:492 +#: kylin-burner-64/src/view/mainwindow.cpp:601 +#: kylin-burner-64/src/view/mainwindow.cpp:804 +#: kylin-burner-dev/src/view/mainwindow.cpp:492 +#: kylin-burner-dev/src/view/mainwindow.cpp:601 +#: kylin-burner-dev/src/view/mainwindow.cpp:804 +#: kylin-burner-pangux/src/view/mainwindow.cpp:513 +#: kylin-burner-pangux/src/view/mainwindow.cpp:612 +#: kylin-burner-pangux/src/view/mainwindow.cpp:810 +#: kylin-burner/src/view/mainwindow.cpp:468 +#: kylin-burner/src/view/mainwindow.cpp:585 +#: kylin-burner/src/view/mainwindow.cpp:780 +msgid "DonotBurn" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:499 +#: kylin-burner-64/src/view/mainwindow.cpp:609 +#: kylin-burner-64/src/view/mainwindow.cpp:811 +#: kylin-burner-dev/src/view/mainwindow.cpp:499 +#: kylin-burner-dev/src/view/mainwindow.cpp:609 +#: kylin-burner-dev/src/view/mainwindow.cpp:811 +#: kylin-burner-pangux/src/view/mainwindow.cpp:520 +#: kylin-burner-pangux/src/view/mainwindow.cpp:620 +#: kylin-burner-pangux/src/view/mainwindow.cpp:817 +#: kylin-burner/src/view/mainwindow.cpp:475 +#: kylin-burner/src/view/mainwindow.cpp:593 +#: kylin-burner/src/view/mainwindow.cpp:787 +msgid "cdrom->getBurnFormat() == [NULL]" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:633 +#: kylin-burner-dev/src/view/mainwindow.cpp:633 +#: kylin-burner-pangux/src/view/mainwindow.cpp:641 +#: kylin-burner/src/view/mainwindow.cpp:617 +#, qt-format +msgid "Delete item %1 of total %2" +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:643 +#: kylin-burner-dev/src/view/mainwindow.cpp:643 +#: kylin-burner-pangux/src/view/mainwindow.cpp:651 +#: kylin-burner/src/view/mainwindow.cpp:627 +msgid "Remove CDROM from burn data." +msgstr "" + +#: kylin-burner-64/src/view/mainwindow.cpp:715 +#: kylin-burner-dev/src/view/mainwindow.cpp:715 +#: kylin-burner-pangux/src/view/mainwindow.cpp:721 +#, qt-format +msgid "Cannot choose a read only path %1 to storage path" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:27 +#: kylin-burner-dev/src/view/settingdatas.cpp:27 +#: kylin-burner-pangux/src/view/settingdatas.cpp:27 +#: kylin-burner/src/view/settingdatas.cpp:16 +msgid "Add Data" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:31 +#: kylin-burner-64/src/view/settingdatas.cpp:42 +#: kylin-burner-64/src/view/settingdatas.cpp:53 +#: kylin-burner-dev/src/view/settingdatas.cpp:31 +#: kylin-burner-dev/src/view/settingdatas.cpp:42 +#: kylin-burner-dev/src/view/settingdatas.cpp:53 +#: kylin-burner-pangux/src/view/settingdatas.cpp:31 +#: kylin-burner-pangux/src/view/settingdatas.cpp:42 +#: kylin-burner-pangux/src/view/settingdatas.cpp:53 +#: kylin-burner/src/view/settingdatas.cpp:18 +#: kylin-burner/src/view/settingdatas.cpp:29 +#: kylin-burner/src/view/settingdatas.cpp:40 +msgid "All" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:33 +#: kylin-burner-64/src/view/settingdatas.cpp:44 +#: kylin-burner-64/src/view/settingdatas.cpp:55 +#: kylin-burner-dev/src/view/settingdatas.cpp:33 +#: kylin-burner-dev/src/view/settingdatas.cpp:44 +#: kylin-burner-dev/src/view/settingdatas.cpp:55 +#: kylin-burner-pangux/src/view/settingdatas.cpp:33 +#: kylin-burner-pangux/src/view/settingdatas.cpp:44 +#: kylin-burner-pangux/src/view/settingdatas.cpp:55 +#: kylin-burner/src/view/settingdatas.cpp:20 +#: kylin-burner/src/view/settingdatas.cpp:31 +#: kylin-burner/src/view/settingdatas.cpp:42 +msgid "Current" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:40 +#: kylin-burner-dev/src/view/settingdatas.cpp:40 +#: kylin-burner-pangux/src/view/settingdatas.cpp:40 +#: kylin-burner/src/view/settingdatas.cpp:27 +msgid "Delete Data" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:51 +#: kylin-burner-dev/src/view/settingdatas.cpp:51 +#: kylin-burner-pangux/src/view/settingdatas.cpp:51 +#: kylin-burner/src/view/settingdatas.cpp:38 +msgid "Clean Data" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:63 +#: kylin-burner-dev/src/view/settingdatas.cpp:63 +#: kylin-burner-pangux/src/view/settingdatas.cpp:63 +#: kylin-burner/src/view/settingdatas.cpp:50 +msgid "Duplicate Data" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:67 +#: kylin-burner-dev/src/view/settingdatas.cpp:67 +#: kylin-burner-pangux/src/view/settingdatas.cpp:67 +#: kylin-burner/src/view/settingdatas.cpp:52 +msgid "Add Suffix" +msgstr "" + +#: kylin-burner-64/src/view/settingdatas.cpp:69 +#: kylin-burner-dev/src/view/settingdatas.cpp:69 +#: kylin-burner-pangux/src/view/settingdatas.cpp:69 +#: kylin-burner/src/view/settingdatas.cpp:53 +msgid "Replace" +msgstr "" + +#: kylin-burner-64/src/view/tips.cpp:34 kylin-burner-64/src/view/tips.cpp:50 +#: kylin-burner-64/src/view/tips.cpp:69 kylin-burner-dev/src/view/tips.cpp:34 +#: kylin-burner-dev/src/view/tips.cpp:50 kylin-burner-dev/src/view/tips.cpp:69 +#: kylin-burner-pangux/src/view/tips.cpp:34 +#: kylin-burner-pangux/src/view/tips.cpp:50 +#: kylin-burner-pangux/src/view/tips.cpp:69 kylin-burner/src/view/tips.cpp:31 +#: kylin-burner/src/view/tips.cpp:40 kylin-burner/src/view/tips.cpp:65 +msgid "Donot show agian." +msgstr "" + +#: kylin-burner-64/src/view/viewfilterfiles.cpp:188 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:188 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:227 +#: kylin-burner/src/view/viewfilterfiles.cpp:204 +msgid "ViewFilterFile(s)" +msgstr "" + +#: kylin-burner-64/src/view/viewfilterfiles.cpp:191 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:191 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:230 +#: kylin-burner/src/view/viewfilterfiles.cpp:207 +msgid "FilterOptionSetting" +msgstr "" + +#: kylin-burner-64/src/view/viewfilterfiles.cpp:192 +#: kylin-burner-dev/src/view/viewfilterfiles.cpp:192 +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:231 +#: kylin-burner/src/view/viewfilterfiles.cpp:208 +msgid "RecoverAll" +msgstr "" + +#: kylin-burner-64/src/view/windowtitle.cpp:48 +#: kylin-burner-dev/src/view/windowtitle.cpp:48 +#: kylin-burner-pangux/src/view/windowtitle.cpp:48 +#: kylin-burner/src/view/windowtitle.cpp:27 +msgid "Min" +msgstr "" + +#: kylin-burner-64/src/view/windowtitle.cpp:50 +#: kylin-burner-64/src/view/windowtitle.cpp:140 +#: kylin-burner-dev/src/view/windowtitle.cpp:50 +#: kylin-burner-dev/src/view/windowtitle.cpp:140 +#: kylin-burner-pangux/src/view/windowtitle.cpp:50 +#: kylin-burner-pangux/src/view/windowtitle.cpp:144 +#: kylin-burner/src/view/windowtitle.cpp:29 +#: kylin-burner/src/view/windowtitle.cpp:130 +msgid "Max" +msgstr "" + +#: kylin-burner-64/src/view/windowtitle.cpp:52 +#: kylin-burner-dev/src/view/windowtitle.cpp:52 +#: kylin-burner-pangux/src/view/windowtitle.cpp:52 +#: kylin-burner/src/view/windowtitle.cpp:31 +msgid "Options" +msgstr "" + +#: kylin-burner-64/src/view/windowtitle.cpp:134 +#: kylin-burner-dev/src/view/windowtitle.cpp:134 +#: kylin-burner-pangux/src/view/windowtitle.cpp:136 +#: kylin-burner/src/view/windowtitle.cpp:124 +msgid "Restore" +msgstr "" + +#: kylin-burner-pangux/src/model/logicmain.cpp:64 +msgid "Cannot find help document." +msgstr "" + +#: kylin-burner-pangux/src/model/logicmain.cpp:240 +#, qt-format +msgid "Change CDROM, block name is %1" +msgstr "" + +#: kylin-burner-pangux/src/model/logicmain.cpp:269 +#: kylin-burner-pangux/src/model/logicmain.cpp:366 +#, qt-format +msgid "Change CDROM %1" +msgstr "" + +#: kylin-burner-pangux/src/model/logicmain.cpp:290 +#: kylin-burner-pangux/src/model/logicmain.cpp:408 +#, qt-format +msgid "There is no medium in CDROM %1" +msgstr "" + +#: kylin-burner-pangux/src/process/processburndata.cpp:524 +msgid "DVD+R DL medium is burning..." +msgstr "" + +#: kylin-burner-pangux/src/process/processburndata.cpp:606 +#: kylin-burner/src/process/processburnudfdata.cpp:350 +#, qt-format +msgid "Exit code is %1, status : %2, m_oKeep : %3" +msgstr "" + +#: kylin-burner-pangux/src/view/mainwindow.cpp:102 +msgid "Burner has started..." +msgstr "" + +#: kylin-burner-pangux/src/view/mainwindow.cpp:103 +msgid "Starting" +msgstr "" + +#: kylin-burner-pangux/src/view/mainwindow.cpp:103 +msgid "Burner has been started,do not start again." +msgstr "" + +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:128 +msgid "Recovery all" +msgstr "" + +#: kylin-burner-pangux/src/view/viewfilterfiles.cpp:132 +msgid "Recovery selected" +msgstr "" + +#: kylin-burner-pangux/src/view/windowtitle.cpp:82 +msgid "Geting Menu is NULL , click menu is null" +msgstr "" + +#: kylin-burner/src/model/logicburndata.cpp:1617 +msgid "" +"The available space of the current temporary path is insufficient. Please re-" +"select the temporary path!" +msgstr "" + +#: kylin-burner/src/process/processburndata.cpp:563 +msgid "Not allowed when the disc data exceeds 4GB after burning data." +msgstr "" + +#: kylin-burner/src/process/processburnudfdata.cpp:285 +#, qt-format +msgid "ProcessBurnUDFData %1" +msgstr "" + +#: kylin-burner/src/process/processburnudfdata.cpp:369 +#, qt-format +msgid "m_icountBurn : %3" +msgstr "" diff -Nru kylin-burner-3.2.0.1kylin1k32.01/ProjectGroup.cmake kylin-burner-3.2.0.1kylin1k32.01/ProjectGroup.cmake --- kylin-burner-3.2.0.1kylin1k32.01/ProjectGroup.cmake 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/ProjectGroup.cmake 2025-03-11 20:49:32.000000000 +0800 @@ -110,7 +110,19 @@ src/data/iso9660.h src/data/iso9660backend.cpp src/data/iso9660backend.h - src/process/processbasic.cpp + src/data/newdevicetype.cpp + src/data/newdevicetype.h + src/data/msf.cpp + src/data/msf.h + src/data/mmc.h + src/data/toc.cpp + src/data/toc.h + src/data/devicetypes.h + src/data/track.cpp + src/data/track.h + src/data/deviceglobals.cpp + src/data/deviceglobals.h + src/process/processbasic.cpp src/process/processbasic.h src/process/processearse.cpp src/process/processearse.h @@ -140,7 +152,6 @@ src/process/processburnudfdata.h src/process/processlsof.cpp src/process/processlsof.h - src/status-fix/common.h src/status-fix/discscsi.h src/status-fix/discscsi.cpp src/status-fix/discread.h @@ -280,6 +291,19 @@ src/data/iso9660.h src/data/iso9660backend.cpp src/data/iso9660backend.h + src/data/msf.cpp + src/data/msf.h + src/data/devicetypes.h + src/data/device_mmc.cpp + src/data/mmc.h + src/data/toc.cpp + src/data/toc.h + src/data/track.cpp + src/data/track.h + src/data/newdevicetype.cpp + src/data/newdevicetype.h + src/data/burndeviceutils.cpp + src/data/burndeviceutils.h ) source_group("process" FILES @@ -317,7 +341,6 @@ ) source_group("status-fix" FILES - src/status-fix/common.h src/status-fix/discscsi.h src/status-fix/discscsi.cpp src/status-fix/discread.h diff -Nru kylin-burner-3.2.0.1kylin1k32.01/debian/changelog kylin-burner-3.2.0.1kylin1k32.01/debian/changelog --- kylin-burner-3.2.0.1kylin1k32.01/debian/changelog 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/debian/changelog 2025-03-11 20:49:32.000000000 +0800 @@ -1,3 +1,54 @@ +kylin-burner (3.2.0.1kylin1k32.01-ok33) nile; urgency=medium + + * BUG: 无 + * 需求号:无 + * 其他改动说明:更新版本号 + * 其他改动影响域:无 + + -- wangchenglong <wangchenglong@kylinos.cn> Tue, 11 Mar 2025 20:49:32 +0800 + +kylin-burner (3.2.0.1kylin1k32.01-ok32) nile; urgency=medium + + * BUG: + #IA7A5E 【次要】【刻录】刻录设置-数据校验每次刻录时都需要重新设置,建议在重启应用前保留用户上一次所选的设置 + #333924 【冒烟1级】【刻录】打开刻录后,显示一条灰色区域 + #331577 【刻录】SW刻录的镜像盘校验失败且无法装机 + * 需求号:无 + * 其他改动说明:无 + * 其他改动影响域:无 + + -- wangchenglong <wangchenglong@kylinos.cn> Tue, 11 Mar 2025 20:36:40 +0800 + +kylin-burner (3.2.0.1kylin1k32.01-ok31) nile; urgency=medium + + * BUG: + #IA7CTN 【次要】【刻录】刻录设置修改刻录速度后刻录 ,提示刻录失败(实际刻录成功) + #IB3EQM 【刻录】系统语言为蒙文/繁体,开始菜单内刻录显示为英文 + * 需求号:无 + * 其他改动说明:无 + * 其他改动影响域:无 + + -- wangchenglong <wangchenglong@kylinos.cn> Thu, 27 Feb 2025 08:32:36 +0800 + +kylin-burner (3.2.0.1kylin1k32.01-ok30) nile; urgency=medium + + * BUG: + #I8WL7X 【不重要】【刻录】刻录设置、数据设置、文件过滤界面关闭按钮默认为选中态 + #I8WL9G 【wlcom】【组件UI】【次要】【刻录】改变系统字体,界面右侧字体不随系统字体变化 + #I8ZO97 【不重要】【刻录】光盘校验进度显示不准确 + #I8ZOAM 【不重要】【刻录】提示刻录成功/校验成功时,进度弹窗仍存在 + #I8ZOMN 【wlcom】【次要】【刻录】最小化后从开始菜单打开,应用窗口没有恢复显示 + #IA6TYN 【次要】【刻录】擦除光盘过程不显示进度条 + #IA7AFW 【次要】【刻录】CD光盘容量显示异常 + #IA7A67 【次要】【刻录】CD-R镜像光盘校验时,进度条始终在0%-1% + #IA7BE7 【次要】【刻录】过滤文件后恢复所有,应用闪退 + #IB2Q61 【次要】【刻录】windows格式化完成的空udf格式的光盘,刻录读取到的剩余空间显示为0b + * 需求号:无 + * 其他改动说明:无 + * 其他改动影响域:无 + + -- wangchenglong <wangchenglong@kylinos.cn> Fri, 21 Feb 2025 10:19:35 +0800 + kylin-burner (3.2.0.1kylin1k32.01-ok29) nile; urgency=medium * BUG:#287635 【刻录】鼠标悬浮在刻录图标上,缩略图显示md5校验进度缩略图且有关闭按钮 diff -Nru kylin-burner-3.2.0.1kylin1k32.01/debian/control kylin-burner-3.2.0.1kylin1k32.01/debian/control --- kylin-burner-3.2.0.1kylin1k32.01/debian/control 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/debian/control 2025-03-11 20:49:32.000000000 +0800 @@ -39,5 +39,7 @@ libkysdk-soundeffects, ${shlibs:Depends}, ${misc:Depends} Breaks:kylin-burner-i18n -Description: <insert up to 60 chars description> - <insert long description, indented with spaces> +Description: CD/DVD burning application + kylin-burner provides users with three main functions: data burning, + image burning, and data copying between discs + diff -Nru kylin-burner-3.2.0.1kylin1k32.01/debian/copyright kylin-burner-3.2.0.1kylin1k32.01/debian/copyright --- kylin-burner-3.2.0.1kylin1k32.01/debian/copyright 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/debian/copyright 2025-03-11 20:49:32.000000000 +0800 @@ -1,17 +1,50 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: kylin-burner -Upstream-Contact: <preferred name and address to reach the upstream project> -Source: <url://example.com> +Upstream-Contact: yangfeifei <yangfeifei@kylinos.cn> +Source: <https://gitlab2.kylin.com/kylinos-src/kylin-burner> Files: * -Copyright: <years> <put author's name and email here> - <years> <likewise for another author> -License: GPL-3.0+ +Copyright: 2021, KylinSoft Co., Ltd. +License: LGPL-3 Files: debian/* -Copyright: 2021 unknown <derek@unknown> +Copyright: 2021, KylinSoft Co., Ltd. License: GPL-3.0+ +Files: src/* +Copyright: 2021, KylinSoft Co., Ltd. +License: GPL-3.0+ + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +License: GPL-3+ + This software is Copyright (c) 2020 by KylinSoft Co., Ltd. + This is free software, licensed under: + The GNU General Public License, Version 3, June 2007 + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 3 dated June, 2007, or (at + your option) any later version. + On Debian systems, the complete text of version 3 of the GNU General + Public License can be found in '/usr/share/common-licenses/GPL-3'. + License: GPL-3.0+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,16 +57,19 @@ GNU General Public License for more details. . You should have received a copy of the GNU General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. + along with this program. If not, see <https://www.gnu.org/licenses/>. . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. -# Please avoid picking licenses with terms that are more restrictive than the -# packaged work, as it may make Debian's contributions unacceptable upstream. -# -# If you need, there are some extra license texts available in two places: -# /usr/share/debhelper/dh_make/licenses/ -# /usr/share/common-licenses/ +License: LGPL-3+ + This software is Copyright (c) 2020 by KylinSoft Co., Ltd. + This is free software, licensed under: + The GNU Lesser General Public License, Version 3, June 2007 + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; version 3 of the License, or (at + your option) any later version. + On Debian systems, the complete text of version 3 of the GNU Lesser + General Public License can be found in '/usr/share/common-licenses/LGPL-3' + diff -Nru kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/en_US/index.md kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/en_US/index.md --- kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/en_US/index.md 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/en_US/index.md 2025-03-11 20:49:32.000000000 +0800 @@ -166,6 +166,5 @@ | F1 | Help | | F2 | Rename | | F5 | File property | -| F10 | About | | Alt + F4 | Exit | | shift + F10| Open right-click menu | diff -Nru kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/zh_CN/index.md kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/zh_CN/index.md --- kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/zh_CN/index.md 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/kylin-burner/zh_CN/index.md 2025-03-11 20:49:32.000000000 +0800 @@ -165,7 +165,6 @@ | F1 | 帮助 | | F2 | 重命名 | | F5 | 文件属性 | -| F10 | 关于 | | Alt + F4| 退出 | | shift + F10| 展开右键菜单 | diff -Nru kylin-burner-3.2.0.1kylin1k32.01/kylin-burner.desktop kylin-burner-3.2.0.1kylin1k32.01/kylin-burner.desktop --- kylin-burner-3.2.0.1kylin1k32.01/kylin-burner.desktop 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/kylin-burner.desktop 2025-03-11 20:49:32.000000000 +0800 @@ -1,10 +1,7 @@ [Desktop Entry] Type=Application Exec=/usr/bin/kylin-burner %U -#Icon=/usr/share/k3b/pic/icon/128.png -#Icon=disk-burner Icon=burner -X-DocPath=k3b/index.html GenericName=Burner GenericName[ar]=حرق الأقراص GenericName[bg]=Запис дискове @@ -62,7 +59,9 @@ GenericName[ug_CN]=ئويماق GenericName[x-test]=xxDisk Burningxx GenericName[zh_CN]=磁盘刻录 +GenericName[zh_HK]=碟片燒錄 GenericName[zh_TW]=碟片燒錄 +GenericName[mn_MN]=ᠭᠡᠷᠡᠯ ᠫᠠᠨᠰᠠ ᠶᠢᠨ ᠰᠡᠶᠢᠯᠦᠮᠡᠯ ᠃ Comment=Disk writing program Comment[ar]=برنامج لحرق الأقراص Comment[bg]=Програма за запис на дискове @@ -120,7 +119,9 @@ Comment[uk]=Програма для запису дисків Comment[x-test]=xxDisk writing programxx Comment[zh_CN]=CD 刻录程序 +Comment[zh_HK]=碟片寫入程式 Comment[zh_TW]=碟片寫入程式 +Comment[mn_MN]=ᠭᠡᠷᠡᠯ ᠫᠷᠤᠭ᠍ᠷᠠᠮ ᠢ ᠪᠢᠴᠢᠵᠦ ᠣᠷᠣᠭᠤᠯᠪᠠ ᠃ Terminal=false Name=Burner Name[ar]=كي3بي @@ -188,7 +189,9 @@ Name[uk]=Burner Name[x-test]=xxKylin Burnerxx Name[zh_CN]=刻录 -Name[zh_TW]=Burner +Name[zh_HK]=碟片燒錄 +Name[zh_TW]=碟片燒錄 +Name[mn_MN]=ᠭᠡᠷᠡᠯ ᠫᠠᠨᠰᠠ ᠶᠢᠨ ᠰᠡᠶᠢᠯᠦᠮᠡᠯ ᠃ MimeType=application/x-k3b;application/x-iso;application/x-cd-image;application/x-cue;x-content/blank-cd;x-content/blank-dvd;x-content/blank-bd;x-content/blank-hddvd; StartupNotify=true StartupWMClass=k3b diff -Nru kylin-burner-3.2.0.1kylin1k32.01/rc/folder-visiting-symbolic-dark.svg kylin-burner-3.2.0.1kylin1k32.01/rc/folder-visiting-symbolic-dark.svg --- kylin-burner-3.2.0.1kylin1k32.01/rc/folder-visiting-symbolic-dark.svg 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/rc/folder-visiting-symbolic-dark.svg 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_1_6"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_1_6)"><g><g><path d="M12.5,14L3.5,14C2.11929,14,0.9999999403954,12.8807,1,11.5L1,4.5C0.999999821186,3.11929,2.11929,2.000000238419,3.5,2L6.5,2C7.5756,2.000816822,8.53011,2.6895160000000002,8.870000000000001,3.71C8.961649999999999,3.88553,9.14201,3.99682,9.34,4L12.5,4C13.8807,4,15,5.1192899999999995,15,6.5L15,11.5C15,12.8807,13.8807,14,12.5,14ZM3.5,3C2.67157,3,2,3.67157,2,4.5L2,11.5C2,12.3284,2.67157,13,3.5,13L12.5,13C13.3284,13,14,12.3284,14,11.5L14,6.5C14,5.67157,13.3284,5,12.5,5L9.35,5C8.73191,5.00479,8.17331,4.63239,7.94,4.0600000000000005C7.74328,3.4299,7.16009,3.00061,6.5,3L3.5,3Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></g></svg> \ No newline at end of file diff -Nru kylin-burner-3.2.0.1kylin1k32.01/rc/kylin-burner.qrc kylin-burner-3.2.0.1kylin1k32.01/rc/kylin-burner.qrc --- kylin-burner-3.2.0.1kylin1k32.01/rc/kylin-burner.qrc 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/rc/kylin-burner.qrc 2025-03-11 20:49:32.000000000 +0800 @@ -9,5 +9,6 @@ <file>kylin-burner.qrc</file> <file>newfolder.png</file> <file>folder-visiting-symbolic.svg</file> + <file>folder-visiting-symbolic-dark.svg</file> </qresource> </RCC> diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/common/utils.cpp kylin-burner-3.2.0.1kylin1k32.01/src/common/utils.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/common/utils.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/common/utils.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -12,17 +12,16 @@ if (!m_burnerVersion.isEmpty()) return m_burnerVersion; - FILE *pp = NULL; - char *line = NULL; size_t len = 0; ssize_t read; - char *q = NULL; + char *q = nullptr; QString version; - pp = popen("dpkg -l kylin-burner", "r"); - if(NULL == pp) + FILE *pp = popen("dpkg -l kylin-burner", "r"); + if(!pp) return version; + char *line = nullptr; while((read = getline(&line, &len, pp)) != -1){ q = strrchr(line, '\n'); *q = '\0'; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -52,7 +52,6 @@ m_oUsedCapacity = _("%1 B").arg(0.00); m_oFreeCapacity = _("%1 B").arg(0.00); m_oMediumName.clear(); - m_oCDROM->updateVerficationData(false); // 刚插入的光盘默认不进行校验数据 LOGGER->registerName(this, _("Medium Data<%1>").arg(m_oBlockName)); connect(MAIN, &LogicMain::exit, [=](){m_bAppRunning = false;}); @@ -71,8 +70,6 @@ m_discread = new DiscRead(blockName); - connect(m_mountPointTimer,&QTimer::destroyed,this,[&]{m_mountPointTimer = nullptr;},Qt::UniqueConnection); - connect(m_mountPointTimer, &QTimer::timeout, this, &DataMedium::slotsMountPoint,Qt::UniqueConnection); } DataMedium::DataMedium(DataMedium &other, QObject *parent) : @@ -113,6 +110,9 @@ { LOGGER->info(QString("( DataMedium::load ) Line:%1 进入函数 dev=%2").arg(__LINE__).arg(m_oBlockName)); + connect(m_mountPointTimer,&QTimer::destroyed,this,[&]{m_mountPointTimer = nullptr;},Qt::UniqueConnection); + connect(m_mountPointTimer, &QTimer::timeout, this, &DataMedium::slotsMountPoint,Qt::UniqueConnection); + if (!m_oCDROM->isOpen()) { if (!m_oCDROM->open()) { LOGGER->warn(QString("( DataCDROM::load ) device = %1 , open device faild").arg(m_oBlockName)); @@ -270,6 +270,7 @@ .arg(m_oMediumType).arg(m_oFreeCapacity); Q_EMIT g_user_signal->changeDiscStatus(); + Q_EMIT g_user_signal->sigChangeDiscDisplayInfo((void*)m_oCDROM, m_oDisplay); } void DataMedium::slotsChangeBurnFormat_CDROM() @@ -747,8 +748,6 @@ destroyMedium(); m_oMediumType.clear(); - // real cdrom, load information by block name - // 0. ready cdrom. if (isOpen()){ close(); @@ -858,6 +857,10 @@ bool DataCDROM::eject() { + if (checkUsingOfOtherApp()) { + return false; + } + #if 1 int processExitStatus, processExitCode; QString ejectOutput, device; @@ -940,14 +943,8 @@ void DataCDROM::earse() { - ProcessLsof lsofPro; - if (lsofPro.checkDevice(this)) { - const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); - if (apps.count() > 0) { - QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(this->display()).arg(lsofPro.joinProcessNames(apps)); - Tip_BurnResult::instance()->slotsWarn(errInfo); - return; - } + if (checkUsingOfOtherApp()) { + return; } if (isOpen()) { @@ -963,6 +960,25 @@ return m_bEjected; } + +/*** + * + * return: states of this datacdrom is using by other app + */ +bool DataCDROM::checkUsingOfOtherApp() +{ + ProcessLsof lsofPro; + if (lsofPro.checkDevice(this)) { + const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); + if (apps.count() > 0) { + QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(this->display()).arg(lsofPro.joinProcessNames(apps)); + Tip_BurnResult::instance()->slotsWarn(errInfo); + return true; + } + } + return false; +} + QString DataCDROM::mDisplay() { if (m_bCDROM) @@ -1093,7 +1109,7 @@ cmd[8] = length; cmd[9] = 0; // Necessary to set the proper command length - if( !cmd.transport( SCSI_READ, data, dataLen ) ) { + if( cmd.transport( TR_DIR_READ, data, dataLen ) ) { qDebug() << m_oBlockName << ": READ 10 failed!"; return false; } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.h kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/datacdrom.h 2025-03-11 20:49:32.000000000 +0800 @@ -9,18 +9,12 @@ #include <QProcess> #include <QTimer> #include <QDebug> -class DataCDROM; +class DataCDROM; class DataMedium : public QObject { Q_OBJECT Q_SIGNALS: -#if 0 - void empty(); - void appendale(); - void finished(); -#endif - // 当第一次执行m_discread->work()获取信息失败后,再执行一次 void secondGetDiscStatus(); public: @@ -83,21 +77,21 @@ void setUsedSize(unsigned long s) { m_u64UsedCapacity = s; } QString getMediumName() {return m_oMediumName;} void load(); -private: - //void load(); + +protected: void type(); void capacity(); void speed(); +protected: void EnableUDF(); -private: - QString toUnitString(unsigned long); -private slots: + QString toUnitString(unsigned long); +protected slots: void slotsChangeBurnFormat_CDROM(); void fixDiscStatus(); void slotsSecondGetDiscStatus(); //第一次获取光盘状态失败后,再次执行m_discread->work() void secondFixDiscStatus(); //检测到挂载点后,再次修正光盘状态 void slotsMountPoint(); -private: +protected: unsigned char m_u8Status; bool m_bAppRunning; bool m_bErasable; @@ -126,7 +120,7 @@ QTimer *m_mountPointTimer; }; - +class DataMedium; class DataCDROM : public QObject { Q_OBJECT @@ -166,6 +160,7 @@ int getHandle() const {return m_iHandle;} bool isCDROM() const { return m_bCDROM; } bool isEjected(); + bool checkUsingOfOtherApp(); bool isEnableUDF() const {return m_oMedium ? m_oMedium->isEnableUDF() : false ;} QString device() const { return m_oBlockName; } QString display() const { return m_oDisplay; } @@ -209,11 +204,12 @@ void close(); bool execSCSI(const unsigned char *, const int, unsigned char *, const int); bool execSCSI(int, const unsigned char *, const int, unsigned char *, const int); - bool read10( unsigned char* data, + bool read10( unsigned char* data, unsigned int dataLen, unsigned long startAdress, unsigned int length, - bool fua=false ); + bool fua=false); + void setSettingSpeed(int); void setSettingClean(bool); @@ -235,17 +231,17 @@ void changeISOPath(QString); private: void prepare(); + bool loading(); + bool checkCDROM(); +protected: QString display(QString); void support(); void checkMedium(); - bool loading(); - bool checkCDROM(); -private slots: +protected slots: void changeISOName(QString); - void slotsUpdateCDROMBurnStart(bool); //更新m_bStart状态 -private: +protected: int m_iHandle; unsigned int m_u32MediumRSupport; unsigned int m_u32MediumWSupport; @@ -254,10 +250,7 @@ bool m_bCDROM; //is cdrom bool m_bAppRunning; DataSetting *m_oSetting; - DataMedium *m_oMedium; - - QString m_oDisplay; QString m_oVendor; QString m_oProductor; @@ -272,10 +265,7 @@ Q_SIGNALS: // medium void empty(); void appendale(); void finished(); - - // setting - void volumnID(QString); void tempPath(QString); // other diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/datadirectory.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/datadirectory.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/datadirectory.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/datadirectory.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -183,9 +183,14 @@ { QScopedPointer<InputChange> changeDlg(new InputChange); - renamed = changeDlg->input(newName, _("Rename"), _("File name duplicate, need to rename:"), inputFile->display()); - if (!renamed) + renamed = changeDlg->input(newName, _("Rename"), _("File name duplicate, need to rename:"), fileInfo.fileName()); + changeDlg->setModal(true); + changeDlg->setWindowFlags(changeDlg->windowFlags() | Qt::WindowStaysOnTopHint); + + if (!renamed) { break; + } + if (newName.trimmed().isEmpty()) { ExecDialog::instance()->error(_("Add File(s)") + " - " + _("Empty Name"), @@ -566,30 +571,37 @@ { QScopedPointer<InputChange> inputDlg(new InputChange); - renamed = inputDlg->input(newName, _("Rename"), _("File name duplicate, need to rename:"),child->display()); + fileInfo.setFile(oldFile->destination()); - if (!renamed) - break; - if (newName.trimmed().isEmpty()) - { - ExecDialog::instance()->error(_("Add File(s)") + " - " + _("Empty Name"), - _("Cannot named with empty.")); - continue; - } - if (m_oHashChildren.value(newName)) - { - ExecDialog::instance()->error(_("Add File(s)") + " - " + _("Duplicate Name"), - _("There is data named %1").arg(newName)); - continue; - } - if (newName.toUtf8().size() > 103) - { - ExecDialog::instance()->error(_("Add File(s)") + " - " + _("Name Too Long"), - _("Cannot add named length more than 103 unicode charsets.")); - continue; - } - if (renamed) - break; + renamed = inputDlg->input(newName, _("Rename"), _("File name duplicate, need to rename:"), fileInfo.fileName()); + inputDlg->setModal(true); + inputDlg->setWindowFlags(inputDlg->windowFlags() | Qt::WindowStaysOnTopHint); + + if (!renamed) { + break; + } + + if (newName.trimmed().isEmpty()) + { + ExecDialog::instance()->error(_("Add File(s)") + " - " + _("Empty Name"), + _("Cannot named with empty.")); + continue; + } + if (m_oHashChildren.value(newName)) + { + ExecDialog::instance()->error(_("Add File(s)") + " - " + _("Duplicate Name"), + _("There is data named %1").arg(newName)); + continue; + } + if (newName.toUtf8().size() > 103) + { + ExecDialog::instance()->error(_("Add File(s)") + " - " + _("Name Too Long"), + _("Cannot add named length more than 103 unicode charsets.")); + continue; + } + if (renamed) { + break; + } } while (true); if (renamed) diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/datafile.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/datafile.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/datafile.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/datafile.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -61,8 +61,13 @@ QList<QString> unknownSuffixList; unknownSuffixList << "dat" << "swf" << "rmvb"; + QList<QString> audioSuffixList; + audioSuffixList << "ape" << "mmf"; + if(unknownSuffixList.contains(suffixName)){ m_oIcon = QIcon::fromTheme("video-mp4", QIcon::fromTheme("unknown")); + }else if(audioSuffixList.contains(suffixName)){ + m_oIcon = QIcon::fromTheme("audio-flac", QIcon::fromTheme("unknown")); }else{ m_oIcon = QIcon::fromTheme(type.iconName(), QIcon::fromTheme("unknown")); } @@ -311,7 +316,7 @@ disconnect(this, &DataFile::subFileChanged, oldParent, &DataDirectory::appendOrDeleteSubfile); disconnect(this, &DataFile::copied, oldParent, &DataDirectory::copied); - disconnect(oldParent, SIGNAL(update(QString)), this, SLOT(onUpdate(QString))); + disconnect(oldParent, &DataFile::update, this, &DataFile::onUpdate); disconnect(oldParent, &DataDirectory::folderHidden, this, &DataFile::slotsDoHidde); disconnect(oldParent, &DataDirectory::folderBroken, this, &DataFile::slotsDoBroken); disconnect(oldParent, &DataDirectory::folderReplaced, this, &DataFile::slotsDoRepleace); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -8,6 +8,8 @@ #include <QDebug> #include <QDir> +bool DataSetting::m_bVerficationData = false; + DataSetting::DataSetting(QObject *parent) : QObject(parent), m_iSpeed(0), @@ -16,7 +18,6 @@ m_bCloseSession(false), m_bCreateISO(false), m_bOpen(false), - m_bVerficationData(false), m_isShowBeforBurn(true) { struct passwd *pwd; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.h kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/datasetting.h 2025-03-11 20:49:32.000000000 +0800 @@ -48,7 +48,7 @@ bool m_bClean; bool m_bCreateISO; bool m_bCloseSession; - bool m_bVerficationData; + static bool m_bVerficationData; bool m_bOpen; bool m_isShowBeforBurn; QString m_oPreparer; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.cpp 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,273 @@ +#include "deviceglobals.h" + +#include <QDebug> +#include <QStringList> + + +QString Device::deviceTypeString( int t ) +{ + QStringList s; + if( t & Device::DEVICE_CD_R ) + s += QString("CD-R"); + if( t & Device::DEVICE_CD_RW ) + s += QString("CD-RW"); + if( t & Device::DEVICE_CD_ROM ) + s += QString("CD-ROM"); + if( t & Device::DEVICE_DVD_ROM ) + s += QString("DVD-ROM"); + if( t & Device::DEVICE_DVD_RAM ) + s += QString("DVD-RAM"); + if( t & Device::DEVICE_DVD_R ) + s += QString("DVD-R"); + if( t & Device::DEVICE_DVD_RW ) + s += QString("DVD-RW"); + if( t & Device::DEVICE_DVD_R_DL ) + s += QString("DVD-R DL"); + if( t & Device::DEVICE_HD_DVD_ROM ) + s += QString("HD DVD-ROM"); + if( t & Device::DEVICE_HD_DVD_R ) + s += QString("HD DVD-R"); + if( t & Device::DEVICE_HD_DVD_RAM ) + s += QString("HD DVD-RAM"); + if( t & Device::DEVICE_BD_ROM ) + s += QString("BD-ROM"); + if( t & Device::DEVICE_BD_R ) + s += QString("BD-R"); + if( t & Device::DEVICE_BD_RE ) + s += QString("BD-RE"); + if( t & Device::DEVICE_DVD_PLUS_R ) + s += QString("DVD+R"); + if( t & Device::DEVICE_DVD_PLUS_RW ) + s += QString("DVD+RW"); + if( t & Device::DEVICE_DVD_PLUS_R_DL ) + s += QString("DVD+R DL"); + + if( s.isEmpty() ) + return QString("Error"); + else + return s.join( ", " ); +} + + +QString Device::writingModeString( int m ) +{ + QStringList s; + if( m & Device::WRITINGMODE_SAO ) + s += QString("SAO"); + if( m & Device::WRITINGMODE_TAO ) + s += QString("TAO"); + if( m & Device::WRITINGMODE_RAW ) + s += QString("RAW"); + if( m & Device::WRITINGMODE_SAO_R96P ) + s += QString("SAO/R96P"); + if( m & Device::WRITINGMODE_SAO_R96R ) + s += QString("SAO/R96R"); + if( m & Device::WRITINGMODE_RAW_R16 ) + s += QString("RAW/R16"); + if( m & Device::WRITINGMODE_RAW_R96P ) + s += QString("RAW/R96P"); + if( m & Device::WRITINGMODE_RAW_R96R ) + s += QString("RAW/R96R"); + if( m & Device::WRITINGMODE_INCR_SEQ ) + s += QString("Incremental Sequential"); + if( m & Device::WRITINGMODE_RES_OVWR ) + s += QString("Restricted Overwrite"); + if( m & Device::WRITINGMODE_LAYER_JUMP ) + s += QString("Layer Jump"); + + if( m & Device::WRITINGMODE_RRM ) + s += QString("Random Recording"); + if( m & Device::WRITINGMODE_SRM ) + s += QString("Sequential Recording"); + if( m & Device::WRITINGMODE_SRM_POW ) + s += QString("Sequential Recording + POW"); + + if( s.isEmpty() ) + return QString("no writing mode"); + else + return s.join( ", " ); +} + + +QString Device::mediaTypeString( int m, bool simple ) +{ + if( m == Device::MEDIA_UNKNOWN ) + return QString("unknown medium type"); + + QStringList s; + if( m & Device::MEDIA_NONE ) + s += QString("No media"); + if( m & Device::MEDIA_DVD_ROM ) + s += QString("DVD-ROM"); + if( m & Device::MEDIA_DVD_R || + (simple && (m & Device::MEDIA_DVD_R_SEQ)) ) + s += QString("DVD-R"); + if( m & Device::MEDIA_DVD_R_SEQ && !simple ) + s += QString("DVD-R Sequential"); + if( m & Device::MEDIA_DVD_R_DL || + (simple && (m & (Device::MEDIA_DVD_R_DL_SEQ|Device::MEDIA_DVD_R_DL_JUMP))) ) + s += QString("DVD-R Dual Layer"); + if( m & Device::MEDIA_DVD_R_DL_SEQ && !simple ) + s += QString("DVD-R Dual Layer Sequential"); + if( m & Device::MEDIA_DVD_R_DL_JUMP && !simple ) + s += QString("DVD-R Dual Layer Jump"); + if( m & Device::MEDIA_DVD_RAM ) + s += QString("DVD-RAM"); + if( m & Device::MEDIA_DVD_RW || + (simple && (m & (Device::MEDIA_DVD_RW_OVWR|Device::MEDIA_DVD_RW_SEQ))) ) + s += QString("DVD-RW"); + if( m & Device::MEDIA_DVD_RW_OVWR && !simple ) + s += QString("DVD-RW Restricted Overwrite"); + if( m & Device::MEDIA_DVD_RW_SEQ && !simple ) + s += QString("DVD-RW Sequential"); + if( m & Device::MEDIA_DVD_PLUS_RW ) + s += QString("DVD+RW"); + if( m & Device::MEDIA_DVD_PLUS_R ) + s += QString("DVD+R"); + if( m & Device::MEDIA_DVD_PLUS_RW_DL ) + s += QString("DVD+RW Dual Layer"); + if( m & Device::MEDIA_DVD_PLUS_R_DL ) + s += QString("DVD+R Dual Layer"); + if( m & Device::MEDIA_CD_ROM ) + s += QString("CD-ROM"); + if( m & Device::MEDIA_CD_R ) + s += QString("CD-R"); + if( m & Device::MEDIA_CD_RW ) + s += QString("CD-RW"); + if( m & Device::MEDIA_HD_DVD_ROM ) + s += QString("HD DVD-ROM"); + if( m & Device::MEDIA_HD_DVD_R ) + s += QString("HD DVD-R"); + if( m & Device::MEDIA_HD_DVD_RAM ) + s += QString("HD DVD-RAM"); + if( m & Device::MEDIA_BD_ROM ) + s += QString("BD-ROM"); + if( m & Device::MEDIA_BD_R || + (simple && (m & (Device::MEDIA_BD_R_SRM|Device::MEDIA_BD_R_RRM))) ) + s += QString("BD-R"); + if( m & Device::MEDIA_BD_R_SRM && !simple ) + s += QString("BD-R Sequential (SRM)"); + if( m & Device::MEDIA_BD_R_SRM_POW && !simple ) + s += QString("BD-R Sequential Pseudo Overwrite (SRM+POW)"); + if( m & Device::MEDIA_BD_R_RRM && !simple ) + s += QString("BD-R Random (RRM)"); + if( m & Device::MEDIA_BD_RE ) + s += QString("BD-RE"); + + if( s.isEmpty() ) + return QString("Error"); + else + return s.join( ", " ); +} + + +QString Device::mediaStateString( int state ) +{ + if( state == Device::STATE_UNKNOWN ) + return QString("unknown medium state"); + + QStringList s; + if( state & Device::STATE_NO_MEDIA ) + s += QString("no medium"); + if( state & Device::STATE_COMPLETE ) + s += QString("complete medium"); + if( state & Device::STATE_INCOMPLETE ) + s += QString("incomplete medium"); + if( state & Device::STATE_EMPTY ) + s += QString("empty medium"); + + if( s.isEmpty() ) + return QString("Error"); + else + return s.join( ", " ); +} + + +void Device::debugBitfield( unsigned char* data, long len ) +{ + for( int i = 0; i < len; ++i ) { + QString index, bitString; + index.sprintf( "%4i", i ); + for( int bp = 7; bp >= 0; --bp ) + bitString[7-bp] = ( data[i] & (1<<bp) ? '1' : '0' ); + qDebug() << index << " - " << bitString << " - " << (int)data[i]; + } +} + + +quint16 Device::from2Byte(const unsigned char* d) +{ + if (!d) { + qWarning() << "Invalid Byte!"; + return 0; + } + return ((d[0] << 8 & 0xFF00) | + (d[1] & 0xFF)); +} + + +quint32 Device::from4Byte(const unsigned char* d) +{ + if (!d) { + qWarning() << "Invalid Byte!"; + return 0; + } + return ((d[0] << 24 & 0xFF000000) | + (d[1] << 16 & 0xFF0000) | + (d[2] << 8 & 0xFF00) | + (d[3] & 0xFF)); +} + + +char Device::fromBcd( const char& i ) +{ + return (i & 0x0f) + 10 * ( (i >> 4) & 0x0f ); +} + + +char Device::toBcd( const char& i ) +{ + return ( i % 10 ) | ( ( (( i / 10 ) % 10) << 4 ) & 0xf0 ); +} + + +bool Device::isValidBcd( const char& i ) +{ + return ( i & 0x0f ) <= 0x09 && ( i & 0xf0 ) <= 0x90; +} + + +QDebug& Device::operator<<( QDebug& dbg, Device::MediaType type ) +{ + return dbg << Device::mediaTypeString( type ); +} + + +QDebug& Device::operator<<( QDebug& dbg, Device::MediaTypes types ) +{ + return dbg << Device::mediaTypeString( types ); +} + + +QDebug& Device::operator<<( QDebug& dbg, Device::WritingMode mode ) +{ + return dbg << writingModeString( mode ); +} + + +QDebug& Device::operator<<( QDebug& dbg, Device::WritingModes modes ) +{ + return dbg << writingModeString( modes ); +} + + +QDebug& operator<<( QDebug& dbg, Device::MediaState state ) +{ + return dbg << Device::mediaStateString( state ); +} + + +QDebug& operator<<( QDebug& dbg, Device::MediaStates states ) +{ + return dbg << Device::mediaStateString( states ); +} diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.h kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.h 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/deviceglobals.h 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,40 @@ +#ifndef DEVICEGLOBALS_H +#define DEVICEGLOBALS_H + +#include "msf.h" +#include "devicetypes.h" + +#include <QString> +namespace Device { + QString deviceTypeString( int ); + QString writingModeString( int ); + QString mediaStateString( int ); + /** + * @param simplyfied if true the formatting state of DVD media is left out. + */ + QString mediaTypeString( int, bool simplyfied = false ); + void debugBitfield( unsigned char* data, long len ); + + quint16 from2Byte( const unsigned char* ); + quint32 from4Byte( const unsigned char* ); + + char fromBcd( const char& ); + char toBcd( const char& ); + bool isValidBcd( const char& ); + + /** + * @return the maximum nuber of sectors that can be read from device @p dev starting + * at sector @p firstSector. + */ + //int determineMaxReadingBufferSize( Device* dev, const Msf& firstSector ); + + QDebug& operator<<( QDebug& dbg, Device::MediaType ); + QDebug& operator<<( QDebug& dbg, MediaTypes ); + + QDebug& operator<<( QDebug& dbg, MediaState ); + QDebug& operator<<( QDebug& dbg, MediaStates ); + + QDebug& operator<<( QDebug& dbg, WritingMode ); + QDebug& operator<<( QDebug& dbg, WritingModes ); +} +#endif // DEVICEGLOBALS_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/devicetypes.h kylin-burner-3.2.0.1kylin1k32.01/src/data/devicetypes.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/devicetypes.h 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/devicetypes.h 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,317 @@ +#ifndef DEVICETYPES_H +#define DEVICETYPES_H + +#include <QFlags> + +namespace Device{ + const unsigned short FEATURE_PROFILE_LIST = 0x000; + const unsigned short FEATURE_CORE = 0x001; + const unsigned short FEATURE_MORPHING = 0x002; + const unsigned short FEATURE_REMOVABLE_MEDIA = 0x003; + const unsigned short FEATURE_WRITE_PROTECT = 0x004; + const unsigned short FEATURE_RANDOM_READABLE = 0x010; + const unsigned short FEATURE_MULTI_READ = 0x01D; + const unsigned short FEATURE_CD_READ = 0x01E; + const unsigned short FEATURE_DVD_READ = 0x01F; + const unsigned short FEATURE_RANDOM_WRITABLE = 0x020; + const unsigned short FEATURE_INCREMENTAL_STREAMING_WRITABLE = 0x021; + const unsigned short FEATURE_SECTOR_ERASABLE = 0x022; + const unsigned short FEATURE_FORMATTABLE = 0x023; + const unsigned short FEATURE_DEFECT_MANAGEMENT = 0x024; + const unsigned short FEATURE_WRITE_ONCE = 0x025; + const unsigned short FEATURE_RESTRICTED_OVERWRITE = 0x026; + const unsigned short FEATURE_CD_RW_CAV_WRITE = 0x027; + const unsigned short FEATURE_MRW = 0x028; + const unsigned short FEATURE_ENHANCED_DEFECT_REPORTING = 0x029; + const unsigned short FEATURE_DVD_PLUS_RW = 0x02A; + const unsigned short FEATURE_DVD_PLUS_R = 0x02B; + const unsigned short FEATURE_RIGID_RESTRICTED_OVERWRITE = 0x02C; + const unsigned short FEATURE_CD_TRACK_AT_ONCE = 0x02D; + const unsigned short FEATURE_CD_MASTERING = 0x02E; + const unsigned short FEATURE_DVD_R_RW_WRITE = 0x02F; + const unsigned short FEATURE_DDCD_READ = 0x030; + const unsigned short FEATURE_DDCD_R_WRITE = 0x031; + const unsigned short FEATURE_DDCD_RW_WRITE = 0x032; + const unsigned short FEATURE_LAYER_JUMP_RECORDING = 0x033; + const unsigned short FEATURE_CD_RW_MEDIA_WRITE_SUPPORT = 0x037; + const unsigned short FEATURE_BD_PSEUDO_OVERWRITE = 0x038; + const unsigned short FEATURE_DVD_PLUS_RW_DUAL_LAYER = 0x03A; /**< since MMC5 revision 3 */ + const unsigned short FEATURE_DVD_PLUS_R_DUAL_LAYER = 0x03B; + const unsigned short FEATURE_BD_READ = 0x040; + const unsigned short FEATURE_BD_WRITE = 0x041; + const unsigned short FEATURE_HD_DVD_READ = 0x050; + const unsigned short FEATURE_HD_DVD_WRITE = 0x051; + const unsigned short FEATURE_POWER_MANAGEMENT = 0x100; + const unsigned short FEATURE_EMBEDDED_CHANGER = 0x102; + const unsigned short FEATURE_CD_AUDIO_ANALOG_PLAY = 0x103; + const unsigned short FEATURE_MICROCODE_UPGRADE = 0x104; + const unsigned short FEATURE_TIMEOUT = 0x105; + const unsigned short FEATURE_DVD_CSS = 0x106; + const unsigned short FEATURE_REAL_TIME_STREAMING = 0x107; + const unsigned short FEATURE_LOGICAL_UNIT_SERIAL_NUMBER = 0x108; + const unsigned short FEATURE_DISC_CONTROL_BLOCKS = 0x10A; + const unsigned short FEATURE_DVD_CPRM = 0x10B; + const unsigned short FEATURE_FIRMWARE_DATE = 0x10C; + + enum Interface { + SCSI, /**< The device is accessed through the SCSI subsystem. */ + IDE, /**< The device is accessed through the IDE (ATAPI) interface. */ + OTHER /**< Unknown interface (this is not used as the DeviceManager does only handle SCSI and IDE anyway). */ + }; + + /** + * Specifies the device type. Device::type() returns a bitwise or + * of device types. + */ + enum DeviceType { + DEVICE_CD_ROM = 0x1, /**< Device reads CD-ROM media */ + DEVICE_CD_R = 0x2, /**< Device writes CD-R media */ + DEVICE_CD_RW = 0x4, /**< Device writes CD-RW media */ + DEVICE_DVD_ROM = 0x8, /**< Device reads DVD-ROM media */ + DEVICE_DVD_RAM = 0x10, /**< Device writes DVD-RAM media */ + DEVICE_DVD_R = 0x20, /**< Device writes DVD-R media */ + DEVICE_DVD_RW = 0x40, /**< Device writes DVD-RW media */ + DEVICE_DVD_R_DL = 0x80, /**< Device writes DVD-R Dual Layer media */ + DEVICE_DVD_PLUS_R = 0x100, /**< Device writes DVD+R media */ + DEVICE_DVD_PLUS_RW = 0x200, /**< Device writes DVD+RW media */ + DEVICE_DVD_PLUS_R_DL = 0x400, /**< Device writes DVD+R Double Layer media */ + DEVICE_HD_DVD_ROM = 0x800, /**< Device reads HD DVD-ROM media */ + DEVICE_HD_DVD_R = 0x1000, /**< Device writes HD DVD-R media */ + DEVICE_HD_DVD_RAM = 0x2000, /**< Device writes HD DVD-RAM media */ + DEVICE_BD_ROM = 0x4000, /**< Device reads BD-ROM media */ + DEVICE_BD_R = 0x8000, /**< Device writes BD-R media */ + DEVICE_BD_RE = 0x10000 /**< Device writes BD-RE media */ + }; + Q_DECLARE_FLAGS( DeviceTypes, DeviceType ) + + /** + * The different writing modes. Device::writingModes() returns a bitwise or of writing modes. + */ + enum WritingMode { + WRITINGMODE_SAO = 0x1, /**< Device writes CD or DVD-R media in Session at once (also known as DAO) writing mode */ + WRITINGMODE_SAO_R96P = 0x2, /**< Device writes CD media with packed R-W subchannels Session at once writing mode */ + WRITINGMODE_SAO_R96R = 0x4, /**< Device writes CD media with raw R-W subchannels Session at once writing mode */ + WRITINGMODE_TAO = 0x8, /**< Device writes CD media in Track at once writing mode */ + WRITINGMODE_RAW = 0x10, /**< Device writes CD media in Raw writing mode */ + WRITINGMODE_RAW_R16 = 0x20, /**< Device writes CD media with P/Q subchannels in Raw writing mode */ + WRITINGMODE_RAW_R96P = 0x40, /**< Device writes CD media with packed R-W subchannels Raw writing mode */ + WRITINGMODE_RAW_R96R = 0x80, /**< Device writes CD media with raw R-W subchannels Raw writing mode */ + WRITINGMODE_INCR_SEQ = 0x100, /**< Device writes DVD-R(W) media in incremental sequential writing mode */ + WRITINGMODE_RES_OVWR = 0x200, /**< Device writes DVD-RW media in restricted overwrite mode */ + WRITINGMODE_LAYER_JUMP = 0x400, /**< Device writes DVD-R Dual layer media in Layer Jump writing mode */ + WRITINGMODE_RRM = 0x800, /**< Device writes BD-R media in Random Recording Mode */ + WRITINGMODE_SRM = 0x1000, /**< Device writes BD-R media in Sequential recording mode */ + WRITINGMODE_SRM_POW = 0x2000 /**< Device writes BD-R media in Pseudo overwrite Sequential recording mode */ + }; + Q_DECLARE_FLAGS( WritingModes, WritingMode ) + + enum MediaState { + STATE_UNKNOWN = 0x1, /**< Media state is unknown (when an error occurred or the device is unable to determine the media state). */ + STATE_NO_MEDIA = 0x2, /**< No media inserted. */ + STATE_COMPLETE = 0x4, /**< The inserted media is complete. */ + STATE_INCOMPLETE = 0x8, /**< The inserted media is incomplete/appendable. */ + STATE_EMPTY = 0x10, /**< The inserted media is empty. */ + STATE_ALL = STATE_COMPLETE|STATE_INCOMPLETE|STATE_EMPTY + }; + Q_DECLARE_FLAGS( MediaStates, MediaState ) + + enum BackGroundFormattingState { + BG_FORMAT_INVALID = 0x0, + BG_FORMAT_NONE = 0x1, + BG_FORMAT_INCOMPLETE = 0x2, + BG_FORMAT_IN_PROGRESS = 0x4, + BG_FORMAT_COMPLETE = 0x8 + }; + Q_DECLARE_FLAGS( BackGroundFormattingStates, BackGroundFormattingState ) + + + enum MediaType { + /** Represents an unknown media type (when an error occurred) */ + MEDIA_UNKNOWN = 0x1, + + /** No medium is inserted. */ + MEDIA_NONE = 0x2, + + /** DVD-ROM media */ + MEDIA_DVD_ROM = 0x4, + + MEDIA_DVD_R = 0x8, + + MEDIA_DVD_R_SEQ = 0x10, + + /** Dual Layer DVD-R media. */ + MEDIA_DVD_R_DL = 0x20, + + MEDIA_DVD_R_DL_SEQ = 0x40, + + MEDIA_DVD_R_DL_JUMP = 0x80, + + MEDIA_DVD_RAM = 0x100, + + MEDIA_DVD_RW = 0x200, + + /** DVD-RW media formatted in Restricted Overwrite mode. */ + MEDIA_DVD_RW_OVWR = 0x400, + + /** DVD-RW media formatted in Incremental Sequential mode. */ + MEDIA_DVD_RW_SEQ = 0x800, + + MEDIA_DVD_PLUS_RW = 0x1000, + + MEDIA_DVD_PLUS_R = 0x2000, + + /** Double Layer DVD+R media. */ + MEDIA_DVD_PLUS_R_DL = 0x4000, + + /** Double Layer DVD+RW media. */ + MEDIA_DVD_PLUS_RW_DL = 0x8000, + + MEDIA_CD_ROM = 0x10000, + MEDIA_CD_R = 0x20000, + MEDIA_CD_RW = 0x40000, + MEDIA_HD_DVD_ROM = 0x80000, + MEDIA_HD_DVD_R = 0x100000, + MEDIA_HD_DVD_RAM = 0x200000, + + /** Read-only Blu-ray Disc (BD) */ + MEDIA_BD_ROM = 0x400000, + + /** Writable Blu-ray Disc (BD-R) */ + MEDIA_BD_R = 0x800000, + + /** Writable Blu-ray Disc (BD-R) */ + MEDIA_BD_R_SRM = 0x1000000, + + /** Writable Blu-ray Disc (BD-R) */ + MEDIA_BD_R_SRM_POW = 0x2000000, + + /** Writable Blu-ray Disc (BD-R) */ + MEDIA_BD_R_RRM = 0x4000000, + + /** Rewritable Blu-ray Disc (BD-RE) */ + MEDIA_BD_RE = 0x8000000, + + /** This is a bitwise or of media types representing all writable CD media.*/ + MEDIA_WRITABLE_CD = MEDIA_CD_R | + MEDIA_CD_RW, + + MEDIA_CD_ALL = MEDIA_WRITABLE_CD | + MEDIA_CD_ROM, + + MEDIA_REWRITABLE_DVD_SL = MEDIA_DVD_RW | + MEDIA_DVD_RW_OVWR | + MEDIA_DVD_RW_SEQ | + MEDIA_DVD_PLUS_RW, + + MEDIA_REWRITABLE_DVD_DL = MEDIA_DVD_PLUS_RW_DL, + + MEDIA_REWRITABLE_DVD = MEDIA_REWRITABLE_DVD_SL | + MEDIA_DVD_PLUS_RW_DL, + + /** This is a bitwise or of media types representing all writable single layer DVD media. */ + MEDIA_WRITABLE_DVD_SL = MEDIA_REWRITABLE_DVD_SL | + MEDIA_DVD_R | + MEDIA_DVD_R_SEQ | + MEDIA_DVD_RW | + MEDIA_DVD_RW_OVWR | + MEDIA_DVD_RW_SEQ | + MEDIA_DVD_PLUS_RW | + MEDIA_DVD_PLUS_R, + + /** This is a bitwise or of media types representing all writable double layer DVD media. */ + MEDIA_WRITABLE_DVD_DL = MEDIA_REWRITABLE_DVD_DL | + MEDIA_DVD_R_DL | + MEDIA_DVD_R_DL_SEQ | + MEDIA_DVD_R_DL_JUMP | + MEDIA_DVD_PLUS_R_DL | + MEDIA_DVD_PLUS_RW_DL, + + /** This is a bitwise or of media types representing all writable DVD media. */ + MEDIA_WRITABLE_DVD = MEDIA_WRITABLE_DVD_SL | + MEDIA_WRITABLE_DVD_DL, + + MEDIA_REWRITABLE_BD = MEDIA_BD_RE, + + /** This is a bitwise or of media types representing all writable BD media. */ + MEDIA_WRITABLE_BD = MEDIA_REWRITABLE_BD | + MEDIA_BD_R | + MEDIA_BD_R_SRM | + MEDIA_BD_R_SRM_POW | + MEDIA_BD_R_RRM, + + /** This is a bitwise or of media types representing all writable media. */ + MEDIA_WRITABLE = MEDIA_WRITABLE_CD | + MEDIA_WRITABLE_DVD | + MEDIA_WRITABLE_BD, + + MEDIA_REWRITABLE = MEDIA_CD_RW | + MEDIA_REWRITABLE_DVD | + MEDIA_REWRITABLE_BD, + + /** This is a bitwise or of media types representing all DVD-R/W media. */ + MEDIA_DVD_MINUS_ALL = MEDIA_DVD_R | + MEDIA_DVD_R_SEQ | + MEDIA_DVD_RW | + MEDIA_DVD_RW_OVWR | + MEDIA_DVD_RW_SEQ | + MEDIA_DVD_R_DL | + MEDIA_DVD_R_DL_SEQ | + MEDIA_DVD_R_DL_JUMP, + + /** This is a bitwise or of media types representing all DVD+R/W media. */ + MEDIA_DVD_PLUS_ALL = MEDIA_DVD_PLUS_RW | + MEDIA_DVD_PLUS_R | + MEDIA_DVD_PLUS_R_DL | + MEDIA_DVD_PLUS_RW_DL, + + MEDIA_DVD_ALL = MEDIA_WRITABLE_DVD | + MEDIA_DVD_ROM, + + MEDIA_BD_ALL = MEDIA_WRITABLE_BD | + MEDIA_BD_ROM, + + MEDIA_ALL = MEDIA_CD_ALL | + MEDIA_DVD_ALL | + MEDIA_BD_ALL + }; + Q_DECLARE_FLAGS( MediaTypes, Device::MediaType ) + + enum SpeedMultiplicator { + SPEED_FACTOR_CD = 175, + SPEED_FACTOR_CD_MODE1 = 150, + SPEED_FACTOR_DVD = 1385, + SPEED_FACTOR_BD = 4496 // 4495.5 + }; + + enum CopyrightProtectionSytemType { + COPYRIGHT_PROTECTION_NONE = 0x0, + COPYRIGHT_PROTECTION_CSS = 0x1, + COPYRIGHT_PROTECTION_CPRM = 0x2, + COPYRIGHT_PROTECTION_AACS_HD_DVD = 0x3, + COPYRIGHT_PROTECTION_AACS_BD = 0x10 + }; + + inline bool isDvdMedia( MediaTypes mediaType ) { + return ( mediaType & MEDIA_DVD_ALL ); + } + + inline bool isCdMedia( MediaTypes mediaType ) { + return ( mediaType & MEDIA_CD_ALL ); + } + + inline bool isBdMedia( MediaTypes mediaType ) { + return ( mediaType & MEDIA_BD_ALL ); + } + + inline bool isRewritableMedia( MediaTypes mediaType ) { + return ( mediaType & MEDIA_REWRITABLE ); + } +} + +Q_DECLARE_OPERATORS_FOR_FLAGS(Device::DeviceTypes) +Q_DECLARE_OPERATORS_FOR_FLAGS(Device::WritingModes) +Q_DECLARE_OPERATORS_FOR_FLAGS(Device::MediaStates) +Q_DECLARE_OPERATORS_FOR_FLAGS(Device::BackGroundFormattingStates) +Q_DECLARE_OPERATORS_FOR_FLAGS(Device::MediaTypes) + +#endif // DEVICETYPES_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/iso9660.h kylin-burner-3.2.0.1kylin1k32.01/src/data/iso9660.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/iso9660.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/iso9660.h 2025-03-11 20:49:32.000000000 +0800 @@ -51,6 +51,7 @@ long logicalBlockSize; long long volumeSpaceSize; long long getUsedCapacity() { return logicalBlockSize* volumeSpaceSize; } + long long getVolumSpacesSize() {return volumeSpaceSize; } }; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/mmc.h kylin-burner-3.2.0.1kylin1k32.01/src/data/mmc.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/mmc.h 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/mmc.h 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,672 @@ +#ifndef _MMC_H_ +#define _MMC_H_ + + + +/* + * struct disc_info taken from cdrwtool.h + * + * + * disc status (status): + * 00b - empty disc + * 01b - incomplete disc (appendable) + * 10b - Complete disc + * 11b - Others + * + * State of last session (border) + * 00b - Empty session + * 01b - Incomplete session + * 10b - Reseverd + * 11b - Complete session (only possible when disc status is complete) + */ +typedef struct disc_info { + quint16 length; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char reserved1 : 3; + unsigned char erasable : 1; + unsigned char border : 2; + unsigned char status : 2; +#else + unsigned char status : 2; + unsigned char border : 2; + unsigned char erasable : 1; + unsigned char reserved1 : 3; +#endif + unsigned char n_first_track; + unsigned char n_sessions_l; + unsigned char first_track_l; + unsigned char last_track_l; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char did_v : 1; + unsigned char dbc_v : 1; + unsigned char uru : 1; + unsigned char reserved2 : 2; + unsigned char dbit : 1; + unsigned char bg_f_status : 1; +#else + unsigned char bg_f_status : 1; + unsigned char dbit : 1; + unsigned char reserved2 : 2; + unsigned char uru : 1; + unsigned char dbc_v : 1; + unsigned char did_v : 1; +#endif + + /* + * disc type + * 00h - CD-DA of CDROM + * 10h - CD-I + * 20h - CD-ROM XA + * FFh - Undefined + * All other values are reserved + */ + unsigned char disc_type; + unsigned char n_sessions_m; + unsigned char first_track_m; + unsigned char last_track_m; + quint32 disc_id; + + /* + * Last session lead-in start time + * if the disc is complete this shall be FF/FF/FF + */ + unsigned char lead_in_r; + unsigned char lead_in_m; + unsigned char lead_in_s; + unsigned char lead_in_f; + + /* + * Last possible start time for start of lead-in + * if the disc is complete this shall be FF/FF/FF + */ + unsigned char lead_out_r; + unsigned char lead_out_m; + unsigned char lead_out_s; + unsigned char lead_out_f; + + unsigned char disc_bar_code[8]; + + // + // We need to make sure the structure has a proper size + // I think it needs to be a power of 2. + // With ide-scsi there is no problem. But without the + // GPCMD_READ_DISC_INFO command failes if the size is 34 + // + +/* unsigned char reserved3; */ +/* unsigned char opc_entries; */ +} disc_info_t; + + + +/* + * struct track_info taken from cdrwtool.h + */ +typedef struct track_info { + unsigned char data_length[2]; + unsigned char track_number_l; + unsigned char session_number_l; + unsigned char reserved1; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char reserved2 : 2; + unsigned char damage : 1; + unsigned char copy : 1; + unsigned char track_mode : 4; + unsigned char rt : 1; + unsigned char blank : 1; + unsigned char packet : 1; + unsigned char fp : 1; + unsigned char data_mode : 4; + unsigned char reserved3 : 6; + unsigned char lra_v : 1; + unsigned char nwa_v : 1; +#else + unsigned char track_mode : 4; + unsigned char copy : 1; + unsigned char damage : 1; + unsigned char reserved2 : 2; + unsigned char data_mode : 4; + unsigned char fp : 1; + unsigned char packet : 1; + unsigned char blank : 1; + unsigned char rt : 1; + unsigned char nwa_v : 1; + unsigned char lra_v : 1; + unsigned char reserved3 : 6; +#endif + unsigned char track_start[4]; + unsigned char next_writable[4]; + unsigned char free_blocks[4]; + unsigned char packet_size[4]; + unsigned char track_size[4]; + unsigned char last_recorded[4]; + unsigned char track_number_m; + unsigned char session_number_m; + unsigned char reserved4; + unsigned char reserved5; + unsigned char read_compatibility[4]; +} track_info_t; + + +/* + * Use this with the GPCMD_READ_TOC_PMA_ATIP command + * where format is set to 2 (Full TOC) + */ +struct toc_raw_track_descriptor { + unsigned char session_number; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char adr : 4; + unsigned char control : 4; +#else + unsigned char control : 4; + unsigned char adr : 4; +#endif + unsigned char tno; + unsigned char point; + unsigned char min; + unsigned char sec; + unsigned char frame; + unsigned char zero; + unsigned char p_min; + unsigned char p_sec; + unsigned char p_frame; +}; + + +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN +struct cd_wr_speed_performance { + unsigned char res0; /* Reserved */ + unsigned char res_1_27 : 6; /* Reserved */ + unsigned char rot_ctl_sel : 2; /* Rotational control selected */ + unsigned char wr_speed_supp[2]; /* Supported write speed */ +}; +#else +struct cd_wr_speed_performance { + unsigned char res0; /* Reserved */ + unsigned char rot_ctl_sel : 2; /* Rotational control selected */ + unsigned char res_1_27 : 6; /* Reserved */ + unsigned char wr_speed_supp[2]; /* Supported write speed */ +}; +#endif + + +/** + * Based on the cdrecord struct cd_mode_page_2A + * MM Capabilities and Mechanical Status Page + */ +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + +struct mm_cap_page_2A { + unsigned char PS : 1; + unsigned char res_1 : 1; + unsigned char page_code : 6; + unsigned char page_len; /* 0x14 = 20 Bytes (MMC) */ + /* 0x18 = 24 Bytes (MMC-2) */ + /* 0x1C >= 28 Bytes (MMC-3) */ + unsigned char res_2_67 : 2; /* Reserved */ + unsigned char dvd_ram_read : 1; /* Reads DVD-RAM media */ + unsigned char dvd_r_read : 1; /* Reads DVD-R media */ + unsigned char dvd_rom_read : 1; /* Reads DVD ROM media */ + unsigned char method2 : 1; /* Reads fixed packet method2 media */ + unsigned char cd_rw_read : 1; /* Reads CD-RW media */ + unsigned char cd_r_read : 1; /* Reads CD-R media */ + unsigned char res_3_67 : 2; /* Reserved */ + unsigned char dvd_ram_write : 1; /* Supports writing DVD-RAM media */ + unsigned char dvd_r_write : 1; /* Supports writing DVD-R media */ + unsigned char res_3_3 : 1; /* Reserved */ + unsigned char test_write : 1; /* Supports emulation write */ + unsigned char cd_rw_write : 1; /* Supports writing CD-RW media */ + unsigned char cd_r_write : 1; /* Supports writing CD-R media */ + unsigned char BUF : 1; /* Supports Buffer under. free rec. */ + unsigned char multi_session : 1; /* Reads multi-session media */ + unsigned char mode_2_form_2 : 1; /* Reads Mode-2 form 2 media */ + unsigned char mode_2_form_1 : 1; /* Reads Mode-2 form 1 media (XA) */ + unsigned char digital_port_1 : 1; /* Supports digital output on port 1 */ + unsigned char digital_port_2 : 1; /* Supports digital output on port 2 */ + unsigned char composite : 1; /* Deliveres composite A/V stream */ + unsigned char audio_play : 1; /* Supports Audio play operation */ + unsigned char read_bar_code : 1; /* Supports reading bar codes */ + unsigned char UPC : 1; /* Reads media catalog number (UPC) */ + unsigned char ISRC : 1; /* Reads ISRC information */ + unsigned char c2_pointers : 1; /* Supports C2 error pointers */ + unsigned char rw_deint_corr : 1; /* Reads de-interleved R-W sub chan */ + unsigned char rw_supported : 1; /* Reads R-W sub channel information */ + unsigned char cd_da_accurate : 1; /* READ CD data stream is accurate */ + unsigned char cd_da_supported : 1; /* Reads audio data with READ CD cmd */ + unsigned char loading_type : 3; /* Loading mechanism type */ + unsigned char res_6_4 : 1; /* Reserved */ + unsigned char eject : 1; /* Ejects disc/cartr with STOP LoEj */ + unsigned char prevent_jumper : 1; /* State of prev/allow jumper 0=pres */ + unsigned char lock_state : 1; /* Lock state 0=unlocked 1=locked */ + unsigned char lock : 1; /* PREVENT/ALLOW may lock media */ + unsigned char res_7 : 2; /* Reserved */ + unsigned char rw_in_lead_in : 1; /* Reads raw R-W subcode from lead in */ + unsigned char side_change : 1; /* Side change capable */ + unsigned char sw_slot_sel : 1; /* Load empty slot in changer */ + unsigned char disk_present_rep : 1; /* Changer supports disk present rep */ + unsigned char sep_chan_mute : 1; /* Mute controls each channel separat*/ + unsigned char sep_chan_vol : 1; /* Vol controls each channel separat */ + unsigned char max_read_speed[2]; /* Max. read speed in KB/s */ + /* obsolete in MMC-4 */ + unsigned char num_vol_levels[2]; /* # of supported volume levels */ + unsigned char buffer_size[2]; /* Buffer size for the data in KB */ + unsigned char cur_read_speed[2]; /* Current read speed in KB/s */ + /* obsolete in MMC-4 */ + unsigned char res_16; /* Reserved */ + unsigned char res_17 : 2; /* Reserved */ + unsigned char length : 2; /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/ + unsigned char LSBF : 1; /* Set: LSB first Clear: MSB first */ + unsigned char RCK : 1; /* Set: HIGH high LRCK=left channel */ + unsigned char BCK : 1; /* Data valid on falling edge of BCK */ + unsigned char res_17_0 : 1; /* Reserved */ + unsigned char max_write_speed[2]; /* Max. write speed supported in KB/s*/ + /* obsolete in MMC-4 */ + unsigned char cur_write_speed[2]; /* Current write speed in KB/s */ + /* obsolete in MMC-4 */ + + /* Byte 22 ... Only in MMC-2 */ + unsigned char copy_man_rev[2]; /* Copy management revision supported*/ + unsigned char res_24; /* Reserved */ + unsigned char res_25; /* Reserved */ + + /* Byte 26 ... Only in MMC-3 */ + unsigned char res_26; /* Reserved */ + unsigned char res_27_27 : 6; /* Reserved */ + unsigned char rot_ctl_sel : 2; /* Rotational control selected */ + unsigned char v3_cur_write_speed[2]; /* Current write speed in KB/s */ + unsigned char num_wr_speed_des[2]; /* # of wr speed perf descr. tables */ + struct cd_wr_speed_performance + wr_speed_des[1]; /* wr speed performance descriptor */ + /* Actually more (num_wr_speed_des) */ +}; + +#else // LITTLE_ENDIAN + +struct mm_cap_page_2A { + unsigned char page_code : 6; + unsigned char res_1 : 1; + unsigned char PS : 1; + unsigned char page_len; /* 0x14 = 20 Bytes (MMC) */ + /* 0x18 = 24 Bytes (MMC-2) */ + /* 0x1C >= 28 Bytes (MMC-3) */ + unsigned char cd_r_read : 1; /* Reads CD-R media */ + unsigned char cd_rw_read : 1; /* Reads CD-RW media */ + unsigned char method2 : 1; /* Reads fixed packet method2 media */ + unsigned char dvd_rom_read : 1; /* Reads DVD ROM media */ + unsigned char dvd_r_read : 1; /* Reads DVD-R media */ + unsigned char dvd_ram_read : 1; /* Reads DVD-RAM media */ + unsigned char res_2_67 : 2; /* Reserved */ + unsigned char cd_r_write : 1; /* Supports writing CD-R media */ + unsigned char cd_rw_write : 1; /* Supports writing CD-RW media */ + unsigned char test_write : 1; /* Supports emulation write */ + unsigned char res_3_3 : 1; /* Reserved */ + unsigned char dvd_r_write : 1; /* Supports writing DVD-R media */ + unsigned char dvd_ram_write : 1; /* Supports writing DVD-RAM media */ + unsigned char res_3_67 : 2; /* Reserved */ + unsigned char audio_play : 1; /* Supports Audio play operation */ + unsigned char composite : 1; /* Deliveres composite A/V stream */ + unsigned char digital_port_2 : 1; /* Supports digital output on port 2 */ + unsigned char digital_port_1 : 1; /* Supports digital output on port 1 */ + unsigned char mode_2_form_1 : 1; /* Reads Mode-2 form 1 media (XA) */ + unsigned char mode_2_form_2 : 1; /* Reads Mode-2 form 2 media */ + unsigned char multi_session : 1; /* Reads multi-session media */ + unsigned char BUF : 1; /* Supports Buffer under. free rec. */ + unsigned char cd_da_supported : 1; /* Reads audio data with READ CD cmd */ + unsigned char cd_da_accurate : 1; /* READ CD data stream is accurate */ + unsigned char rw_supported : 1; /* Reads R-W sub channel information */ + unsigned char rw_deint_corr : 1; /* Reads de-interleved R-W sub chan */ + unsigned char c2_pointers : 1; /* Supports C2 error pointers */ + unsigned char ISRC : 1; /* Reads ISRC information */ + unsigned char UPC : 1; /* Reads media catalog number (UPC) */ + unsigned char read_bar_code : 1; /* Supports reading bar codes */ + unsigned char lock : 1; /* PREVENT/ALLOW may lock media */ + unsigned char lock_state : 1; /* Lock state 0=unlocked 1=locked */ + unsigned char prevent_jumper : 1; /* State of prev/allow jumper 0=pres */ + unsigned char eject : 1; /* Ejects disc/cartr with STOP LoEj */ + unsigned char res_6_4 : 1; /* Reserved */ + unsigned char loading_type : 3; /* Loading mechanism type */ + unsigned char sep_chan_vol : 1; /* Vol controls each channel separat */ + unsigned char sep_chan_mute : 1; /* Mute controls each channel separat*/ + unsigned char disk_present_rep : 1; /* Changer supports disk present rep */ + unsigned char sw_slot_sel : 1; /* Load empty slot in changer */ + unsigned char side_change : 1; /* Side change capable */ + unsigned char rw_in_lead_in : 1; /* Reads raw R-W subcode from lead in */ + unsigned char res_7 : 2; /* Reserved */ + unsigned char max_read_speed[2]; /* Max. read speed in KB/s */ + /* obsolete in MMC-4 */ + unsigned char num_vol_levels[2]; /* # of supported volume levels */ + unsigned char buffer_size[2]; /* Buffer size for the data in KB */ + unsigned char cur_read_speed[2]; /* Current read speed in KB/s */ + /* obsolete in MMC-4 */ + unsigned char res_16; /* Reserved */ + unsigned char res_17_0 : 1; /* Reserved */ + unsigned char BCK : 1; /* Data valid on falling edge of BCK */ + unsigned char RCK : 1; /* Set: HIGH high LRCK=left channel */ + unsigned char LSBF : 1; /* Set: LSB first Clear: MSB first */ + unsigned char length : 2; /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/ + unsigned char res_17 : 2; /* Reserved */ + unsigned char max_write_speed[2]; /* Max. write speed supported in KB/s*/ + /* obsolete in MMC-4 */ + unsigned char cur_write_speed[2]; /* Current write speed in KB/s */ + /* obsolete in MMC-4 */ + + /* Byte 22 ... Only in MMC-2 */ + unsigned char copy_man_rev[2]; /* Copy management revision supported*/ + unsigned char res_24; /* Reserved */ + unsigned char res_25; /* Reserved */ + + /* Byte 26 ... Only in MMC-3 */ + unsigned char res_26; /* Reserved */ + unsigned char rot_ctl_sel : 2; /* Rotational control selected */ + unsigned char res_27_27 : 6; /* Reserved */ + unsigned char v3_cur_write_speed[2]; /* Current write speed in KB/s */ + unsigned char num_wr_speed_des[2]; /* # of wr speed perf descr. tables */ + struct cd_wr_speed_performance + wr_speed_des[1]; /* wr speed performance descriptor */ + /* Actually more (num_wr_speed_des) */ +}; +#endif + +/** + * Based on the cdrecord struct cd_mode_page_05 + * Write Parameters Mode Page + */ +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN +struct wr_param_page_05 { /* write parameters */ + unsigned char PS : 1; + unsigned char res_1 : 1; + unsigned char page_code : 6; + unsigned char page_len; /* 0x32 = 50 Bytes */ + unsigned char res_2_7 : 1; + unsigned char BUFE : 1; /* Enable Bufunderrun free rec. */ + unsigned char LS_V : 1; /* Link size valid */ + unsigned char test_write : 1; /* Do not actually write data */ + unsigned char write_type : 4; /* Session write type (PACKET/TAO...)*/ + unsigned char multi_session : 2; /* Multi session write type */ + unsigned char fp : 1; /* Fixed packed (if in packet mode) */ + unsigned char copy : 1; /* 1st higher gen of copy prot track */ + unsigned char track_mode : 4; /* Track mode (Q-sub control nibble) */ + unsigned char res_4 : 4; /* Reserved */ + unsigned char dbtype : 4; /* Data block type */ + unsigned char link_size; /* Link Size (default is 7) */ + unsigned char res_6; /* Reserved */ + unsigned char res_7 : 2; /* Reserved */ + unsigned char host_appl_code : 6; /* Host application code of disk */ + unsigned char session_format; /* Session format (DA/CDI/XA) */ + unsigned char res_9; /* Reserved */ + unsigned char packet_size[4]; /* # of user datablocks/fixed packet */ + unsigned char audio_pause_len[2]; /* # of blocks where index is zero */ + unsigned char media_cat_number[16]; /* Media catalog Number (MCN) */ + unsigned char ISRC[14]; /* ISRC for this track */ + unsigned char sub_header[4]; + unsigned char vendor_uniq[4]; +}; + +#else // __LITTLE_ENDIAN +struct wr_param_page_05 { /* write parameters */ + unsigned char page_code : 6; + unsigned char res_1 : 1; + unsigned char PS : 1; + unsigned char p_len; /* 0x32 = 50 Bytes */ + unsigned char write_type : 4; /* Session write type (PACKET/TAO...)*/ + unsigned char test_write : 1; /* Do not actually write data */ + unsigned char LS_V : 1; /* Link size valid */ + unsigned char BUFE : 1; /* Enable Bufunderrun free rec. */ + unsigned char res_2_7 : 1; + unsigned char track_mode : 4; /* Track mode (Q-sub control nibble) */ + unsigned char copy : 1; /* 1st higher gen of copy prot track ~*/ + unsigned char fp : 1; /* Fixed packed (if in packet mode) */ + unsigned char multi_session : 2; /* Multi session write type */ + unsigned char dbtype : 4; /* Data block type */ + unsigned char res_4 : 4; /* Reserved */ + unsigned char link_size; /* Link Size (default is 7) */ + unsigned char res_6; /* Reserved */ + unsigned char host_appl_code : 6; /* Host application code of disk */ + unsigned char res_7 : 2; /* Reserved */ + unsigned char session_format; /* Session format (DA/CDI/XA) */ + unsigned char res_9; /* Reserved */ + unsigned char packet_size[4]; /* # of user datablocks/fixed packet */ + unsigned char audio_pause_len[2]; /* # of blocks where index is zero */ + unsigned char media_cat_number[16]; /* Media catalog Number (MCN) */ + unsigned char ISRC[14]; /* ISRC for this track */ + unsigned char sub_header[4]; + unsigned char vendor_uniq[4]; +}; +#endif + + +struct toc_track_descriptor { + unsigned char res1; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN +unsigned char adr : 4; +unsigned char control : 4; +#else +unsigned char control : 4; +unsigned char adr : 4; +#endif + unsigned char track_no; + unsigned char res2; + unsigned char start_adr[4]; +}; + + +struct atip_descriptor { + unsigned char dataLength[2]; + unsigned char res1; + unsigned char res2; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN +unsigned char ind_wr_power : 4; // indicated writing power +unsigned char ddcd : 1; // DDCD +unsigned char ref_speed : 3; // reference Speed +unsigned char zero : 1; // 0 +unsigned char uru : 1; // Uru +unsigned char res3 : 6; +unsigned char one : 1; // 1 +unsigned char disc_type : 1; // Disc Type +unsigned char disc_subtype : 3; // Disc Sub-Type +unsigned char a1_valid : 1; +unsigned char a2_valid : 1; +unsigned char a3_valid : 1; +#else +unsigned char ref_speed : 3; // reference Speed +unsigned char ddcd : 1; // DDCD +unsigned char ind_wr_power : 4; // indicated writing power +unsigned char res3 : 6; +unsigned char uru : 1; // Uru +unsigned char zero : 1; // 0 +unsigned char a3_valid : 1; +unsigned char a2_valid : 1; +unsigned char a1_valid : 1; +unsigned char disc_subtype : 3; // Disc Sub-Type +unsigned char disc_type : 1; // Disc Type +unsigned char one : 1; // 1 +#endif + unsigned char res4; + unsigned char lead_in_m; + unsigned char lead_in_s; + unsigned char lead_in_f; + unsigned char res5; + unsigned char lead_out_m; + unsigned char lead_out_s; + unsigned char lead_out_f; + unsigned char res6; + unsigned char a1[3]; + unsigned char res7; + unsigned char a2[3]; + unsigned char res8; + unsigned char a3[3]; + unsigned char res9; + unsigned char s4[3]; + unsigned char res10; +}; +struct mechanism_status_header { +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char fault : 1; + unsigned char changer_state : 2; + unsigned char slot_low : 5; +#else + unsigned char slot_low : 5; + unsigned char changer_state : 2; + unsigned char fault : 1; +#endif +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char mech_state : 3; + unsigned char door_open : 1; + unsigned char res1 : 1; + unsigned char slot_high : 3; +#else + unsigned char slot_high : 3; + unsigned char res1 : 1; + unsigned char door_open : 1; + unsigned char mech_state : 3; +#endif + unsigned char current_lba[3]; + unsigned char num_slots; + unsigned char slot_len[2]; +}; + +struct mechanism_status_slot { +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char disc_present : 1; + unsigned char res1 : 6; + unsigned char change : 1; +#else + unsigned char change : 1; + unsigned char res1 : 6; + unsigned char disc_present : 1; +#endif +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char res2 : 6; + unsigned char cwp_v : 1; + unsigned char cwp : 1; +#else + unsigned char cwp : 1; + unsigned char cwp_v : 1; + unsigned char res2 : 6; +#endif + unsigned char res3; + unsigned char res4; +}; + + +struct inquiry { +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char p_qualifier : 3; + unsigned char p_device_type : 5; + unsigned char rmb : 1; + unsigned char reserved1 : 7; +#else + unsigned char p_device_type : 5; + unsigned char p_qualifier : 3; + unsigned char reserved1 : 7; + unsigned char rmb : 1; +#endif + unsigned char version; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char interface_dep : 4; + unsigned char data_format : 4; +#else + unsigned char data_format : 4; + unsigned char interface_dep : 4; +#endif + unsigned char add_length; + unsigned char reserved2; +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char bque : 1; + unsigned char enc_serv : 1; + unsigned char vs1 : 1; + unsigned char multi_p : 1; + unsigned char m_chngr : 1; + unsigned char reserved3 : 1; + unsigned char reserved4 : 1; + unsigned char addr_16 : 1; + unsigned char rel_adr : 1; + unsigned char reserved5 : 1; + unsigned char w_bus_16 : 1; + unsigned char sync : 1; + unsigned char linked : 1; + unsigned char reserved6 : 1; + unsigned char cmd_que : 1; + unsigned char vs2 : 1; +#else + unsigned char addr_16 : 1; + unsigned char reserved4 : 1; + unsigned char reserved3 : 1; + unsigned char m_chngr : 1; + unsigned char multi_p : 1; + unsigned char vs1 : 1; + unsigned char enc_serv : 1; + unsigned char bque : 1; + unsigned char vs2 : 1; + unsigned char cmd_que : 1; + unsigned char reserved6 : 1; + unsigned char linked : 1; + unsigned char sync : 1; + unsigned char w_bus_16 : 1; + unsigned char reserved5 : 1; + unsigned char rel_adr : 1; +#endif + unsigned char vendor[8]; + unsigned char product[16]; + unsigned char revision[4]; + unsigned char vendor_specific[20]; + unsigned char reserved7[2]; + unsigned char version1[2]; + unsigned char version2[2]; + unsigned char version3[2]; + unsigned char version4[2]; + unsigned char version5[2]; + unsigned char version6[2]; + unsigned char version7[2]; + unsigned char version8[2]; + + // bytes 74-95: reserved + // bytes 96-n: vendor specific + }; + + + struct ricoh_mode_page_30 { +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char PS : 1; + unsigned char res_1 : 1; + unsigned char page_code : 6; +#else + unsigned char page_code : 6; + unsigned char res_1 : 1; + unsigned char PS : 1; +#endif + unsigned char page_len; /* 0xE = 14 Bytes */ +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char res_2_67 :2; + unsigned char AWSCS :1; /* Auto write speed control supp. */ + unsigned char ARSCS :1; /* Auto read speed control supp. */ + unsigned char res_2_23 :2; + unsigned char TWBFS :1; /* Test Burn-Free sup. */ + unsigned char BUEFS :1; /* Burn-Free supported */ +#else + unsigned char BUEFS :1; /* Burn-Free supported */ + unsigned char TWBFS :1; /* Test Burn-Free sup. */ + unsigned char res_2_23 :2; + unsigned char ARSCS :1; /* Auto read speed control supp. */ + unsigned char AWSCS :1; /* Auto write speed control supp. */ + unsigned char res_2_67 :2; +#endif +#ifdef WORDS_BIGENDIAN // __BYTE_ORDER == __BIG_ENDIAN + unsigned char res_3_67 :2; + unsigned char AWSCD :1; /* Auto write speed control disabled */ + unsigned char ARSCE :1; /* Auto read speed control enabled */ + unsigned char res_2_13 :3; + unsigned char BUEFE :1; /* Burn-Free enabled */ +#else + unsigned char BUEFE :1; /* Burn-Free enabled */ + unsigned char res_2_13 :3; + unsigned char ARSCE :1; /* Auto read speed control enabled */ + unsigned char AWSCD :1; /* Auto write speed control disabled */ + unsigned char res_3_67 :2; +#endif + unsigned char link_counter[2]; /* Burn-Free link counter */ + unsigned char res[10]; /* Padding up to 16 bytes */ + }; + + +#endif diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.cpp 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,398 @@ +#include "msf.h" +#include <QDebug> +#include <QRegExp> +#include <QSharedData> + +#include <cmath> + +class Msf::Private : public QSharedData +{ +public: + Private( int m = 0, int s = 0, int f = 0 ) + : minutes(m), + seconds(s), + frames(f) + { + makeValid(); + } + + int minutes; + int seconds; + int frames; + + void setValue( int m = 0, int s = 0, int f = 0 ); + void makeValid(); +}; + + +void Msf::Private::makeValid() +{ + if( frames < 0 ) { + int newFrames = frames/-75 + 1; + seconds -= newFrames; + frames += 75*newFrames; + } + seconds += frames/75; + frames = frames % 75; + if( seconds < 0 ) { + int newSecs = seconds/-60 + 1; + minutes -= newSecs; + seconds += 60*newSecs; + } + minutes += seconds/60; + seconds = seconds % 60; + if( minutes < 0 ) { + minutes = 0; + seconds = 0; + frames = 0; + } +} + + +void Msf::Private::setValue( int m, int s, int f ) +{ + minutes = m; + seconds = s; + frames = f; + makeValid(); +} + + +Msf::Msf() + : d( new Private() ) +{ +} + + +Msf::Msf( const Msf& m ) +{ + d = m.d; +} + + +Msf::Msf( int m, int s, int f ) + : d( new Private( m, s, f ) ) +{ +} + + +Msf::Msf( int i ) + : d( new Private( 0, 0, i ) ) +{ +} + + +Msf::~Msf() +{ +} + + +int Msf::minutes() const +{ + return d->minutes; +} + + +int Msf::seconds() const +{ + return d->seconds; +} + + +int Msf::frames() const +{ + return d->frames; +} + + +int Msf::totalFrames() const +{ + return ( d->minutes*60 + d->seconds )*75 + d->frames; +} + + +int Msf::lba() const +{ + return totalFrames(); +} + + +void Msf::setValue( int m, int s, int f ) +{ + d->setValue( m, s, f ); +} + + +void Msf::addMinutes( int m ) +{ + d->setValue( d->minutes + m, d->seconds, d->frames ); +} + + +void Msf::addSeconds( int s ) +{ + d->setValue( d->minutes, d->seconds + s, d->frames ); +} + + +void Msf::addFrames( int f ) +{ + d->setValue( d->minutes, d->seconds, d->frames + f ); +} + + +Msf& Msf::operator=( const Msf& m ) +{ + d = m.d; + return *this; +} + + +Msf& Msf::operator=( int i ) +{ + d->setValue( 0, 0, i ); + return *this; +} + + +Msf& Msf::operator+=( const Msf& m ) +{ + d->setValue( d->minutes + m.minutes(), + d->seconds + m.seconds(), + d->frames + m.frames() ); + return *this; +} + + +Msf& Msf::operator+=( int i ) +{ + addFrames(i); + return *this; +} + + +Msf& Msf::operator-=( const Msf& m ) +{ + d->setValue( d->minutes - m.minutes(), + d->seconds - m.seconds(), + d->frames - m.frames() ); + return *this; +} + +Msf& Msf::operator-=( int i ) +{ + addFrames( -i ); + return *this; +} + + +const Msf Msf::operator++( int ) +{ + Msf old = *this; + ++(*this); + return old; +} + + +Msf& Msf::operator++() +{ + (*this) += 1; + return *this; +} + + +const Msf Msf::operator--( int ) +{ + Msf old = *this; + --(*this); + return old; +} + + +Msf& Msf::operator--() +{ + (*this) -= 1; + return *this; +} + + +QString Msf::toString( bool showFrames ) const +{ + QString str; + + if( showFrames ) + str.sprintf( "%.2i:%.2i:%.2i", d->minutes, d->seconds, d->frames ); + else + str.sprintf( "%.2i:%.2i", d->minutes, d->seconds ); + + return str; +} + + +qulonglong Msf::mode1Bytes() const +{ + return (qulonglong)2048 * ( (qulonglong)lba() ); +} + + +qulonglong Msf::mode2Form1Bytes() const +{ + return (qulonglong)2048 * ( (qulonglong)lba() ); +} + + +qulonglong Msf::mode2Form2Bytes() const +{ + return (qulonglong)2324 * ( (qulonglong)lba() ); +} + + +qulonglong Msf::audioBytes() const +{ + return (qulonglong)2352 * ( (qulonglong)lba() ); +} + + +qulonglong Msf::rawBytes() const +{ + return (qulonglong)2448 * ( (qulonglong)lba() ); +} + + +unsigned long long Msf::pcmSamples() const +{ + return lba()*588; +} + + +QRegExp Msf::regExp() +{ + // + // An MSF can have the following formats: + // 100 (treated as frames) + // 100:23 (minutes:seconds) + // 100:23:72 (minutes:seconds:frames) + // 100:23.72 (minutes:seconds.frames) + // + static QRegExp rx( "(\\d+)(?::([0-5]?\\d)(?:[:\\.]((?:[0-6]?\\d)|(?:7[0-4])))?)?" ); + return rx; +} + + +Msf Msf::fromSeconds( double ms ) +{ + return Msf( static_cast<int>( ::ceil(ms*75.0) ) ); +} + + +Msf Msf::fromAudioBytes( qint64 bytes ) +{ + if( bytes % 2352 != 0 ) { + qWarning() << "bytes:" << bytes << "(not aligned to" << 2352 << ")!"; + } + return Msf( bytes/2352 ); +} + + +Msf Msf::fromString( const QString& s, bool* ok ) +{ + QRegExp rx = regExp(); + + Msf msf; + + if( rx.exactMatch( s ) ) { + // + // first number - cap(1) + // second number - cap(2) + // third number - cap(3) + // + if( rx.cap(2).isEmpty() ) { + msf.d->setValue( 0, 0, rx.cap(1).toInt() ); + } + else { + msf.d->setValue( rx.cap(1).toInt(), rx.cap(2).toInt(), rx.cap(3).toInt() ); + } + + if( ok ) { + *ok = true; + } + } + else if( ok ) { + *ok = false; + } + + return msf; +} + + + +Msf operator+( const Msf& m1, const Msf& m2 ) +{ + Msf msf(m1); + return msf += m2; +} + + +Msf operator+( const Msf& m, int i ) +{ + Msf msf(m); + return msf += i; +} + + +Msf operator-( const Msf& m1, const Msf& m2 ) +{ + Msf msf(m1); + return msf -= m2; +} + + +Msf operator-( const Msf& m, int i ) +{ + Msf msf(m); + return msf -= i; +} + + +bool operator==( const Msf& m1, const Msf& m2 ) +{ + return ( m1.minutes() == m2.minutes() && + m1.seconds() == m2.seconds() && + m1.frames() == m2.frames() ); +} + + +bool operator!=( const Msf& m1, const Msf& m2 ) +{ + return !operator==( m1, m2 ); +} + + +bool operator<( const Msf& m1, const Msf& m2 ) +{ + return ( m1.lba() < m2.lba() ); +} + + +bool operator>( const Msf& m1, const Msf& m2 ) +{ + return ( m1.lba() > m2.lba() ); +} + + +bool operator<=( const Msf& m1, const Msf& m2 ) +{ + return ( m1.lba() <= m2.lba() ); +} + + +bool operator>=( const Msf& m1, const Msf& m2 ) +{ + return ( m1.lba() >= m2.lba() ); +} + + +QDebug& operator<<( QDebug& s, const Msf& m ) +{ + return s << m.toString(); +} diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.h kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.h 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/msf.h 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,89 @@ +#ifndef MSF_H +#define MSF_H + +#include <QSharedDataPointer> + +class Msf +{ +public: + Msf(); + Msf( const Msf& ); + Msf( int, int, int ); + Msf( int ); + ~Msf(); + + Msf& operator=( const Msf& ); + Msf& operator=( int ); + Msf& operator+=( const Msf& ); + Msf& operator+=( int ); + Msf& operator-=( const Msf& ); + Msf& operator-=( int ); + const Msf operator++( int ); + Msf& operator++(); + const Msf operator--( int ); + Msf& operator--(); + + int minutes() const; + int seconds() const; + int frames() const; + + int totalFrames() const; + int lba() const; + + // operator int () const { return lba(); } + + void setValue( int m, int s, int f ); + + void addMinutes( int m ); + void addSeconds( int s ); + void addFrames( int f ); + + QString toString( bool showFrames = true ) const; + + qulonglong mode1Bytes() const; + qulonglong mode2Form1Bytes() const; + qulonglong mode2Form2Bytes() const; + qulonglong audioBytes() const; + qulonglong rawBytes() const; + unsigned long long pcmSamples() const; + + /** + * Convert a string representation into an Msf object. + * + * Valid strings include: + * \li 100 - treated as 100 frames + * \li 100:23 - treated as 100 minutes and 23 seconds + * \li 100:23:57 - treated as 100 minutes, 23 seconds, and 57 frames + * \li 100:23.57 - treated as 100 minutes, 23 seconds, and 57 frames + */ + static Msf fromString( const QString&, bool* ok = 0 ); + + /** + * @param ms seconds + * frames will be rounded up + */ + static Msf fromSeconds( double ms ); + + static Msf fromAudioBytes( qint64 bytes ); + + static QRegExp regExp(); + +private: + class Private; + QSharedDataPointer<Private> d; +}; + +Msf operator+( const Msf&, const Msf& ); +Msf operator+( const Msf&, int ); +Msf operator-( const Msf&, const Msf& ); +Msf operator-( const Msf&, int ); +bool operator==( const Msf&, const Msf& ); +bool operator!=( const Msf&, const Msf& ); +bool operator<( const Msf&, const Msf& ); +bool operator>( const Msf&, const Msf& ); +bool operator<=( const Msf&, const Msf& ); +bool operator>=( const Msf&, const Msf& ); + +QDebug& operator<<( QDebug&, const Msf& ); + +#endif // MSF_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.cpp 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,2519 @@ +#include "newdevicetype.h" +#include "src/status-fix/discread.h" +#include "src/status-fix/discscsi.h" +#include "deviceglobals.h" +#include "devicetypes.h" +#include "mmc.h" +#include "src/frame/logger.h" +#include "src/frame/signals.h" +#include "glib.h" +#include "src/data/iso9660.h" +#include "src/data/iso9660backend.h" +#include "src/po/translation.h" +#include <mntent.h> +#undef signals +#include <gio/gio.h> +#define signals Q_SIGNAL + + + +ExtendDataCDRom::ExtendDataCDRom(QString blockName, QObject *parent):DataCDROM(blockName,parent) +{ +} + +ExtendDataCDRom::ExtendDataCDRom(DataCDROM &cdrom, QString blockName, QObject *parent):DataCDROM(cdrom,blockName,parent) +{ +} + +int ExtendDataCDRom::currentProfile() +{ + unsigned char profileBuf[8]; + ::memset( profileBuf, 0, 8 ); + + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_GET_CONFIGURATION; + cmd[1] = 1; + cmd[8] = 8; + cmd[9] = 0; // Necessary to set the proper command length + + if( cmd.transport( TR_DIR_READ, profileBuf, 8 ) ) { + qDebug() << "(Device::Device) " << device() + << " GET_CONFIGURATION failed." ; + return Device::MEDIA_UNKNOWN; + } + else { + short profile = Device::from2Byte( &profileBuf[6] ); + + // + // Plextor drives might not set a current profile + // In that case we get the list of all current profiles + // and simply use the first one in that list. + // + if( profile == 0x00 ) { + qDebug() << "(Device::Device) " << device() + << " current profile 0. Checking current profile list instead."; + UByteArray data; + if( getFeature( data, Device::FEATURE_PROFILE_LIST ) ) { + int featureLen( data[11] ); + for( int j = 0; j < featureLen; j+=4 ) { + // use the first current profile we encounter + if( data[12+j+2] & 0x1 ) { + profile = Device::from2Byte( &data[12+j] ); + break; + } + } + } + } + + switch (profile) { + case 0x00: return Device::MEDIA_NONE; + case 0x08: return Device::MEDIA_CD_ROM; + case 0x09: return Device::MEDIA_CD_R; + case 0x0A: return Device::MEDIA_CD_RW; + case 0x10: return Device::MEDIA_DVD_ROM; + case 0x11: return Device::MEDIA_DVD_R_SEQ; + case 0x12: return Device::MEDIA_DVD_RAM; + case 0x13: return Device::MEDIA_DVD_RW_OVWR; + case 0x14: return Device::MEDIA_DVD_RW_SEQ; + case 0x15: return Device::MEDIA_DVD_R_DL_SEQ; + case 0x16: return Device::MEDIA_DVD_R_DL_JUMP; + case 0x1A: return Device::MEDIA_DVD_PLUS_RW; + case 0x1B: return Device::MEDIA_DVD_PLUS_R; + case 0x2B: return Device::MEDIA_DVD_PLUS_R_DL; + case 0x40: return Device::MEDIA_BD_ROM; + case 0x41: { + if( featureCurrent( Device::FEATURE_BD_PSEUDO_OVERWRITE ) == 1 ) + return Device::MEDIA_BD_R_SRM_POW; + else + return Device::MEDIA_BD_R_SRM; + } + case 0x42: return Device::MEDIA_BD_R_RRM; + case 0x43: return Device::MEDIA_BD_RE; + case 0x50: return Device::MEDIA_HD_DVD_ROM; + case 0x51: return Device::MEDIA_HD_DVD_R; + case 0x52: return Device::MEDIA_HD_DVD_RAM; + default: return Device::MEDIA_UNKNOWN; + } + } +} + +int ExtendDataCDRom::featureCurrent(unsigned int feature) +{ + UByteArray data; + if( getFeature( data, feature ) ) { + int ret = -1; + if( data.size() >= 11 ) + ret = ( data[8+2]&1 ? 1 : 0 ); // check the current flag + + return ret; + } + else + return -1; +} + +bool ExtendDataCDRom::getFeature(UByteArray &data, unsigned int feature) +{ + unsigned char header[2048]; + ::memset( header, 0, 2048 ); + + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_GET_CONFIGURATION; + cmd[1] = 2; // read only specified feature + cmd[2] = feature>>8; + cmd[3] = feature; + cmd[8] = 8; // we only read the data length first + cmd[9] = 0; // Necessary to set the proper command length + + // we only read the data length first + unsigned int dataLen = 8; + if( cmd.transport( TR_DIR_READ, header, 8 ) ) + dataLen = Device::from4Byte( header ) + 4; + else + qDebug() << "(Device::Device) " << device() << ": GET CONFIGURATION length det failed."; + + // + // Some buggy firmwares do not return the size of the available data + // but the returned data or something invalid altogether. + // So we simply use the maximum possible value to be on the safe side + // with these buggy drives. + // We cannot use this as default since many firmwares fail with a too high data length. + // + if( (dataLen-8) % 8 || dataLen <= 8 ) + dataLen = 0xFFFF; + + // again with real length + data.resize( dataLen ); + ::memset( data.data(), 0, data.size() ); + + cmd[7] = data.size() >> 8; + cmd[8] = data.size(); + if( cmd.transport( TR_DIR_READ, data.data(), data.size() ) == 0 ) { + data.resize( qMin( data.size(), (int)Device::from4Byte( data.data() ) + 4 ) ); + return true; + } + else { + qDebug() << "(Device::Device) " << device() << ": GET CONFIGURATION with real length " + << data.size() << " failed."; + qDebug(); + data.clear(); + return false; + } +} + +bool ExtendDataCDRom::readDiscInformation(UByteArray &data) +{ + unsigned char header[2048]; + ::memset( header, 0, 2048 ); + + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_READ_DISC_INFORMATION; + cmd[8] = 2; // we only read the data length first + cmd[9] = 0; // Necessary to set the proper command length + + // we only read the data length first + unsigned int dataLen = 8; + if( cmd.transport( TR_DIR_READ, header, 8 ) == 0 ) + dataLen = Device::from4Byte( header ) + 4; + else + qDebug() << "(Device::Device) " << device() << ": GET CONFIGURATION length det failed."; + + // + // Some buggy firmwares do not return the size of the available data + // but the returned data or something invalid altogether. + // So we simply use the maximum possible value to be on the safe side + // with these buggy drives. + // We cannot use this as default since many firmwares fail with a too high data length. + // + if( (dataLen-8) % 8 || dataLen <= 8 ) + dataLen = 0xFFFF; + + // again with real length + data.resize( dataLen ); + ::memset( data.data(), 0, data.size() ); + + cmd[7] = data.size() >> 8; + cmd[8] = data.size(); + if( cmd.transport( TR_DIR_READ, data.data(), data.size() ) == 0 ) { + data.resize( qMin( data.size(), (int)Device::from4Byte( data.data() ) + 4 ) ); + return true; + } + else { + qDebug() << "(Device::Device) " << device() << ": GET CONFIGURATION with real length " + << data.size() << " failed."; + qDebug(); + data.clear(); + return false; + } +} + +bool ExtendDataCDRom::readDvdStructure(UByteArray &data, unsigned int format, unsigned int layer, unsigned long address, unsigned int agid) +{ + return readDiscStructure( data, 0x0, format, layer, address, agid ); +} + +bool ExtendDataCDRom::readDiscStructure(UByteArray &data, unsigned int mediaType, unsigned int format, unsigned int layer, unsigned long address, unsigned int agid) +{ + unsigned char header[4]; + ::memset( header, 0, 4 ); + + DiscScsi cmd(m_oBlockName); + + cmd[0] = MMC_READ_DVD_STRUCTURE; + cmd[1] = mediaType & 0xF; + cmd[2] = address>>24; + cmd[3] = address>>16; + cmd[4] = address>>8; + cmd[5] = address; + cmd[6] = layer; + cmd[7] = format; + cmd[10] = (agid<<6); + cmd[11] = 0; // Necessary to set the proper command length + + cmd[9] = 4; + if( cmd.transport( TR_DIR_READ, header, 4 ) == 0 ) { + // again with real length + unsigned int dataLen = Device::from2Byte( header ) + 2; + + data.resize( dataLen ); + ::memset( data.data(), 0, data.size() ); + + cmd[8] = data.size() >> 8; + cmd[9] = data.size(); + if( cmd.transport( TR_DIR_READ, data.data(), data.size() ) == 0 ) { + data.resize( qMin( data.size(), Device::from2Byte( data.data() ) + 2 ) ); + return true; + } + else { + qDebug() << "(Device::Device) " << device() << ": READ DVD STRUCTURE with real length failed."; + data.clear(); + return false; + } + } + else { + qDebug() << "(Device::Device) " << device() << ": READ DVD STRUCTURE length det failed"; + return false; + } +} + +bool ExtendDataCDRom::readTocPmaAtip(UByteArray &data, int format, bool msf, int track) +{ + unsigned int descLen = 0; + + switch( format ) { + case 0x0: + descLen = 8; + break; + case 0x1: + descLen = 8; + break; + case 0x2: + descLen = 11; + break; + case 0x3: + descLen = 11; + break; + case 0x4: + descLen = 4; // MMC2: 24 and MMC4: 28, so we use the highest common factor + break; + case 0x5: + descLen = 18; + break; + } + + unsigned char header[2048]; + ::memset( header, 0, 2048 ); + + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_READ_TOC_PMA_ATIP; + cmd[1] = ( time ? 0x2 : 0x0 ); + cmd[2] = format & 0x0F; + cmd[6] = track; + cmd[8] = 4; + cmd[9] = 0; // Necessary to set the proper command length + + // we only read the header + unsigned int dataLen = 4; + if( cmd.transport( TR_DIR_READ, header, 4 ) == 0 ) + dataLen = Device::from2Byte( header ) + 2; + else + qDebug() << "(K3b::Device::Device) " << device() << ": READ TOC/PMA/ATIP length det failed."; + + // + // Some buggy firmwares return an invalid size here + // So we simply use the maximum possible value to be on the safe side + // with these buggy drives. + // We cannot use this as default since many firmwares fail with a too high data length. + // + if( descLen != 0 && ((dataLen-4) % descLen || dataLen < 4+descLen) ) { + qDebug() << "(K3b::Device::Device) " << device() << ": READ TOC/PMA/ATIP invalid length returned: " << dataLen; + dataLen = 0xFFFF; + } + + // + // Not all drives like uneven numbers + // + if( dataLen%2 ) + ++dataLen; + + // again with real length + data.resize( dataLen ); + ::memset( data.data(), 0, data.size() ); + + cmd[7] = data.size() >> 8; + cmd[8] = data.size(); + if( cmd.transport( TR_DIR_READ, data.data(), data.size() ) == 0 ) { + dataLen = qMin( dataLen, Device::from2Byte( data.data() ) + 2u ); + if( descLen == 0 || (dataLen-4) % descLen || dataLen < 4+descLen ) { + // useless length + data.clear(); + return false; + } + else { + data.resize( dataLen ); + return true; + } + } + else { + qDebug() << "(K3b::Device::Device) " << device() << ": READ TOC/PMA/ATIP format " + << format << " with real length " + << data.size() << " failed." << endl; + data.clear(); + return false; + } +} + +bool ExtendDataCDRom::readFormatCapacity(int wantedFormat, Msf &r, Msf *currentMax, int *currentMaxFormat) +{ + bool success = false; + + // the maximal length as stated in MMC4 + static const unsigned int maxLen = 4 + (8*32); + + unsigned char buffer[maxLen]; + ::memset( buffer, 0, maxLen ); + + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_READ_FORMAT_CAPACITIES; + cmd[7] = maxLen >> 8; + cmd[8] = maxLen & 0xFF; + cmd[9] = 0; // Necessary to set the proper command length + if( cmd.transport( TR_DIR_READ, buffer, maxLen ) == 0 ) { + + unsigned int realLength = buffer[3] + 4; + + qDebug() << "(Device::Device) " << device() << " READ FORMAT CAPACITY: Current/Max " + << (int)(buffer[8]&0x3) << " " << Device::from4Byte( &buffer[4] ) << endl; + + if( currentMax ) + *currentMax = Device::from4Byte( &buffer[4] ); + if( currentMaxFormat ) + *currentMaxFormat = (int)(buffer[8]&0x3); + + // + // Descriptor Type: + // 0 - reserved + // 1 - unformatted :) + // 2 - formatted. Here we get the used capacity (lead-in to last lead-out/border-out) + // 3 - No media present + // + for( unsigned int i = 12; i < realLength-4; i+=8 ) { + int format = (int)((buffer[i+4]>>2)&0x3f); + qDebug() << "(Device::Device) " << device() << " READ FORMAT CAPACITY: " + << format << " " << Device::from4Byte( &buffer[i] ) + << " " << (int)( (buffer[i+5] << 16 & 0xFF0000) | + (buffer[i+6] << 8 & 0xFF00) | + (buffer[i+7] & 0xFF) ) << endl; + + if( format == wantedFormat ) { + // found the descriptor + r = qMax( (int)Device::from4Byte( &buffer[i] ), r.lba() ); + success = true; + } + } + } + + return success; +} + +bool ExtendDataCDRom::readTrackInformation(UByteArray &data, int type, int value) +{ + unsigned char header[2048]; + ::memset( header, 0, 2048 ); + + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_READ_TRACK_INFORMATION; + cmd[9] = 0; // Necessary to set the proper command length + + switch( type ) { + case 0: + case 1: + case 2: + cmd[1] = type & 0x3; + cmd[2] = value>>24; + cmd[3] = value>>16; + cmd[4] = value>>8; + cmd[5] = value; + break; + default: + qDebug() << "(Device::readTrackInformation) wrong type parameter: " << type; + return false; + } + + // first we read the header + unsigned int dataLen = 4; + cmd[8] = 4; + if( cmd.transport( TR_DIR_READ, header, 4 ) == 0 ) + dataLen = Device::from2Byte( header ) + 2; + else + qDebug() << "(Device::Device) " << device() << ": READ TRACK INFORMATION length det failed."; + + // + // Some buggy firmwares do not return the size of the available data + // but the returned data. + // So we try to determine the correct size based on the medium type + // DVD+R: 40 (MMC4) + // DVD-DL: 48 (MMC5) + // CD: 36 (MMC2) + // + if( dataLen <= 6 ) { + int m = mediaType(); + if( m & (Device::MEDIA_DVD_R_DL|Device::MEDIA_DVD_R_DL_SEQ|Device::MEDIA_DVD_R_DL_JUMP) ) + dataLen = 48; + else if( m & (Device::MEDIA_DVD_PLUS_R|Device::MEDIA_DVD_PLUS_R_DL) ) + dataLen = 40; + else + dataLen = 36; + } + + // again with real length + data.resize( dataLen ); + ::memset( data.data(), 0, data.size() ); + + cmd[7] = data.size() >> 8; + cmd[8] = data.size(); + if( cmd.transport( TR_DIR_READ, data.data(), data.size() ) == 0 ) { + data.resize( qMin( data.size(), Device::from2Byte( data.data() ) + 2 ) ); + return true; + } + else { + qDebug() << "(Device::Device) " << device() << ": READ TRACK INFORMATION with real length " + << data.size() << " failed." << endl; + data.clear(); + return false; + } +} + +bool ExtendDataCDRom::readCapacity(Msf &r) +{ + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_READ_CAPACITY; + cmd[9] = 0; // Necessary to set the proper command length + unsigned char buf[8]; + ::memset( buf, 0, 8 ); + if( cmd.transport( TR_DIR_READ, buf, 8 ) == 0 ) { + r = Device::from4Byte( buf ); + return true; + } + else + return false; +} + +Toc ExtendDataCDRom::readToc() +{ + bool needToClose = !isOpen(); + + Toc toc; + + if( !open() ) + return toc; + + int mt = mediaType(); + + // + // Use the profile if available because DVD-ROM units need to treat DVD+-R(W) media as DVD-ROM + // if supported at all + // + if( currentProfile() == Device::MEDIA_DVD_ROM ) + mt = Device::MEDIA_DVD_ROM; + + if( mt & (Device::MEDIA_DVD_MINUS_ALL|Device::MEDIA_DVD_PLUS_RW|Device::MEDIA_DVD_ROM) ) { + if( !readFormattedToc( toc, mt ) ) { + Msf size; + if( readCapacity( size ) ) { + Track track; + track.setFirstSector( 0 ); + track.setLastSector( size.lba() ); + track.setSession( 1 ); + track.setType( Track::TYPE_DATA ); + track.setMode( Track::DVD ); + track.setCopyPermitted( mt != Device::MEDIA_DVD_ROM ); + track.setPreEmphasis( mt != Device::MEDIA_DVD_ROM ); + + toc.append( track ); + } + else + qDebug() << "(Device::Device) " << device() + << "READ CAPACITY for toc failed." << endl; + } + } + + else if( mt & (Device::MEDIA_DVD_PLUS_R|Device::MEDIA_DVD_PLUS_R_DL) ) { + // + // a DVD+R disk may have multiple sessions + // every session may contain up to 16 fragments + // if the disk is open there is one open session + // every closed session is viewed as a track whereas + // every fragment of the open session is viewed as a track + // + // We may use + // READ DISK INFORMATION + // READ TRACK INFORMATION: track number FFh, however, does not refer to the invisible track + // READ TOC/PMA/ATIP: form 0 refers to all closed sessions + // form 1 refers to the last closed session + // + readFormattedToc( toc, mt ); + } + + else if( mt & Device::MEDIA_BD_ALL ) { + readFormattedToc( toc, mt ); + } + + else if( mt == Device::MEDIA_DVD_RAM ) { + qDebug() << "(Device::readDvdToc) no dvdram support"; + } + + + else if( mt & Device::MEDIA_CD_ALL ) { + bool success = readRawToc( toc ); + if( !success ) { + success = readFormattedToc( toc, mt ); + + if( !success ) { + qDebug() << "(Device::Device) MMC READ TOC failed. falling back to cdrom.h."; + readTocLinux(toc); + } + + if( success ) + fixupToc( toc ); + } + } + + if( needToClose ) + close(); + + return toc; +} + +bool ExtendDataCDRom::readFormattedToc(Toc &toc, int mt) +{ + // if the device is already opened we do not close it + // to allow fast multiple method calls in a row + bool needToClose = !isOpen(); + + bool success = false; + + toc.clear(); + + int lastTrack = 0; + + UByteArray data; + if( !(mt & Device::MEDIA_CD_ALL) ) { + // + // on DVD-R(W) multisession disks only two sessions are represented as tracks in the readTocPmaAtip + // response (fabricated TOC). Thus, we use readDiscInformation for DVD media to get the proper number of tracks + // + if( readDiscInformation( data ) ) { + lastTrack = (int)( data[11]<<8 | data[6] ); + + if( readTrackInformation( data, 1, lastTrack ) ) { + track_info_t* trackInfo = (track_info_t*)data.data(); + + if( trackInfo->blank ) { + lastTrack--; + } + + success = true; + } + else + return false; + } + else + return false; + } + else { + if( readTocPmaAtip( data, 0, 0, 1 ) ) { + + if( data.size() < 4 ) { + qDebug() << "(Device::Device) " << device() << ": formatted toc data too small."; + } + else if( data.size() != ( (int)sizeof(toc_track_descriptor) * ((int)data[3]+1) ) + 4 ) { + qDebug() << "(Device::Device) " << device() << ": invalid formatted toc data length: " + << (data.size()-2) << endl; + } + else { + lastTrack = data[3]; + toc_track_descriptor* td = (toc_track_descriptor*)&data[4]; + for( int i = 0; i < lastTrack; ++i ) { + + Track track; + unsigned int control = 0; + + // + // In case READ TRACK INFORMATION fails: + // no session number info + // no track length and thus possibly incorrect last sector for + // multisession disks + // + track.setFirstSector( Device::from4Byte( td[i].start_adr ) ); + track.setLastSector( Device::from4Byte( td[i+1].start_adr ) - 1 ); + control = td[i].control; + + track.setType( (control & 0x4) ? Track::TYPE_DATA : Track::TYPE_AUDIO ); + track.setMode( getTrackDataMode( track ) ); + track.setCopyPermitted( control & 0x2 ); + track.setPreEmphasis( control & 0x1 ); + + toc.append( track ); + } + + success = true; + } + } + } + + + // + // Try to get information for all the tracks + // + for( int i = 0; i < lastTrack; ++i ) { + if( toc.count() < i+1 ) + toc.append( Track() ); + + UByteArray trackData; + if( readTrackInformation( trackData, 1, i+1 ) ) { + track_info_t* trackInfo = (track_info_t*)trackData.data(); + + toc[i].setFirstSector( Device::from4Byte( trackInfo->track_start ) ); + + if( i > 0 && toc[i-1].lastSector() == 0 ) + toc[i-1].setLastSector( toc[i].firstSector() - 1 ); + + // There are drives that return 0 track length here! + // Some drives even return an invalid length here. :( + if( Device::from4Byte( trackInfo->track_size ) > 0 ) + toc[i].setLastSector( toc[i].firstSector() + Device::from4Byte( trackInfo->track_size ) - 1 ); + + if( trackInfo->nwa_v ) { + toc[i].setNextWritableAddress( Device::from4Byte( trackInfo->next_writable ) ); + toc[i].setFreeBlocks( Device::from4Byte( trackInfo->free_blocks ) ); + } + + toc[i].setSession( (int)((trackInfo->session_number_m<<8 & 0xf0) | + (trackInfo->session_number_l & 0x0f)) ); //FIXME: is this BCD? + + int control = trackInfo->track_mode; + + if( mt & Device::MEDIA_CD_ALL ) { + toc[i].setType( (control & 0x4) ? Track::TYPE_DATA : Track::TYPE_AUDIO ); + toc[i].setMode( getTrackDataMode( toc[i] ) ); + } + else { + toc[i].setType( Track::TYPE_DATA ); + toc[i].setMode( Track::DVD ); + } + toc[i].setCopyPermitted( control & 0x2 ); + toc[i].setPreEmphasis( control & 0x1 ); + } + else if( !(mt & Device::MEDIA_CD_ALL) ) { + success = false; + } + } + + // this can only happen with DVD media + if( !toc.isEmpty() && toc.last().lastSector() == 0 ) { + qDebug() << "(Device::Device) " << device() << " no track length for the last non-empty track."; + UByteArray trackData; + if( readTrackInformation( trackData, 1, lastTrack+1 ) ) { + track_info_t* trackInfo = (track_info_t*)trackData.data(); + + toc.last().setLastSector( Device::from4Byte( trackInfo->track_start ) - 1 ); + } + } + + + if( needToClose ) + close(); + + return success; +} + +bool ExtendDataCDRom::readRawToc(Toc &toc) +{ + // if the device is already opened we do not close it + // to allow fast multiple method calls in a row + bool needToClose = !isOpen(); + + bool success = false; + + toc.clear(); + + if( open() ) { + // + // Read Raw TOC (format: 0010b) + // + // For POINT from 01h-63h we get all the tracks + // POINT a1h gices us the last track number in the session in PMIN + // POINT a2h gives the start of the session lead-out in PMIN,PSEC,PFRAME + // + + UByteArray data; + + if( readTocPmaAtip( data, 2, false, 1 ) ) { + if( data.size() > 4 ) { + success = true; + + toc_raw_track_descriptor* tr = (toc_raw_track_descriptor*)&data[4]; + + // + // debug the raw toc data + // + qDebug() << "Session | ADR | CONTROL| TNO | POINT | Min | Sec | Frame | Zero | PMIN | PSEC | PFRAME |"; + for( int i = 0; i < (data.size()-4)/(int)sizeof(toc_raw_track_descriptor); ++i ) { + QString s; + s += QString( " %1 |" ).arg( (int)tr[i].session_number, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].adr, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].control, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].tno, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].point, 6, 16 ); + s += QString( " %1 |" ).arg( (int)tr[i].min, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].sec, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].frame, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].zero, 6, 16 ); + s += QString( " %1 |" ).arg( (int)tr[i].p_min, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].p_sec, 6 ); + s += QString( " %1 |" ).arg( (int)tr[i].p_frame, 6 ); + qDebug() << s; + } + + // + // First we try to determine if the raw toc data uses BCD values + // + int isBcd = rawTocDataWithBcdValues( data ); + if( isBcd == -1 ) { + return false; + } + + Msf sessionLeadOut; + + for( unsigned int i = 0; i < (data.size()-4)/(unsigned int)sizeof(toc_raw_track_descriptor); ++i ) { + if( tr[i].adr == 1 && tr[i].point <= 0x63 ) { + // track + Track track; + track.setSession( tr[i].session_number ); + + // :( We use 00:00:00 == 0 lba) + if( isBcd ) + track.setFirstSector( Msf( Device::fromBcd(tr[i].p_min), + Device::fromBcd(tr[i].p_sec), + Device::fromBcd(tr[i].p_frame) ) - 150 ); + else + track.setFirstSector( Msf( tr[i].p_min, tr[i].p_sec, tr[i].p_frame ) - 150 ); + + track.setType( tr[i].control & 0x4 ? Track::TYPE_DATA : Track::TYPE_AUDIO ); + track.setMode( track.type() == Track::TYPE_DATA ? getTrackDataMode(track) : Track::UNKNOWN ); + track.setCopyPermitted( tr[i].control & 0x2 ); + track.setPreEmphasis( tr[i].control & 0x1 ); + + // + // only do this within a session because otherwise we already set the last sector with the session leadout + // + if( !toc.isEmpty() ) + if( toc[toc.count()-1].session() == track.session() ) + toc[toc.count()-1].setLastSector( track.firstSector() - 1 ); + + toc.append(track); + } + else if( tr[i].point == 0xa2 ) { + // + // since the session is always reported before the tracks this is where we do this: + // set the previous session's last tracks's last sector to the first sector of the + // session leadout (which was reported before the tracks) + // + // This only happens on multisession CDs + // + if( !toc.isEmpty() ) + toc[toc.count()-1].setLastSector( sessionLeadOut - 1 ); + + // this is save since the descriptors are reported in ascending order of the session number + // :( We use 00:00:00 == 0 lba) + if( isBcd ) + sessionLeadOut = Msf( Device::fromBcd(tr[i].p_min), + Device::fromBcd(tr[i].p_sec), + Device::fromBcd(tr[i].p_frame) ) - 150; + else + sessionLeadOut = Msf( tr[i].p_min, tr[i].p_sec, tr[i].p_frame ) - 150; + } + } + + qDebug() << device() << ": setting last sector of last track to " << (sessionLeadOut-1).lba(); + + // set the last track's last sector + if( !toc.isEmpty() ) + toc[toc.count()-1].setLastSector( sessionLeadOut - 1 ); + } + else + qDebug() << "(Device::Device) " << device() << " empty raw toc."; + } + } + + if( needToClose ) + close(); + + return success; +} + +bool ExtendDataCDRom::readTocLinux(Toc &toc) +{ + // if the device is already opened we do not close it + // to allow fast multiple method calls in a row + bool needToClose = !isOpen(); + + bool success = true; + + toc.clear(); + + struct cdrom_tochdr tochdr; + struct cdrom_tocentry tocentry; + + if( open() ) { + // + // CDROMREADTOCHDR ioctl returns: + // cdth_trk0: First Track Number + // cdth_trk1: Last Track Number + // + if( ::ioctl( m_iHandle, CDROMREADTOCHDR, &tochdr ) ) { + qDebug() << "(Device) could not get toc header !"; + success = false; + } + else { + Track lastTrack; + for (int i = tochdr.cdth_trk0; i <= tochdr.cdth_trk1 + 1; i++) { + ::memset(&tocentry,0,sizeof (struct cdrom_tocentry)); + // get Lead-Out Information too + tocentry.cdte_track = (i<=tochdr.cdth_trk1) ? i : CDROM_LEADOUT; + tocentry.cdte_format = CDROM_LBA; + + if( ::ioctl( m_iHandle, CDROMREADTOCENTRY, &tocentry ) ) { + qDebug() << "(Device) error reading tocentry " << i; + success = false; + break; + } + + int startSec = tocentry.cdte_addr.lba; + int control = tocentry.cdte_ctrl & 0x0f; + int mode = tocentry.cdte_datamode; + if( i > tochdr.cdth_trk0 ) { + Track track( lastTrack.firstSector(), startSec-1, lastTrack.type(), lastTrack.mode() ); + track.setPreEmphasis( control & 0x1 ); + track.setCopyPermitted( control & 0x2 ); + toc.append( track ); + } + Track::TrackType trackType = Track::TYPE_UNKNOWN; + Track::DataMode trackMode = Track::UNKNOWN; + if( (control & 0x04 ) && (tocentry.cdte_track != CDROM_LEADOUT) ) { + trackType = Track::TYPE_DATA; + if( mode == 1 ) + trackMode = Track::MODE1; + else if( mode == 2 ) + trackMode = Track::MODE2; + + Track::DataMode tm = getDataMode(startSec); + if( tm != Track::UNKNOWN ) + trackMode = tm; + } + else + trackType = Track::TYPE_AUDIO; + + lastTrack = Track( startSec, startSec, trackType, trackMode ); + } + } + + if( needToClose ) + close(); + } + else + success = false; + + return success; +} + +bool ExtendDataCDRom::fixupToc(Toc &toc) +{ + bool success = false; + + // + // This is a very lame method of fixing the TOC of an Advanced Audio CD + // (a CD with two sessions: one with audio tracks and one with the data track) + // If a drive does not support reading raw toc or reading track info we only + // get every track's first sector. But between sessions there is a gap which is used + // for ms stuff. In this case it's 11400 sectors in size. When ripping ausio we would + // include these 11400 sectors which would result in a strange ending audio file. + // + if( numSessions() > 1 || toc.contentType() == Device::MIXED ) { + qDebug() << "(K3b::Device::Device) fixup multisession toc..."; + + // + // we need to update the last sector of every last track in every session + // for now we only update the track before the last session... + // This is the most often case: Advanced Audio CD + // + + UByteArray data; + if( readTocPmaAtip( data, 1, false, 0 ) ) { + + // + // data[6] - first track number in last complete session + // data[8-11] - start address of first track in last session + // + + toc[(unsigned int)data[6]-2].setLastSector( Device::from4Byte( &data[8] ) - 11400 - 1 ); + + success = true; + } + else + qDebug() << "(K3b::Device::Device) FIXUP TOC failed."; + } + + return success; +} + +Track::DataMode ExtendDataCDRom::getTrackDataMode(const Track &track) +{ + return getDataMode( track.firstSector() ); +} + +Track::DataMode ExtendDataCDRom::getDataMode(const Msf §or) +{ + bool needToClose = !isOpen(); + + Track::DataMode ret = Track::UNKNOWN; + + if( !open() ) + return ret; + + // we use readCdMsf here since it's defined mandatory in MMC1 and + // we only use this method for CDs anyway + unsigned char data[2352]; + bool readSuccess = readCdMsf( data, 2352, + 0, // all sector types + false, // no dap + sector, + sector+1, + true, // SYNC + true, // HEADER + true, // SUBHEADER + true, // USER DATA + true, // EDC/ECC + 0, // no c2 info + 0 ); + + if( readSuccess ) { + if ( data[15] == 0x1 ) + ret = Track::MODE1; + else if ( data[15] == 0x2 ) + ret = Track::MODE2; + if ( ret == Track::MODE2 ) { + if ( data[16] == data[20] && + data[17] == data[21] && + data[18] == data[22] && + data[19] == data[23] ) { + if ( data[18] & 0x20 ) + ret = Track::XA_FORM2; + else + ret = Track::XA_FORM1; + } + } + } + + if( needToClose ) + close(); + + return ret; +} + +int ExtendDataCDRom::rawTocDataWithBcdValues(const UByteArray &data) +{ + toc_raw_track_descriptor* tr = (toc_raw_track_descriptor*)&data[4]; + + bool notBcd = false; + bool notHex = false; + + // + // in most cases this will already tell us if a drive does not provide bcd numbers + // (which should be all newer MMC drives) + // + for( unsigned int i = 0; i < (data.size()-4)/(unsigned int)sizeof(toc_raw_track_descriptor); ++i ) { + if( tr[i].adr == 1 && tr[i].point <= 0xa2) { + if( !Device::isValidBcd(tr[i].p_min) || + !Device::isValidBcd(tr[i].p_sec) || + !Device::isValidBcd(tr[i].p_frame) ) { + notBcd = true; + break; + } + + // we only need to check sec and frame since min needs to be <= 99 + // and bcd values are never bigger than 99. + else if( (int)Device::fromBcd(tr[i].p_sec) >= 60 || + (int)Device::fromBcd(tr[i].p_frame) >= 75 ) { + notBcd = true; + break; + } + } + } + + + // + // all values are valid bcd values but we still don't know for sure if they are really + // used as bcd. So we also check the HEX values. + // + for( unsigned int i = 0; i < (data.size()-4)/(unsigned int)sizeof(toc_raw_track_descriptor); ++i ) { + if( tr[i].adr == 1 && tr[i].point <= 0xa2 ) { + if( (int)tr[i].p_min > 99 || + (int)tr[i].p_sec >= 60 || + (int)tr[i].p_frame >= 75 ) { + notHex = true; + break; + } + } + } + + + // + // If all values are valid bcd and valid hex we check the start sectors of the tracks. + // + if( !notHex || !notBcd ) { + Msf sessionLeadOutHex, sessionLeadOutBcd; + Msf lastTrackHex, lastTrackBcd; + + for( unsigned int i = 0; i < (data.size()-4)/(unsigned int)sizeof(toc_raw_track_descriptor); ++i ) { + + if( tr[i].adr == 1 ) { + if( tr[i].point < 0x64 ) { + + // check hex values + if( Msf( tr[i].p_min, tr[i].p_sec, tr[i].p_frame ) < lastTrackHex ) + notHex = true; + + // check bcd values + if( Msf( Device::fromBcd(tr[i].p_min), Device::fromBcd(tr[i].p_sec), Device::fromBcd(tr[i].p_frame) ) < lastTrackBcd ) + notBcd = true; + + lastTrackBcd = Msf( Device::fromBcd(tr[i].p_min), Device::fromBcd(tr[i].p_sec), Device::fromBcd(tr[i].p_frame) ); + lastTrackHex = Msf( tr[i].p_min, tr[i].p_sec, tr[i].p_frame ); + } + else if( tr[i].point == 0xa2 ) { + if( sessionLeadOutHex < lastTrackHex ) + notHex = true; + if( sessionLeadOutBcd < lastTrackBcd ) + notBcd = true; + + sessionLeadOutHex = Msf( tr[i].p_min, tr[i].p_sec, tr[i].p_frame ); + sessionLeadOutBcd = Msf( Device::fromBcd(tr[i].p_min), Device::fromBcd(tr[i].p_sec), Device::fromBcd(tr[i].p_frame) ); + } + } + } + + // check the last track + if( sessionLeadOutHex < lastTrackHex ) + notHex = true; + if( sessionLeadOutBcd < lastTrackBcd ) + notBcd = true; + } + + + if( !notBcd && !notHex ) { + qDebug() << "(Device::Device) need to compare raw toc to formatted toc. :("; + // + // All values are valid bcd and valid HEX values so we compare with the formatted toc. + // This slows us down a lot but in most cases this should not be reached anyway. + // + // TODO: also check the bcd values + // + Toc formattedToc; + if( readFormattedToc( formattedToc, Device::MEDIA_CD_ROM ) ) { + for( unsigned int i = 0; i < (data.size()-4)/(unsigned int)sizeof(toc_raw_track_descriptor); ++i ) { + if( tr[i].adr == 1 && tr[i].point < 0x64 ) { + unsigned int track = (int)tr[i].point; + + // FIXME: do bcd drive also encode the track number in bcd? If so test it, too. + + if( ( int )track > formattedToc.count() ) { + notHex = true; + break; + } + + Msf posHex( tr[i].p_min, + tr[i].p_sec, + tr[i].p_frame ); + Msf posBcd( Device::fromBcd(tr[i].p_min), + Device::fromBcd(tr[i].p_sec), + Device::fromBcd(tr[i].p_frame) ); + posHex -= 150; + posBcd -= 150; + if( posHex != formattedToc[track-1].firstSector() ) + notHex = true; + if( posBcd != formattedToc[track-1].firstSector() ) + notBcd = true; + } + } + } + } + + if( notBcd ) + qDebug() << "(Device::Device) found invalid bcd values. No bcd toc."; + if( notHex ) + qDebug() << "(Device::Device) found invalid hex values. No hex toc."; + + if( notBcd == notHex ) { + qDebug() << "(Device::Device) unable to determine if hex (" << notHex << ") or bcd (" << notBcd << ")."; + if( !notHex ) { + qDebug() << "Assuming hex encoding in favor of newer drives and the more reliable raw toc."; + return 0; + } + return -1; + } + else if( notBcd ) + return 0; + else + return 1; +} + +int ExtendDataCDRom::numSessions() +{ + // + // Session Info + // ============ + // Byte 0-1: Data Length + // Byte 2: First Complete Session Number (Hex) - always 1 + // Byte 3: Last Complete Session Number (Hex) + // + + int ret = -1; + + UByteArray data; + + int m = mediaType(); + if( m & Device::MEDIA_CD_ALL ) { + // + // Althought disk_info should get the real value without ide-scsi + // I keep getting wrong values (the value is too high. I think the leadout + // gets counted as session sometimes :() + // + if( readTocPmaAtip( data, 1, 0, 0 ) ) { + ret = data[3]; + } + else { + qDebug() << "(K3b::Device::Device) " << device() << ": could not get session info !"; + } + } + else if ( m & ( Device::MEDIA_DVD_PLUS_RW|Device::MEDIA_DVD_RW_OVWR|Device::MEDIA_BD_RE ) ) { + // fabricate value + int e = isEmpty(); + return ( e == Device::STATE_COMPLETE ? 1 : 0 ); + } + else { + if( readDiscInformation( data ) ) { + ret = (int)( data[9]<<8 | data[4] ); + + // do only count complete sessions + if( (data[2]>>2) != 3 ) + ret--; + } + } + + return ret; +} + +bool ExtendDataCDRom::testUnitReady() +{ + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_TEST_UNIT_READY; + cmd[5] = 0; // Necessary to set the proper command length + return( cmd.transport() == 0 ); +} + +bool ExtendDataCDRom::readCdMsf(unsigned char *data, unsigned int dataLen, int sectorType, bool dap, const Msf &startAdress, const Msf &endAdress, bool sync, bool header, bool subHeader, bool userData, bool edcEcc, int c2, int subChannel) +{ + ::memset( data, 0, dataLen ); + + DiscScsi cmd(m_oBlockName); + cmd[0] = MMC_READ_CD_MSF; + cmd[1] = (sectorType<<2 & 0x1c) | ( dap ? 0x2 : 0x0 ); + cmd[3] = (startAdress+150).minutes(); + cmd[4] = (startAdress+150).seconds(); + cmd[5] = (startAdress+150).frames(); + cmd[6] = (endAdress+150).minutes(); + cmd[7] = (endAdress+150).seconds(); + cmd[8] = (endAdress+150).frames(); + cmd[9] = ( ( sync ? 0x80 : 0x0 ) | + ( subHeader ? 0x40 : 0x0 ) | + ( header ? 0x20 : 0x0 ) | + ( userData ? 0x10 : 0x0 ) | + ( edcEcc ? 0x8 : 0x0 ) | + ( c2<<1 & 0x6 ) ); + cmd[10] = subChannel & 0x7; + cmd[11] = 0; // Necessary to set the proper command length + + if( cmd.transport( TR_DIR_READ, data, dataLen ) ) { + qDebug() << "(K3b::Device::Device) " << device() << ": READ CD MSF failed!"; + return false; + } + else + return true; +} + +Device::MediaType ExtendDataCDRom::mediaType() +{ + Device::MediaType m = Device::MEDIA_UNKNOWN; + + if( testUnitReady() ) { + + int p = currentProfile(); + if ( p != -1 ) + m = ( Device::MediaType )p; + + if( m & (Device::MEDIA_UNKNOWN|Device::MEDIA_DVD_ROM|Device::MEDIA_HD_DVD_ROM) ) { + // + // We prefer the Device::MediaType as reported by the media since this way + // even ROM drives may report the correct type of writable media. + // + + // 4 bytes header + 2048 bytes layer descriptor + UByteArray data; + if( readDvdStructure( data ) ) { + switch( data[4]&0xF0 ) { + case 0x00: m = Device::MEDIA_DVD_ROM; break; + case 0x10: m = Device::MEDIA_DVD_RAM; break; + case 0x20: m = Device::MEDIA_DVD_R; break; // there seems to be no value for DVD-R DL, it reports DVD-R + case 0x30: m = Device::MEDIA_DVD_RW; break; + case 0x40: m = Device::MEDIA_HD_DVD_ROM; break; + case 0x50: m = Device::MEDIA_HD_DVD_R; break; + case 0x60: m = Device::MEDIA_HD_DVD_RAM; break; + case 0x90: m = Device::MEDIA_DVD_PLUS_RW; break; + case 0xA0: m = Device::MEDIA_DVD_PLUS_R; break; + case 0xE0: m = Device::MEDIA_DVD_PLUS_R_DL; break; + default: + qDebug() << "(Device::Device) unknown dvd media type: " << QString::number(data[4]&0xF0, 8); + break; // unknown + } + } + } + + if( m & (Device::MEDIA_UNKNOWN | Device::MEDIA_BD_ROM) ) { + // + // We prefer the Device::MediaType as reported by the media since this way + // even ROM drives may report the correct type of writable media. + // + + UByteArray data; + if( readDiscStructure( data, 1, 0 ) ) { + if( data.size() > 4+12 && + data[4+8] == 'B' && data[4+9] == 'D' ) { + switch( data[4+10] ) { + case 'O': m = Device::MEDIA_BD_ROM; break; + case 'W': m = Device::MEDIA_BD_RE; break; + case 'R': m = Device::MEDIA_BD_R; break; + } + } + } + } + + // + // Only old CD or DVD devices do not report a current profile + // or report CD-ROM profile for all CD types + // + if( m & (Device::MEDIA_UNKNOWN|Device::MEDIA_CD_ROM) ) { + UByteArray data; + if( readTocPmaAtip( data, 4, false, 0 ) ) { + if( (data[6]>>6)&1 ) + m = Device::MEDIA_CD_RW; + else + m = Device::MEDIA_CD_R; + } + else + m = Device::MEDIA_CD_ROM; + } + } + + return m; +} + +int ExtendDataCDRom::isEmpty() +{ + // if the device is already opened we do not close it + // to allow fast multiple method calls in a row + bool needToClose = !isOpen(); + + int ret = Device::STATE_UNKNOWN; + if( !open() ) + return Device::STATE_UNKNOWN; + + if( !testUnitReady() ) + return Device::STATE_NO_MEDIA; + + UByteArray data; + + if( readDiscInformation( data ) ) { + disc_info_t* inf = (disc_info_t*)data.data(); + switch( inf->status ) { + case 0: + ret = Device::STATE_EMPTY; + break; + case 1: + ret = Device::STATE_INCOMPLETE; + break; + case 2: + ret = Device::STATE_COMPLETE; + break; + default: + ret = Device::STATE_UNKNOWN; + break; + } + } + + if( needToClose ) + close(); + + return ret; +} + +bool ExtendDataCDRom::update() +{ + connect(g_user_signal, &GlobalUserSignal::changeDiscStatus, this, &DataCDROM::receiveDiscStatusChange,Qt::UniqueConnection); + use(); + QString blockName = m_oBlockName; + int cnt = 3; + if (!m_bCDROM) + { + release(); + LOGGER->info(QString("DataCDROM::initDevice Line:%1 非CDROM,退出,dev = %2").arg(__LINE__).arg(blockName)); + return false; + } + + destroyMedium(); + + m_oMediumType.clear(); + // real cdrom, load information by block name + // 0. ready cdrom. + + if (isOpen()){ + close(); + } + + while(cnt--) { + if (!isOpen()) { + if(!open()){ + LOGGER->warn(QString("( DataCDROM::update ) device = %1 , open device faild").arg(blockName)); + } else { + LOGGER->info((QString("( DataCDROM::update ) device = %1 , open device success, cnt = %2").arg(blockName).arg(cnt))); + break; + } + } + } + if(cnt <= 0 && !isOpen()) { + LOGGER->info(QString("[%1] [%2] open:[%3] error 3 times").arg(__func__).arg(__LINE__).arg(blockName)); + qDebug() << QString("[%1] [%2] open:[%3] error 3 times").arg(__func__).arg(__LINE__).arg(blockName); + release(); + return false; + } + // 1. vendor and descriptio + display(blockName); + // 2. load support mediu types. + support(); + //checkCDROM(); + // 3. check have medium or not. + checkMedium(); + close(); + release(); + LOGGER->info(QString("( DataCDROM::update ) Line:%1 运行完成,dev=%2").arg(__LINE__).arg(blockName)); + return true; + +} + +void ExtendDataCDRom::checkMedium() +{ + int gap = 0; + int sec = 0; + unsigned short profile = 0; + unsigned int len = 0; + unsigned char cdb[12] = {0x46, // operation code + 0x01, // RT : 0x10b + 0x00, // fearture high + 0x00, // fearture low + 0x00, // reserved + 0x00, // reserved + 0x00, // reserved + 0x00, // allocation length high + 0x0C, // allocation length low + 0}; + unsigned char result[65536] = {0}; + struct timeval start; + struct timeval current; + + LOGGER->info(QString("( ExtendMediumType::checkMedium) Line:%1,进入函数 dev = %1").arg(__LINE__).arg(m_oBlockName)); + use(); + + m_oMediumType.clear(); + + if (doorIsOpen()) + { + m_bEjected = true; + m_oMediumType.clear(); + + destroyMedium(); + + LOGGER->info(_("No medium.Because the cdrom's door is open.")); + LOGGER->info(QString("( ExtendMediumType::checkMedium ) cdrom door has opend,prepare close device(%1), handle = %2").arg(m_oBlockName).arg(m_iHandle)); + if (isOpen()) { + close(); + } + eject(false); + + release(); + return; + } + m_bEjected = false; + eject(true); +#if 0 /* 注释后未有任何影响 */ + if (checkCDROM()) sec = 15; + else sec = 5; + + ::gettimeofday(&start, nullptr); + while (m_bAppRunning && !loading() && gap < sec && nullptr == m_oMedium) + { + //QCoreApplication::processEvents();会引起计时功能问题、使变量值出错。 + if (!m_bAppRunning) + { + release(); + return; + } + ::gettimeofday(¤t, nullptr); + gap = current.tv_sec - start.tv_sec; + QThread::usleep(500); + } + if (gap >= sec && m_bAppRunning) + { + // LOGGER->debug(_("CDROM have no medium.")); + release(); + return; + } +#endif + if (!execSCSI(cdb, 12, result, 12)) + { + release(); + LOGGER->warn(QString("( ExtendMediumType::checkMedium ) Line:%1 执行execSCSI失败返回").arg(__LINE__)); + return; + } + if (!(result[8] == cdb[2] && result[9] ==cdb[3])) + { + LOGGER->warn(QString("( ExtendMediumType::checkMedium ) Line:%1 execSCSI返回值不符合返回").arg(__LINE__)); + release(); + return; + } + profile = (result[6] << 8) | result[7]; + if (0x0000 == profile) // 未读取到定义类型 + { + // 再次尝试读取全量的返回信息 + len = result[11]; + if (len > 65536) len = 65536; + cdb[7] = ((len & 0xFF00) >> 8); + cdb[8] = (len & 0x00FF); + if (!execSCSI(cdb, 12, result, len)) + { + release(); + LOGGER->warn(QString("( ExtendMediumType::checkMedium ) Line:%1 执行execSCSI失败返回").arg(__LINE__)); + return; + } + for (int i = 0; i < len; ++i) + { + //QCoreApplication::processEvents(); + if (result[14 + i] & 0x01) + { + profile = (result[12 + i] << 8) | result[13 + i]; + break; + } + } + } + + switch (profile) + { + case 0x0008: // CD-ROM + if (m_u32MediumRSupport & DataMedium::MEDIUM_CD_ROM) + { + m_oMediumType = "CD-ROM"; + LOGGER->info(_("Loaded CD-ROM medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read CD-ROM medium")); + break; + case 0x0009: //CD-R + if (m_u32MediumRSupport & DataMedium::MEDIUM_CD_R) + { + m_oMediumType = "CD-R"; + LOGGER->info(_("Loaded CD-R medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read CD-R medium")); + break; + case 0x000A: // CD-RW + if (m_u32MediumRSupport & DataMedium::MEDIUM_CD_RW) + { + m_oMediumType = "CD-RW"; + LOGGER->info(_("Loaded CD-RW medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read CD-RW medium")); + break; + case 0x0010: // DVD-ROM + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_ROM) + { + m_oMediumType = "DVD-ROM"; + LOGGER->info(_("Loaded DVD-ROM medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD-ROM medium")); + break; + case 0x0011: // DVD-R + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_R) + { + m_oMediumType = "DVD-R"; + LOGGER->info(_("Loaded DVD-R medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD-R medium")); + break; + case 0x0012: // DVD-RAM + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_RAM) + { + m_oMediumType = "DVD-RAM"; + LOGGER->info(_("Loaded DVD-RAM medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD-RAM medium")); + break; + case 0x0013: // DVD-RW + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_RW_OVERWRITE) + { + m_oMediumType = "DVD-RW"; + LOGGER->info(_("Loaded DVD-RW(OVERWRITE) medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD-RW(OVERWRITE) medium")); + break; + case 0x0014: // DVD-RW + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_RW_SEQ) + { + m_oMediumType = "DVD-RW"; + LOGGER->info(_("Loaded DVD-RW medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD-RW medium")); + break; + case 0x001A: // DVD+RW + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_PLUS_RW) + { + m_oMediumType = "DVD+RW"; + LOGGER->info(_("Loaded DVD+RW medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD+RW medium")); + break; + case 0x001B: // DVD+R + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_PLUS_R) + { + m_oMediumType = "DVD+R"; + LOGGER->info(_("Loaded DVD+R medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD+R medium")); + break; + case 0x002B: // DVD+R DL + if (m_u32MediumRSupport & DataMedium::MEDIUM_DVD_PLUS_R_DL) + { + m_oMediumType = "DVD+R DL"; + LOGGER->info(_("Loaded DVD+R DL medium in %1").arg(m_oDisplay)); + break; + } + LOGGER->error(_("CDROM %1 cannot support to read DVD+R DL medium")); + break; + default: + //LOGGER->warn(_("To be supported in KylinBurner %1").arg(profile)); + break; + } + if (!m_oMediumType.isEmpty()) + { + destroyMedium(); + + //将new DataMedium 分为2步,先new后调用load(),防止出现类A中调用类A的成员变量造成的错误 + m_oMedium = new ExtendMediumType(m_oMediumType, m_oBlockName, this); + dynamic_cast<ExtendMediumType*>(m_oMedium)->load(); + + LOGGER->info(_("Created medium of type %1.").arg(m_oMediumType)); + release(); + return; + } + LOGGER->debug(_("There is no mediun in CDROM")); + release(); + LOGGER->info(QString("( ExtendMediumType::checkMedium ) 运行完成 dev = %1").arg(m_oBlockName)); +} + +DataCDROM *ExtendDataCDRom::clone() +{ + ExtendDataCDRom *cdrom = new ExtendDataCDRom(*this, this->m_oBlockName); + cdrom->m_oSetting = new DataSetting(*this->m_oSetting,cdrom); + cdrom->m_oMedium = new ExtendMediumType(*this->m_oMedium, cdrom); + cdrom->m_iHandle = this->m_iHandle; + cdrom->m_u32MediumRSupport = this->m_u32MediumRSupport; + cdrom->m_u32MediumWSupport = this->m_u32MediumWSupport; + cdrom->m_u32BurnModeSupport = this->m_u32BurnModeSupport; + cdrom->m_bEjected = this->m_bEjected; + cdrom->m_bCDROM = this->m_bCDROM; + cdrom->m_bAppRunning = this->m_bAppRunning; + cdrom->m_oDisplay = this->m_oDisplay; + cdrom->m_oVendor = this->m_oVendor; + cdrom->m_oProductor = this->m_oVendor; + cdrom->m_oBlockName = this->m_oBlockName; + cdrom->m_oMediumType = this->m_oMediumType; + cdrom->m_is_using = 1000; //防止光驱拔出后,触发release函数导致的析构函数 + connect(cdrom, &ExtendDataCDRom::updateCDROMBurnStart, this, &ExtendDataCDRom::slotsUpdateCDROMBurnStart); + + return cdrom; +} + +Device::MediaState ExtendMediumType::diskState() const +{ + return m_diskState; +} + +bool ExtendMediumType::empty() const +{ + return diskState() == Device::STATE_EMPTY; +} + +bool ExtendMediumType::appendable() const +{ + return diskState() == Device::STATE_INCOMPLETE; +} + +bool ExtendMediumType::rewritable() const +{ + return m_rewritable; +} + +int ExtendMediumType::numSessions() const +{ + return m_numSessions; +} + +int ExtendMediumType::numTracks() const +{ + return m_numTracks; +} + +Device::MediaType ExtendMediumType::mediaType() const +{ + Device::MediaType m = Device::MEDIA_UNKNOWN; + + if( m_new_cdrom->testUnitReady() ) { + + int p = m_new_cdrom->currentProfile(); + if ( p != -1 ) + m = ( Device::MediaType )p; + + if( m & (Device::MEDIA_UNKNOWN|Device::MEDIA_DVD_ROM|Device::MEDIA_HD_DVD_ROM) ) { + // + // We prefer the Device::MediaType as reported by the media since this way + // even ROM drives may report the correct type of writable media. + // + + // 4 bytes header + 2048 bytes layer descriptor + UByteArray data; + if( m_new_cdrom->readDvdStructure( data ) ) { + switch( data[4]&0xF0 ) { + case 0x00: m = Device::MEDIA_DVD_ROM; break; + case 0x10: m = Device::MEDIA_DVD_RAM; break; + case 0x20: m = Device::MEDIA_DVD_R; break; // there seems to be no value for DVD-R DL, it reports DVD-R + case 0x30: m = Device::MEDIA_DVD_RW; break; + case 0x40: m = Device::MEDIA_HD_DVD_ROM; break; + case 0x50: m = Device::MEDIA_HD_DVD_R; break; + case 0x60: m = Device::MEDIA_HD_DVD_RAM; break; + case 0x90: m = Device::MEDIA_DVD_PLUS_RW; break; + case 0xA0: m = Device::MEDIA_DVD_PLUS_R; break; + case 0xE0: m = Device::MEDIA_DVD_PLUS_R_DL; break; + default: + qDebug() << "(Device::Device) unknown dvd media type: " << QString::number(data[4]&0xF0, 8); + break; // unknown + } + } + } + + if( m & (Device::MEDIA_UNKNOWN | Device::MEDIA_BD_ROM) ) { + // + // We prefer the Device::MediaType as reported by the media since this way + // even ROM drives may report the correct type of writable media. + // + + UByteArray data; + if( m_new_cdrom->readDiscStructure( data, 1, 0 ) ) { + if( data.size() > 4+12 && + data[4+8] == 'B' && data[4+9] == 'D' ) { + switch( data[4+10] ) { + case 'O': m = Device::MEDIA_BD_ROM; break; + case 'W': m = Device::MEDIA_BD_RE; break; + case 'R': m = Device::MEDIA_BD_R; break; + } + } + } + } + + // + // Only old CD or DVD devices do not report a current profile + // or report CD-ROM profile for all CD types + // + if( m & (Device::MEDIA_UNKNOWN|Device::MEDIA_CD_ROM) ) { + UByteArray data; + if( m_new_cdrom->readTocPmaAtip( data, 4, false, 0 ) ) { + if( (data[6]>>6)&1 ) + m = Device::MEDIA_CD_RW; + else + m = Device::MEDIA_CD_R; + } + else + m = Device::MEDIA_CD_ROM; + } + } + + return m; +} + +Device::MediaState ExtendMediumType::lastSessionState() const +{ + return m_lastSessionState; +} + +Device::BackGroundFormattingState ExtendMediumType::bgFormatState() const +{ + return m_bgFormatState; +} + +void ExtendMediumType::secondFixDiscStatus() +{ + LOGGER->info(QString("(DataMedium::secondFixDiscStatus) Line:%1 进入函数 dev=%2").arg(__LINE__).arg(m_oBlockName)); + qDebug() << "m_discread->canAppend() = " << m_discread->canAppend(); + + diskInfo(); + capacity(); + + m_bUDF = m_discread->discFilesystemType().contains("udf") ? true : false; + + if (m_discread->canAppend()) { + m_u8Status = MEDIUM_INCOMPLETE; + Q_EMIT g_user_signal->secondChangeDiscStatus(); + Q_EMIT g_user_signal->changeBtnBusnessName();// 修改mainwindow中btnBusness按钮的名字(与光盘状态有关) + qDebug() << QString("[%1][%2] 挂载点已查到:[%3] 定时器已关,发送信号").arg(__func__).arg(__LINE__).arg(m_oMountPoint); + } + + if (!m_discread->discLabel().isEmpty()) { + m_oVolumnID = m_discread->discLabel(); + qDebug() << QString("[%1][%2]: set卷标=%3").arg(__func__).arg(__LINE__).arg(m_oVolumnID); + m_oCDROM->setVolumnID(m_oVolumnID); + m_oDisplay = _("%1 - %2 medium, left space : %3") + .arg(m_oMediumName.isEmpty() ? _("Empty medium") : m_oVolumnID) + .arg(m_oMediumType).arg(m_oFreeCapacity); + qDebug()<<__LINE__<<__func__<<m_oFreeCapacity; + } else { + m_oCDROM->setVolumnID(_("KylinBurner")); + m_oDisplay = _("%1 - %2 medium, left space : %3") + .arg(m_oMediumName.isEmpty() ? _("Empty medium") : _("KylinBurner")) + .arg(m_oMediumType).arg(m_oFreeCapacity); + } + + Q_EMIT g_user_signal->sigChangeDiscDisplayInfo((void*)m_oCDROM, m_oDisplay); +} + +void ExtendMediumType::fixDiscStatus() +{ + LOGGER->info(QString("(DataMedium::fixDiscStatus) Line:%1 进入函数 dev=%2").arg(__LINE__).arg(m_oBlockName)); + if (!m_discread->isSuccess()) { + qDebug() << __func__ << __LINE__ << "获取光盘状态数据失败,准备第二次查询"; + connect(this, &ExtendMediumType::secondGetDiscStatus, this, &ExtendMediumType::slotsSecondGetDiscStatus); + Q_EMIT this->secondGetDiscStatus(); + return; + } + qDebug() << __func__ << __LINE__ << " 获取光盘状态数据成功"; + m_discread->disconnect(); //关闭connect,可能会有第二次,使用不同槽函数 + + m_bUDF = m_discread->discFilesystemType().contains("udf") ? true : false; + + if (m_discread->isBlank()){ + m_u8Status = MEDIUM_EMPTY; + }else if (m_discread->canAppend()){ + m_u8Status = MEDIUM_INCOMPLETE; + }else + m_u8Status = MEDIUM_FINALIZED; + + //UDF功能 + EnableUDF(); + emit g_user_signal->changBurnFormat(); + + if (m_u8Status == MEDIUM_EMPTY) { + diskInfo(); + capacity(); + } + m_mountPointTimer->start(1000); +} + +void ExtendMediumType::slotsMountPoint() +{ + LOGGER->info(QString("( ExtendMediumType::slotsMountPoint ) Line:%1 进入函数 dev=%2").arg(__LINE__).arg(m_oBlockName)); + qDebug() << QString("[%1][%2] 进入start").arg(__func__).arg(__LINE__); + + if ((m_u8Status > MEDIUM_EMPTY && m_u8Status < MEDIUM_OTHER) && + (m_oMountPoint.isEmpty() || m_oMediumName.isEmpty()) && + m_bAppRunning) + { + FILE *fp = nullptr; + struct mntent *mp = nullptr; + + fp = setmntent("/proc/mounts", "r"); + if (nullptr == fp) + { + LOGGER->error(_("Cannot load mount information.%1").arg(strerror(errno))); + return; + } + while (nullptr != (mp = getmntent(fp))) { + if (QString::fromUtf8(mp->mnt_fsname) == m_oBlockName) + { + m_oMountPoint = QString::fromUtf8(mp->mnt_dir); + m_oMediumName = m_oMountPoint.split("/").takeLast(); + if (QString::fromUtf8(mp->mnt_type).contains("UDF") || + QString::fromUtf8(mp->mnt_type).contains("udf")) + { + m_bUDF = true; + LOGGER->debug(_("Medium %1 mounted by UDF").arg(m_oMountPoint)); + } + + connect(m_discread, &DiscRead::workFinished, this, &ExtendMediumType::secondFixDiscStatus); + m_discread->work(); + + m_mountPointTimer->stop(); + m_mountPointTimer->disconnect(); + + LOGGER->info(QString("[%1][%2] 挂载点已查到:[%3] 定时器已关").arg(__func__).arg(__LINE__).arg(m_oMountPoint)); + break; + } + } + endmntent(fp); + } else { + if (m_u8Status == MEDIUM_EMPTY) { + m_mountPointTimer->stop(); + m_mountPointTimer->disconnect(); + LOGGER->info(QString("[%1][%2] 空光盘 定时器已关").arg(__func__).arg(__LINE__)); + } + } + + if (!m_discread->discLabel().isEmpty()) { + m_oVolumnID = m_discread->discLabel(); + qDebug() << QString("[%1][%2]: set卷标=%3").arg(__func__).arg(__LINE__).arg(m_oVolumnID); + m_oCDROM->setVolumnID(m_oVolumnID); + m_oDisplay = _("%1 - %2 medium, left space : %3") + .arg(m_oMediumName.isEmpty() ? _("Empty medium") : m_oVolumnID) + .arg(m_oMediumType).arg(m_oFreeCapacity); + } else { + m_oCDROM->setVolumnID(_("KylinBurner")); + m_oDisplay = _("%1 - %2 medium, left space : %3") + .arg(m_oMediumName.isEmpty() ? _("Empty medium") : _("KylinBurner")) + .arg(m_oMediumType).arg(m_oFreeCapacity); + } + + m_oDisplay = _("%1 - %2 medium, left space : %3") + .arg(m_oMediumName.isEmpty() ? _("Empty medium") : m_oCDROM->settingVolumnID()) + .arg(m_oMediumType).arg(m_oFreeCapacity); + + Q_EMIT g_user_signal->changeDiscStatus(); + Q_EMIT g_user_signal->sigChangeDiscDisplayInfo((void*)m_oCDROM, m_oDisplay); +} + +void ExtendMediumType::diskInfo() +{ + m_new_cdrom = qobject_cast<ExtendDataCDRom*>(m_oCDROM); + + if (m_oCDROM->open()) { + UByteArray data; + if( !m_new_cdrom->testUnitReady() ) { + // no disk or tray open + m_diskState = Device::STATE_NO_MEDIA; + m_mediaType = Device::MEDIA_NONE; + m_currentProfile = Device::MEDIA_NONE; + } + else + m_currentProfile = m_new_cdrom->currentProfile(); + + if (diskState() != Device::STATE_NO_MEDIA ) { + if (m_new_cdrom->readDiscInformation(data)) { + disc_info_t* dInf = (disc_info_t*)data.data(); + + switch (dInf->status) { + case 0: + m_diskState = Device::STATE_EMPTY; + break; + case 1: + m_diskState = Device::STATE_INCOMPLETE; + break; + case 2: + m_diskState = Device::STATE_COMPLETE; + break; + default: + m_diskState = Device::STATE_UNKNOWN; + break; + } + + switch (dInf->border) { + case 0: + m_lastSessionState = Device::STATE_EMPTY; + break; + case 1: + m_lastSessionState = Device::STATE_INCOMPLETE; + break; + case 2: + m_lastSessionState = Device::STATE_COMPLETE; + break; + default: + m_lastSessionState = Device::STATE_UNKNOWN; + break; + } + + switch(dInf->bg_f_status&0x3) { + case 0x0: + m_bgFormatState = Device::BG_FORMAT_NONE; + break; + case 0x1: + m_bgFormatState = Device::BG_FORMAT_INCOMPLETE; + break; + case 0x2: + m_bgFormatState = Device::BG_FORMAT_IN_PROGRESS; + break; + case 0x3: + m_bgFormatState = Device::BG_FORMAT_COMPLETE; + break; + } + + m_numTracks = (dInf->last_track_l & 0xff) | (dInf->last_track_m<<8 & 0xff00); + if (diskState() == Device::STATE_EMPTY) + m_numTracks = 0; + else if (diskState() == Device::STATE_INCOMPLETE) + m_numTracks--; + + m_rewritable = dInf->erasable; + + // + // This is the Last Possible Lead-Out Start Address in HMSF format + // This is only valid for CD-R(W) and DVD+R media. + // For complete media this shall be filled with 0xff + // + if (dInf->lead_out_m != 0xff && + dInf->lead_out_r != 0xff && + dInf->lead_out_s != 0xff && + dInf->lead_out_f != 0xff) + m_msfCapacity = Msf(dInf->lead_out_m + dInf->lead_out_r*60, + dInf->lead_out_s, + dInf->lead_out_f) - 150; + + // + // This is the position where the next Session shall be recorded in HMSF format + // This is only valid for CD-R(W) and DVD+R media. + // For complete media this shall be filled with 0xff + // + if (dInf->lead_in_m != 0xff && + dInf->lead_in_r != 0xff && + dInf->lead_in_s != 0xff && + dInf->lead_in_f != 0xff) + m_msfUsedCapacity = Msf(dInf->lead_in_m + dInf->lead_in_r*60, + dInf->lead_in_s, + dInf->lead_in_f) - 4500; + } + else { + qDebug() << "(Device::Device) " << blockDeviceName() + << " fabricating disk information for a stupid device." << endl; + Toc toc = m_new_cdrom->readToc(); + if (!toc.isEmpty()) { + m_diskState = Device::STATE_COMPLETE; + m_lastSessionState = Device::STATE_COMPLETE; + m_numTracks = toc.count(); + m_msfCapacity = m_msfUsedCapacity = toc.length(); + } + } + + // + // The mediatype needs to be set + // + m_mediaType = mediaType(); + + // At least some Plextor drives return profile NONE for CD media + // or CD_ROM for writable media + if (m_mediaType & (Device::MEDIA_UNKNOWN| Device::MEDIA_NONE| Device::MEDIA_CD_ROM)) { + // probably it is a CD + if (rewritable()) + m_mediaType = Device::MEDIA_CD_RW; + else if (empty() || appendable()) + m_mediaType = Device::MEDIA_CD_R; + else + m_mediaType = Device::MEDIA_CD_ROM; + } + + if (m_mediaType & Device::MEDIA_DVD_ALL) { + if (m_new_cdrom->readDvdStructure(data)) { + // some debugging stuff + Msf sda, eda, ea0; + sda = (data[4+5]<<16 | data[4+6] << 8 | data[4+7]); + eda = (data[4+9]<<16 | data[4+10] << 8 | data[4+11]); + ea0 = (data[4+13]<<16 | data[4+14] << 8 | data[4+15]); + + qDebug() << "First sec data area: " << sda.toString() + << " (LBA " << QString::number(sda.lba()) + << ") (" << QString::number(sda.mode1Bytes()) << endl; + qDebug() << "Last sec data area: " << eda.toString() + << " (LBA " << QString::number(eda.lba()) + << ") (" << QString::number(eda.mode1Bytes()) << " Bytes)" << endl; + qDebug() << "Last sec layer 1: " << ea0.toString() + << " (LBA " << QString::number(ea0.lba()) + << ") (" << QString::number(ea0.mode1Bytes()) << " Bytes)" << endl; + + + Msf da0 = ea0 - sda + 1; + Msf da1 = eda - ea0; + qDebug() << "Layer 1 length: " << da0.toString() + << " (LBA " << QString::number(da0.lba()) + << ") (" << QString::number(da0.mode1Bytes()) << " Bytes)" << endl; + qDebug() << "Layer 2 length: " << da1.toString() + << " (LBA " << QString::number(da1.lba()) + << ") (" << QString::number(da1.mode1Bytes()) << " Bytes)" << endl; + + m_numLayers = ((data[6]&0x60) == 0 ? 1 : 2); + + bool otp = (data[4+2] & 0xF); + + // ea0 is 0 if the medium does not use Opposite track path + if (otp && ea0 > 0) + m_firstLayerSize = da0; + else + m_firstLayerSize = 0; + } + else { + qDebug() << "(Device::Device) Unable to read DVD structure for num of layers."; + m_numLayers = ((m_mediaType & Device::MEDIA_WRITABLE_DVD_DL) ? 2 : 1); + } + } + + + // + // Number of sessions for non-empty disks + // + if (diskState() != Device::STATE_EMPTY) { + int sessions = numSessions(); + if (sessions >= 0) + m_numSessions = sessions; + else + qDebug() << "(Device::Device) could not get session info via READ TOC/PMA/ATIP."; + } + else + m_numSessions = 0; + // + int media = mediaType(); + // + // Use the profile if available because DVD-ROM units need to treat DVD+-R(W) media as DVD-ROM + // if supported at all + // + if (m_new_cdrom->currentProfile() == Device::MEDIA_DVD_ROM) + media = Device::MEDIA_DVD_ROM; + + switch(media) { + case Device::MEDIA_CD_R: + case Device::MEDIA_CD_RW: + if (m_msfCapacity == 0) { + if (m_new_cdrom->readTocPmaAtip(data, 0x4, true, 0)) { + struct atip_descriptor* atip = (struct atip_descriptor*)data.data(); + if (data.size() >= 11) { + m_msfCapacity = Msf(atip->lead_out_m, atip->lead_out_s, atip->lead_out_f) - 150; + Device::debugBitfield(&atip->lead_out_m, 3); + qDebug() << blockDeviceName() << ": ATIP capacity: " << m_msfCapacity.toString(); + } + } + } + + // + // for empty and appendable media capacity and usedCapacity should be filled in from + // diskinfo above. If not they are both still 0 + // + if (m_msfCapacity != 0 && (diskState() == Device::STATE_EMPTY || m_msfUsedCapacity != 0)) { + break; + } + + default: + case Device::MEDIA_CD_ROM: + if (m_msfCapacity > 0 && m_msfUsedCapacity == 0) + m_msfUsedCapacity = m_msfCapacity; + + if (m_msfUsedCapacity == 0) { + Msf readCap; + if (m_new_cdrom->readCapacity(readCap)) { + qDebug() << "(Device::Device) READ CAPACITY: " << readCap.toString() + << " other capacity: " << m_msfCapacity.toString() << endl; + // + // READ CAPACITY returns the last written sector + // that means the size is actually readCap + 1 + // + m_msfUsedCapacity = readCap + 1; + } + else { + qDebug() << "(Device::Device) " << blockDeviceName() + << " Falling back to readToc for capacity." << endl; + m_msfUsedCapacity = m_new_cdrom->readToc().length(); + } + } + + case Device::MEDIA_DVD_ROM: { + Msf readCap; + if (m_new_cdrom->readCapacity(readCap)) { + qDebug() << "(Device::Device) READ CAPACITY: " << readCap.toString() + << " other capacity: " << m_msfCapacity.toString() << endl; + // + // READ CAPACITY returns the last written sector + // that means the size is actually readCap + 1 + // + m_msfUsedCapacity = readCap + 1; + } + else { + // + // Only one track, use it's size + // + if (m_new_cdrom->readTrackInformation(data, 0x1, 0x1)) { + track_info_t* trackInfo = (track_info_t*)data.data(); + m_msfUsedCapacity = Device::from4Byte(trackInfo->track_size); + } + else + qDebug() << "(Device::Device) " << blockDeviceName() + << "READ TRACK INFORMATION for DVD-ROM failed." << endl; + } + + break; + } + + case Device::MEDIA_DVD_PLUS_R: + case Device::MEDIA_DVD_PLUS_R_DL: + if (appendable() || empty()) { + // + // get remaining space via the invisible track + // + if (m_new_cdrom->readTrackInformation(data, 0x1, /*0xff*/ numTracks()+1)) { + track_info_t* trackInfo = (track_info_t*)data.data(); + m_msfUsedCapacity = Device::from4Byte(trackInfo->track_start); + m_msfCapacity = Device::from4Byte(trackInfo->track_start) + Device::from4Byte(trackInfo->track_size); + } + } + else { + if (m_new_cdrom->readTrackInformation(data, 0x1, numTracks())) { + track_info_t* trackInfo = (track_info_t*)data.data(); + m_msfCapacity = m_msfUsedCapacity + = Device::from4Byte(trackInfo->track_start) + Device::from4Byte(trackInfo->track_size); + } + } + break; + + case Device::MEDIA_DVD_R: + case Device::MEDIA_DVD_R_SEQ: + case Device::MEDIA_DVD_R_DL: + case Device::MEDIA_DVD_R_DL_JUMP: + case Device::MEDIA_DVD_R_DL_SEQ: + // + // get data from the incomplete track (which is NOT the invisible track 0xff) + // This will fail in case the media is complete! + // + if (m_new_cdrom->readTrackInformation(data, 0x1, numTracks()+1)) { + track_info_t* trackInfo = (track_info_t*)data.data(); + m_msfUsedCapacity = Device::from4Byte(trackInfo->track_start); + m_msfCapacity = Device::from4Byte(trackInfo->free_blocks) + Device::from4Byte(trackInfo->track_start); + } + + // + // Get the "really" used space without border-out + // + if (!empty()) { + Msf readCap; + if (m_new_cdrom->readCapacity(readCap)) { + // + // READ CAPACITY returns the last written sector + // that means the size is actually readCap + 1 + // + m_msfUsedCapacity = readCap + 1; + } + else + qDebug() << "(Device::Device) " << blockDeviceName() + << " READ CAPACITY for DVD-R failed." << endl; + } + + break; + + case Device::MEDIA_DVD_RW_OVWR: + m_numSessions = 1; + case Device::MEDIA_DVD_RW: + case Device::MEDIA_DVD_RW_SEQ: + // only one track on a DVD-RW media + if (m_new_cdrom->readTrackInformation(data, 0x1, 0x1)) { + track_info_t* trackInfo = (track_info_t*)data.data(); + m_msfCapacity = Device::from4Byte(trackInfo->track_size); + if (!empty()) { + if (m_new_cdrom->readFormatCapacity(0x10, m_msfCapacity)) + qDebug() << blockDeviceName() << ": Format capacity 0x10: " << m_msfCapacity.toString(); + + m_msfUsedCapacity = Device::from4Byte(trackInfo->track_size); + } + } + break; + + case Device::MEDIA_DVD_PLUS_RW: { + Msf currentMax; + int currentMaxFormat = 0; + if (m_new_cdrom->readFormatCapacity(0x26, m_msfCapacity, ¤tMax, ¤tMaxFormat)) { + if (currentMaxFormat == 0x1) { // unformatted or blank media + m_msfUsedCapacity = 0; + m_msfCapacity = currentMax; + } + else { + m_msfUsedCapacity = currentMax; + // Plextor drives tend to screw things up and report invalid values + // for the max format capacity of 1.4 GB DVD media + if (bgFormatState() == Device::BG_FORMAT_COMPLETE) { + m_msfCapacity = currentMax; + } + } + } + else + qDebug() << "(Device::Device) " << blockDeviceName() + << " READ FORMAT CAPACITIES for DVD+RW failed." << endl; + + break; + } + + case Device::MEDIA_BD_R: + case Device::MEDIA_BD_R_SRM: + case Device::MEDIA_BD_R_SRM_POW: + case Device::MEDIA_BD_R_RRM: + // + // get the invisible track's first sector + // or the next writable address of the last open track + // + if (m_new_cdrom->readDiscInformation(data)) { + int lastTrack = (int)(data[11]<<8 | data[6]); + + if (m_new_cdrom->readTrackInformation(data, 1, lastTrack)) { + + // capacity: last track's start address + last track's size + m_msfCapacity = Device::from4Byte(&data[8]) + Device::from4Byte(&data[24]); + + if (data[6] & 0x80) + m_msfUsedCapacity = Device::from4Byte(&data[8]); + else if (data[7] & 0x1) + m_msfUsedCapacity = Device::from4Byte(&data[12]); + else + m_msfUsedCapacity = m_msfCapacity; + } + } + break; + + case Device::MEDIA_BD_RE: { + Msf currentMax; + int currentMaxFormat = 0; + if (m_new_cdrom->readFormatCapacity(0x00, m_msfCapacity, ¤tMax, ¤tMaxFormat)) { + if (currentMaxFormat == 0x1) { // unformatted or blank media + m_msfUsedCapacity = 0; + m_msfCapacity = currentMax; + } + else { + m_msfUsedCapacity = currentMax; + } + } + else + qDebug() << "(Device::Device) " << blockDeviceName() + << " READ FORMAT CAPACITIES for BD-RE failed." << endl; + break; + } + + case Device::MEDIA_BD_ROM: { + Msf readCap; + if (m_new_cdrom->readCapacity(readCap)) { + // + // READ CAPACITY returns the last written sector + // that means the size is actually readCap + 1 + // + m_msfUsedCapacity = readCap + 1; + } + + break; + } + } + } + } + m_oCDROM->close(); +} + +void ExtendMediumType::capacity() +{ + LOGGER->info(QString("\n( ExtendMediumType::capacity ) Line:%1 进入函数 dev=%2").arg(__LINE__).arg(m_oBlockName)); + /* 容量计算 */ + m_oCapacity = msfCapacity(); + m_u64Capacity = m_msfCapacity.mode1Bytes(); + + if (!empty()) { + LOGGER->info(QString("(ExtendMediumType::capacity) Line:%1 DVD+RW?%2 总容量为:%3(%4), m_bUDF=%5").arg(__LINE__) + .arg((mediaType() & Device::MEDIA_DVD_PLUS_RW) > 0).arg(m_u64Capacity).arg(m_oCapacity).arg(m_bUDF==true)); + if ( (mediaType() & Device::MEDIA_DVD_PLUS_RW) && (0 == m_u64Capacity) && m_bUDF) { + // gio 获取 + GFile *file; + GFileInfo *info; + QString targetUri = "file://" + m_oMountPoint; + file = g_file_new_for_uri(targetUri.toUtf8().constData()); + info = g_file_query_filesystem_info(file, "*", nullptr, nullptr); + + m_u64Capacity = g_file_info_get_attribute_uint64(info, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE); + m_msfCapacity = m_u64Capacity; + m_oCapacity = toUnitString(m_u64Capacity); + LOGGER->info(QString("DVD+RW光盘 UDF 使用gio获取总容量:%1(%2)").arg(m_u64Capacity).arg(m_oCapacity)); + } + + if (m_bUDF) { + if (mediaType() & ( Device::MEDIA_DVD_PLUS_RW|Device::MEDIA_DVD_RW_OVWR|Device::MEDIA_BD_RE| Device::MEDIA_CD_RW )) { + /* UDF 且 DVD+/-RW、CD-RW */ + GFile *file; + GFileInfo *info; + QString targetUri = "file://" + m_oMountPoint; + + file = g_file_new_for_uri(targetUri.toUtf8().constData()); + info = g_file_query_filesystem_info(file, "*", nullptr, nullptr); + + m_u64UsedCapacity = g_file_info_get_attribute_uint64(info, G_FILE_ATTRIBUTE_FILESYSTEM_USED); + m_oUsedCapacity = toUnitString(m_u64UsedCapacity); + + m_u64FreeCapacity = m_u64Capacity - m_u64UsedCapacity; + m_oFreeCapacity = toUnitString(m_u64FreeCapacity); + + LOGGER->info(QString("UDF2.01格式(gio): 使用:%1(%2) 剩余:%3(%4)") + .arg(m_u64UsedCapacity).arg(m_oUsedCapacity) + .arg(m_u64FreeCapacity).arg(m_oFreeCapacity)); + } else { + /* UDF1.02 且 CD-R、DVD+/-R(DL)盘 */ + m_oUsedCapacity = msfUsedCapacity(); + m_oFreeCapacity = msfFreeCapacity(); + m_u64UsedCapacity = m_msfUsedCapacity.mode1Bytes(); + m_u64FreeCapacity = m_u64Capacity - m_u64UsedCapacity; + LOGGER->info(QString("UDF1.02格式(Msf): 使用:%1(%2) 剩余:%3(%4)") + .arg(m_u64UsedCapacity).arg(m_oUsedCapacity) + .arg(m_u64FreeCapacity).arg(m_oFreeCapacity)); + } + } else { + /* ISO 9660 */ + if (mediaType() & ( Device::MEDIA_DVD_PLUS_RW|Device::MEDIA_DVD_RW_OVWR|Device::MEDIA_BD_RE)) { + /* ISO9660 且 DVD+/-RW、CD-RW */ + Iso9660SimplePrimaryDescriptor isoDesc; + isoDesc = Iso9660SimplePrimaryDescriptor(); + Iso9660 iso(new Iso9660DeviceBackend(m_oCDROM)); + iso.setStartSector(0); + iso.setPlainIso9660(true); + if (iso.open()) { + isoDesc = iso.primaryDescriptor(); + m_msfUsedCapacity = isoDesc.getVolumSpacesSize(); + } else { + // 没有获取到已使用数据容量,可能是Win刻录的UDF盘或空光盘 + m_msfUsedCapacity = 0; + LOGGER->info(QString("[%1][%2] Failed to obtain the capacity. It may be a real UDF disk").arg(__func__).arg(__LINE__)); + } + } + m_oUsedCapacity = msfUsedCapacity(); + m_oFreeCapacity = msfFreeCapacity(); + m_u64UsedCapacity = m_msfUsedCapacity.mode1Bytes(); + m_u64FreeCapacity = m_u64Capacity - m_u64UsedCapacity; + LOGGER->info(QString("ISO9660格式(Msf): 使用:%1(%2) 剩余:%3(%4)") + .arg(m_u64UsedCapacity).arg(m_oUsedCapacity) + .arg(m_u64FreeCapacity).arg(m_oFreeCapacity)); + } + } else { + // 空盘 + m_u64UsedCapacity = 0; + m_msfUsedCapacity = 0; + m_u64FreeCapacity = m_u64Capacity - m_u64UsedCapacity; + m_oFreeCapacity = msfFreeCapacity(); + LOGGER->info(QString("空盘(Msf): 使用:%1(%2) 剩余:%3(%4)") + .arg(m_u64UsedCapacity).arg(m_oUsedCapacity) + .arg(m_u64FreeCapacity).arg(m_oFreeCapacity)); + } + + if ((0 == m_u64Capacity) || (0 == m_msfCapacity)) { + m_u64Capacity = m_u64UsedCapacity; + m_msfCapacity = m_msfUsedCapacity; + m_oCapacity = m_oUsedCapacity; + m_u64FreeCapacity = m_u64Capacity - m_u64UsedCapacity; + m_oFreeCapacity = toUnitString(m_u64FreeCapacity); + LOGGER->info(QString("光盘总容量为0, 总容量 = 已使用容量(%1)").arg(m_u64UsedCapacity)); + LOGGER->info(QString("修正:使用:%1(%2) 剩余:%3(%4)") + .arg(m_u64UsedCapacity).arg(m_oUsedCapacity) + .arg(m_u64FreeCapacity).arg(m_oFreeCapacity)); + } + + LOGGER->info(QString("Capacity: %1 - used(%2) - free(%3)").arg(m_oCapacity).arg(m_oUsedCapacity).arg(m_oFreeCapacity)); + LOGGER->info(QString("( ExtendMediumType::capacity ) Line:%1 退出函数 dev=%2\n").arg(__LINE__).arg(m_oBlockName)); +} + +QString ExtendMediumType::msfUsedCapacity() +{ + LOGGER->info(QString("msfUsedCapacity: 已使用容量:%1 %2 %3") + .arg(getMsfUsedCapacity().toString() + .arg(getMsfUsedCapacity().mode1Bytes())) + .arg(toUnitString(getMsfUsedCapacity().mode1Bytes()))); + return toUnitString(getMsfUsedCapacity().mode1Bytes()); + +} + +QString ExtendMediumType::msfFreeCapacity() +{ + LOGGER->info(QString("msfFreeCapacity: 剩余容量:%1 %2 %3") + .arg(getMsfFreeCapacity().toString() + .arg(getMsfFreeCapacity().mode1Bytes())) + .arg(toUnitString(getMsfFreeCapacity().mode1Bytes()))); + return toUnitString(getMsfFreeCapacity().mode1Bytes()); +} + + +QString ExtendMediumType::msfCapacity() +{ + LOGGER->info(QString("MsfCapacity: 总容量:%1 %2 %3") + .arg(getMsfCapacity().toString() + .arg(getMsfCapacity().mode1Bytes())) + .arg(toUnitString(getMsfCapacity().mode1Bytes()))); + return toUnitString(getMsfCapacity().mode1Bytes()); +} + +ExtendMediumType::ExtendMediumType(QString type, QString blockname, QObject * parent):DataMedium(type,blockname,parent) +{ + +} + +ExtendMediumType::ExtendMediumType(DataMedium &medium, QObject * parent):DataMedium(medium,parent) +{ +} + +void ExtendMediumType::load() +{ + LOGGER->info(QString("( ExtendMediumType::load ) Line:%1 进入函数 dev=%2").arg(__LINE__).arg(m_oBlockName)); + + connect(m_mountPointTimer,&QTimer::destroyed,this,[&]{m_mountPointTimer = nullptr;},Qt::UniqueConnection); + connect(m_mountPointTimer, &QTimer::timeout, this, &ExtendMediumType::slotsMountPoint,Qt::UniqueConnection); + + if (!m_oCDROM->isOpen()) { + if (!m_oCDROM->open()) { + LOGGER->warn(QString("( ExtendMediumType::load ) device = %1 , open device faild").arg(m_oBlockName)); + } + } + + type(); + speed(); + m_oCDROM->close(); + m_oDisplay = _("%1 - %2 medium, left space : %3") + .arg(m_oMediumName.isEmpty() ? _("Empty medium") : m_oCDROM->settingVolumnID()) + .arg(m_oMediumType).arg(m_oFreeCapacity); + + connect(m_discread, &DiscRead::workFinished, this, &ExtendMediumType::fixDiscStatus); + + m_discread->work(); + LOGGER->info(QString("( ExtendMediumType::load ) Line:%1 运行完成 dev=%2").arg(__LINE__).arg(m_oBlockName)); +} + +Msf ExtendMediumType::getMsfCapacity() const +{ + return m_msfCapacity; +} + +Msf ExtendMediumType::getMsfUsedCapacity() const +{ + return m_msfUsedCapacity; +} + +Msf ExtendMediumType::getMsfFreeCapacity() const +{ + return m_msfCapacity - m_msfUsedCapacity; +} + + +QString ExtendMediumType::blockDeviceName() const +{ + return m_oBlockName; +} diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.h kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.h 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/newdevicetype.h 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,134 @@ +#ifndef BURN_DEVICE_UTILS_H_ +#define BURN_DEVICE_UTILS_H_ + +#include <QDebug> + +#include "src/data/toc.h" +#include "src/data/msf.h" +#include "src/data/devicetypes.h" +#include "datacdrom.h" +#include "datasetting.h" + +class DiscRead; +class ExtendDataCDRom; +typedef QVarLengthArray< unsigned char > UByteArray; + +class ExtendMediumType : public DataMedium +{ + Q_OBJECT +public: + explicit ExtendMediumType(QString type, QString blockname, QObject * parent = nullptr); + ExtendMediumType(DataMedium &, QObject *); + + void load(); + + Msf getMsfCapacity() const; + Msf getMsfUsedCapacity() const; + Msf getMsfFreeCapacity() const; + + QString blockDeviceName() const; + + Device::MediaState diskState() const; + bool empty() const; + bool appendable() const; + bool rewritable() const; + int numSessions() const; + int numTracks() const; + Device::MediaType mediaType() const; + Device::MediaState lastSessionState() const; + Device::BackGroundFormattingState bgFormatState() const; + + void diskInfo(); + void capacity(); +protected slots: + void secondFixDiscStatus(); + void fixDiscStatus(); + void slotsMountPoint(); + +private: + QString msfCapacity(); + QString msfUsedCapacity(); + QString msfFreeCapacity(); + +private: + Msf m_msfCapacity; + Msf m_msfUsedCapacity; + Msf m_firstLayerSize; + + int m_currentProfile; + Device::MediaState m_diskState; + + Device::MediaState m_lastSessionState; + Device::BackGroundFormattingState m_bgFormatState; + Device::MediaType m_mediaType; + + int m_numSessions; + int m_numTracks; + int m_numLayers; // only for DVD media + int m_rewritable; + + ExtendDataCDRom* m_new_cdrom; + +}; + +class DataCDROM; +class ExtendDataCDRom : public DataCDROM +{ + Q_OBJECT +public: + explicit ExtendDataCDRom(QString blockName, QObject *parent = nullptr); + ExtendDataCDRom(DataCDROM &cdrom, QString blockName, QObject *parent = nullptr); + + int currentProfile(); + int featureCurrent(unsigned int feature); + bool getFeature(UByteArray& data, unsigned int feature); + bool readDiscInformation(UByteArray& data); + bool readDvdStructure(UByteArray& data, + unsigned int format = 0x0, + unsigned int layer = 0x0, + unsigned long address = 0, + unsigned int agid = 0x0); + bool readDiscStructure(UByteArray& data, + unsigned int mediaType = 0x0, + unsigned int format = 0x0, + unsigned int layer = 0x0, + unsigned long address = 0, + unsigned int agid = 0x0); + bool readTocPmaAtip(UByteArray& data, int format, bool msf, int track); + bool readFormatCapacity(int wantedFormat, Msf& r, + Msf* currentMax = 0, int* currentMaxFormat = 0); + bool readTrackInformation(UByteArray& data, int type, int value); + bool readCapacity(Msf&r); + Toc readToc(); + bool readFormattedToc(Toc&,int mediaType); + bool readRawToc(Toc&) ; + bool readTocLinux(Toc&); + bool fixupToc(Toc& toc); + Track::DataMode getTrackDataMode(const Track& track); + Track::DataMode getDataMode(const Msf& sector); + int rawTocDataWithBcdValues(const UByteArray& data); + int numSessions(); + bool testUnitReady(); + bool readCdMsf( unsigned char* data, + unsigned int dataLen, + int sectorType, + bool dap, + const Msf& startAdress, + const Msf& endAdress, + bool sync, + bool header, + bool subHeader, + bool userData, + bool edcEcc, + int c2, + int subChannel ); + Device::MediaType mediaType(); + int isEmpty(); + + bool update(); + DataCDROM * clone(); +protected: + void checkMedium(); +}; + +#endif diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.cpp 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,157 @@ +#include "toc.h" + +#include <QDebug> +#include <QString> + +Toc::Toc() + : QList<Track>() +{ +} + + +Toc::Toc( const Toc& toc ) + : QList<Track>( toc ) +{ + m_mcn = toc.m_mcn; +} + + +Toc::~Toc() +{ +} + + +Toc& Toc::operator=( const Toc& toc ) +{ + if( &toc == this ) return *this; + + m_mcn = toc.m_mcn; + + QList<Track>::operator=( toc ); + + return *this; +} + + +Msf Toc::firstSector() const +{ + return isEmpty() ? Msf() : first().firstSector(); +} + + +Msf Toc::lastSector() const +{ + if( isEmpty() ) + return 0; + // the last track's last sector should be the last sector of the entire cd + return last().lastSector(); +} + + +Msf Toc::length() const +{ + // +1 since the last sector is included + return lastSector() - firstSector() + 1; +} + + +unsigned int Toc::discId() const +{ + // calculate cddb-id + unsigned int id = 0; + for( Toc::const_iterator it = constBegin(); it != constEnd(); ++it ) { + unsigned int n = (*it).firstSector().lba() + 150; + n /= 75; + while( n > 0 ) { + id += n % 10; + n /= 10; + } + } + unsigned int l = length().lba(); + if ( !empty() ) + l -= first().firstSector().lba(); + l /= 75; + id = ( ( id % 0xff ) << 24 ) | ( l << 8 ) | count(); + + return id; +} + + +Device::ContentsType Toc::contentType() const +{ + int audioCnt = 0, dataCnt = 0; + for( Toc::const_iterator it = constBegin(); it != constEnd(); ++it ) { + if( (*it).type() == Track::TYPE_AUDIO ) + audioCnt++; + else + dataCnt++; + } + + if( audioCnt + dataCnt == 0 ) + return Device::NONE; + if( audioCnt == 0 ) + return Device::DATA; + if( dataCnt == 0 ) + return Device::AUDIO; + return Device::MIXED; +} + + +int Toc::sessions() const +{ + if( isEmpty() ) + return 0; + else if( last().session() == 0 ) + return 1; // default if unknown + else + return last().session(); +} + + +QByteArray Toc::mcn() const +{ + return m_mcn; +} + + +void Toc::setMcn( const QByteArray& mcn ) +{ + m_mcn = mcn; +} + + +void Toc::clear() +{ + QList<Track>::clear(); + m_mcn.resize( 0 ); +} + + +bool Toc::operator==( const Toc& other ) const +{ + return( QList<Track>::operator==( other ) ); +} + + +bool Toc::operator!=( const Toc& other ) const +{ + return( QList<Track>::operator!=( other ) ); +} + + +QDebug operator<<( QDebug s, const Toc& toc ) +{ + s.nospace() << toc.count() << " in " << toc.sessions() << " sessions"; + int sessionN = 0; + int trackN = 0; + for( Toc::const_iterator it = toc.constBegin(); it != toc.constEnd(); ++it ) { + ++trackN; + if( sessionN != it->session() ) { + sessionN = it->session(); + s.nospace() << "Session Number " << sessionN; + } + s.nospace() << " Track " << trackN << *it; + } + return s; +} + diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.h kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.h 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/toc.h 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,72 @@ +#ifndef TOC_H +#define TOC_H + +#include "msf.h" +#include "track.h" + +#include <QList> +namespace Device { + enum ContentsType { + DATA, + AUDIO, + MIXED, + NONE // no tracks + }; +} + +/** + * A list of Tracks that represents the contents + * of a cd. + * The Toc deletes all its tracks when it is deleted and + * deletes removed tracks. + */ +class Toc : public QList<Track> +{ +public: + Toc(); + /** deep copy */ + Toc( const Toc& ); + /** deletes all tracks */ + ~Toc(); + /** deep copy */ + Toc& operator=( const Toc& ); + + /** + * CDDB disc Id + */ + unsigned int discId() const; + + QByteArray mcn() const; + + /** + * determine the contents type based on the tracks' types. + * Audio, Data, or Mixed + */ + Device::ContentsType contentType() const; + + /** + * \return the number of sessions in this TOC. + */ + int sessions() const; + + /** + * The first track's first sector could differ from the disc's + * first sector if there is a pregap before index 1 + */ + Msf firstSector() const; + Msf lastSector() const; + Msf length() const; + + void setMcn( const QByteArray& mcn ); + + void clear(); + + bool operator==( const Toc& ) const; + bool operator!=( const Toc& ) const; + +private: + QByteArray m_mcn; +}; +QDebug operator<<( QDebug s, const Toc& ); + +#endif // TOC_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/track.cpp kylin-burner-3.2.0.1kylin1k32.01/src/data/track.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/data/track.cpp 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/track.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,292 @@ +#include "track.h" +#include <QDebug> +#include <QSharedData> + +class Track::Private : public QSharedData +{ +public: + Private( const Msf& fs = Msf(), + const Msf& ls = Msf(), + Track::TrackType t = TYPE_UNKNOWN, + Track::DataMode m = UNKNOWN ) + : firstSector( fs ), + lastSector( ls ), + type( t ), + mode( m ), + copyPermitted(true), + preEmphasis(false), + session(0) { + } + + Msf firstSector; + Msf lastSector; + Msf index0; + + Msf nextWritableAddress; + Msf freeBlocks; + + Track::TrackType type; + Track::DataMode mode; + bool copyPermitted; + bool preEmphasis; + + int session; + + QList<Msf> indices; + + QByteArray isrc; +}; + + +Track::Track() + : d( new Private() ) +{ +} + + +Track::Track( const Track& track ) +{ + d = track.d; +} + + +Track::Track( const Msf& firstSector, + const Msf& lastSector, + TrackType type, + DataMode mode ) + : d( new Private( firstSector, + lastSector, + type, + mode ) ) +{ +} + + +Track::~Track() +{ +} + + +Track& Track::operator=( const Track& track ) +{ + d = track.d; + return *this; +} + + +Msf Track::length() const +{ + // +1 since the last sector is included + return d->lastSector - d->firstSector + 1; +} + + +Track::TrackType Track::type() const +{ + return d->type; +} + + +void Track::setType( TrackType t ) +{ + d->type = t; +} + + +Track::DataMode Track::mode() const +{ + return d->mode; +} + + +void Track::setMode( DataMode m ) +{ + d->mode = m; +} + + +bool Track::copyPermitted() const +{ + return d->copyPermitted; +} + + +void Track::setCopyPermitted( bool b ) +{ + d->copyPermitted = b; +} + + +bool Track::preEmphasis() const +{ + return d->preEmphasis; +} + + +void Track::setPreEmphasis( bool b ) +{ + d->preEmphasis = b; +} + + +bool Track::recordedIncremental() const +{ + return d->preEmphasis; +} + + +bool Track::recordedUninterrupted() const +{ + return !recordedIncremental(); +} + + +QByteArray Track::isrc() const +{ + return d->isrc; +} + + +void Track::setIsrc( const QByteArray& s ) +{ + d->isrc = s; +} + + +Msf Track::firstSector() const +{ + return d->firstSector; +} + + +Msf Track::lastSector() const +{ + return d->lastSector; +} + + +void Track::setFirstSector( const Msf& msf ) +{ + d->firstSector = msf; +} + + +void Track::setLastSector( const Msf& msf ) +{ + d->lastSector = msf; +} + + +Msf Track::nextWritableAddress() const +{ + return d->nextWritableAddress; +} + + +void Track::setNextWritableAddress( const Msf& m ) +{ + d->nextWritableAddress = m; +} + + +void Track::setFreeBlocks( const Msf& m ) +{ + d->freeBlocks = m; +} + + +Msf Track::freeBlocks() const +{ + return d->freeBlocks; +} + + +Msf Track::realAudioLength() const +{ + if( index0() > 0 ) + return index0(); + else + return length(); +} + + +int Track::session() const +{ + return d->session; +} + + +void Track::setSession( int s ) +{ + d->session = s; +} + + +Msf Track::index0() const +{ + return d->index0; +} + + +QList<Msf> Track::indices() const +{ + return d->indices; +} + + +void Track::setIndices( const QList<Msf>& il ) +{ + d->indices = il; +} + + +void Track::setIndex0( const Msf& msf ) +{ + if( msf <= d->lastSector-d->firstSector ) + d->index0 = msf; +} + + +int Track::indexCount() const +{ + return d->indices.count()-1; +} + + +bool Track::operator==( const Track& other ) const +{ + return( d->firstSector == other.d->firstSector && + d->lastSector == other.d->lastSector && + d->index0 == other.d->index0 && + d->nextWritableAddress == other.d->nextWritableAddress && + d->freeBlocks == other.d->freeBlocks && + d->type == other.d->type && + d->mode == other.d->mode && + d->copyPermitted == other.d->copyPermitted && + d->preEmphasis == other.d->preEmphasis && + d->session == other.d->session && + d->indices == other.d->indices && + d->isrc == other.d->isrc ); +} + + +bool Track::operator!=( const Track& other ) const +{ + return !operator==( other ); +} + + +QDebug operator<<( QDebug s, const Track& track ) +{ + s.nospace() << ( track.type() == Track::TYPE_AUDIO ? " AUDIO" : " DATA" ) + << " " << track.firstSector().lba() << " - " << track.lastSector().lba() + << " (" << track.length().lba() << ")"; + return s; +} + + +uint qHash( const Track& key ) +{ + // this is a dummy implementation to make it compile on windows + return qHash((long)&key); +} diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/data/track.h kylin-burner-3.2.0.1kylin1k32.01/src/data/track.h --- kylin-burner-3.2.0.1kylin1k32.01/src/data/track.h 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/data/track.h 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,128 @@ +#ifndef TRACK_H +#define TRACK_H + +#include "msf.h" +#include <QSharedDataPointer> + +class Track +{ +public: + enum TrackType { + TYPE_AUDIO, + TYPE_DATA, + TYPE_UNKNOWN = -1 + }; + + enum DataMode { + MODE1, + MODE2, + XA_FORM1, + XA_FORM2, + DVD, + UNKNOWN + }; + + Track(); + Track( const Track& ); + Track( const Msf& firstSector, + const Msf& lastSector, + TrackType type, + DataMode mode = UNKNOWN ); + ~Track(); + + Track& operator=( const Track& ); + + TrackType type() const; + + void setType( TrackType ); + + /** + * UNKNOWN for DVDs and Audio CDs + */ + DataMode mode() const; + + void setMode( DataMode ); + + /** + * Invalid for DVDs + */ + bool copyPermitted() const; + void setCopyPermitted( bool b ); + + /** + * Only valid for audio tracks + */ + bool preEmphasis() const; + void setPreEmphasis( bool b ); + + bool recordedIncremental() const; + bool recordedUninterrupted() const; + + QByteArray isrc() const; + void setIsrc( const QByteArray& s ); + + Msf firstSector() const; + Msf lastSector() const; + void setFirstSector( const Msf& msf ); + void setLastSector( const Msf& msf ); + + Msf nextWritableAddress() const; + void setNextWritableAddress( const Msf& ); + + Msf freeBlocks() const; + void setFreeBlocks( const Msf& ); + + Msf length() const; + + /** + * This takes index0 into account + */ + Msf realAudioLength() const; + + /** + * 0 if unknown + */ + int session() const; + void setSession( int s ); + + /** + * @return number of indices. This does not include index 0. + */ + int indexCount() const; + + /** + * Returns the index relative to the track's start. + * If it is zero there is no index0. + */ + Msf index0() const; + + /** + * Set the track's index0 value. + * @param msf offset relative to track start. + */ + void setIndex0( const Msf& msf ); + + /** + * All indices. Normally this list is empty as indices are rarely used. + * Starts with index 2 (since index 1 are all other sectors FIXME) + */ + QList<Msf> indices() const; + + void setIndices( const QList<Msf>& ); + + bool operator==( const Track& ) const; + bool operator!=( const Track& ) const; + +private: + class Private; + QSharedDataPointer<Private> d; +}; + + +QDebug operator<<( QDebug s, const Track& track ); + +/** + * Dummy implementation to allow compilation on Windows + */ +uint qHash( const Track& key ); +#endif // TRACK_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/frame/configuration.h kylin-burner-3.2.0.1kylin1k32.01/src/frame/configuration.h --- kylin-burner-3.2.0.1kylin1k32.01/src/frame/configuration.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/frame/configuration.h 2025-03-11 20:49:32.000000000 +0800 @@ -14,7 +14,6 @@ Configuration &operator =(Configuration)=delete; public: void init(){} - void destroy(){ delete this; } public: QVariant get(QString, QString, QVariant d=QVariant()); void set(QString, QString, QVariant); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.cpp kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -55,7 +55,7 @@ CFG->set("logger", "path", defaultPath); } defaultPath.append(QString("%1.log").arg(date())); - m_iHandle = ::open(defaultPath.toUtf8().constData(), O_RDWR | O_CREAT | O_APPEND, 0664); + m_iHandle = ::open(defaultPath.toUtf8().constData(), O_RDWR | O_CREAT | O_APPEND, 0660); if (-1 == m_iHandle) return; m_iLevel = CFG->get("logger", "level", Info).toInt(); if (m_iLevel > Debug) m_iLevel = Debug; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.h kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.h --- kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/frame/logger.h 2025-03-11 20:49:32.000000000 +0800 @@ -23,7 +23,6 @@ Logger *operator =(const Logger*)=delete; public: void init(); - void destroy() { delete this; } public: QString registerName(QObject *, QString); public: diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.cpp kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -23,201 +23,6 @@ #include "isofs.h" #include "rock.h" - - -/* internal function from the linux kernel (isofs fs) */ -static time_t getisotime(int year,int month,int day,int hour, - int minute,int second,int tz) { - - int days, i; - time_t crtime; - - year-=1970; - - if (year < 0) { - crtime = 0; - } else { - int monlen[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; - - days = year * 365; - if (year > 2) - days += (year+1) / 4; - for (i = 1; i < month; ++i) - days += monlen[i-1]; - if (((year+2) % 4) == 0 && month > 2) - days++; - days += day - 1; - crtime = ((((days * 24) + hour) * 60 + minute) * 60) - + second; - - /* sign extend */ - if (tz & 0x80) - tz |= (-1 << 8); - - /* - * The timezone offset is unreliable on some disks, - * so we make a sanity check. In no case is it ever - * more than 13 hours from GMT, which is 52*15min. - * The time is always stored in localtime with the - * timezone offset being what get added to GMT to - * get to localtime. Thus we need to subtract the offset - * to get to true GMT, which is what we store the time - * as internally. On the local system, the user may set - * their timezone any way they wish, of course, so GMT - * gets converted back to localtime on the receiving - * system. - * - * NOTE: mkisofs in versions prior to mkisofs-1.10 had - * the sign wrong on the timezone offset. This has now - * been corrected there too, but if you are getting screwy - * results this may be the explanation. If enough people - * complain, a user configuration option could be added - * to add the timezone offset in with the wrong sign - * for 'compatibility' with older discs, but I cannot see how - * it will matter that much. - * - * Thanks to kuhlmav@elec.canterbury.ac.nz (Volker Kuhlmann) - * for pointing out the sign error. - */ - if (-52 <= tz && tz <= 52) - crtime -= tz * 15 * 60; - } - return crtime; - -} - -/** - * Returns the Unix from the ISO9660 9.1.5 time format - */ -time_t isodate_915(char * p, int hs) { - - return getisotime(1900+p[0],p[1],p[2],p[3],p[4],p[5],hs==0 ? p[6] : 0); -} - -/** - * Returns the Unix from the ISO9660 8.4.26.1 time format - * BUG: hundredth of seconds are ignored, because Unix time_t has one second - * resolution (I think it's no problem at all) - */ -time_t isodate_84261(char * p, int hs) { - int year,month,day,hour,minute,second; - year=(p[0]-'0')*1000 + (p[1]-'0')*100 + (p[2]-'0')*10 + p[3]-'0'; - month=(p[4]-'0')*10 + (p[5]-'0'); - day=(p[6]-'0')*10 + (p[7]-'0'); - hour=(p[8]-'0')*10 + (p[9]-'0'); - minute=(p[10]-'0')*10 + (p[11]-'0'); - second=(p[12]-'0')*10 + (p[13]-'0'); - return getisotime(year,month,day,hour,minute,second,hs==0 ? p[16] : 0); -} - -void FreeBootTable(boot_head *boot) { - boot_entry *be,*next; - - be=boot->defentry; - while (be) { - next=be->next; - free(be); - be=next; - } - boot->defentry=NULL; -} - -int BootImageSize(readfunc*,int media,sector_t,int len,void*) { - int ret; - - switch(media & 0xf) { - case 0: - ret=len; /* No emulation */ - break; - case 1: - ret=80*2*15; /* 1.2 MB */ - break; - case 2: - ret=80*2*18; /* 1.44 MB */ - break; - case 3: - ret=80*2*36; /* 2.88 MB */ - break; - case 4: - /* FIXME!!! */ - ret=len; /* Hard Disk */ - break; - default: - ret=len; - } - return ret; -} - -static boot_entry *CreateBootEntry(char *be) { - boot_entry *entry; - - entry = (boot_entry*) malloc(sizeof(boot_entry)); - if (!entry) return NULL; - memset(entry, 0, sizeof(boot_entry)); - memcpy(entry->data,be,0x20); - return entry; -} - -int ReadBootTable(readfunc *read,sector_t sector, boot_head *head, void *udata) { - - char buf[2048], *c, *be; - int i,end=0; - unsigned short sum; - boot_entry *defcur=NULL,*deflast=NULL; - register struct validation_entry *ventry=NULL; - - head->sections=NULL; - head->defentry=NULL; - while (1) { - be = (char*) &buf; - if ( read(be, sector, 1, udata) != 1 ) goto err; - - /* first entry needs to be a validation entry */ - if (!ventry) { - ventry=(struct validation_entry *) be; - if ( isonum_711(ventry->type) !=1 ) goto err; - sum=0; - c = (char*) ventry; - for (i=0;i<16;++i) { sum += isonum_721(c); c+=2; } - if (sum) goto err; - memcpy(&head->ventry,be,0x20); - be += 0x20; - } - - while (!end && (be < (buf+1))) { - switch (isonum_711(be)) { - case 0x88: - defcur=CreateBootEntry(be); - if (!defcur) goto err; - if (deflast) - deflast->next=defcur; - else - head->defentry=defcur; - defcur->prev=deflast; - deflast=defcur; - break; - case 0x90: - case 0x91: - break; - default: - end=1; - break; - } - be += 0x20; - } - if (end) break; - - sector ++; - } - - return 0; - -err: - FreeBootTable(head); - return -1; -} - - /** * Creates the linked list of the volume descriptors */ @@ -225,12 +30,14 @@ int i; struct iso_volume_descriptor buf; - iso_vol_desc *first=NULL,*current=NULL,*prev=NULL; + iso_vol_desc *first = nullptr; + iso_vol_desc *current = nullptr; + iso_vol_desc *prev = nullptr; for (i=0;i<100;i++) { if (read( (char*) &buf, sector+i+16, 1, udata) != 1 ) { FreeISO9660(first); - return NULL; + return nullptr; } if (!memcmp(ISO_STANDARD_ID,&buf.id,5)) { switch ( isonum_711(&buf.type[0]) ) { @@ -241,19 +48,18 @@ current=(iso_vol_desc*) malloc(sizeof(iso_vol_desc)); if (!current) { FreeISO9660(first); - return NULL; + return nullptr; } - current->prev=prev; - current->next=NULL; - if (prev) prev->next=current; + current->prev = prev; + current->next = nullptr; + if (prev) prev->next = current; memcpy(&(current->data),&buf,2048); - if (!first) first=current; - prev=current; + if (!first) first = current; + prev = current; break; case ISO_VD_END: return first; - break; } } else if (!memcmp(HS_STANDARD_ID,(struct hs_volume_descriptor*) &buf,5)) { /* High Sierra format not supported (yet) */ @@ -278,598 +84,4 @@ } } -/** - * Frees the strings in 'rrentry' - */ -void FreeRR(rr_entry *rrentry) { - if (rrentry->name) { - free(rrentry->name); - rrentry->name=NULL; - } - if (rrentry->sl) { - free(rrentry->sl); - rrentry->sl = NULL; - } -} - -int str_nappend(char **d, char *s, int n) -{ - int i = 0; - char *c; - - while (i < n && s[i]) i++; - i++; - if (*d) i += (strlen(*d) + 1); - c = (char*) malloc(i); - if (!c) return -ENOMEM; - if (*d) { - strcpy(c, *d); - strncat(c, s, n); - - free(*d); - } else - strncpy(c, s, n); - c[i - 1] = 0; - *d = c; - return 0; -} - -static int str_append(char **d, const char *s) { - int i; - char *c; - - i=strlen(s)+1; - if (*d) i+=(strlen(*d)+1); - c=(char*) malloc(i); - if (!c) return -ENOMEM; - if (*d) { - strcpy(c,*d); - strcat(c,s); - free(*d); - } else - strcpy(c,s); - c[i-1]=0; - *d=c; - return 0; -} - -#define rrtlen(c) (((unsigned char) c & 0x80) ? 17 : 7) -#define rrctime(f,c) ((unsigned char) f & 0x80) ? isodate_84261(c,0) : isodate_915(c,0) -/** - * Parses the System Use area and fills rr_entry with values - */ -int ParseRR(struct iso_directory_record *idr, rr_entry *rrentry) { - - int suspoffs,susplen,i,f,ret=0; - char *r, *c; - struct rock_ridge *rr; - - suspoffs=33+isonum_711(idr->name_len); - if (!(isonum_711(idr->name_len) & 1)) suspoffs++; - susplen=isonum_711(idr->length)-suspoffs; - r= & (((char*) idr)[suspoffs]); - rr = (struct rock_ridge*) r; - - memset(rrentry,0,sizeof(rr_entry)); - rrentry->len = sizeof(rr_entry); - - while (susplen > 0) { - if (isonum_711(&rr->len) > susplen || rr->len == 0) break; - if (rr->signature[0]=='N' && rr->signature[1]=='M') { - if (!(rr->u.NM.flags & 0x26) && rr->len>5 && !rrentry->name) { - - if (str_nappend(&rrentry->name,rr->u.NM.name,isonum_711(&rr->len)-5)) { - FreeRR(rrentry); return -ENOMEM; - } - ret++; - } - } else if (rr->signature[0]=='P' && rr->signature[1]=='X' && - (isonum_711(&rr->len)==44 || isonum_711(&rr->len)==36)) { - rrentry->mode=isonum_733(rr->u.PX.mode); - rrentry->nlink=isonum_733(rr->u.PX.n_links); - rrentry->uid=isonum_733(rr->u.PX.uid); - rrentry->gid=isonum_733(rr->u.PX.gid); - if (isonum_711(&rr->len)==44) rrentry->serno=isonum_733(rr->u.PX.serno); - ret++; - } else if (rr->signature[0]=='P' && rr->signature[1]=='N' && - isonum_711(&rr->len)==20) { - rrentry->dev_major=isonum_733(rr->u.PN.dev_high); - rrentry->dev_minor=isonum_733(rr->u.PN.dev_low); - ret++; - } else if (rr->signature[0]=='P' && rr->signature[1]=='L' && - isonum_711(&rr->len)==12) { - rrentry->pl=isonum_733(rr->u.PL.location); - ret++; - } else if (rr->signature[0]=='C' && rr->signature[1]=='L' && - isonum_711(&rr->len)==12) { - rrentry->cl=isonum_733(rr->u.CL.location); - ret++; - } else if (rr->signature[0]=='R' && rr->signature[1]=='E' && - isonum_711(&rr->len)==4) { - rrentry->re=1; - ret++; - } else if (rr->signature[0]=='S' && rr->signature[1]=='L' && - isonum_711(&rr->len)>7) { - i = isonum_711(&rr->len)-5; - c = (char*) rr; - c += 5; - while (i>0) { - switch(c[0] & ~1) { - case 0x2: - if (str_append(&rrentry->sl,".")) { - FreeRR(rrentry); return -ENOMEM; - } - break; - case 0x4: - if (str_append(&rrentry->sl,"..")) { - FreeRR(rrentry); return -ENOMEM; - } - break; - } - if ( (c[0] & 0x08) == 0x08 || (c[1] && rrentry->sl && - strlen(rrentry->sl)>1) ) { - if (str_append(&rrentry->sl,"/")) { - FreeRR(rrentry); return -ENOMEM; - } - } - - if ((unsigned char)c[1]>0) { - if (str_nappend(&rrentry->sl,c+2,(unsigned char)c[1])) { - FreeRR(rrentry); return -ENOMEM; - } - } - i -= ((unsigned char)c[1] + 2); - c += ((unsigned char)c[1] + 2); - } - ret++; - } else if (rr->signature[0]=='T' && rr->signature[1]=='F' && - isonum_711(&rr->len)>5) { - - i = isonum_711(&rr->len)-5; - f = rr->u.TF.flags; - c = (char*) rr; - c += 5; - - while (i >= rrtlen(f)) { - if (f & 1) { - rrentry->t_creat=rrctime(f,c); - f &= ~1; - } else if (f & 2) { - rrentry->rr_st_mtime=rrctime(f,c); - f &= ~2; - } else if (f & 4) { - rrentry->rr_st_atime=rrctime(f,c); - f &= ~4; - } else if (f & 8) { - rrentry->rr_st_ctime=rrctime(f,c); - f &= ~8; - } else if (f & 16) { - rrentry->t_backup=rrctime(f,c); - f &= ~16; - } else if (f & 32) { - rrentry->t_expire=rrctime(f,c); - f &= ~32; - } else if (f & 64) { - rrentry->t_effect=rrctime(f,c); - f &= ~64; - } - - i -= rrtlen(f); - c += rrtlen(f); - } - ret++; - - } else if (rr->signature[0]=='Z' && rr->signature[1]=='F' && - isonum_711(&rr->len)==16) { - /* Linux-specific extension: transparent decompression */ - rrentry->z_algo[0]=rr->u.ZF.algorithm[0]; - rrentry->z_algo[1]=rr->u.ZF.algorithm[1]; - rrentry->z_params[0]=rr->u.ZF.parms[0]; - rrentry->z_params[1]=rr->u.ZF.parms[1]; - rrentry->z_size=isonum_733(rr->u.ZF.real_size); - ret++; - } else { -/* printf("SUSP sign: %c%c\n",rr->signature[0],rr->signature[1]); */ - } - - susplen -= isonum_711(&rr->len); - r += isonum_711(&rr->len); - rr = (struct rock_ridge*) r; - } - - return ret; -} - -/** - * Iterates over the directory entries. The directory is in 'buf', - * the size of the directory is 'size'. 'callback' is called for each - * directory entry with the parameter 'udata'. - */ -int ProcessDir(readfunc *read,int extent,int size,dircallback *callback,void *udata) { - - int pos=0,ret=0,siz; - char *buf; - struct iso_directory_record *idr; - - if (size & 2047) { - siz=((size>>11)+1)<<11; - } else { - siz=size; - } - - buf=(char*) malloc(siz); - if (!buf) return -ENOMEM; - if (read(buf,extent,siz>>11,udata)!=siz>>11) { - free(buf); - return -EIO; - } - - while (size>0) { - idr=(struct iso_directory_record*) &buf[pos]; - if (isonum_711(idr->length)==0) { - size-=(2048 - (pos & 0x7ff)); - if (size<=2) break; - pos+=0x800; - pos&=0xfffff800; - idr=(struct iso_directory_record*) &buf[pos]; - } - pos+=isonum_711(idr->length); - pos+=isonum_711(idr->ext_attr_length); - size-=isonum_711(idr->length); - size-=isonum_711(idr->ext_attr_length); - if (size<0) break; - - if (isonum_711(idr->length) -<33 || - isonum_711(idr->length)<33+isonum_711(idr->name_len)) { - /* Invalid directory entry */ - continue; - } - if ((ret=callback(idr,udata))) break; - } - - free(buf); - return ret; -} - -/** - * returns the joliet level from the volume descriptor - */ -int JolietLevel(struct iso_volume_descriptor *ivd) { - int ret=0; - register struct iso_supplementary_descriptor *isd; - - isd = (struct iso_supplementary_descriptor *) ivd; - - if (isonum_711(ivd->type)==ISO_VD_SUPPLEMENTARY) { - if (isd->escape[0]==0x25 && - isd->escape[1]==0x2f) { - - switch (isd->escape[2]) { - case 0x40: - ret=1; - break; - case 0x43: - ret=2; - break; - case 0x45: - ret=3; - break; - } - } - } - return ret; -} - -/********************************************************************/ -#if 0 - -#include <time.h> -#include <fcntl.h> -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <iconv.h> - -int level=0,joliet=0,dirs,files; -iconv_t iconv_d; -int fd; - -int readf(char *buf, int start, int len,void *udata) { - int ret; - - if ((ret=lseek(fd, start << 11, SEEK_SET))<0) return ret; - ret=read(fd, buf, len << 11); - if (ret<0) return ret; - return (ret >> 11); -} - -void dumpchars(char *c,int len) { - while (len>0) { - printf("%c",*c); - len--; - c++; - } -} - -void sp(int num) { - int i; - for (i=0;i<num*5;i++) { printf(" "); }; -} - -void dumpflags(char flags) { - if (flags & 1) printf("HIDDEN "); - if (flags & 2) printf("DIR "); - if (flags & 4) printf("ASF "); -} - -void dumpjoliet(char *c,int len) { - - char outbuf[255]; - size_t out; - int ret; - char *outptr; - - outptr=(char*) &outbuf; - out=255; - if ((iconv(iconv_d,&c,&len,&outptr,&out))<0) { - printf("conversion error=%d",errno); - return; - } - ret=255-out; - dumpchars((char*) &outbuf,ret); -} - -void dumpchardesc(char *c,int len) { - - if (joliet) - dumpjoliet(c,len); - else { - dumpchars(c,len); - } -} - -void dumpiso915time(char *t, int hs) { - - time_t time; - char *c; - - time=isodate_915(t,hs); - c=(char*) ctime(&time); - if (c && c[strlen(c)-1]==0x0a) c[strlen(c)-1]=0; - if (c) printf("%s",c); -} - -void dumpiso84261time(char *t, int hs) { - - time_t time; - char *c; - - time=isodate_84261(t,hs); - c=(char*) ctime(&time); - if (c && c[strlen(c)-1]==0x0a) c[strlen(c)-1]=0; - if (c) printf("%s",c); -} - -void dumpdirrec(struct iso_directory_record *dir) { - - if (isonum_711(dir->name_len)==1) { - switch (dir->name[0]) { - case 0: - printf("."); - break; - case 1: - printf(".."); - break; - default: - printf("%c",dir->name[0]); - break; - } - } - dumpchardesc(dir->name,isonum_711(dir->name_len)); - printf(" size=%d",isonum_733(dir->size)); - printf(" extent=%d ",isonum_733(dir->extent)); - dumpflags(isonum_711(dir->flags)); - dumpiso915time((char*) &(dir->date),0); -} - -void dumprrentry(rr_entry *rr) { - printf(" NM=[%s] uid=%d gid=%d nlink=%d mode=%o ", - rr->name,rr->uid,rr->gid,rr->nlink,rr->mode); - if (S_ISCHR(rr->mode) || S_ISBLK(rr->mode)) - printf("major=%d minor=%d ",rr->dev_major,rr->dev_minor); - if (rr->mode & S_IFLNK && rr->sl) printf("slink=%s ",rr->sl); -/* - printf("\n"); - if (rr->t_creat) printf("t_creat: %s",ctime(&rr->t_creat)); - if (rr->rr_st_mtime) printf("rr_st_mtime: %s",ctime(&rr->rr_st_mtime)); - if (rr->rr_st_atime) printf("rr_st_atime: %s",ctime(&rr->rr_st_atime)); - if (rr->rr_st_ctime) printf("rr_st_ctime: %s",ctime(&rr->rr_st_ctime)); - if (rr->t_backup) printf("t_backup: %s",ctime(&rr->t_backup)); - if (rr->t_expire) printf("t_expire: %s",ctime(&rr->t_expire)); - if (rr->t_effect) printf("t_effect: %s",ctime(&rr->t_effect)); -*/ -} - -void dumpsusp(char *c, int len) { - dumpchars(c,len); -} - -void dumpboot(struct el_torito_boot_descriptor *ebd) { - printf("version: %d\n",isonum_711(ebd->version)); - printf("system id: ");dumpchars(ebd->system_id,ISODCL(8,39));printf("\n"); - printf("boot catalog start: %d\n",isonum_731(ebd->boot_catalog)); -} - -void dumpdefentry(struct default_entry *de) { - printf("Default entry: \n"); - printf(" bootid=%x\n",isonum_711(de->bootid)); - printf(" media emulation=%d (",isonum_711(de->media)); - switch(isonum_711(de->media) & 0xf) { - case 0: - printf("No emulation"); - break; - case 1: - printf("1.2 Mb floppy"); - break; - case 2: - printf("1.44 Mb floppy"); - break; - case 3: - printf("2.88 Mb floppy"); - break; - case 4: - printf("Hard Disk"); - break; - default: - printf("Unknown/Invalid"); - break; - } - printf(")\n"); - printf(" loadseg=%d\n",isonum_721(de->loadseg)); - printf(" systype=%d\n",isonum_711(de->systype)); - printf(" start lba=%d count=%d\n",isonum_731(de->start), - isonum_721(de->seccount)); -} - -void dumpbootcat(boot_head *bh) { - boot_entry *be; - - printf("System id: ");dumpchars(bh->ventry.id,ISODCL(28,5));printf("\n"); - be=bh->defentry; - while (be) { - dumpdefentry(be->data); - be=be->next; - } -} - -void dumpdesc(struct iso_primary_descriptor *ipd) { - - printf("system id: ");dumpchardesc(ipd->system_id,ISODCL(9,40));printf("\n"); - printf("volume id: ");dumpchardesc(ipd->volume_id,ISODCL(41,72));printf("\n"); - printf("volume space size: %d\n",isonum_733(ipd->volume_space_size)); - printf("volume set size: %d\n",isonum_723(ipd->volume_set_size)); - printf("volume seq num: %d\n",isonum_723(ipd->volume_set_size)); - printf("logical block size: %d\n",isonum_723(ipd->logical_block_size)); - printf("path table size: %d\n",isonum_733(ipd->path_table_size)); - printf("location of type_l path table: %d\n",isonum_731(ipd->type_l_path_table)); - printf("location of optional type_l path table: %d\n",isonum_731(ipd->opt_type_l_path_table)); - printf("location of type_m path table: %d\n",isonum_732(ipd->type_m_path_table)); - printf("location of optional type_m path table: %d\n",isonum_732(ipd->opt_type_m_path_table)); -/* - printf("Root dir record:\n");dumpdirrec((struct iso_directory_record*) &ipd->root_directory_record); -*/ - printf("Volume set id: ");dumpchardesc(ipd->volume_set_id,ISODCL(191,318));printf("\n"); - printf("Publisher id: ");dumpchardesc(ipd->publisher_id,ISODCL(319,446));printf("\n"); - printf("Preparer id: ");dumpchardesc(ipd->preparer_id,ISODCL(447,574));printf("\n"); - printf("Application id: ");dumpchardesc(ipd->application_id,ISODCL(575,702));printf("\n"); - printf("Copyright id: ");dumpchardesc(ipd->copyright_file_id,ISODCL(703,739));printf("\n"); - printf("Abstract file id: ");dumpchardesc(ipd->abstract_file_id,ISODCL(740,776));printf("\n"); - printf("Bibliographic file id: ");dumpchardesc(ipd->bibliographic_file_id,ISODCL(777,813));printf("\n"); - printf("Volume creation date: ");dumpiso84261time(ipd->creation_date,0);printf("\n"); - printf("Volume modification date: ");dumpiso84261time(ipd->modification_date,0);printf("\n"); - printf("Volume expiration date: ");dumpiso84261time(ipd->expiration_date,0);printf("\n"); - printf("Volume effective date: ");dumpiso84261time(ipd->effective_date,0);printf("\n"); - printf("File structure version: %d\n",isonum_711(ipd->file_structure_version)); -} - -int mycallb(struct iso_directory_record *idr,void *udata) { - rr_entry rrentry; - - sp(level);dumpdirrec(idr); - if (level==0) printf(" (Root directory) "); - printf("\n"); - - if (ParseRR(idr,&rrentry)>0) { - sp(level);printf(" ");dumprrentry(&rrentry);printf("\n"); - } - FreeRR(&rrentry); - if ( !(idr->flags[0] & 2) ) files++; - if ( (idr->flags[0] & 2) && (level==0 || isonum_711(idr->name_len)>1) ) { - level++; - dirs++; - ProcessDir(&readf,isonum_733(idr->extent),isonum_733(idr->size),&mycallb,udata); - level--; - } - return 0; -} - -/************************************************/ - -int main(int argc, char *argv[]) { - - int i=1,sector=0; - iso_vol_desc *desc; - boot_head boot; - - if (argc<2) { - fprintf(stderr,"\nUsage: %s iso-file-name or device [starting sector]\n\n",argv[0]); - return 0; - } - if (argc>=3) { - sector=atoi(argv[2]); - printf("Using starting sector number %d\n",sector); - } - fd=open(argv[1],O_RDONLY); - if (fd<0) { - fprintf(stderr,"open error\n"); - return -1; - } - iconv_d=iconv_open("ISO8859-2","UTF16BE"); - if (iconv_d==0) { - fprintf(stderr,"iconv open error\n"); - return -1; - } - - desc=ReadISO9660(&readf,sector,NULL); - if (!desc) { - printf("No volume descriptors\n"); - return -1; - } - while (desc) { - - printf("\n\n--------------- Volume descriptor (%d.) type %d: ---------------\n\n", - i,isonum_711(desc->data.type)); - switch (isonum_711(desc->data.type)) { - case ISO_VD_BOOT: { - - struct el_torito_boot_descriptor* bootdesc; - bootdesc=&(desc->data); - dumpboot(bootdesc); - if ( !memcmp(EL_TORITO_ID,bootdesc->system_id,ISODCL(8,39)) ) { - - if (ReadBootTable(&readf,isonum_731(bootdesc->boot_catalog),&boot,NULL)) { - printf("Boot Catalog Error\n"); - } else { - dumpbootcat(&boot); - FreeBootTable(&boot); - } - } - } - break; - - case ISO_VD_PRIMARY: - case ISO_VD_SUPPLEMENTARY: - joliet=0; - joliet = JolietLevel(&desc->data); - printf("Joliet level: %d\n",joliet); - dumpdesc((struct iso_primary_descriptor*) &desc->data); - printf("\n\n--------------- Directory structure: -------------------\n\n"); - dirs=0;files=0; - mycallb( &( ((struct iso_primary_descriptor*) &desc->data)->root_directory_record), NULL ); - printf("\nnumber of directories: %d\n",dirs); - printf("\nnumber of files: %d\n",files); - break; - - } - desc=desc->next; - i++; - } - iconv_close(iconv_d); - close(fd); - FreeISO9660(desc); - return 0; -} -#endif diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.h kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.h --- kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/libisofs/isofs.h 2025-03-11 20:49:32.000000000 +0800 @@ -81,20 +81,6 @@ */ typedef int dircallback(struct iso_directory_record *,void *); -/** - * Returns the Unix from the ISO9660 9.1.5 (7 bytes) time format - * This function is from the linux kernel. - * Set 'hs' to non-zero if it's a HighSierra volume - */ -time_t isodate_915(char * p, int hs); - -/** - * Returns the Unix time from the ISO9660 8.4.26.1 (17 bytes) time format - * BUG: hundredth of seconds are ignored, because time_t has one second - * resolution (I think it's no problem at all) - * Set 'hs' to non-zero if it's a HighSierra volume - */ -time_t isodate_84261(char * p, int hs); /** * Creates the linked list of the volume descriptors @@ -110,44 +96,4 @@ */ void FreeISO9660(iso_vol_desc *data); -/** - * Iterates over the directory entries. The directory is in 'buf', - * the size of the directory is 'size'. 'callback' is called for each - * directory entry with the parameter 'udata'. - */ -int ProcessDir(readfunc *read,int extent,int size,dircallback *callback,void *udata); - -/** - * Parses the System Use area and fills rr_entry with values - */ -int ParseRR(struct iso_directory_record *idr, rr_entry *rrentry); - -/** - * Frees the strings in 'rrentry' - */ -void FreeRR(rr_entry *rrentry); - -/** - * returns the joliet level from the volume descriptor - */ -int JolietLevel(struct iso_volume_descriptor *ivd); - -/** - * Returns the size of the boot image (in 512 byte sectors) - */ -int BootImageSize(readfunc *read,int media,sector_t start,int len,void *udata); - -/** - * Frees the boot catalog entries in 'boot'. If you ever called ReadBootTable, - * then don't forget to call FreeBootTable! - */ -void FreeBootTable(boot_head *boot); - -/** - * Reads the boot catalog into 'head'. Don't forget to call FreeBootTable! - */ -int ReadBootTable(readfunc *read,sector_t sector, boot_head *head, void *udata); - -int str_nappend(char **d, char *s, int n); - #endif diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/main.cpp kylin-burner-3.2.0.1kylin1k32.01/src/main.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/main.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/main.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -62,20 +62,39 @@ a.setWindowIcon(QIcon::fromTheme("burner")); a.setApplicationDisplayName(_("Burner")); + //在程序启动时调用,不需要传入参数 + QCommandLineParser *parser; + parser = new QCommandLineParser; + parser->addPositionalArgument( "urls", _("file(s) to open"), "[urls...]" ); + parser->addOption(QCommandLineOption("d", _("Running as debug model."))); + parser->process(a); + if (parser->isSet("d")) + Configuration::instance()->set("logger","level", 4); + else + Configuration::instance()->set("logger","level", 1); + //check already running QDBusInterface interface("com.kylin.burner.manager", "/com/kylin/burner/manager", "com.kylin.burner.manager", QDBusConnection::sessionBus()); - QDBusReply<int> reply = interface.call( "slotsReShowMainWindow"); - if ( reply.isValid() && reply.value() == 0) - { - qDebug()<<"The kylin-burner process is running"; + QDBusReply<int> reply = interface.call("slotsReShowMainWindow", parser->positionalArguments()); + if (reply.isValid()) { + switch(reply.value()) { + case 0: + qDebug()<<"The kylin-burner process is running, 0 argument, active mainwindow"; + break; + case 1: + qDebug()<<"The kylin-burner process is running, 1 argumentactive mainwindow and swith burn image view"; + break; + default: + qDebug()<<"The kylin-burner process is running"; + break; + } exit(0); } - #ifndef QT_NO_TRANSLATION // QT自身标准的翻译 QString locale = QLocale::system().name(); @@ -108,7 +127,6 @@ } } - Configuration::instance()->init(); //EverTime Burner Start, init [DataSetting]--Duplicate Data/Add Data/Delete Data/clean Data //it can reduce some error when user some operation Configuration::instance()->set("DataSetting", "Duplicate Data", 0); @@ -124,34 +142,25 @@ LOGGER->init(); MenuFactory::instance()->init(); TIP_BURNRESULT->init(); - VIEWFILTERFILE->init(); + ViewFilterFiles::instance()->init(); MAIN->init(); COPY_IMGAE->init(); - EXEC->init(); - AboutDialog::instance(MainWindow::Instance()); - AboutDialog::instance()->init(); - - //在程序启动时调用,不需要传入参数 - QCommandLineParser *parser; - parser = new QCommandLineParser; - parser->addPositionalArgument( "urls", _("file(s) to open"), "[urls...]" ); - parser->addOption(QCommandLineOption("d", _("Running as debug model."))); - parser->process(a); - if (parser->isSet("d")) - CFG->set("logger","level", 4); - else - CFG->set("logger","level", 1); + ExecDialog::instance()->init(); MainWindow::Instance(parser->positionalArguments(), nullptr); kdk::UkuiStyleHelper::self()->removeHeader(MainWindow::Instance()); a.setActivationWindow(MainWindow::Instance()); MainWindow::Instance()->show(); + AboutDialog::instance(MainWindow::Instance()); + AboutDialog::instance()->init(); + kdk::WindowManager::setSkipSwitcher(AboutDialog::instance()->windowHandle(),true); + MODAL->setAttribute(Qt::WA_NativeWindow); MODAL->windowHandle()->setTransientParent(MainWindow::Instance()->windowHandle()); - FILTERRULES->setAttribute(Qt::WA_NativeWindow); - FILTERRULES->windowHandle()->setTransientParent(MainWindow::Instance()->windowHandle()); + FileFilterRules::instance()->setAttribute(Qt::WA_NativeWindow); + FileFilterRules::instance()->windowHandle()->setTransientParent(MainWindow::Instance()->windowHandle()); EXEC->setAttribute(Qt::WA_NativeWindow); EXEC->windowHandle()->setTransientParent(MainWindow::Instance()->windowHandle()); @@ -159,14 +168,14 @@ TIP_BURNRESULT->setAttribute(Qt::WA_NativeWindow); TIP_BURNRESULT->windowHandle()->setTransientParent(MainWindow::Instance()->windowHandle()); - VIEWFILTERFILE->setAttribute(Qt::WA_NativeWindow); - VIEWFILTERFILE->windowHandle()->setTransientParent(MainWindow::Instance()->windowHandle()); + ViewFilterFiles::instance()->setAttribute(Qt::WA_NativeWindow); + ViewFilterFiles::instance()->windowHandle()->setTransientParent(MainWindow::Instance()->windowHandle()); kdk::WindowManager::setGeometry(MainWindow::Instance()->windowHandle(), QRect(QPoint(qApp->desktop()->screenGeometry(MainWindow::Instance()).width()/2 - MainWindow::Instance()->width()/2, qApp->desktop()->screenGeometry(MainWindow::Instance()).height()/2 - MainWindow::Instance()->height()/2), QSize(MainWindow::Instance()->size()))); - + LogicMain::instance()->initISO(); return a.exec(); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.cpp kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -104,14 +104,6 @@ return md5_hash.result().toHex(); } -//获取文件的相对路径 -QString DirOptUtils::getRelativePath(const QString &filePath) -{ - QString fileRelativePath = filePath; - - -} - //在指定目录下生成md5sum.txt文件 bool DirOptUtils::generateCheckFile() { @@ -148,5 +140,7 @@ qDebug() << "写完成"; } else { qDebug() << "failed to open file"; + return false; } + return true; } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.h kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.h --- kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/diroptutils.h 2025-03-11 20:49:32.000000000 +0800 @@ -11,7 +11,6 @@ QStringList getFileListUnderDir1(const QString&); //遍历当前路径下文件 QStringList getFileListUnderDir2(const QString&); - QString getRelativePath(const QString&); QString calculateMd5(const QString&); void testPrintMap(); bool generateCheckFile(); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.cpp kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -38,13 +38,12 @@ { LOGGER->registerName(this, _("BURNDATA")); - connect(this, SIGNAL(setting(void*)), ModalDialog::instance()->showPage(ModalDialog::BusnessSetting), SLOT(load(void *))); + connect(this, SIGNAL(setting(void*)), ModalDialog::instance()->getPageByIndex(ModalDialog::BusnessSetting), SLOT(load(void *))); connect(this, SIGNAL(title(QString)), ModalDialog::instance()->getPageByIndex(ModalDialog::Progress), SIGNAL(title(QString))); connect(this, SIGNAL(setRange(int,int)), ModalDialog::instance()->getPageByIndex(ModalDialog::Progress), SIGNAL(setRange(int, int))); connect(this, SIGNAL(setValue(int,QIcon,QString)), ModalDialog::instance()->getPageByIndex(ModalDialog::Progress), SIGNAL(setValue(int,QIcon,QString))); connect(this, SIGNAL(addValue(int,QIcon,QString)), ModalDialog::instance()->getPageByIndex(ModalDialog::Progress), SIGNAL(addValue(int,QIcon,QString))); - connect(LogicMain::instance(), &LogicMain::exit, [=](){m_bAppRunning = false;}); } @@ -1333,6 +1332,7 @@ if (child && ".." != child->display() && !child->isDisk()) { parent->take(child); + emit child->sizeChanged(child->size(),false); //delete child; //child = nullptr; } @@ -1466,6 +1466,11 @@ m_oBurners.takeAt(idx); + //mutex is locked when deleting data + if(idx < m_mutex_list.size()){ + m_mutex_list.at(idx)->lock(); + } + beginRemoveRows(createIndex(idx, 0, m_oRoots.at(idx)), 0, root->count()); root->clean(); endRemoveRows(); @@ -1473,8 +1478,12 @@ QObject::connect(root,&DataDirectory::destroyed,root,[&](){root = nullptr;},Qt::UniqueConnection); root->deleteLater(); - m_oRoots.takeAt(idx); + + if((idx >= 0) && (idx < m_mutex_list.size())){ + m_mutex_list.at(idx)->unlock(); + delete m_mutex_list.takeAt(idx); + } } void LogicBurnData::slotRestoreAllFiles(QList<void *> hiddens, QList<void *> brokens, QList<void *> replaces) @@ -1572,6 +1581,8 @@ m_oRoots << root_dir; m_oBurners << cdromDevice; + m_mutex_list.push_back(new QMutex()); + //notify the ui emit addEnabled(true); emit folderEnabled(true); @@ -1657,14 +1668,8 @@ { DataCDROM *cdrom = (DataCDROM*)m_oBurners.at(m_iIndex); - ProcessLsof lsofPro; - if (lsofPro.checkDevice(cdrom)) { - const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); - if (apps.count() > 0) { - QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(cdrom->display()).arg(lsofPro.joinProcessNames(apps)); - Tip_BurnResult::instance()->slotsWarn(errInfo); - return; - } + if (cdrom->checkUsingOfOtherApp()) { + return; } if (cdrom->isOpen()) { @@ -1709,14 +1714,8 @@ DataCDROM *cdrom = (DataCDROM*)m_oBurners.at(m_iIndex); - ProcessLsof lsofPro; - if (lsofPro.checkDevice(cdrom)) { - const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); - if (apps.count() > 0) { - QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(cdrom->display()).arg(lsofPro.joinProcessNames(apps)); - Tip_BurnResult::instance()->slotsWarn(errInfo); - return; - } + if (cdrom->checkUsingOfOtherApp()) { + return; } if (cdrom->mediumType() == "DVD+R DL" && SystemInfo::m_arch == "loongarch64") @@ -1749,14 +1748,8 @@ DataCDROM *cdrom = (DataCDROM*)m_oBurners.at(m_iIndex); - ProcessLsof lsofPro; - if (lsofPro.checkDevice(cdrom)) { - const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); - if (apps.count() > 0) { - QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(cdrom->display()).arg(lsofPro.joinProcessNames(apps)); - Tip_BurnResult::instance()->slotsWarn(errInfo); - return; - } + if (cdrom->checkUsingOfOtherApp()) { + return; } ProcessBurnUDFData burnData(m_oRoots.at(m_iIndex) ,cdrom); @@ -1889,6 +1882,11 @@ if (!m_bAppRunning) break; + //mutex is locked when deleting data + if((index < m_mutex_list.size()) && (!m_mutex_list.at(index)->tryLock(2000))){ + break; + } + fileInfo.setFile(fileIndex); if (fileInfo.isSymLink() && fileInfo.absoluteFilePath().contains(fileInfo.symLinkTarget())) @@ -1904,9 +1902,9 @@ ret += addFile(fileInfo.absoluteFilePath(), root, true); } - if (flag) - { - emit setValue(ret, cdrom->icon(), _("Loading %1...").arg(fileInfo.fileName())); + //release lock + if((index < m_mutex_list.size())){ + m_mutex_list.at(index)->unlock(); } } endInsertRows(); @@ -1923,7 +1921,7 @@ foreach (QString indexFile, intputList) { fileInfo.setFile(indexFile); - if (fileInfo.isDir()) + if (fileInfo.isDir() && !fileInfo.isSymLink()) { dir.setPath(indexFile); ret += calcFileCountInDir(dir.absolutePath()); @@ -2052,6 +2050,5 @@ //update progress emit addValue(1, item->icon(), _("Added %1 to %2").arg(item->display()).arg(parent->display())); - qDebug()<<__LINE__<<__func__<<item->display()<<"LogicBurnData"<<parent->display(); return 1; } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.h kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.h --- kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburndata.h 2025-03-11 20:49:32.000000000 +0800 @@ -5,6 +5,7 @@ #include <QAbstractItemModel> #include <QIcon> #include <kysdk/applications/kmessagebox.h> +#include <QMutex> class DataFile; class LogicBurnData : public QAbstractItemModel @@ -119,6 +120,7 @@ QList<void *> m_oRoots; QList<void *> m_oBurners; bool m_isContinue; + QList<QMutex*> m_mutex_list; Q_SIGNALS: void setting(void *); @@ -146,7 +148,6 @@ void hiddenFileFiltered(int, void *); void brokenLinkfileFiltered(int, void *); void replaceLinkFileFiltered(int, void *); - }; #endif // LOGICBURNDATA_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.cpp kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -52,37 +52,11 @@ QFileInfo f; QVariantList vars; - if (0 == m_oBurners.size()) + if (0 <= m_oBurners.size()) { emit enableBurner(m_iBurner >= 0); emit enableBusness(check()); - emit burnerError(_("No valid burner,need burner which with empty meduim.")); } - if(m_oBurners.size() > 0){ - DataCDROM *cdrom; - // qDebug() << QString("[%1] [%2] : 光盘设置的 m_iBurner = %3").arg(__func__).arg(__LINE__).arg(m_iBurner); - cdrom = (DataCDROM *)(m_oBurners.at(m_iBurner)); - - // qDebug() <<__func__<<__LINE__<<cdrom; - - if(cdrom->mediumType().contains("RW")&&DataMedium::MEDIUM_EMPTY != cdrom->mediumStatus()){ - emit burnerError(_("This disc is a non-empty disc and needs to be erased!")); - emit enableBurner(m_iBurner >= 0); - emit enableBusness(check()); - return; - }else if(DataMedium::MEDIUM_EMPTY != cdrom->mediumStatus()){ - emit burnerError(_("No valid burner,need burner which with empty meduim.")); - emit enableBurner(m_iBurner >= 0); - emit enableBusness(check()); - return; - } - //if(DataMedium::MEDIUM_EMPTY == cdrom->mediumStatus()){ - emit enableBurner(m_iBurner >= 0); - emit enableBusness(check()); - //} - } - //emit enableBurner(m_iBurner >= 0); - //emit enableBusness(check()); } QIcon LogicBurnImage::mediumIcon(int idx) @@ -128,17 +102,8 @@ LOGGER->debug(_("Current index for burning is %1").arg(m_iBurner)); } -bool LogicBurnImage::check() +bool LogicBurnImage::checkBurner() { - QFileInfo f; - DataCDROM *cdrom; - - // ISO file cannot empty. - if (m_oISOPath.isEmpty()) - { - //emit isoError(_("No iso file.")); - return false; - } // cannot have no burner to burn. if (m_iBurner < 0 || 0 == m_oBurners.size()) { @@ -160,6 +125,26 @@ return false; } } + return true; +} + +bool LogicBurnImage::check() +{ + QFileInfo f; + DataCDROM *cdrom; + + + // cannot have no burner to burn. + if (!checkBurner()) { + return false; + } + + // ISO file cannot empty. + if (m_oISOPath.isEmpty()) + { + //emit isoError(_("No iso file.")); + return false; + } cdrom = (DataCDROM *)(m_oBurners.at(m_iBurner)); f.setFile(m_oISOPath); @@ -202,13 +187,6 @@ LOGGER->debug(_("Remove burner.")); m_oBurners.takeAt(idx); emit deleteBurner(idx); - if (m_iBurner == idx) { - // qDebug()<<__LINE__<<__func__<<d; - // qDebug() << QString("[%1] [%2] : idx = %3 移除的光盘为m_iBurner = %4").arg(__func__).arg(__LINE__).arg(idx).arg(m_iBurner); - // --m_iBurner; - // qDebug()<<__LINE__<<__func__<<d; - // qDebug() << QString("[%1] [%2] : 移除光盘后的m_iBurner = %4").arg(__func__).arg(__LINE__).arg(m_iBurner); - } } } @@ -219,14 +197,8 @@ LOGGER->debug(_("Begin to burn image, burn image<%1> to medium in <%2>") .arg(m_oISOPath).arg(cdrom->display())); - ProcessLsof lsofPro; - if (lsofPro.checkDevice(cdrom)) { - const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); - if (apps.count() > 0) { - QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(cdrom->display()).arg(lsofPro.joinProcessNames(apps)); - Tip_BurnResult::instance()->slotsWarn(errInfo); - return; - } + if (cdrom->checkUsingOfOtherApp()) { + return; } if (cdrom->isOpen()) { diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.h kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.h --- kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/logicburnimage.h 2025-03-11 20:49:32.000000000 +0800 @@ -14,7 +14,8 @@ LogicBurnImage *operator =(const LogicBurnImage*)=delete; public: void init(); - void destroy() { delete this; } + bool check(); + bool checkBurner(); public: QIcon mediumIcon(int); QString display(int); @@ -25,8 +26,6 @@ private: explicit LogicBurnImage(QObject *parent = nullptr); ~LogicBurnImage(); -private: - bool check(); private slots: void slotsNewBurner(void *); void slotsDeleteBurner(void *); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.cpp kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -136,14 +136,8 @@ { DataCDROM *cdrom = static_cast<DataCDROM *>(m_oSources.at(m_iSource)); - ProcessLsof lsofPro; - if (lsofPro.checkDevice(cdrom)) { - const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); - if (apps.count() > 0) { - QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(cdrom->display()).arg(lsofPro.joinProcessNames(apps)); - Tip_BurnResult::instance()->slotsWarn(errInfo); - return; - } + if (cdrom->checkUsingOfOtherApp()) { + return; } ProcessGetISO *getISO = new ProcessGetISO(m_oSources.at(m_iSource), m_oDestinations.at(0), this); @@ -159,14 +153,8 @@ src = static_cast<DataCDROM *>(m_oSources.at(m_iSource)); des = static_cast<DataCDROM *>(m_oDestinations.at(m_iDestination)); - ProcessLsof lsofPro; - if (lsofPro.checkDevice(src)) { - const QList<ProcessLsof::Process>& apps = lsofPro.usingApplications(); - if (apps.count() > 0) { - QString errInfo = _("Device '%1' is used by the '%2' application! Please try again later").arg(src->display()).arg(lsofPro.joinProcessNames(apps)); - Tip_BurnResult::instance()->slotsWarn(errInfo); - return; - } + if (src->checkUsingOfOtherApp()) { + return; } if(src->mediumType().contains("CD")&&des->mediumType().contains("DVD")){ diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.h kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.h --- kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/logiccopyimage.h 2025-03-11 20:49:32.000000000 +0800 @@ -14,7 +14,6 @@ LogicCopyImage *operator =(const LogicCopyImage*)=delete; public: void init(){} - void destroy() { delete this; } public: bool capacity(); void updateISOPath(QString); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/logicmain.cpp kylin-burner-3.2.0.1kylin1k32.01/src/model/logicmain.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/model/logicmain.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/logicmain.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -6,6 +6,7 @@ #include "src/model/monitorcdrom.h" #include "src/model/menufactory.h" #include "src/data/datacdrom.h" +#include "src/data/newdevicetype.h" #include "src/view/modaldialog.h" #include "src/view/mainwindow.h" #include "src/view/filefilterrules.h" @@ -22,6 +23,7 @@ #include <QEventLoop> #include <windowmanager/windowmanager.h> +#define USE_NEW_DEVICE LogicMain *LogicMain::m_oInstance = nullptr; QMutex LogicMain::m_oMutex; @@ -165,8 +167,11 @@ path = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); path = CFG->get("CopyImage", "DefaultPath", path).toString(); if (!path.endsWith("/")) path.append("/"); - +#ifdef USE_NEW_DEVICE + c = new ExtendDataCDRom(path,this); +#else c = new DataCDROM(path, this); +#endif createCopyImage(c); } @@ -230,7 +235,11 @@ { qDebug()<<__LINE__<<__func__<<"Creating new cdrom named"<<blockName << "current threadid:" << QThread::currentThreadId(); LOGGER->info(QString("LogicMain::createCDROM Line:%1 dev=%2 将被创建").arg(__LINE__).arg(blockName)); +#ifdef USE_NEW_DEVICE + cdrom = new ExtendDataCDRom(blockName, this); +#else cdrom = new DataCDROM(blockName, this); +#endif m_oCDROMS.insert(blockName, cdrom); } @@ -247,7 +256,11 @@ bool result = false; cdrom->m_bUpdateStart = true; qDebug()<<"createCDROM update() start " << blockName; +#ifdef USE_NEW_DEVICE + result = dynamic_cast<ExtendDataCDRom*>(cdrom)->update(); +#else result = cdrom->update(); +#endif LOGGER->warn(QString("LogicMain::createCDROM Line:%1 dev=%2 update() 执行结果为 result=%3 ").arg(__LINE__).arg(blockName).arg(result)); qDebug()<<"createCDROM update() end " << blockName; cdrom->m_bUpdateStart = false; @@ -514,7 +527,11 @@ { qDebug()<<__LINE__<<__func__<<"Creating new cdrom named"<<blockName << "current threadid:" << QThread::currentThreadId(); LOGGER->info(QString("LogicMain::discAddedSlot Line:%1 dev=%2 将被创建").arg(__LINE__).arg(blockName)); +#ifdef USE_NEW_DEVICE + cdrom = new ExtendDataCDRom(blockName, this); +#else cdrom = new DataCDROM(blockName, this); +#endif m_oCDROMS.insert(blockName, cdrom); } @@ -536,7 +553,11 @@ bool result = false; cdrom->m_bUpdateStart = true; qDebug()<<"LogicMain::discAddedSlot update() start " << blockName; +#ifdef USE_NEW_DEVICE + result = dynamic_cast<ExtendDataCDRom*>(cdrom)->update(); +#else result = cdrom->update(); +#endif LOGGER->warn(QString("LogicMain::discAddedSlot Line:%1 dev=%2 update() 执行结果为 result=%3 ").arg(__LINE__).arg(blockName).arg(result)); qDebug()<<"LogicMain::discAddedSlot update() end " << blockName; cdrom->m_bUpdateStart = false; @@ -557,10 +578,8 @@ if(cdrom->m_is_using > 0 && cdrom->isCDROM())//有光驱 { cdrom->use(); - //qDebug() << "LogicMain::discAddedSlot update()运行完后,有光驱"; if(cdrom->mediumStatus() >=0)//有光盘 { - //cdrom->sendMediumStatusToOtherView(); //qDebug() << "LogicMain::discAddedSlot update()运行完后,有光驱,有光盘发信号haveMedium"; emit g_user_signal->haveMedium(cdrom); } @@ -632,7 +651,11 @@ } else { qDebug() << "(LogicMain::currentDiscs) currnetDiscs 创建DataCDROM"; LOGGER->info(QString("(LogicMain::currentDiscs) currnetDiscs 创建DataCDROM")); +#ifdef USE_NEW_DEVICE + cdrom = new ExtendDataCDRom(m_oDiscList.at(i), this); +#else cdrom = new DataCDROM(m_oDiscList.at(i), this); +#endif } m_oCDROMS.insert(m_oDiscList.at(i), cdrom); @@ -640,7 +663,11 @@ connect(cdrom, SIGNAL(appendale()), this, SLOT(slotsAppendableMedium()),Qt::UniqueConnection); connect(cdrom, SIGNAL(finished()), this, SLOT(slotsFinishedMedium()),Qt::UniqueConnection); - cdrom->update(); +#ifdef USE_NEW_DEVICE + dynamic_cast<ExtendDataCDRom*>(cdrom)->update(); +#else + cdrom->update(); +#endif emit this->newCDromArrived(cdrom); } } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.cpp kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -6,9 +6,7 @@ #include "src/view/filefilterrules.h" #include "src/view/aboutdialog.h" #include "src/common/utils.h" -#include "kaboutdialog.h" #include "src/view/mainwindow.h" -#include "kmenubutton.h" #include <QApplication> #include <QDBusMessage> @@ -16,6 +14,9 @@ #include <QFileInfo> #include <QDebug> +#include "kaboutdialog.h" +#include "kmenubutton.h" + using namespace kdk; MenuFactory *MenuFactory::m_oInstance = nullptr; @@ -49,9 +50,12 @@ connect(m_oActionFileFilterView, &QAction::triggered, this, &MenuFactory::viewFilterFile); connect(m_oActionDiskCheck, &QAction::triggered, this, &MenuFactory::diskCheck); connect(m_oActionBurnerSetting, &QAction::triggered, this, &MenuFactory::burnSetting); - connect(m_oActionEject, SIGNAL(triggered(bool)), this, SIGNAL(eject(bool))); - connect(m_oActionEarse, SIGNAL(triggered(bool)), this, SIGNAL(earse(bool))); - + connect(m_oActionEject, &QAction::triggered, [this](bool checked){ + emit this->eject(checked); + }); + connect(m_oActionEarse, &QAction::triggered, [this](bool checked){ + emit this->earse(checked); + }); connect(m_oActionVersion, &QAction::triggered, this, &MenuFactory::version); connect(m_oActionAbout, &QAction::triggered, this, &MenuFactory::about); connect(m_oActionAbout,&QAction::triggered,this,&MenuFactory::showabout); @@ -64,27 +68,28 @@ newEarse(cdrom); }); + kdk::KMenuButton* menuButton = new kdk::KMenuButton(); + menuButton->setAccessibleName("kylin-burner_KMenuButton_MenuFactory_menuButton"); + QAction *feedbackAction = menuButton->feedbackAction(); + feedbackAction->setVisible(true); + // common actions - m_oCommonActions << m_oActionHelp << m_oActionAbout << m_oActionExit; + m_oCommonActions << m_oActionHelp << m_oActionAbout << feedbackAction << m_oActionExit; connect(this, &MenuFactory::setSetting, m_oActionBurnerSetting, &QAction::setEnabled); connect(this, &MenuFactory::setViewFilterFile, m_oActionFileFilterView, &QAction::setEnabled); // create iso menu = new QMenu(); + menu->setAccessibleName("kylin-burner_QMenu_MenuFactory_menu"); menu->addAction(m_oActionDataSetting); menu->addAction(m_oActionFileFilter); menu->addAction(m_oActionFileFilterView); - m_oSeparator = menu->addSeparator(); + menu->addSeparator(); menu->addAction(m_oActionBurnerSetting); menu->addAction(m_oActionEject); menu->addAction(m_oActionEarse); menu->addSeparator(); - - menu->addAction(m_oActionHelp); - menu->addAction(m_oActionAbout); - - menu->addAction(m_oActionExit); - menu->addSeparator(); + menu->addActions(m_oCommonActions); m_oMenus << menu; // burn data @@ -97,7 +102,7 @@ menu->addAction(m_oActionEject); menu->addAction(m_oActionEarse); menu->addAction(m_oActionDiskCheck); - menu->addAction(m_oSeparator); + menu->addSeparator(); menu->addActions(m_oCommonActions); m_oMenus << menu; // burn data same as add burn @@ -107,7 +112,7 @@ menu->addAction(m_oActionEject); menu->addAction(m_oActionEarse); menu->addAction(m_oActionDiskCheck); - menu->addAction(m_oSeparator); + menu->addSeparator(); menu->addActions(m_oCommonActions); m_oMenus << menu; // burn data same as add burn diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.h kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.h --- kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/model/menufactory.h 2025-03-11 20:49:32.000000000 +0800 @@ -16,10 +16,6 @@ MenuFactory *operator =(const MenuFactory*)=delete; public: void init(){} - void destroy(){ - if (m_oInstance) - this->deleteLater(); - } QMenu *getMenu(int); private: explicit MenuFactory(QObject *parent = nullptr); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/po/ar.po kylin-burner-3.2.0.1kylin1k32.01/src/po/ar.po --- kylin-burner-3.2.0.1kylin1k32.01/src/po/ar.po 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/po/ar.po 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,2348 @@ +# Chinese translations for 3.2.0 package. +# Copyright (C) 2021 THE 3.2.0'S COPYRIGHT HOLDER +# This file is distributed under the same license as the 3.2.0 package. +# <wangye@kylinos.cn>, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: 3.2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-14 15:20+0800\n" +"PO-Revision-Date: 2021-04-23 09:16+0800\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/datacdrom.cpp:51 data/datacdrom.cpp:52 data/datacdrom.cpp:53 +#, qt-format +msgid "%1 B" +msgstr "" + +#: data/datacdrom.cpp:56 +#, qt-format +msgid "Medium Data<%1>" +msgstr "" + +#: data/datacdrom.cpp:125 data/datacdrom.cpp:190 data/datacdrom.cpp:196 +#: data/datacdrom.cpp:258 data/datacdrom.cpp:263 data/datacdrom.cpp:268 +#, qt-format +msgid "%1 - %2 medium, left space : %3" +msgstr "" + +#: data/datacdrom.cpp:126 data/datacdrom.cpp:191 data/datacdrom.cpp:197 +#: data/datacdrom.cpp:259 data/datacdrom.cpp:264 data/datacdrom.cpp:269 +msgid "Empty medium" +msgstr "" + +#: data/datacdrom.cpp:195 data/datacdrom.cpp:197 data/datacdrom.cpp:262 +#: data/datacdrom.cpp:264 data/datasetting.cpp:30 frame/logger.cpp:178 +#: model/logicmain.cpp:207 process/processbasic.cpp:104 +#: process/processbasic.cpp:134 process/processbasic.cpp:152 +#: process/processburndata.cpp:181 process/processburndata.cpp:182 +#: process/processburndata.cpp:196 process/processburndatadl.cpp:230 +#: process/processburnudfdata.cpp:144 process/processburnudfdata.cpp:145 +#: process/processburnudfdata.cpp:147 process/processcopydisk.cpp:71 +#: process/processcopydisk.cpp:97 process/processcopydiskdl.cpp:192 +#: process/processcreateiso.cpp:93 process/processgetiso.cpp:97 +#: view/busnesssetting.cpp:199 view/kybaboutdialog.cpp:29 +msgid "KylinBurner" +msgstr "" + +#: data/datacdrom.cpp:220 +#, qt-format +msgid "Cannot load mount information.%1" +msgstr "" + +#: data/datacdrom.cpp:232 +#, qt-format +msgid "Medium %1 mounted by UDF" +msgstr "" + +#: data/datacdrom.cpp:323 +msgid "Can erase mediun" +msgstr "" + +#: data/datacdrom.cpp:331 +msgid "empty mediun." +msgstr "" + +#: data/datacdrom.cpp:336 +msgid "incomplete mediun." +msgstr "" + +#: data/datacdrom.cpp:341 +msgid "finalized mediun." +msgstr "" + +#: data/datacdrom.cpp:374 +msgid "Donot load type of finalized capacity." +msgstr "" + +#: data/datacdrom.cpp:524 +msgid "Get invalid speed." +msgstr "" + +#: data/datacdrom.cpp:534 +#, qt-format +msgid "Speed %1 : %2x - rate : %3 Kbps" +msgstr "" + +#: data/datacdrom.cpp:560 data/datafile.cpp:205 frame/auditlog.cpp:238 +#: model/logicburndata.cpp:685 view/burnimage.cpp:253 +msgid "KB" +msgstr "" + +#: data/datacdrom.cpp:563 data/datafile.cpp:208 frame/auditlog.cpp:241 +#: model/logicburndata.cpp:688 view/burnimage.cpp:256 +msgid "MB" +msgstr "" + +#: data/datacdrom.cpp:566 data/datafile.cpp:211 frame/auditlog.cpp:244 +#: model/logicburndata.cpp:691 view/burnimage.cpp:259 +msgid "GB" +msgstr "" + +#: data/datacdrom.cpp:569 data/datafile.cpp:214 frame/auditlog.cpp:247 +#: model/logicburndata.cpp:694 view/burnimage.cpp:262 +msgid "B" +msgstr "" + +#: data/datacdrom.cpp:610 +#, qt-format +msgid "CDROM Data<%1>" +msgstr "" + +#: data/datacdrom.cpp:632 data/datacdrom.cpp:658 +msgid "No need burner." +msgstr "" + +#: data/datacdrom.cpp:947 model/logicburndata.cpp:1664 +#: model/logicburndata.cpp:1716 model/logicburndata.cpp:1756 +#: model/logicburnimage.cpp:226 model/logiccopyimage.cpp:143 +#: model/logiccopyimage.cpp:166 process/processburndata.cpp:345 +#: process/processearse.cpp:88 process/processearse.cpp:218 +#, qt-format +msgid "Device '%1' is used by the '%2' application! Please try again later" +msgstr "" + +#: data/datacdrom.cpp:969 +msgid "No medium" +msgstr "" + +#: data/datacdrom.cpp:1006 +#, qt-format +msgid "Open block device %1 faied.%2" +msgstr "" + +#: data/datacdrom.cpp:1165 +msgid "Unkown." +msgstr "" + +#: data/datacdrom.cpp:1175 +#, qt-format +msgid "Vendor is %1" +msgstr "" + +#: data/datacdrom.cpp:1179 +#, qt-format +msgid "Productor is %1" +msgstr "" + +#: data/datacdrom.cpp:1292 +#, qt-format +msgid "%1 support read mode : CD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1296 +#, qt-format +msgid "%1 support read mode : CD-R" +msgstr "" + +#: data/datacdrom.cpp:1300 +#, qt-format +msgid "%1 support read mode : CD-RW" +msgstr "" + +#: data/datacdrom.cpp:1305 +#, qt-format +msgid "%1 support read mode : DVD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1309 +#, qt-format +msgid "%1 support read mode : DVD-R" +msgstr "" + +#: data/datacdrom.cpp:1313 +#, qt-format +msgid "%1 support read mode : DVD-RAM" +msgstr "" + +#: data/datacdrom.cpp:1318 +#, qt-format +msgid "%1 support read mode : DVD-RW(OVERWRITE)" +msgstr "" + +#: data/datacdrom.cpp:1322 +#, qt-format +msgid "%1 support read mode : DVD-RW(SEQ)" +msgstr "" + +#: data/datacdrom.cpp:1326 +#, qt-format +msgid "%1 support read mode : DVD-R-DL(SEQ)" +msgstr "" + +#: data/datacdrom.cpp:1330 +#, qt-format +msgid "%1 support read mode : DVD-R-DL(JUMP)" +msgstr "" + +#: data/datacdrom.cpp:1334 +#, qt-format +msgid "%1 support read mode : DVD+RW" +msgstr "" + +#: data/datacdrom.cpp:1338 +#, qt-format +msgid "%1 support read mode : DVD+R" +msgstr "" + +#: data/datacdrom.cpp:1342 +#, qt-format +msgid "%1 support read mode : DVD+R-DL" +msgstr "" + +#: data/datacdrom.cpp:1345 +msgid "Removable CDROM." +msgstr "" + +#: data/datacdrom.cpp:1349 +#, qt-format +msgid "Unkown medium type %1, to be supported in KylinBurner." +msgstr "" + +#: data/datacdrom.cpp:1369 +#, qt-format +msgid "%1 supprot burn CD by mode TAO" +msgstr "" + +#: data/datacdrom.cpp:1371 data/datacdrom.cpp:1389 +#, qt-format +msgid "%1 support write mode : CD-R" +msgstr "" + +#: data/datacdrom.cpp:1375 data/datacdrom.cpp:1393 +#, qt-format +msgid "%1 support write mode : CD-RW" +msgstr "" + +#: data/datacdrom.cpp:1398 +#, qt-format +msgid "%1 supprot burn CD by mode SAO" +msgstr "" + +#: data/datacdrom.cpp:1412 +#, qt-format +msgid "%1 sure support read mode : DVD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1427 data/datacdrom.cpp:1450 +#, qt-format +msgid "%1 support write mode : DVD+RW" +msgstr "" + +#: data/datacdrom.cpp:1432 +#, qt-format +msgid "%1 support write mode : DVD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1446 +#, qt-format +msgid "%1 sure support read mode : DVD+R" +msgstr "" + +#: data/datacdrom.cpp:1464 +#, qt-format +msgid "%1 sure support read mode : DVD-R" +msgstr "" + +#: data/datacdrom.cpp:1466 +#, qt-format +msgid "%1 support write mode : DVD-R" +msgstr "" + +#: data/datacdrom.cpp:1468 +#, qt-format +msgid "%1 sure support read mode : DVD-RW" +msgstr "" + +#: data/datacdrom.cpp:1472 +#, qt-format +msgid "%1 support write mode : DVD-RW" +msgstr "" + +#: data/datacdrom.cpp:1478 +#, qt-format +msgid "%1 support read mode : DVD-RW from adjust." +msgstr "" + +#: data/datacdrom.cpp:1516 +msgid "No medium.Because the cdrom's door is open." +msgstr "" + +#: data/datacdrom.cpp:1595 +#, qt-format +msgid "Loaded CD-ROM medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1598 +#, qt-format +msgid "CDROM %1 cannot support to read CD-ROM medium" +msgstr "" + +#: data/datacdrom.cpp:1604 +#, qt-format +msgid "Loaded CD-R medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1607 +#, qt-format +msgid "CDROM %1 cannot support to read CD-R medium" +msgstr "" + +#: data/datacdrom.cpp:1613 +#, qt-format +msgid "Loaded CD-RW medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1616 +#, qt-format +msgid "CDROM %1 cannot support to read CD-RW medium" +msgstr "" + +#: data/datacdrom.cpp:1622 +#, qt-format +msgid "Loaded DVD-ROM medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1625 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-ROM medium" +msgstr "" + +#: data/datacdrom.cpp:1631 +#, qt-format +msgid "Loaded DVD-R medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1634 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-R medium" +msgstr "" + +#: data/datacdrom.cpp:1640 +#, qt-format +msgid "Loaded DVD-RAM medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1643 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RAM medium" +msgstr "" + +#: data/datacdrom.cpp:1649 +#, qt-format +msgid "Loaded DVD-RW(OVERWRITE) medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1652 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RW(OVERWRITE) medium" +msgstr "" + +#: data/datacdrom.cpp:1658 +#, qt-format +msgid "Loaded DVD-RW medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1661 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RW medium" +msgstr "" + +#: data/datacdrom.cpp:1667 +#, qt-format +msgid "Loaded DVD+RW medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1670 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+RW medium" +msgstr "" + +#: data/datacdrom.cpp:1676 +#, qt-format +msgid "Loaded DVD+R medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1679 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+R medium" +msgstr "" + +#: data/datacdrom.cpp:1685 +#, qt-format +msgid "Loaded DVD+R DL medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1688 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+R DL medium" +msgstr "" + +#: data/datacdrom.cpp:1702 +#, qt-format +msgid "Created medium of type %1." +msgstr "" + +#: data/datacdrom.cpp:1706 +msgid "There is no mediun in CDROM" +msgstr "" + +#: data/datadirectory.cpp:112 +msgid "Return to parent level." +msgstr "" + +#: data/datadirectory.cpp:118 model/logicburndata.cpp:582 +#: model/logicburndata.cpp:595 view/burndata.cpp:155 view/burndata.cpp:566 +#: view/burndata.cpp:1138 view/burndata.cpp:1144 view/burndata.cpp:1150 +#: view/burndata.cpp:1158 view/burndata.cpp:1164 +msgid "NewFolder" +msgstr "" + +#: data/datadirectory.cpp:171 data/datadirectory.cpp:561 +#, qt-format +msgid "Duplicate child %1" +msgstr "" + +#: data/datadirectory.cpp:186 data/datadirectory.cpp:569 +#: model/logicburndata.cpp:271 model/logicburndata.cpp:277 +#: model/logicburndata.cpp:283 view/burndata.cpp:564 view/settingdatas.cpp:51 +msgid "Rename" +msgstr "" + +#: data/datadirectory.cpp:186 data/datadirectory.cpp:569 +#: view/inputchange.cpp:72 +msgid "File name duplicate, need to rename:" +msgstr "" + +#: data/datadirectory.cpp:191 data/datadirectory.cpp:199 +#: data/datadirectory.cpp:206 data/datadirectory.cpp:212 +#: data/datadirectory.cpp:575 data/datadirectory.cpp:581 +#: data/datadirectory.cpp:587 model/logicburndata.cpp:1183 +#: view/burndata.cpp:1011 +msgid "Add File(s)" +msgstr "" + +#: data/datadirectory.cpp:191 data/datadirectory.cpp:575 +#: model/logicburndata.cpp:271 view/burndata.cpp:1144 view/burndata.cpp:1150 +msgid "Empty Name" +msgstr "" + +#: data/datadirectory.cpp:192 data/datadirectory.cpp:576 +msgid "Cannot named with empty." +msgstr "" + +#: data/datadirectory.cpp:199 +msgid "Not Hidden Name" +msgstr "" + +#: data/datadirectory.cpp:200 +msgid "Cannot named with None hidden name" +msgstr "" + +#: data/datadirectory.cpp:206 data/datadirectory.cpp:581 +#: model/logicburndata.cpp:283 view/burndata.cpp:1164 +msgid "Duplicate Name" +msgstr "" + +#: data/datadirectory.cpp:207 data/datadirectory.cpp:582 +#, qt-format +msgid "There is data named %1" +msgstr "" + +#: data/datadirectory.cpp:212 data/datadirectory.cpp:587 +#: model/logicburndata.cpp:277 view/burndata.cpp:1158 +msgid "Name Too Long" +msgstr "" + +#: data/datadirectory.cpp:213 data/datadirectory.cpp:588 +msgid "Cannot add named length more than 103 unicode charsets." +msgstr "" + +#: data/datadirectory.cpp:268 data/datadirectory.cpp:653 +#, qt-format +msgid "Add child %1" +msgstr "" + +#: data/datadirectory.cpp:402 +#, qt-format +msgid "Copied dir %1 to %2" +msgstr "" + +#: data/datadirectory.cpp:511 +#, qt-format +msgid "Add size %1, now size is %2" +msgstr "" + +#: data/datadirectory.cpp:520 +#, qt-format +msgid "Sub size %1, now size is %2" +msgstr "" + +#: data/datadirectory.cpp:533 +#, qt-format +msgid "Includes %1 dir(s), after %2" +msgstr "" + +#: data/datadirectory.cpp:533 data/datadirectory.cpp:543 +msgid "add" +msgstr "" + +#: data/datadirectory.cpp:533 data/datadirectory.cpp:543 +msgid "delete" +msgstr "" + +#: data/datadirectory.cpp:543 +#, qt-format +msgid "Includes %1 file(s), after %2" +msgstr "" + +#: data/datadirectory.cpp:668 +#, qt-format +msgid "Move child %1 out" +msgstr "" + +#: data/datafile.cpp:45 +#, qt-format +msgid "FILE %1" +msgstr "" + +#: data/datafile.cpp:47 +#, qt-format +msgid "DIR %1" +msgstr "" + +#: data/datafile.cpp:54 +#, qt-format +msgid "Create time : %1" +msgstr "" + +#: data/datafile.cpp:55 +#, qt-format +msgid "Size : %1" +msgstr "" + +#: data/datafile.cpp:56 +#, qt-format +msgid "Add time : %1" +msgstr "" + +#: data/datafile.cpp:73 +#, qt-format +msgid "Type : %1" +msgstr "" + +#: data/datafile.cpp:74 +#, qt-format +msgid "Source path : %1" +msgstr "" + +#: data/datafile.cpp:80 +#, qt-format +msgid "is %1HIDDEN." +msgstr "" + +#: data/datafile.cpp:81 +#, c-format, qt-format +msgid "is %1SymbolLink." +msgstr "" + +#: data/datafile.cpp:118 +#, qt-format +msgid "Symbol link target : %1" +msgstr "" + +#: data/datafile.cpp:261 +#, qt-format +msgid "Copied file %1 to %2" +msgstr "" + +#: data/datafile.cpp:350 +#, qt-format +msgid "Update destination to %1" +msgstr "" + +#: data/datafile.cpp:372 +#, qt-format +msgid "Filter hidden file. %1" +msgstr "" + +#: data/datafile.cpp:410 +#, qt-format +msgid "Symbo link file %1 has target file %2, do not filter." +msgstr "" + +#: data/datafile.cpp:428 +#, qt-format +msgid "Filter broken symbol link file. %1" +msgstr "" + +#: data/datafile.cpp:464 +#, qt-format +msgid "Repleace symbol link file. %1" +msgstr "" + +#: data/datasetting.cpp:27 +msgid "KylinSoft" +msgstr "" + +#: data/datasetting.cpp:31 +#, qt-format +msgid "Kylinsoft © %1 All rights." +msgstr "" + +#: frame/auditlog.cpp:34 frame/auditlog.cpp:72 frame/auditlog.cpp:118 +msgid "Time" +msgstr "" + +#: frame/auditlog.cpp:35 frame/auditlog.cpp:73 frame/auditlog.cpp:119 +#: process/processbasic.cpp:104 process/processbasic.cpp:134 +#: process/processbasic.cpp:152 +msgid "User" +msgstr "" + +#: frame/auditlog.cpp:36 frame/auditlog.cpp:74 frame/auditlog.cpp:120 +msgid "RecorderType" +msgstr "" + +#: frame/auditlog.cpp:37 frame/auditlog.cpp:75 frame/auditlog.cpp:121 +msgid "DiscProperty" +msgstr "" + +#: frame/auditlog.cpp:38 frame/auditlog.cpp:85 frame/auditlog.cpp:122 +#: view/burndata.cpp:188 view/viewfilterfiles.cpp:319 +msgid "FileName" +msgstr "" + +#: frame/auditlog.cpp:47 +msgid "Current operation donot need file" +msgstr "" + +#: frame/auditlog.cpp:51 frame/auditlog.cpp:94 frame/auditlog.cpp:130 +msgid "Operation" +msgstr "" + +#: frame/auditlog.cpp:52 frame/auditlog.cpp:95 frame/auditlog.cpp:131 +msgid "Result" +msgstr "" + +#: frame/auditlog.cpp:52 frame/auditlog.cpp:95 frame/auditlog.cpp:131 +msgid "success" +msgstr "" + +#: frame/auditlog.cpp:52 frame/auditlog.cpp:95 frame/auditlog.cpp:131 +msgid "fail" +msgstr "" + +#: frame/auditlog.cpp:79 frame/auditlog.cpp:121 +msgid "Donot need disc" +msgstr "" + +#: frame/auditlog.cpp:129 +msgid "ImageFile" +msgstr "" + +#: frame/auditlog.cpp:130 process/processcreateiso.cpp:22 +#: process/processcreateiso.cpp:205 process/processcreateiso.cpp:214 +msgid "Creating ISO" +msgstr "" + +#: frame/logger.cpp:26 +msgid "info" +msgstr "" + +#: frame/logger.cpp:26 +msgid "warn" +msgstr "" + +#: frame/logger.cpp:26 +msgid "error" +msgstr "" + +#: frame/logger.cpp:26 +msgid "debug" +msgstr "" + +#: frame/logger.cpp:62 +#, qt-format +msgid "logger path : %1" +msgstr "" + +#: frame/logger.cpp:63 +#, qt-format +msgid "Will record under %1 level log." +msgstr "" + +#: frame/logger.cpp:148 +msgid "common" +msgstr "" + +#: main.cpp:55 view/aboutdialog.cpp:12 view/burndata.cpp:1011 +#: view/filefilterrules.cpp:46 view/mainwindow.cpp:182 view/modaldialog.cpp:234 +#: view/viewfilterfiles.cpp:192 view/viewfilterfiles.cpp:238 +msgid "Burner" +msgstr "" + +#: main.cpp:129 +msgid "file(s) to open" +msgstr "" + +#: main.cpp:130 +msgid "Running as debug model." +msgstr "" + +#: model/logicburndata.cpp:39 +msgid "BURNDATA" +msgstr "" + +#: model/logicburndata.cpp:199 +msgid "Parent" +msgstr "" + +#: model/logicburndata.cpp:272 +msgid "Cannot rename to empty." +msgstr "" + +#: model/logicburndata.cpp:278 +msgid "New name length must be less than 103 unicode charset." +msgstr "" + +#: model/logicburndata.cpp:284 +#, qt-format +msgid "There is a item named by %1." +msgstr "" + +#: model/logicburndata.cpp:1555 +#, qt-format +msgid "Add new create iso data file. %1" +msgstr "" + +#: model/logicburndata.cpp:1636 model/logicburndata.cpp:1688 +msgid "" +"The available space of the current temporary path is insufficient. Please re-" +"select the temporary path!" +msgstr "" + +#: model/logicburndata.cpp:1769 +msgid "Add new create iso data file." +msgstr "" + +#: model/logicburndata.cpp:1874 +msgid "Loading Disk Data." +msgstr "" + +#: model/logicburndata.cpp:1909 +#, qt-format +msgid "Loading %1..." +msgstr "" + +#: model/logicburndata.cpp:2014 model/logicburndata.cpp:2054 +#, qt-format +msgid "Added %1 to %2" +msgstr "" + +#: model/logicburnimage.cpp:21 +msgid "BURNIMAGE" +msgstr "" + +#: model/logicburnimage.cpp:59 model/logicburnimage.cpp:74 +#: model/logicburnimage.cpp:145 model/logicburnimage.cpp:159 +msgid "No valid burner,need burner which with empty meduim." +msgstr "" + +#: model/logicburnimage.cpp:69 model/logicburnimage.cpp:156 +msgid "This disc is a non-empty disc and needs to be erased!" +msgstr "" + +#: model/logicburnimage.cpp:118 +#, qt-format +msgid "Record new iso file path <%1>" +msgstr "" + +#: model/logicburnimage.cpp:121 +#, qt-format +msgid "Ready to burn : %1" +msgstr "" + +#: model/logicburnimage.cpp:128 +#, qt-format +msgid "Current index for burning is %1" +msgstr "" + +#: model/logicburnimage.cpp:168 +msgid "Too long to burn to current medium." +msgstr "" + +#: model/logicburnimage.cpp:169 +msgid "Current medium has not enough space for burning current iso file." +msgstr "" + +#: model/logicburnimage.cpp:173 +msgid "Ready to burn,please click [BurnImage] button." +msgstr "" + +#: model/logicburnimage.cpp:189 +#, qt-format +msgid "New empty medium burner %1, medium %2" +msgstr "" + +#: model/logicburnimage.cpp:202 +msgid "Remove burner." +msgstr "" + +#: model/logicburnimage.cpp:219 +#, qt-format +msgid "Begin to burn image, burn image<%1> to medium in <%2>" +msgstr "" + +#: model/logiccopyimage.cpp:173 +msgid "This disc is a CD, and copying to DVD is not supported" +msgstr "" + +#: model/logiccopyimage.cpp:177 +msgid "This disc is a DVD, and copying to CD is not supported" +msgstr "" + +#: model/logicmain.cpp:39 +msgid "MAIN" +msgstr "" + +#: model/logicmain.cpp:90 +msgid "" +"Connect MONITOR signal addCDROM to createCDROM, for creating new cdrom " +"information." +msgstr "" + +#: model/logicmain.cpp:210 +#, qt-format +msgid "Creating new cdrom named %1" +msgstr "" + +#: model/logicmain.cpp:382 +#, qt-format +msgid "Get empty medium in CDROM %1" +msgstr "" + +#: model/logicmain.cpp:383 model/logicmain.cpp:394 model/logicmain.cpp:406 +#, qt-format +msgid "BurnerName : %1 DiskName : %2" +msgstr "" + +#: model/logicmain.cpp:393 +#, qt-format +msgid "Get appendable medium in CDROM %1" +msgstr "" + +#: model/logicmain.cpp:405 +#, qt-format +msgid "Get finished medium in CDROM %1" +msgstr "" + +#: model/logicmain.cpp:424 +msgid "Undefined busness." +msgstr "" + +#: model/logicmain.cpp:430 +#, qt-format +msgid "Change to do busness %1" +msgstr "" + +#: model/logicmain.cpp:438 +msgid "Prepare to create iso file." +msgstr "" + +#: model/logicmain.cpp:442 +msgid "Prepare to burn data." +msgstr "" + +#: model/logicmain.cpp:447 +msgid "Prepare to burn UDF Format data." +msgstr "" + +#: model/logicmain.cpp:451 +msgid "Prepare to append burn." +msgstr "" + +#: model/logicmain.cpp:455 +msgid "Prepare to burn image." +msgstr "" + +#: model/logicmain.cpp:459 +msgid "Prepare to copy disk data." +msgstr "" + +#: model/logicmain.cpp:463 +msgid "Prepare to get iso from disk data." +msgstr "" + +#: model/logicmain.cpp:467 +#, qt-format +msgid "Invalid busness [%1]" +msgstr "" + +#: model/logicmain.cpp:583 +#, qt-format +msgid "Remove CDROM %1" +msgstr "" + +#: model/menufactory.cpp:26 view/burnimage.cpp:36 view/copyimage.cpp:300 +#: view/mainwindow.cpp:440 view/mainwindow.cpp:579 view/mainwindow.cpp:584 +#: view/mainwindow.cpp:591 view/mainwindow.cpp:767 +msgid "Setting" +msgstr "" + +#: model/menufactory.cpp:27 view/settingdatas.cpp:78 +msgid "Data Setting" +msgstr "" + +#: model/menufactory.cpp:28 +msgid "File Filter" +msgstr "" + +#: model/menufactory.cpp:29 +msgid "View Filter File(s)" +msgstr "" + +#: model/menufactory.cpp:30 process/processmd5sum.cpp:18 view/diskcheck.cpp:23 +#: view/modaldialog.cpp:140 +msgid "Disk Check" +msgstr "" + +#: model/menufactory.cpp:31 +msgid "Burner Setting" +msgstr "" + +#: model/menufactory.cpp:32 +msgid "Eject" +msgstr "" + +#: model/menufactory.cpp:33 process/processbasic.cpp:61 +#: process/processbasic.cpp:90 process/processearse.cpp:30 +msgid "Earse" +msgstr "" + +#: model/menufactory.cpp:34 view/aboutdialog.cpp:13 +msgid "Version" +msgstr "" + +#: model/menufactory.cpp:35 +msgid "About" +msgstr "" + +#: model/menufactory.cpp:36 +msgid "Help" +msgstr "" + +#: model/menufactory.cpp:37 +msgid "Exit" +msgstr "" + +#: model/menufactory.cpp:44 +msgid "Eject All" +msgstr "" + +#: model/monitorcdrom.cpp:23 +msgid "Monitor" +msgstr "" + +#: model/monitorcdrom.cpp:61 +#, qt-format +msgid "Calling MAIN to add a CDROM, block name is %1" +msgstr "" + +#: model/monitorcdrom.cpp:125 +#, qt-format +msgid "Build netlink socket error. %1" +msgstr "" + +#: model/monitorcdrom.cpp:132 +#, qt-format +msgid "Bind netlink socket error. %1" +msgstr "" + +#: model/monitorcdrom.cpp:154 +#, qt-format +msgid "Open system path %1 failed.%2" +msgstr "" + +#: model/monitorcdrom.cpp:165 +#, qt-format +msgid "Cannot search block from %1" +msgstr "" + +#: model/monitorcdrom.cpp:172 +msgid "There is no block in current system" +msgstr "" + +#: model/monitorcdrom.cpp:182 +#, qt-format +msgid "Update block named %1 into application" +msgstr "" + +#: process/processbasic.cpp:83 process/processcopydisk.cpp:26 +#: process/processcopydiskdl.cpp:112 +msgid "Copy Disk" +msgstr "" + +#: process/processbasic.cpp:87 process/processburndata.cpp:65 +#: process/processburndata.cpp:706 process/processburndatadl.cpp:124 +#: process/processburnudfdata.cpp:351 process/processburnudfdata.cpp:463 +#: process/processearse.cpp:206 +msgid "Burn Data" +msgstr "" + +#: process/processbasic.cpp:87 process/processburndata.cpp:72 +#: process/processburndatadl.cpp:129 +msgid "Append Burn" +msgstr "" + +#: process/processbasic.cpp:88 process/processburnudfdata.cpp:60 +msgid "Burn UDF Format Data" +msgstr "" + +#: process/processbasic.cpp:88 process/processburnudfdata.cpp:66 +msgid "UDF Append Burn" +msgstr "" + +#: process/processbasic.cpp:89 process/processburnimage.cpp:26 +msgid "Burn Image" +msgstr "" + +#: process/processbasic.cpp:97 process/processbasic.cpp:104 +#: process/processbasic.cpp:211 +msgid "User canceled." +msgstr "" + +#: process/processbasic.cpp:104 process/processbasic.cpp:134 +#: process/processbasic.cpp:152 +msgid "Destination" +msgstr "" + +#: process/processbasic.cpp:104 process/processbasic.cpp:134 +#: process/processbasic.cpp:152 +msgid "Burn result" +msgstr "" + +#: process/processbasic.cpp:115 +msgid "Disc is occupied, Burning failed!" +msgstr "" + +#: process/processbasic.cpp:120 process/processbasic.cpp:128 +#, qt-format +msgid "Step.%1 error happened." +msgstr "" + +#: process/processbasic.cpp:134 view/tip_burnresult.cpp:108 view/tips.cpp:103 +msgid " Failed" +msgstr "" + +#: process/processbasic.cpp:146 process/processisoinfo.cpp:11 +msgid "load" +msgstr "" + +#: process/processbasic.cpp:146 process/processbasic.cpp:202 +#: process/processmediainfo.cpp:13 view/busnesssetting.cpp:94 +msgid "Media Info" +msgstr "" + +#: process/processbasic.cpp:152 view/tip_burnresult.cpp:92 view/tips.cpp:86 +msgid " Success" +msgstr "" + +#: process/processbasic.cpp:170 process/processburndata.cpp:445 +#, qt-format +msgid "Argument setted for %1:" +msgstr "" + +#: process/processbasic.cpp:173 process/processburndata.cpp:448 +#, qt-format +msgid "Arg.%1 - %2" +msgstr "" + +#: process/processbasic.cpp:186 +#, qt-format +msgid "starting process %1" +msgstr "" + +#: process/processbasic.cpp:208 process/processburndatadl.cpp:381 +#: process/processcopydiskdl.cpp:334 process/processcopydiskdl.cpp:339 +msgid "Stop process when user canceled." +msgstr "" + +#: process/processburndata.cpp:63 process/processburndatadl.cpp:139 +msgid "PROCESS_BD" +msgstr "" + +#: process/processburndata.cpp:64 process/processburndatadl.cpp:140 +msgid "Burning Data" +msgstr "" + +#: process/processburndata.cpp:70 process/processburndatadl.cpp:143 +msgid "PROCESS_AB" +msgstr "" + +#: process/processburndata.cpp:71 process/processburndatadl.cpp:144 +msgid "Append Burning" +msgstr "" + +#: process/processburndata.cpp:111 process/processburndatadl.cpp:226 +#: process/processburnudfdata.cpp:91 process/processcopydisk.cpp:47 +#: process/processcreateiso.cpp:100 +msgid "KylinOS" +msgstr "" + +#: process/processburndata.cpp:139 process/processburndatadl.cpp:99 +#: process/processcopydiskdl.cpp:81 process/processcopydiskdl.cpp:92 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the cdrecord, " +"growisofs and xorriso is exists or not, and give the right permissions.%2 " +"exiting..." +msgstr "" + +#: process/processburndata.cpp:155 process/processburnudfdata.cpp:116 +#: process/processearse.cpp:62 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the mkisofs is " +"exists or not, and give the right permissions.%2 exiting..." +msgstr "" + +#: process/processburndata.cpp:168 process/processburnudfdata.cpp:129 +#: view/busnesssetting.cpp:40 +msgid "Create ISO" +msgstr "" + +#: process/processburndata.cpp:168 process/processburnudfdata.cpp:129 +#: process/processgetiso.cpp:72 +msgid "Already Exists" +msgstr "" + +#: process/processburndata.cpp:169 process/processburnudfdata.cpp:130 +#: process/processcreateiso.cpp:70 process/processgetiso.cpp:73 +#, qt-format +msgid "There is already have the iso file named %1,replace it or not?" +msgstr "" + +#: process/processburndata.cpp:187 +msgid "Prepare to burn data to CD." +msgstr "" + +#: process/processburndata.cpp:191 +msgid "Prepare to burn data to DVD+R." +msgstr "" + +#: process/processburndata.cpp:197 process/processburndatadl.cpp:228 +msgid "Prepare to burn data to DVD." +msgstr "" + +#: process/processburndata.cpp:243 process/processburndatadl.cpp:259 +msgid "Prepare to start burn data." +msgstr "" + +#: process/processburndata.cpp:407 +#, qt-format +msgid "the command for xorriso is: %1" +msgstr "" + +#: process/processburndata.cpp:494 process/processburnimage.cpp:237 +#: process/processcopydisk.cpp:134 process/processearse.cpp:147 +msgid "Performing OPC" +msgstr "" + +#: process/processburndata.cpp:518 process/processcopydisk.cpp:153 +#, qt-format +msgid "Writing track %1 speed %2 written %3 %4." +msgstr "" + +#: process/processburndata.cpp:524 process/processcopydisk.cpp:159 +#: process/processearse.cpp:150 +msgid "Fixating(Will wait minutes)" +msgstr "" + +#: process/processburndata.cpp:554 process/processburndatadl.cpp:417 +#: process/processburnimage.cpp:322 process/processburnimage.cpp:439 +#: process/processburnudfdata.cpp:311 process/processcopydiskdl.cpp:359 +#: process/processcopydiskdl.cpp:419 +msgid "" +"Input/output error. Disc may be damaged, please clean or replace a disc and " +"try again." +msgstr "" + +#: process/processburndata.cpp:566 +msgid "Not allowed when the disc data exceeds 4GB after burning data." +msgstr "" + +#: process/processburndata.cpp:591 +msgid "" +"An error occurs when the CD is removed during data burning. The image " +"burning process is terminated." +msgstr "" + +#: process/processburndata.cpp:620 +msgid "medium is burning..." +msgstr "" + +#: process/processburndata.cpp:637 +msgid "completed successfully." +msgstr "" + +#: process/processburndata.cpp:662 +#, qt-format +msgid "Building ISO %1" +msgstr "" + +#: process/processburndata.cpp:665 process/processburndatadl.cpp:440 +#: process/processcopydisk.cpp:197 +#, c-format, qt-format +msgid "Burning by speed %1x" +msgstr "" + +#: process/processburndata.cpp:704 +#, qt-format +msgid "Exit code is %1, status : %2, m_oKeep : %3, m_umountError : %4" +msgstr "" + +#: process/processburndata.cpp:782 +#, qt-format +msgid "%1" +msgstr "" + +#: process/processburndata.cpp:783 process/processburndatadl.cpp:355 +#: process/processburndatadl.cpp:356 process/processburnudfdata.cpp:444 +#: process/processburnudfdata.cpp:445 process/processcreateiso.cpp:247 +#: process/processcreateiso.cpp:248 +#, qt-format +msgid "Copied %1 to %2" +msgstr "" + +#: process/processburndata.cpp:791 process/processburndatadl.cpp:367 +#: process/processburndatadl.cpp:455 process/processcopydisk.cpp:214 +#: process/processcopydiskdl.cpp:415 +msgid "closing track" +msgstr "" + +#: process/processburndatadl.cpp:451 process/processcopydisk.cpp:210 +msgid "flushing cache" +msgstr "" + +#: process/processburndatadl.cpp:459 process/processcopydisk.cpp:218 +msgid "closing session" +msgstr "" + +#: process/processburnimage.cpp:24 +msgid "PROCESS_BI" +msgstr "" + +#: process/processburnimage.cpp:25 +msgid "Burning Image" +msgstr "" + +#: process/processburnimage.cpp:36 process/processburnimage.cpp:37 +#, qt-format +msgid "Step.%1: preparing..." +msgstr "" + +#: process/processburnimage.cpp:46 process/processburnimage.cpp:48 +#, qt-format +msgid "Image file %1 already been removed." +msgstr "" + +#: process/processburnimage.cpp:51 process/processburnimage.cpp:52 +msgid "Checked image already exists." +msgstr "" + +#: process/processburnimage.cpp:64 process/processburnimage.cpp:66 +#: process/processburnimage.cpp:91 process/processburnimage.cpp:93 +#: process/processburnimage.cpp:120 process/processburnimage.cpp:122 +#: process/processcreateiso.cpp:51 process/processcreateiso.cpp:53 +#: process/processgetiso.cpp:40 process/processgetiso.cpp:41 +#, qt-format +msgid "Cannot find program <%1>." +msgstr "" + +#: process/processburnimage.cpp:71 process/processburnimage.cpp:73 +#: process/processburnimage.cpp:99 process/processburnimage.cpp:101 +#: process/processburnimage.cpp:127 process/processburnimage.cpp:129 +#: process/processcreateiso.cpp:58 process/processcreateiso.cpp:60 +#: process/processgetiso.cpp:47 process/processgetiso.cpp:48 +#, qt-format +msgid "Program %1 is not executable file." +msgstr "" + +#: process/processburnimage.cpp:148 process/processburnimage.cpp:150 +#, qt-format +msgid "Donot suppot medium type %1 in CDROM." +msgstr "" + +#: process/processburnimage.cpp:153 process/processburnimage.cpp:154 +#: process/processcreateiso.cpp:63 +#, qt-format +msgid "Checking program %1 can be supported." +msgstr "" + +#: process/processburnimage.cpp:163 process/processburnimage.cpp:164 +#, qt-format +msgid "Step.%1: getting..." +msgstr "" + +#: process/processburnimage.cpp:171 process/processburnimage.cpp:172 +msgid "Speed config to 0, means auto." +msgstr "" + +#: process/processburnimage.cpp:206 process/processburnimage.cpp:207 +#, qt-format +msgid "Started process %1" +msgstr "" + +#: process/processburnimage.cpp:230 +#, qt-format +msgid "Start left %1 seconds." +msgstr "" + +#: process/processburnimage.cpp:232 +msgid "Started burn image, cannot stop." +msgstr "" + +#: process/processburnimage.cpp:260 process/processburnimage.cpp:272 +msgid "Fixating...(need waiting a moment.)" +msgstr "" + +#: process/processburnimage.cpp:264 +#, qt-format +msgid "Writing track %1 speed %2 %3 of %4 %5 written." +msgstr "" + +#: process/processburnimage.cpp:278 +#, qt-format +msgid "%1 output : \"%2\"" +msgstr "" + +#: process/processburnimage.cpp:295 +#, c-format, qt-format +msgid "Burning image by speed %1x" +msgstr "" + +#: process/processburnimage.cpp:326 process/processcopydiskdl.cpp:374 +msgid "Burning command aborted." +msgstr "" + +#: process/processburnimage.cpp:331 +msgid "Disc umount failed." +msgstr "" + +#: process/processburnimage.cpp:336 process/processburnimage.cpp:342 +msgid "Disc is busy , umount failed." +msgstr "" + +#: process/processburnimage.cpp:346 +msgid "No such device." +msgstr "" + +#: process/processburnimage.cpp:353 +msgid "" +"An error occurs when the CD is removed during image burning. The image " +"burning process is terminated." +msgstr "" + +#: process/processburnimage.cpp:381 +msgid "Blanking... " +msgstr "" + +#: process/processburnimage.cpp:386 +msgid "Formatting..." +msgstr "" + +#: process/processburnimage.cpp:390 process/processcopydiskdl.cpp:379 +msgid "Preparing for burning image(wait a few minutes)" +msgstr "" + +#: process/processburnimage.cpp:416 process/processcopydiskdl.cpp:410 +#, qt-format +msgid "Burning image by speed %1. %2 of %3 written." +msgstr "" + +#: process/processburnimage.cpp:421 +msgid "Blanking done" +msgstr "" + +#: process/processburnimage.cpp:424 +msgid "Closing track/session" +msgstr "" + +#: process/processburnimage.cpp:427 +msgid "burn successfully" +msgstr "" + +#: process/processburnimage.cpp:446 process/processburnudfdata.cpp:350 +#: process/processcopydisk.cpp:238 +#, qt-format +msgid "Exit code is %1, status : %2, m_oKeep : %3" +msgstr "" + +#: process/processburnimage.cpp:500 process/processburnimage.cpp:501 +msgid "CDROM doesnot exists any more." +msgstr "" + +#: process/processburnimage.cpp:506 process/processburnimage.cpp:507 +msgid "CDROM doesnot a real physical cdrom." +msgstr "" + +#: process/processburnimage.cpp:512 process/processburnimage.cpp:513 +msgid "Medium in CDROM is not empty any more." +msgstr "" + +#: process/processburnudfdata.cpp:58 +msgid "PROCESS_UDF_DATA" +msgstr "" + +#: process/processburnudfdata.cpp:59 +msgid "Burning UDF Format Data" +msgstr "" + +#: process/processburnudfdata.cpp:65 +msgid "Media Not Empty,Not Burn UDF Format" +msgstr "" + +#: process/processburnudfdata.cpp:99 process/processcopydisk.cpp:55 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the cdrecord and " +"growisofs is exists or not, and give the right permissions.%2 exiting..." +msgstr "" + +#: process/processburnudfdata.cpp:151 +msgid "Prepare to burn UDF format data to DVD." +msgstr "" + +#: process/processburnudfdata.cpp:179 +msgid "Prepare to start burn UFD format data." +msgstr "" + +#: process/processburnudfdata.cpp:285 +#, qt-format +msgid "ProcessBurnUDFData %1" +msgstr "" + +#: process/processburnudfdata.cpp:369 +#, qt-format +msgid "m_icountBurn : %3" +msgstr "" + +#: process/processcopydisk.cpp:25 process/processcopydiskdl.cpp:113 +msgid "PROCESS_CD" +msgstr "" + +#: process/processcopydisk.cpp:73 process/processcopydisk.cpp:104 +#: process/processgetiso.cpp:105 +#, qt-format +msgid "Preparer %1" +msgstr "" + +#: process/processcopydisk.cpp:75 process/processcopydisk.cpp:107 +#: process/processgetiso.cpp:109 +#, qt-format +msgid "Publisher %1" +msgstr "" + +#: process/processcopydisk.cpp:77 process/processcopydisk.cpp:110 +#: process/processgetiso.cpp:113 +#, qt-format +msgid "Copyright %1" +msgstr "" + +#: process/processcopydisk.cpp:79 process/processcopydisk.cpp:101 +#: process/processgetiso.cpp:101 +#, qt-format +msgid "Volumn ID %1" +msgstr "" + +#: process/processcopydisk.cpp:100 process/processcopydiskdl.cpp:202 +#: process/processcreateiso.cpp:132 process/processgetiso.cpp:100 +#, qt-format +msgid "Volumn ID : %1" +msgstr "" + +#: process/processcopydisk.cpp:103 process/processcopydiskdl.cpp:203 +#: process/processcreateiso.cpp:135 process/processgetiso.cpp:104 +#, qt-format +msgid "Preparer : %1" +msgstr "" + +#: process/processcopydisk.cpp:106 process/processcopydiskdl.cpp:204 +#: process/processcreateiso.cpp:138 process/processgetiso.cpp:108 +#, qt-format +msgid "Publisher : %1" +msgstr "" + +#: process/processcopydisk.cpp:109 process/processcopydiskdl.cpp:205 +#: process/processcreateiso.cpp:141 process/processgetiso.cpp:112 +#, qt-format +msgid "Copyright : %1" +msgstr "" + +#: process/processcopydiskdl.cpp:199 process/processgetiso.cpp:53 +msgid "Preparing get iso file." +msgstr "" + +#: process/processcopydiskdl.cpp:428 process/processcopydiskdl.cpp:500 +#: process/processgetiso.cpp:26 process/processgetiso.cpp:138 +msgid "Getting ISO" +msgstr "" + +#: process/processcreateiso.cpp:21 +msgid "PROCESS_CI" +msgstr "" + +#: process/processcreateiso.cpp:73 view/execdialog.cpp:51 +#: view/filefilterrules.cpp:162 view/inputchange.cpp:48 view/modaldialog.cpp:58 +#: view/tip_burnresult.cpp:43 view/tipschange.cpp:42 +msgid "OK" +msgstr "" + +#: process/processcreateiso.cpp:74 view/execdialog.cpp:50 +#: view/filefilterrules.cpp:161 view/inputchange.cpp:47 view/modaldialog.cpp:57 +#: view/tipschange.cpp:41 +msgid "Cancel" +msgstr "" + +#: process/processcreateiso.cpp:88 +#, qt-format +msgid "Ready to create %1 file." +msgstr "" + +#: process/processcreateiso.cpp:102 +msgid "Initlized default arguments." +msgstr "" + +#: process/processcreateiso.cpp:105 +#, qt-format +msgid "%1 data size more than 2 GB, need allow-limited-size extension" +msgstr "" + +#: process/processcreateiso.cpp:106 process/processcreateiso.cpp:110 +#: process/processcreateiso.cpp:114 process/processcreateiso.cpp:117 +#: view/mainwindow.cpp:421 view/mainwindow.cpp:477 view/mainwindow.cpp:740 +#: view/mainwindow.cpp:744 +msgid "CreateISO" +msgstr "" + +#: process/processcreateiso.cpp:109 +#, qt-format +msgid "%1 check need allow-limited-size extension or not" +msgstr "" + +#: process/processcreateiso.cpp:113 +#, qt-format +msgid "%1 data size more than 4 GB, need UDF extension" +msgstr "" + +#: process/processcreateiso.cpp:117 +#, qt-format +msgid "%1 check need UDF extension or not" +msgstr "" + +#: process/processcreateiso.cpp:131 +#, qt-format +msgid "Setted volumn ID : %1" +msgstr "" + +#: process/processcreateiso.cpp:134 +#, qt-format +msgid "Setted preparer : %1" +msgstr "" + +#: process/processcreateiso.cpp:137 +#, qt-format +msgid "Setted publisher : %1" +msgstr "" + +#: process/processcreateiso.cpp:140 +#, qt-format +msgid "Setted copyright : %1" +msgstr "" + +#: process/processcreateiso.cpp:145 +msgid "Invalid temporary storage path." +msgstr "" + +#: process/processcreateiso.cpp:150 +msgid "Temporary storage has not enough space for create iso." +msgstr "" + +#: process/processcreateiso.cpp:153 +msgid "Check storage space over." +msgstr "" + +#: process/processcreateiso.cpp:158 +#, qt-format +msgid "Need to copy %1 file(s)" +msgstr "" + +#: process/processcreateiso.cpp:186 +msgid "Started Create ISO" +msgstr "" + +#: process/processcreateiso.cpp:187 +msgid "Create ISO started." +msgstr "" + +#: process/processcreateiso.cpp:213 process/processgetiso.cpp:166 +#, qt-format +msgid "Exit code is %1, status : %2" +msgstr "" + +#: process/processcreateiso.cpp:217 +msgid "Created ISO" +msgstr "" + +#: process/processearse.cpp:27 +msgid "PROCESS_EARSE" +msgstr "" + +#: process/processearse.cpp:29 +msgid "Earsing" +msgstr "" + +#: process/processearse.cpp:114 +msgid "Umount CD, and prepare to blank CD." +msgstr "" + +#: process/processearse.cpp:192 process/processearse.cpp:202 +msgid "earsing...." +msgstr "" + +#: process/processearse.cpp:237 +msgid "Blanking..." +msgstr "" + +#: process/processgetiso.cpp:23 +msgid "PROCESS_GI" +msgstr "" + +#: process/processgetiso.cpp:24 process/processgetiso.cpp:72 +msgid "Get ISO" +msgstr "" + +#: process/processgetiso.cpp:63 +#, qt-format +msgid "Medium in CDROM %1 donot been mounted." +msgstr "" + +#: process/processgetiso.cpp:86 +#, qt-format +msgid "File %1 exists." +msgstr "" + +#: process/processgetiso.cpp:129 +msgid "Bad sector detected, please clean or replace a disc and try again." +msgstr "" + +#: process/processisoinfo.cpp:19 +msgid "ERROR:ISOINFO-PREPARE" +msgstr "" + +#: process/processmd5sum.cpp:19 +msgid "PROCESS_DC" +msgstr "" + +#: process/processmd5sum.cpp:20 +msgid "Checking disk" +msgstr "" + +#: process/processmd5sum.cpp:62 process/processmd5sum.cpp:90 +#: process/processmd5sum.cpp:108 +msgid "Checking..." +msgstr "" + +#: process/processmd5sum.cpp:93 +msgid "Fail" +msgstr "" + +#: process/processmd5sum.cpp:93 +msgid "FAILED" +msgstr "" + +#: process/processmd5sum.cpp:103 +#, qt-format +msgid "Error happened when checking disk,content: %1" +msgstr "" + +#: status-fix/discmonitor.cpp:112 +msgid "CD Drive" +msgstr "" + +#: status-fix/discmonitor.cpp:112 +msgid "CD/DVD Drive" +msgstr "" + +#: view/aboutdialog.cpp:16 view/kybaboutdialog.cpp:32 +#: view/tip_burnresult.cpp:52 view/windowtitle.cpp:25 +msgid "Close" +msgstr "" + +#: view/burndata.cpp:83 view/mainwindow.cpp:456 view/mainwindow.cpp:580 +#: view/mainwindow.cpp:783 view/mainwindow.cpp:1009 +msgid "BurnData" +msgstr "" + +#: view/burndata.cpp:96 +msgid "Go Back" +msgstr "" + +#: view/burndata.cpp:105 +msgid "Go Forward" +msgstr "" + +#: view/burndata.cpp:126 +msgid "Add" +msgstr "" + +#: view/burndata.cpp:139 view/burndata.cpp:565 view/burndata.cpp:1030 +#: view/burndata.cpp:1045 view/tipschange.cpp:87 view/tipschange.cpp:93 +#: view/tipschange.cpp:99 +msgid "Delete" +msgstr "" + +#: view/burndata.cpp:147 view/burndata.cpp:1067 view/burndata.cpp:1099 +msgid "Clean" +msgstr "" + +#: view/burndata.cpp:164 +msgid "Welcome to use KylinBurner." +msgstr "" + +#: view/burndata.cpp:177 +msgid "ProjectSize:" +msgstr "" + +#: view/burndata.cpp:178 +msgid "0.00 MB" +msgstr "" + +#: view/burndata.cpp:189 +msgid "FileType" +msgstr "" + +#: view/burndata.cpp:190 +msgid "FileSize" +msgstr "" + +#: view/burndata.cpp:191 view/viewfilterfiles.cpp:320 +msgid "FilePath" +msgstr "" + +#: view/burndata.cpp:192 view/viewfilterfiles.cpp:321 +msgid "FileTime" +msgstr "" + +#: view/burndata.cpp:363 +#, qt-format +msgid "Selected %1 files of total %2 files" +msgstr "" + +#: view/burndata.cpp:366 +#, qt-format +msgid "Selected %1 file of total %2 file(s)" +msgstr "" + +#: view/burndata.cpp:562 +msgid "Open" +msgstr "" + +#: view/burndata.cpp:563 +msgid "OpenInLocal" +msgstr "" + +#: view/burndata.cpp:567 +msgid "Properties" +msgstr "" + +#: view/burndata.cpp:677 view/burndata.cpp:751 +msgid "All files" +msgstr "" + +#: view/burndata.cpp:859 +msgid "" +"Click the \"+\" icon\n" +"Or drag the files here to add the files" +msgstr "" + +#: view/burndata.cpp:1030 view/burndata.cpp:1045 +msgid "Delete file(s) selected?" +msgstr "" + +#: view/burndata.cpp:1067 view/burndata.cpp:1099 +msgid "Clean all files(s)?" +msgstr "" + +#: view/burndata.cpp:1138 +msgid "Please input new folder name" +msgstr "" + +#: view/burndata.cpp:1145 +msgid "New Folder cannot be named with empty." +msgstr "" + +#: view/burndata.cpp:1151 +msgid "New Folder cannot be named with /." +msgstr "" + +#: view/burndata.cpp:1159 +msgid "Need less than 103 unicode charset for naming new folder." +msgstr "" + +#: view/burndata.cpp:1165 +#, qt-format +msgid "There is a item named by %1" +msgstr "" + +#: view/burnimage.cpp:30 view/mainwindow.cpp:412 view/mainwindow.cpp:1010 +msgid "BurnImage" +msgstr "" + +#: view/burnimage.cpp:35 view/busnesssetting.cpp:329 +#: view/busnesssetting.cpp:405 view/diskcheck.cpp:26 view/mainwindow.cpp:476 +msgid "Browse" +msgstr "" + +#: view/burnimage.cpp:37 +msgid "Please select ISO file which will to be burned" +msgstr "" + +#: view/burnimage.cpp:38 +msgid "Please select burner which will burned to" +msgstr "" + +#: view/busnesssetting.cpp:31 +msgid "Copyright" +msgstr "" + +#: view/busnesssetting.cpp:33 +msgid "Preparer" +msgstr "" + +#: view/busnesssetting.cpp:34 +msgid "Publisher" +msgstr "" + +#: view/busnesssetting.cpp:35 view/busnesssetting.cpp:100 +msgid "VoumnID" +msgstr "" + +#: view/busnesssetting.cpp:36 +msgid "Temporary File" +msgstr "" + +#: view/busnesssetting.cpp:37 +msgid "Burn Speed" +msgstr "" + +#: view/busnesssetting.cpp:38 +msgid "File System" +msgstr "" + +#: view/busnesssetting.cpp:39 +msgid "Close session" +msgstr "" + +#: view/busnesssetting.cpp:41 +msgid "Data Verfication" +msgstr "" + +#: view/busnesssetting.cpp:95 +msgid "Medium Name" +msgstr "" + +#: view/busnesssetting.cpp:99 +msgid "ISO info" +msgstr "" + +#: view/busnesssetting.cpp:208 view/busnesssetting.cpp:209 +msgid "BurnSetting" +msgstr "" + +#: view/busnesssetting.cpp:223 view/busnesssetting.cpp:224 +msgid "ISOSetting" +msgstr "" + +#: view/busnesssetting.cpp:341 +msgid "Invalid path" +msgstr "" + +#: view/busnesssetting.cpp:342 +#, qt-format +msgid "Cannot choose a read only path %1 to temporary path" +msgstr "" + +#: view/busnesssetting.cpp:415 +msgid "Please select a path" +msgstr "" + +#: view/busnesssetting.cpp:456 +msgid "Name is longer than 32 characters" +msgstr "" + +#: view/busnesssetting.cpp:474 +msgid "Content is longer than 37 characters" +msgstr "" + +#: view/copyimage.cpp:31 view/mainwindow.cpp:1011 +msgid "CopyDisk" +msgstr "" + +#: view/copyimage.cpp:33 view/copyimage.cpp:305 +msgid "SelectPath" +msgstr "" + +#: view/copyimage.cpp:34 +msgid "Please select disk which to be copied" +msgstr "" + +#: view/copyimage.cpp:35 +msgid "Please select the image/disk you want to write" +msgstr "" + +#: view/copyimage.cpp:252 +msgid "Browse ISO Path" +msgstr "" + +#: view/copyimage.cpp:252 +#, qt-format +msgid "Path %1 owner have no write permission." +msgstr "" + +#: view/diskcheck.cpp:24 +msgid "Select a disc" +msgstr "" + +#: view/diskcheck.cpp:25 +msgid "Check the disc using the MD5 file" +msgstr "" + +#: view/diskcheck.cpp:79 view/diskcheck.cpp:105 +msgid "Non md5sum.txt in the current Disk;Verification is not supported" +msgstr "" + +#: view/filefilterrules.cpp:51 +msgid "FileFilterRules" +msgstr "" + +#: view/filefilterrules.cpp:53 +msgid "Filter hidden file(s)." +msgstr "" + +#: view/filefilterrules.cpp:54 +msgid "Filter broken symbol links." +msgstr "" + +#: view/filefilterrules.cpp:55 +msgid "Repleace symbol link file(s)." +msgstr "" + +#: view/kybaboutdialog.cpp:30 +msgid "Version:" +msgstr "" + +# qt-format +#: view/kybaboutdialog.cpp:31 +#, qt-format +msgid "Service & Support: %1" +msgstr "" + +#: view/mainwindow.cpp:104 +msgid "MainWindow" +msgstr "" + +#: view/mainwindow.cpp:188 +msgid "BurnerName" +msgstr "" + +#: view/mainwindow.cpp:189 +msgid "DiskName" +msgstr "" + +#: view/mainwindow.cpp:190 +msgid "Loaded over" +msgstr "" + +#: view/mainwindow.cpp:355 +msgid "kylin-burner process already exists" +msgstr "" + +#: view/mainwindow.cpp:359 +msgid "New kylin-burner process exit" +msgstr "" + +#: view/mainwindow.cpp:446 view/mainwindow.cpp:570 view/mainwindow.cpp:773 +msgid "BurnUDFData" +msgstr "" + +#: view/mainwindow.cpp:460 view/mainwindow.cpp:585 view/mainwindow.cpp:787 +msgid "AppendBurn" +msgstr "" + +#: view/mainwindow.cpp:464 view/mainwindow.cpp:592 view/mainwindow.cpp:791 +msgid "DonotBurn" +msgstr "" + +#: view/mainwindow.cpp:471 view/mainwindow.cpp:600 view/mainwindow.cpp:798 +msgid "cdrom->getBurnFormat() == [NULL]" +msgstr "" + +#: view/mainwindow.cpp:496 +msgid "cdrom find beyond bound " +msgstr "" + +#: view/mainwindow.cpp:625 +#, qt-format +msgid "Delete item %1 of total %2" +msgstr "" + +#: view/mainwindow.cpp:635 +msgid "Remove CDROM from burn data." +msgstr "" + +#: view/settingdatas.cpp:16 +msgid "Add Data" +msgstr "" + +#: view/settingdatas.cpp:18 view/settingdatas.cpp:29 view/settingdatas.cpp:40 +msgid "All" +msgstr "" + +#: view/settingdatas.cpp:20 view/settingdatas.cpp:31 view/settingdatas.cpp:42 +msgid "Current" +msgstr "" + +#: view/settingdatas.cpp:27 +msgid "Delete Data" +msgstr "" + +#: view/settingdatas.cpp:38 +msgid "Clean Data" +msgstr "" + +#: view/settingdatas.cpp:50 +msgid "Duplicate Data" +msgstr "" + +#: view/settingdatas.cpp:52 +msgid "Add Suffix" +msgstr "" + +#: view/settingdatas.cpp:53 +msgid "Replace" +msgstr "" + +#: view/tips.cpp:33 view/tips.cpp:43 view/tips.cpp:68 +msgid "Donot show agian." +msgstr "" + +#: view/viewfilterfiles.cpp:220 +msgid "ViewFilterFile(s)" +msgstr "" + +#: view/viewfilterfiles.cpp:223 +msgid "FilterOptionSetting" +msgstr "" + +#: view/viewfilterfiles.cpp:224 +msgid "RecoverAll" +msgstr "" + +#: view/windowtitle.cpp:27 +msgid "Min" +msgstr "" + +#: view/windowtitle.cpp:29 view/windowtitle.cpp:130 +msgid "Max" +msgstr "" + +#: view/windowtitle.cpp:31 +msgid "Options" +msgstr "" + +#: view/windowtitle.cpp:124 +msgid "Restore" +msgstr "" + +#, qt-format +#~ msgid "SIZE IS %1 | %2" +#~ msgstr "大小为%1 | %2" + +#, qt-format +#~ msgid "Capacity: %1 - used(%2) - free(%3)" +#~ msgstr "容量:%1 - 已使用(%2)- 剩余(%3)" + +#~ msgid "No mount point for empty type medium." +#~ msgstr "空白光盘不存在挂载点" + +#, qt-format +#~ msgid "Mouted at %1, Medium name is %2" +#~ msgstr "挂载在%1,光盘名称为%2" + +#, qt-format +#~ msgid "ProcessBurnUDFData::slotsOutput output==[%1]" +#~ msgstr "growisofs输出:%1" + +#, qt-format +#~ msgid "ProcessBurnUDFData::slotsError output==[%1]" +#~ msgstr "growisofs错误:%1" + +#~ msgid "writing lead-out" +#~ msgstr "关闭导出" + +#~ msgid "reloading tray" +#~ msgstr "关闭轨道" + +#~ msgid "The minimized main screen is displayed" +#~ msgstr "将已打开刻录进程的最小化主窗口MainWindow重新显示" + +#~ msgid "The MainWindow is set to the topmost window" +#~ msgstr "将已打开刻录进程的主窗口MainWindow设置为顶层窗口" + +#~ msgid "The MainWindow is topmost windows" +#~ msgstr "已打开刻录进程的主窗口MainWindow已经是顶层窗口" + +#, fuzzy, qt-format +#~ msgid "Cannot choose a read only path %1 to storage path" +#~ msgstr "无法选在只读路径" + +#~ msgid "Cannot find help document." +#~ msgstr "无法找到帮助文档" + +#, qt-format +#~ msgid "Change CDROM, block name is %1" +#~ msgstr "光驱变更,块设备名称为%1" + +#, qt-format +#~ msgid "Change CDROM %1" +#~ msgstr "光驱%1发生变更" + +#, qt-format +#~ msgid "There is no medium in CDROM %1" +#~ msgstr "光驱%1内不存在光盘" + +#, fuzzy +#~ msgid "DVD+R DL medium is burning..." +#~ msgstr "光盘正在刻录..." + +#~ msgid "Burner has started..." +#~ msgstr "刻录已启动" + +#~ msgid "Starting" +#~ msgstr "启动中..." + +#~ msgid "Burner has been started,do not start again." +#~ msgstr "刻录已经启动,不可再次启动" + +#~ msgid "Recovery all" +#~ msgstr "恢复所有" + +#~ msgid "Recovery selected" +#~ msgstr "恢复选中" + +#~ msgid "Geting Menu is NULL , click menu is null" +#~ msgstr "得到了一个空的Menu,点击menu会弹不出菜单栏" + +#~ msgid "User canceled when add file(s)" +#~ msgstr "文件添加过程中,用户取消" + +#, fuzzy +#~ msgid "Burn_UDF_AB" +#~ msgstr "刻录UDF" + +#~ msgid "root" +#~ msgstr "根节点" + +#~ msgid "Please press button [Add] or drag file(s) to here for adding file(s)" +#~ msgstr "点击“添加”按钮或者将文件拖放进此区域,来添加文件。" + +#~ msgid "Rules" +#~ msgstr "规则" + +#~ msgid "Delete(&D)" +#~ msgstr "删除(&D)" + +#~ msgid "Clean(&C)" +#~ msgstr "清空(&C)" + +#~ msgid "NewFolder(&N)" +#~ msgstr "新建文件夹(&N)" + +#~ msgid "BurnerSetting" +#~ msgstr "刻录设置" + +#~ msgid "Effictive range." +#~ msgstr "生效范围" + +#~ msgid "Whole" +#~ msgstr "全部" + +#~ msgid "Current node" +#~ msgstr "当前节点" + +#~ msgid "CopyImage" +#~ msgstr "拷贝镜像" + +#~ msgid "Please browse a valid path or empty disk:" +#~ msgstr "请浏览一个有效路径或选择一个空白光盘:" + +#~ msgid "Get wrong response when load medium information." +#~ msgstr "加载光盘信息时反馈错误响应" + +#~ msgid "CDROM %1 already loaded." +#~ msgstr "光驱%1已经被加载。" + +#~ msgid "Calling MAIN to add new inserted CDROM, block name is /dev/%1" +#~ msgstr "调用主业务逻辑来添加新插入的光驱,块设备名称为:/dev/%1" + +#~ msgid "Calling MAIN to change old CDROM, block name is /dev/%1" +#~ msgstr "调用主业务逻辑变更已存在的光驱,块设备名称为:/dev/%1" + +#~ msgid "Calling MAIN to remove old CDROM, block name is /dev/%1" +#~ msgstr "调用主业务逻辑移除已存在的光驱,块设备名称为:/dev/%1" + +#~ msgid "%1 - %2 (%3) medium, left space : %4" +#~ msgstr "%1 - %2 (%3) 光盘,剩余空间 %4" + +#~ msgid "Cannot added %1 to %2" +#~ msgstr "无法将%1添加至%2" + +#~ msgid "Cannot add %1 to %2" +#~ msgstr "无法将%1添加至%2" + +#~ msgid "Process started" +#~ msgstr "进程开始" + +#~ msgid "Arg.%1 : %2" +#~ msgstr "参数%1 - %2" + +#~ msgid "Clean all item(s) under %1?" +#~ msgstr "是否清空%1下所有项目?" + +#~ msgid "%1 error : %2" +#~ msgstr "%1 错误:%2" + +#~ msgid "" +#~ "Write error. Disc may be damaged, please clean or replace a disc and try " +#~ "again." +#~ msgstr "写错误。光盘可能损坏,请清洁或更换一个光盘再尝试。" + +#~ msgid "Menu" +#~ msgstr "选项" + +#~ msgid "&Add" +#~ msgstr "添加(&A)" + +#~ msgid "&Delete" +#~ msgstr "删除(&D)" + +#~ msgid "&Clean" +#~ msgstr "清空(&C)" + +#~ msgid "&NewFolder" +#~ msgstr "新建文件夹(&N)" + +#~ msgid "TB" +#~ msgstr "TB" + +#~ msgid "PB" +#~ msgstr "PB" + +#~ msgid "Loaded iso path <%1>" +#~ msgstr "ISO文件路径<%1>已加载" + +#~ msgid "Add new name for %1" +#~ msgstr "为%1增加新名称" + +#~ msgid "version:" +#~ msgstr "版本信息" + +#~ msgid "empty DVD+RW mediun." +#~ msgstr "空白的DVD+RW光盘" + +#~ msgid "After ISO:" +#~ msgstr "创建镜像后:" + +#~ msgid "After burned:" +#~ msgstr "刻录后:" + +#~ msgid "Open belong URL" +#~ msgstr "本地打开" + +#~ msgid "Version: %1" +#~ msgstr "版本:%1" + +#~ msgid "" +#~ "Burner is an application developed by Kylinsoft, simple interface " +#~ "beautiful, interactive friendly daily burn software. It includes the " +#~ "creation of mirror image, data burning, data additional burning, mirror " +#~ "burning, image extraction and CD copy and other users daily required " +#~ "scenes, and additional support for the selection of physical optical " +#~ "drive, pop-up and other operations, to avoid the trouble of the user " +#~ "operation of physical entities." +#~ msgstr "" +#~ "刻录为一款由麒麟软件研发的,界面简洁美观,交互性友好的日常刻录软件。其包含" +#~ "创建镜像、数据刻录、数据追加刻录、镜像刻录、镜像提取及光盘复制等用户日常所" +#~ "需场景,同时额外支持对物理光驱的选择、弹出等操作,避免了用户操作物理实体的" +#~ "麻烦。" + +#~ msgid "DoDiskCheck" +#~ msgstr "执行光盘校验" + +#~ msgid "medium load/pop-up" +#~ msgstr "光盘加载/弹出" + +#~ msgid "Set burn speed %1" +#~ msgstr "设置刻录速度为%1" + +#~ msgid "Error when burn image. %1" +#~ msgstr "刻录镜像过程中产生错误。%1" + +#~ msgid "%1 finished : exit code : %2 status : %3" +#~ msgstr "%1完成,退出码:%2,状态:%3" + +#~ msgid "Minimize" +#~ msgstr "最小化" + +#~ msgid "Maximize" +#~ msgstr "最大化" + +#~ msgid "Do SCSI CDB [%1] failed.%2" +#~ msgstr "执行SCSI命令[%1]失败。%2" + +#~ msgid "CDROM have no medium." +#~ msgstr "光驱内没有光盘。" + +#~ msgid "To be supported in KylinBurner %1" +#~ msgstr "刻录有待支持%1" + +#~ msgid "No iso file." +#~ msgstr "没有ISO文件" diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/po/vi.po kylin-burner-3.2.0.1kylin1k32.01/src/po/vi.po --- kylin-burner-3.2.0.1kylin1k32.01/src/po/vi.po 1970-01-01 08:00:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/po/vi.po 2025-03-11 20:49:32.000000000 +0800 @@ -0,0 +1,2348 @@ +# Chinese translations for 3.2.0 package. +# Copyright (C) 2021 THE 3.2.0'S COPYRIGHT HOLDER +# This file is distributed under the same license as the 3.2.0 package. +# <wangye@kylinos.cn>, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: 3.2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-14 15:20+0800\n" +"PO-Revision-Date: 2021-04-23 09:16+0800\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: data/datacdrom.cpp:51 data/datacdrom.cpp:52 data/datacdrom.cpp:53 +#, qt-format +msgid "%1 B" +msgstr "" + +#: data/datacdrom.cpp:56 +#, qt-format +msgid "Medium Data<%1>" +msgstr "" + +#: data/datacdrom.cpp:125 data/datacdrom.cpp:190 data/datacdrom.cpp:196 +#: data/datacdrom.cpp:258 data/datacdrom.cpp:263 data/datacdrom.cpp:268 +#, qt-format +msgid "%1 - %2 medium, left space : %3" +msgstr "" + +#: data/datacdrom.cpp:126 data/datacdrom.cpp:191 data/datacdrom.cpp:197 +#: data/datacdrom.cpp:259 data/datacdrom.cpp:264 data/datacdrom.cpp:269 +msgid "Empty medium" +msgstr "" + +#: data/datacdrom.cpp:195 data/datacdrom.cpp:197 data/datacdrom.cpp:262 +#: data/datacdrom.cpp:264 data/datasetting.cpp:30 frame/logger.cpp:178 +#: model/logicmain.cpp:207 process/processbasic.cpp:104 +#: process/processbasic.cpp:134 process/processbasic.cpp:152 +#: process/processburndata.cpp:181 process/processburndata.cpp:182 +#: process/processburndata.cpp:196 process/processburndatadl.cpp:230 +#: process/processburnudfdata.cpp:144 process/processburnudfdata.cpp:145 +#: process/processburnudfdata.cpp:147 process/processcopydisk.cpp:71 +#: process/processcopydisk.cpp:97 process/processcopydiskdl.cpp:192 +#: process/processcreateiso.cpp:93 process/processgetiso.cpp:97 +#: view/busnesssetting.cpp:199 view/kybaboutdialog.cpp:29 +msgid "KylinBurner" +msgstr "" + +#: data/datacdrom.cpp:220 +#, qt-format +msgid "Cannot load mount information.%1" +msgstr "" + +#: data/datacdrom.cpp:232 +#, qt-format +msgid "Medium %1 mounted by UDF" +msgstr "" + +#: data/datacdrom.cpp:323 +msgid "Can erase mediun" +msgstr "" + +#: data/datacdrom.cpp:331 +msgid "empty mediun." +msgstr "" + +#: data/datacdrom.cpp:336 +msgid "incomplete mediun." +msgstr "" + +#: data/datacdrom.cpp:341 +msgid "finalized mediun." +msgstr "" + +#: data/datacdrom.cpp:374 +msgid "Donot load type of finalized capacity." +msgstr "" + +#: data/datacdrom.cpp:524 +msgid "Get invalid speed." +msgstr "" + +#: data/datacdrom.cpp:534 +#, qt-format +msgid "Speed %1 : %2x - rate : %3 Kbps" +msgstr "" + +#: data/datacdrom.cpp:560 data/datafile.cpp:205 frame/auditlog.cpp:238 +#: model/logicburndata.cpp:685 view/burnimage.cpp:253 +msgid "KB" +msgstr "" + +#: data/datacdrom.cpp:563 data/datafile.cpp:208 frame/auditlog.cpp:241 +#: model/logicburndata.cpp:688 view/burnimage.cpp:256 +msgid "MB" +msgstr "" + +#: data/datacdrom.cpp:566 data/datafile.cpp:211 frame/auditlog.cpp:244 +#: model/logicburndata.cpp:691 view/burnimage.cpp:259 +msgid "GB" +msgstr "" + +#: data/datacdrom.cpp:569 data/datafile.cpp:214 frame/auditlog.cpp:247 +#: model/logicburndata.cpp:694 view/burnimage.cpp:262 +msgid "B" +msgstr "" + +#: data/datacdrom.cpp:610 +#, qt-format +msgid "CDROM Data<%1>" +msgstr "" + +#: data/datacdrom.cpp:632 data/datacdrom.cpp:658 +msgid "No need burner." +msgstr "" + +#: data/datacdrom.cpp:947 model/logicburndata.cpp:1664 +#: model/logicburndata.cpp:1716 model/logicburndata.cpp:1756 +#: model/logicburnimage.cpp:226 model/logiccopyimage.cpp:143 +#: model/logiccopyimage.cpp:166 process/processburndata.cpp:345 +#: process/processearse.cpp:88 process/processearse.cpp:218 +#, qt-format +msgid "Device '%1' is used by the '%2' application! Please try again later" +msgstr "" + +#: data/datacdrom.cpp:969 +msgid "No medium" +msgstr "" + +#: data/datacdrom.cpp:1006 +#, qt-format +msgid "Open block device %1 faied.%2" +msgstr "" + +#: data/datacdrom.cpp:1165 +msgid "Unkown." +msgstr "" + +#: data/datacdrom.cpp:1175 +#, qt-format +msgid "Vendor is %1" +msgstr "" + +#: data/datacdrom.cpp:1179 +#, qt-format +msgid "Productor is %1" +msgstr "" + +#: data/datacdrom.cpp:1292 +#, qt-format +msgid "%1 support read mode : CD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1296 +#, qt-format +msgid "%1 support read mode : CD-R" +msgstr "" + +#: data/datacdrom.cpp:1300 +#, qt-format +msgid "%1 support read mode : CD-RW" +msgstr "" + +#: data/datacdrom.cpp:1305 +#, qt-format +msgid "%1 support read mode : DVD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1309 +#, qt-format +msgid "%1 support read mode : DVD-R" +msgstr "" + +#: data/datacdrom.cpp:1313 +#, qt-format +msgid "%1 support read mode : DVD-RAM" +msgstr "" + +#: data/datacdrom.cpp:1318 +#, qt-format +msgid "%1 support read mode : DVD-RW(OVERWRITE)" +msgstr "" + +#: data/datacdrom.cpp:1322 +#, qt-format +msgid "%1 support read mode : DVD-RW(SEQ)" +msgstr "" + +#: data/datacdrom.cpp:1326 +#, qt-format +msgid "%1 support read mode : DVD-R-DL(SEQ)" +msgstr "" + +#: data/datacdrom.cpp:1330 +#, qt-format +msgid "%1 support read mode : DVD-R-DL(JUMP)" +msgstr "" + +#: data/datacdrom.cpp:1334 +#, qt-format +msgid "%1 support read mode : DVD+RW" +msgstr "" + +#: data/datacdrom.cpp:1338 +#, qt-format +msgid "%1 support read mode : DVD+R" +msgstr "" + +#: data/datacdrom.cpp:1342 +#, qt-format +msgid "%1 support read mode : DVD+R-DL" +msgstr "" + +#: data/datacdrom.cpp:1345 +msgid "Removable CDROM." +msgstr "" + +#: data/datacdrom.cpp:1349 +#, qt-format +msgid "Unkown medium type %1, to be supported in KylinBurner." +msgstr "" + +#: data/datacdrom.cpp:1369 +#, qt-format +msgid "%1 supprot burn CD by mode TAO" +msgstr "" + +#: data/datacdrom.cpp:1371 data/datacdrom.cpp:1389 +#, qt-format +msgid "%1 support write mode : CD-R" +msgstr "" + +#: data/datacdrom.cpp:1375 data/datacdrom.cpp:1393 +#, qt-format +msgid "%1 support write mode : CD-RW" +msgstr "" + +#: data/datacdrom.cpp:1398 +#, qt-format +msgid "%1 supprot burn CD by mode SAO" +msgstr "" + +#: data/datacdrom.cpp:1412 +#, qt-format +msgid "%1 sure support read mode : DVD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1427 data/datacdrom.cpp:1450 +#, qt-format +msgid "%1 support write mode : DVD+RW" +msgstr "" + +#: data/datacdrom.cpp:1432 +#, qt-format +msgid "%1 support write mode : DVD-ROM" +msgstr "" + +#: data/datacdrom.cpp:1446 +#, qt-format +msgid "%1 sure support read mode : DVD+R" +msgstr "" + +#: data/datacdrom.cpp:1464 +#, qt-format +msgid "%1 sure support read mode : DVD-R" +msgstr "" + +#: data/datacdrom.cpp:1466 +#, qt-format +msgid "%1 support write mode : DVD-R" +msgstr "" + +#: data/datacdrom.cpp:1468 +#, qt-format +msgid "%1 sure support read mode : DVD-RW" +msgstr "" + +#: data/datacdrom.cpp:1472 +#, qt-format +msgid "%1 support write mode : DVD-RW" +msgstr "" + +#: data/datacdrom.cpp:1478 +#, qt-format +msgid "%1 support read mode : DVD-RW from adjust." +msgstr "" + +#: data/datacdrom.cpp:1516 +msgid "No medium.Because the cdrom's door is open." +msgstr "" + +#: data/datacdrom.cpp:1595 +#, qt-format +msgid "Loaded CD-ROM medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1598 +#, qt-format +msgid "CDROM %1 cannot support to read CD-ROM medium" +msgstr "" + +#: data/datacdrom.cpp:1604 +#, qt-format +msgid "Loaded CD-R medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1607 +#, qt-format +msgid "CDROM %1 cannot support to read CD-R medium" +msgstr "" + +#: data/datacdrom.cpp:1613 +#, qt-format +msgid "Loaded CD-RW medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1616 +#, qt-format +msgid "CDROM %1 cannot support to read CD-RW medium" +msgstr "" + +#: data/datacdrom.cpp:1622 +#, qt-format +msgid "Loaded DVD-ROM medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1625 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-ROM medium" +msgstr "" + +#: data/datacdrom.cpp:1631 +#, qt-format +msgid "Loaded DVD-R medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1634 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-R medium" +msgstr "" + +#: data/datacdrom.cpp:1640 +#, qt-format +msgid "Loaded DVD-RAM medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1643 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RAM medium" +msgstr "" + +#: data/datacdrom.cpp:1649 +#, qt-format +msgid "Loaded DVD-RW(OVERWRITE) medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1652 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RW(OVERWRITE) medium" +msgstr "" + +#: data/datacdrom.cpp:1658 +#, qt-format +msgid "Loaded DVD-RW medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1661 +#, qt-format +msgid "CDROM %1 cannot support to read DVD-RW medium" +msgstr "" + +#: data/datacdrom.cpp:1667 +#, qt-format +msgid "Loaded DVD+RW medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1670 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+RW medium" +msgstr "" + +#: data/datacdrom.cpp:1676 +#, qt-format +msgid "Loaded DVD+R medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1679 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+R medium" +msgstr "" + +#: data/datacdrom.cpp:1685 +#, qt-format +msgid "Loaded DVD+R DL medium in %1" +msgstr "" + +#: data/datacdrom.cpp:1688 +#, qt-format +msgid "CDROM %1 cannot support to read DVD+R DL medium" +msgstr "" + +#: data/datacdrom.cpp:1702 +#, qt-format +msgid "Created medium of type %1." +msgstr "" + +#: data/datacdrom.cpp:1706 +msgid "There is no mediun in CDROM" +msgstr "" + +#: data/datadirectory.cpp:112 +msgid "Return to parent level." +msgstr "" + +#: data/datadirectory.cpp:118 model/logicburndata.cpp:582 +#: model/logicburndata.cpp:595 view/burndata.cpp:155 view/burndata.cpp:566 +#: view/burndata.cpp:1138 view/burndata.cpp:1144 view/burndata.cpp:1150 +#: view/burndata.cpp:1158 view/burndata.cpp:1164 +msgid "NewFolder" +msgstr "" + +#: data/datadirectory.cpp:171 data/datadirectory.cpp:561 +#, qt-format +msgid "Duplicate child %1" +msgstr "" + +#: data/datadirectory.cpp:186 data/datadirectory.cpp:569 +#: model/logicburndata.cpp:271 model/logicburndata.cpp:277 +#: model/logicburndata.cpp:283 view/burndata.cpp:564 view/settingdatas.cpp:51 +msgid "Rename" +msgstr "" + +#: data/datadirectory.cpp:186 data/datadirectory.cpp:569 +#: view/inputchange.cpp:72 +msgid "File name duplicate, need to rename:" +msgstr "" + +#: data/datadirectory.cpp:191 data/datadirectory.cpp:199 +#: data/datadirectory.cpp:206 data/datadirectory.cpp:212 +#: data/datadirectory.cpp:575 data/datadirectory.cpp:581 +#: data/datadirectory.cpp:587 model/logicburndata.cpp:1183 +#: view/burndata.cpp:1011 +msgid "Add File(s)" +msgstr "" + +#: data/datadirectory.cpp:191 data/datadirectory.cpp:575 +#: model/logicburndata.cpp:271 view/burndata.cpp:1144 view/burndata.cpp:1150 +msgid "Empty Name" +msgstr "" + +#: data/datadirectory.cpp:192 data/datadirectory.cpp:576 +msgid "Cannot named with empty." +msgstr "" + +#: data/datadirectory.cpp:199 +msgid "Not Hidden Name" +msgstr "" + +#: data/datadirectory.cpp:200 +msgid "Cannot named with None hidden name" +msgstr "" + +#: data/datadirectory.cpp:206 data/datadirectory.cpp:581 +#: model/logicburndata.cpp:283 view/burndata.cpp:1164 +msgid "Duplicate Name" +msgstr "" + +#: data/datadirectory.cpp:207 data/datadirectory.cpp:582 +#, qt-format +msgid "There is data named %1" +msgstr "" + +#: data/datadirectory.cpp:212 data/datadirectory.cpp:587 +#: model/logicburndata.cpp:277 view/burndata.cpp:1158 +msgid "Name Too Long" +msgstr "" + +#: data/datadirectory.cpp:213 data/datadirectory.cpp:588 +msgid "Cannot add named length more than 103 unicode charsets." +msgstr "" + +#: data/datadirectory.cpp:268 data/datadirectory.cpp:653 +#, qt-format +msgid "Add child %1" +msgstr "" + +#: data/datadirectory.cpp:402 +#, qt-format +msgid "Copied dir %1 to %2" +msgstr "" + +#: data/datadirectory.cpp:511 +#, qt-format +msgid "Add size %1, now size is %2" +msgstr "" + +#: data/datadirectory.cpp:520 +#, qt-format +msgid "Sub size %1, now size is %2" +msgstr "" + +#: data/datadirectory.cpp:533 +#, qt-format +msgid "Includes %1 dir(s), after %2" +msgstr "" + +#: data/datadirectory.cpp:533 data/datadirectory.cpp:543 +msgid "add" +msgstr "" + +#: data/datadirectory.cpp:533 data/datadirectory.cpp:543 +msgid "delete" +msgstr "" + +#: data/datadirectory.cpp:543 +#, qt-format +msgid "Includes %1 file(s), after %2" +msgstr "" + +#: data/datadirectory.cpp:668 +#, qt-format +msgid "Move child %1 out" +msgstr "" + +#: data/datafile.cpp:45 +#, qt-format +msgid "FILE %1" +msgstr "" + +#: data/datafile.cpp:47 +#, qt-format +msgid "DIR %1" +msgstr "" + +#: data/datafile.cpp:54 +#, qt-format +msgid "Create time : %1" +msgstr "" + +#: data/datafile.cpp:55 +#, qt-format +msgid "Size : %1" +msgstr "" + +#: data/datafile.cpp:56 +#, qt-format +msgid "Add time : %1" +msgstr "" + +#: data/datafile.cpp:73 +#, qt-format +msgid "Type : %1" +msgstr "" + +#: data/datafile.cpp:74 +#, qt-format +msgid "Source path : %1" +msgstr "" + +#: data/datafile.cpp:80 +#, qt-format +msgid "is %1HIDDEN." +msgstr "" + +#: data/datafile.cpp:81 +#, c-format, qt-format +msgid "is %1SymbolLink." +msgstr "" + +#: data/datafile.cpp:118 +#, qt-format +msgid "Symbol link target : %1" +msgstr "" + +#: data/datafile.cpp:261 +#, qt-format +msgid "Copied file %1 to %2" +msgstr "" + +#: data/datafile.cpp:350 +#, qt-format +msgid "Update destination to %1" +msgstr "" + +#: data/datafile.cpp:372 +#, qt-format +msgid "Filter hidden file. %1" +msgstr "" + +#: data/datafile.cpp:410 +#, qt-format +msgid "Symbo link file %1 has target file %2, do not filter." +msgstr "" + +#: data/datafile.cpp:428 +#, qt-format +msgid "Filter broken symbol link file. %1" +msgstr "" + +#: data/datafile.cpp:464 +#, qt-format +msgid "Repleace symbol link file. %1" +msgstr "" + +#: data/datasetting.cpp:27 +msgid "KylinSoft" +msgstr "" + +#: data/datasetting.cpp:31 +#, qt-format +msgid "Kylinsoft © %1 All rights." +msgstr "" + +#: frame/auditlog.cpp:34 frame/auditlog.cpp:72 frame/auditlog.cpp:118 +msgid "Time" +msgstr "" + +#: frame/auditlog.cpp:35 frame/auditlog.cpp:73 frame/auditlog.cpp:119 +#: process/processbasic.cpp:104 process/processbasic.cpp:134 +#: process/processbasic.cpp:152 +msgid "User" +msgstr "" + +#: frame/auditlog.cpp:36 frame/auditlog.cpp:74 frame/auditlog.cpp:120 +msgid "RecorderType" +msgstr "" + +#: frame/auditlog.cpp:37 frame/auditlog.cpp:75 frame/auditlog.cpp:121 +msgid "DiscProperty" +msgstr "" + +#: frame/auditlog.cpp:38 frame/auditlog.cpp:85 frame/auditlog.cpp:122 +#: view/burndata.cpp:188 view/viewfilterfiles.cpp:319 +msgid "FileName" +msgstr "" + +#: frame/auditlog.cpp:47 +msgid "Current operation donot need file" +msgstr "" + +#: frame/auditlog.cpp:51 frame/auditlog.cpp:94 frame/auditlog.cpp:130 +msgid "Operation" +msgstr "" + +#: frame/auditlog.cpp:52 frame/auditlog.cpp:95 frame/auditlog.cpp:131 +msgid "Result" +msgstr "" + +#: frame/auditlog.cpp:52 frame/auditlog.cpp:95 frame/auditlog.cpp:131 +msgid "success" +msgstr "" + +#: frame/auditlog.cpp:52 frame/auditlog.cpp:95 frame/auditlog.cpp:131 +msgid "fail" +msgstr "" + +#: frame/auditlog.cpp:79 frame/auditlog.cpp:121 +msgid "Donot need disc" +msgstr "" + +#: frame/auditlog.cpp:129 +msgid "ImageFile" +msgstr "" + +#: frame/auditlog.cpp:130 process/processcreateiso.cpp:22 +#: process/processcreateiso.cpp:205 process/processcreateiso.cpp:214 +msgid "Creating ISO" +msgstr "" + +#: frame/logger.cpp:26 +msgid "info" +msgstr "" + +#: frame/logger.cpp:26 +msgid "warn" +msgstr "" + +#: frame/logger.cpp:26 +msgid "error" +msgstr "" + +#: frame/logger.cpp:26 +msgid "debug" +msgstr "" + +#: frame/logger.cpp:62 +#, qt-format +msgid "logger path : %1" +msgstr "" + +#: frame/logger.cpp:63 +#, qt-format +msgid "Will record under %1 level log." +msgstr "" + +#: frame/logger.cpp:148 +msgid "common" +msgstr "" + +#: main.cpp:55 view/aboutdialog.cpp:12 view/burndata.cpp:1011 +#: view/filefilterrules.cpp:46 view/mainwindow.cpp:182 view/modaldialog.cpp:234 +#: view/viewfilterfiles.cpp:192 view/viewfilterfiles.cpp:238 +msgid "Burner" +msgstr "" + +#: main.cpp:129 +msgid "file(s) to open" +msgstr "" + +#: main.cpp:130 +msgid "Running as debug model." +msgstr "" + +#: model/logicburndata.cpp:39 +msgid "BURNDATA" +msgstr "" + +#: model/logicburndata.cpp:199 +msgid "Parent" +msgstr "" + +#: model/logicburndata.cpp:272 +msgid "Cannot rename to empty." +msgstr "" + +#: model/logicburndata.cpp:278 +msgid "New name length must be less than 103 unicode charset." +msgstr "" + +#: model/logicburndata.cpp:284 +#, qt-format +msgid "There is a item named by %1." +msgstr "" + +#: model/logicburndata.cpp:1555 +#, qt-format +msgid "Add new create iso data file. %1" +msgstr "" + +#: model/logicburndata.cpp:1636 model/logicburndata.cpp:1688 +msgid "" +"The available space of the current temporary path is insufficient. Please re-" +"select the temporary path!" +msgstr "" + +#: model/logicburndata.cpp:1769 +msgid "Add new create iso data file." +msgstr "" + +#: model/logicburndata.cpp:1874 +msgid "Loading Disk Data." +msgstr "" + +#: model/logicburndata.cpp:1909 +#, qt-format +msgid "Loading %1..." +msgstr "" + +#: model/logicburndata.cpp:2014 model/logicburndata.cpp:2054 +#, qt-format +msgid "Added %1 to %2" +msgstr "" + +#: model/logicburnimage.cpp:21 +msgid "BURNIMAGE" +msgstr "" + +#: model/logicburnimage.cpp:59 model/logicburnimage.cpp:74 +#: model/logicburnimage.cpp:145 model/logicburnimage.cpp:159 +msgid "No valid burner,need burner which with empty meduim." +msgstr "" + +#: model/logicburnimage.cpp:69 model/logicburnimage.cpp:156 +msgid "This disc is a non-empty disc and needs to be erased!" +msgstr "" + +#: model/logicburnimage.cpp:118 +#, qt-format +msgid "Record new iso file path <%1>" +msgstr "" + +#: model/logicburnimage.cpp:121 +#, qt-format +msgid "Ready to burn : %1" +msgstr "" + +#: model/logicburnimage.cpp:128 +#, qt-format +msgid "Current index for burning is %1" +msgstr "" + +#: model/logicburnimage.cpp:168 +msgid "Too long to burn to current medium." +msgstr "" + +#: model/logicburnimage.cpp:169 +msgid "Current medium has not enough space for burning current iso file." +msgstr "" + +#: model/logicburnimage.cpp:173 +msgid "Ready to burn,please click [BurnImage] button." +msgstr "" + +#: model/logicburnimage.cpp:189 +#, qt-format +msgid "New empty medium burner %1, medium %2" +msgstr "" + +#: model/logicburnimage.cpp:202 +msgid "Remove burner." +msgstr "" + +#: model/logicburnimage.cpp:219 +#, qt-format +msgid "Begin to burn image, burn image<%1> to medium in <%2>" +msgstr "" + +#: model/logiccopyimage.cpp:173 +msgid "This disc is a CD, and copying to DVD is not supported" +msgstr "" + +#: model/logiccopyimage.cpp:177 +msgid "This disc is a DVD, and copying to CD is not supported" +msgstr "" + +#: model/logicmain.cpp:39 +msgid "MAIN" +msgstr "" + +#: model/logicmain.cpp:90 +msgid "" +"Connect MONITOR signal addCDROM to createCDROM, for creating new cdrom " +"information." +msgstr "" + +#: model/logicmain.cpp:210 +#, qt-format +msgid "Creating new cdrom named %1" +msgstr "" + +#: model/logicmain.cpp:382 +#, qt-format +msgid "Get empty medium in CDROM %1" +msgstr "" + +#: model/logicmain.cpp:383 model/logicmain.cpp:394 model/logicmain.cpp:406 +#, qt-format +msgid "BurnerName : %1 DiskName : %2" +msgstr "" + +#: model/logicmain.cpp:393 +#, qt-format +msgid "Get appendable medium in CDROM %1" +msgstr "" + +#: model/logicmain.cpp:405 +#, qt-format +msgid "Get finished medium in CDROM %1" +msgstr "" + +#: model/logicmain.cpp:424 +msgid "Undefined busness." +msgstr "" + +#: model/logicmain.cpp:430 +#, qt-format +msgid "Change to do busness %1" +msgstr "" + +#: model/logicmain.cpp:438 +msgid "Prepare to create iso file." +msgstr "" + +#: model/logicmain.cpp:442 +msgid "Prepare to burn data." +msgstr "" + +#: model/logicmain.cpp:447 +msgid "Prepare to burn UDF Format data." +msgstr "" + +#: model/logicmain.cpp:451 +msgid "Prepare to append burn." +msgstr "" + +#: model/logicmain.cpp:455 +msgid "Prepare to burn image." +msgstr "" + +#: model/logicmain.cpp:459 +msgid "Prepare to copy disk data." +msgstr "" + +#: model/logicmain.cpp:463 +msgid "Prepare to get iso from disk data." +msgstr "" + +#: model/logicmain.cpp:467 +#, qt-format +msgid "Invalid busness [%1]" +msgstr "" + +#: model/logicmain.cpp:583 +#, qt-format +msgid "Remove CDROM %1" +msgstr "" + +#: model/menufactory.cpp:26 view/burnimage.cpp:36 view/copyimage.cpp:300 +#: view/mainwindow.cpp:440 view/mainwindow.cpp:579 view/mainwindow.cpp:584 +#: view/mainwindow.cpp:591 view/mainwindow.cpp:767 +msgid "Setting" +msgstr "" + +#: model/menufactory.cpp:27 view/settingdatas.cpp:78 +msgid "Data Setting" +msgstr "" + +#: model/menufactory.cpp:28 +msgid "File Filter" +msgstr "" + +#: model/menufactory.cpp:29 +msgid "View Filter File(s)" +msgstr "" + +#: model/menufactory.cpp:30 process/processmd5sum.cpp:18 view/diskcheck.cpp:23 +#: view/modaldialog.cpp:140 +msgid "Disk Check" +msgstr "" + +#: model/menufactory.cpp:31 +msgid "Burner Setting" +msgstr "" + +#: model/menufactory.cpp:32 +msgid "Eject" +msgstr "" + +#: model/menufactory.cpp:33 process/processbasic.cpp:61 +#: process/processbasic.cpp:90 process/processearse.cpp:30 +msgid "Earse" +msgstr "" + +#: model/menufactory.cpp:34 view/aboutdialog.cpp:13 +msgid "Version" +msgstr "" + +#: model/menufactory.cpp:35 +msgid "About" +msgstr "" + +#: model/menufactory.cpp:36 +msgid "Help" +msgstr "" + +#: model/menufactory.cpp:37 +msgid "Exit" +msgstr "" + +#: model/menufactory.cpp:44 +msgid "Eject All" +msgstr "" + +#: model/monitorcdrom.cpp:23 +msgid "Monitor" +msgstr "" + +#: model/monitorcdrom.cpp:61 +#, qt-format +msgid "Calling MAIN to add a CDROM, block name is %1" +msgstr "" + +#: model/monitorcdrom.cpp:125 +#, qt-format +msgid "Build netlink socket error. %1" +msgstr "" + +#: model/monitorcdrom.cpp:132 +#, qt-format +msgid "Bind netlink socket error. %1" +msgstr "" + +#: model/monitorcdrom.cpp:154 +#, qt-format +msgid "Open system path %1 failed.%2" +msgstr "" + +#: model/monitorcdrom.cpp:165 +#, qt-format +msgid "Cannot search block from %1" +msgstr "" + +#: model/monitorcdrom.cpp:172 +msgid "There is no block in current system" +msgstr "" + +#: model/monitorcdrom.cpp:182 +#, qt-format +msgid "Update block named %1 into application" +msgstr "" + +#: process/processbasic.cpp:83 process/processcopydisk.cpp:26 +#: process/processcopydiskdl.cpp:112 +msgid "Copy Disk" +msgstr "" + +#: process/processbasic.cpp:87 process/processburndata.cpp:65 +#: process/processburndata.cpp:706 process/processburndatadl.cpp:124 +#: process/processburnudfdata.cpp:351 process/processburnudfdata.cpp:463 +#: process/processearse.cpp:206 +msgid "Burn Data" +msgstr "" + +#: process/processbasic.cpp:87 process/processburndata.cpp:72 +#: process/processburndatadl.cpp:129 +msgid "Append Burn" +msgstr "" + +#: process/processbasic.cpp:88 process/processburnudfdata.cpp:60 +msgid "Burn UDF Format Data" +msgstr "" + +#: process/processbasic.cpp:88 process/processburnudfdata.cpp:66 +msgid "UDF Append Burn" +msgstr "" + +#: process/processbasic.cpp:89 process/processburnimage.cpp:26 +msgid "Burn Image" +msgstr "" + +#: process/processbasic.cpp:97 process/processbasic.cpp:104 +#: process/processbasic.cpp:211 +msgid "User canceled." +msgstr "" + +#: process/processbasic.cpp:104 process/processbasic.cpp:134 +#: process/processbasic.cpp:152 +msgid "Destination" +msgstr "" + +#: process/processbasic.cpp:104 process/processbasic.cpp:134 +#: process/processbasic.cpp:152 +msgid "Burn result" +msgstr "" + +#: process/processbasic.cpp:115 +msgid "Disc is occupied, Burning failed!" +msgstr "" + +#: process/processbasic.cpp:120 process/processbasic.cpp:128 +#, qt-format +msgid "Step.%1 error happened." +msgstr "" + +#: process/processbasic.cpp:134 view/tip_burnresult.cpp:108 view/tips.cpp:103 +msgid " Failed" +msgstr "" + +#: process/processbasic.cpp:146 process/processisoinfo.cpp:11 +msgid "load" +msgstr "" + +#: process/processbasic.cpp:146 process/processbasic.cpp:202 +#: process/processmediainfo.cpp:13 view/busnesssetting.cpp:94 +msgid "Media Info" +msgstr "" + +#: process/processbasic.cpp:152 view/tip_burnresult.cpp:92 view/tips.cpp:86 +msgid " Success" +msgstr "" + +#: process/processbasic.cpp:170 process/processburndata.cpp:445 +#, qt-format +msgid "Argument setted for %1:" +msgstr "" + +#: process/processbasic.cpp:173 process/processburndata.cpp:448 +#, qt-format +msgid "Arg.%1 - %2" +msgstr "" + +#: process/processbasic.cpp:186 +#, qt-format +msgid "starting process %1" +msgstr "" + +#: process/processbasic.cpp:208 process/processburndatadl.cpp:381 +#: process/processcopydiskdl.cpp:334 process/processcopydiskdl.cpp:339 +msgid "Stop process when user canceled." +msgstr "" + +#: process/processburndata.cpp:63 process/processburndatadl.cpp:139 +msgid "PROCESS_BD" +msgstr "" + +#: process/processburndata.cpp:64 process/processburndatadl.cpp:140 +msgid "Burning Data" +msgstr "" + +#: process/processburndata.cpp:70 process/processburndatadl.cpp:143 +msgid "PROCESS_AB" +msgstr "" + +#: process/processburndata.cpp:71 process/processburndatadl.cpp:144 +msgid "Append Burning" +msgstr "" + +#: process/processburndata.cpp:111 process/processburndatadl.cpp:226 +#: process/processburnudfdata.cpp:91 process/processcopydisk.cpp:47 +#: process/processcreateiso.cpp:100 +msgid "KylinOS" +msgstr "" + +#: process/processburndata.cpp:139 process/processburndatadl.cpp:99 +#: process/processcopydiskdl.cpp:81 process/processcopydiskdl.cpp:92 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the cdrecord, " +"growisofs and xorriso is exists or not, and give the right permissions.%2 " +"exiting..." +msgstr "" + +#: process/processburndata.cpp:155 process/processburnudfdata.cpp:116 +#: process/processearse.cpp:62 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the mkisofs is " +"exists or not, and give the right permissions.%2 exiting..." +msgstr "" + +#: process/processburndata.cpp:168 process/processburnudfdata.cpp:129 +#: view/busnesssetting.cpp:40 +msgid "Create ISO" +msgstr "" + +#: process/processburndata.cpp:168 process/processburnudfdata.cpp:129 +#: process/processgetiso.cpp:72 +msgid "Already Exists" +msgstr "" + +#: process/processburndata.cpp:169 process/processburnudfdata.cpp:130 +#: process/processcreateiso.cpp:70 process/processgetiso.cpp:73 +#, qt-format +msgid "There is already have the iso file named %1,replace it or not?" +msgstr "" + +#: process/processburndata.cpp:187 +msgid "Prepare to burn data to CD." +msgstr "" + +#: process/processburndata.cpp:191 +msgid "Prepare to burn data to DVD+R." +msgstr "" + +#: process/processburndata.cpp:197 process/processburndatadl.cpp:228 +msgid "Prepare to burn data to DVD." +msgstr "" + +#: process/processburndata.cpp:243 process/processburndatadl.cpp:259 +msgid "Prepare to start burn data." +msgstr "" + +#: process/processburndata.cpp:407 +#, qt-format +msgid "the command for xorriso is: %1" +msgstr "" + +#: process/processburndata.cpp:494 process/processburnimage.cpp:237 +#: process/processcopydisk.cpp:134 process/processearse.cpp:147 +msgid "Performing OPC" +msgstr "" + +#: process/processburndata.cpp:518 process/processcopydisk.cpp:153 +#, qt-format +msgid "Writing track %1 speed %2 written %3 %4." +msgstr "" + +#: process/processburndata.cpp:524 process/processcopydisk.cpp:159 +#: process/processearse.cpp:150 +msgid "Fixating(Will wait minutes)" +msgstr "" + +#: process/processburndata.cpp:554 process/processburndatadl.cpp:417 +#: process/processburnimage.cpp:322 process/processburnimage.cpp:439 +#: process/processburnudfdata.cpp:311 process/processcopydiskdl.cpp:359 +#: process/processcopydiskdl.cpp:419 +msgid "" +"Input/output error. Disc may be damaged, please clean or replace a disc and " +"try again." +msgstr "" + +#: process/processburndata.cpp:566 +msgid "Not allowed when the disc data exceeds 4GB after burning data." +msgstr "" + +#: process/processburndata.cpp:591 +msgid "" +"An error occurs when the CD is removed during data burning. The image " +"burning process is terminated." +msgstr "" + +#: process/processburndata.cpp:620 +msgid "medium is burning..." +msgstr "" + +#: process/processburndata.cpp:637 +msgid "completed successfully." +msgstr "" + +#: process/processburndata.cpp:662 +#, qt-format +msgid "Building ISO %1" +msgstr "" + +#: process/processburndata.cpp:665 process/processburndatadl.cpp:440 +#: process/processcopydisk.cpp:197 +#, c-format, qt-format +msgid "Burning by speed %1x" +msgstr "" + +#: process/processburndata.cpp:704 +#, qt-format +msgid "Exit code is %1, status : %2, m_oKeep : %3, m_umountError : %4" +msgstr "" + +#: process/processburndata.cpp:782 +#, qt-format +msgid "%1" +msgstr "" + +#: process/processburndata.cpp:783 process/processburndatadl.cpp:355 +#: process/processburndatadl.cpp:356 process/processburnudfdata.cpp:444 +#: process/processburnudfdata.cpp:445 process/processcreateiso.cpp:247 +#: process/processcreateiso.cpp:248 +#, qt-format +msgid "Copied %1 to %2" +msgstr "" + +#: process/processburndata.cpp:791 process/processburndatadl.cpp:367 +#: process/processburndatadl.cpp:455 process/processcopydisk.cpp:214 +#: process/processcopydiskdl.cpp:415 +msgid "closing track" +msgstr "" + +#: process/processburndatadl.cpp:451 process/processcopydisk.cpp:210 +msgid "flushing cache" +msgstr "" + +#: process/processburndatadl.cpp:459 process/processcopydisk.cpp:218 +msgid "closing session" +msgstr "" + +#: process/processburnimage.cpp:24 +msgid "PROCESS_BI" +msgstr "" + +#: process/processburnimage.cpp:25 +msgid "Burning Image" +msgstr "" + +#: process/processburnimage.cpp:36 process/processburnimage.cpp:37 +#, qt-format +msgid "Step.%1: preparing..." +msgstr "" + +#: process/processburnimage.cpp:46 process/processburnimage.cpp:48 +#, qt-format +msgid "Image file %1 already been removed." +msgstr "" + +#: process/processburnimage.cpp:51 process/processburnimage.cpp:52 +msgid "Checked image already exists." +msgstr "" + +#: process/processburnimage.cpp:64 process/processburnimage.cpp:66 +#: process/processburnimage.cpp:91 process/processburnimage.cpp:93 +#: process/processburnimage.cpp:120 process/processburnimage.cpp:122 +#: process/processcreateiso.cpp:51 process/processcreateiso.cpp:53 +#: process/processgetiso.cpp:40 process/processgetiso.cpp:41 +#, qt-format +msgid "Cannot find program <%1>." +msgstr "" + +#: process/processburnimage.cpp:71 process/processburnimage.cpp:73 +#: process/processburnimage.cpp:99 process/processburnimage.cpp:101 +#: process/processburnimage.cpp:127 process/processburnimage.cpp:129 +#: process/processcreateiso.cpp:58 process/processcreateiso.cpp:60 +#: process/processgetiso.cpp:47 process/processgetiso.cpp:48 +#, qt-format +msgid "Program %1 is not executable file." +msgstr "" + +#: process/processburnimage.cpp:148 process/processburnimage.cpp:150 +#, qt-format +msgid "Donot suppot medium type %1 in CDROM." +msgstr "" + +#: process/processburnimage.cpp:153 process/processburnimage.cpp:154 +#: process/processcreateiso.cpp:63 +#, qt-format +msgid "Checking program %1 can be supported." +msgstr "" + +#: process/processburnimage.cpp:163 process/processburnimage.cpp:164 +#, qt-format +msgid "Step.%1: getting..." +msgstr "" + +#: process/processburnimage.cpp:171 process/processburnimage.cpp:172 +msgid "Speed config to 0, means auto." +msgstr "" + +#: process/processburnimage.cpp:206 process/processburnimage.cpp:207 +#, qt-format +msgid "Started process %1" +msgstr "" + +#: process/processburnimage.cpp:230 +#, qt-format +msgid "Start left %1 seconds." +msgstr "" + +#: process/processburnimage.cpp:232 +msgid "Started burn image, cannot stop." +msgstr "" + +#: process/processburnimage.cpp:260 process/processburnimage.cpp:272 +msgid "Fixating...(need waiting a moment.)" +msgstr "" + +#: process/processburnimage.cpp:264 +#, qt-format +msgid "Writing track %1 speed %2 %3 of %4 %5 written." +msgstr "" + +#: process/processburnimage.cpp:278 +#, qt-format +msgid "%1 output : \"%2\"" +msgstr "" + +#: process/processburnimage.cpp:295 +#, c-format, qt-format +msgid "Burning image by speed %1x" +msgstr "" + +#: process/processburnimage.cpp:326 process/processcopydiskdl.cpp:374 +msgid "Burning command aborted." +msgstr "" + +#: process/processburnimage.cpp:331 +msgid "Disc umount failed." +msgstr "" + +#: process/processburnimage.cpp:336 process/processburnimage.cpp:342 +msgid "Disc is busy , umount failed." +msgstr "" + +#: process/processburnimage.cpp:346 +msgid "No such device." +msgstr "" + +#: process/processburnimage.cpp:353 +msgid "" +"An error occurs when the CD is removed during image burning. The image " +"burning process is terminated." +msgstr "" + +#: process/processburnimage.cpp:381 +msgid "Blanking... " +msgstr "" + +#: process/processburnimage.cpp:386 +msgid "Formatting..." +msgstr "" + +#: process/processburnimage.cpp:390 process/processcopydiskdl.cpp:379 +msgid "Preparing for burning image(wait a few minutes)" +msgstr "" + +#: process/processburnimage.cpp:416 process/processcopydiskdl.cpp:410 +#, qt-format +msgid "Burning image by speed %1. %2 of %3 written." +msgstr "" + +#: process/processburnimage.cpp:421 +msgid "Blanking done" +msgstr "" + +#: process/processburnimage.cpp:424 +msgid "Closing track/session" +msgstr "" + +#: process/processburnimage.cpp:427 +msgid "burn successfully" +msgstr "" + +#: process/processburnimage.cpp:446 process/processburnudfdata.cpp:350 +#: process/processcopydisk.cpp:238 +#, qt-format +msgid "Exit code is %1, status : %2, m_oKeep : %3" +msgstr "" + +#: process/processburnimage.cpp:500 process/processburnimage.cpp:501 +msgid "CDROM doesnot exists any more." +msgstr "" + +#: process/processburnimage.cpp:506 process/processburnimage.cpp:507 +msgid "CDROM doesnot a real physical cdrom." +msgstr "" + +#: process/processburnimage.cpp:512 process/processburnimage.cpp:513 +msgid "Medium in CDROM is not empty any more." +msgstr "" + +#: process/processburnudfdata.cpp:58 +msgid "PROCESS_UDF_DATA" +msgstr "" + +#: process/processburnudfdata.cpp:59 +msgid "Burning UDF Format Data" +msgstr "" + +#: process/processburnudfdata.cpp:65 +msgid "Media Not Empty,Not Burn UDF Format" +msgstr "" + +#: process/processburnudfdata.cpp:99 process/processcopydisk.cpp:55 +#, qt-format +msgid "" +"There is no %1 program or %1 cannot execute.Please check the cdrecord and " +"growisofs is exists or not, and give the right permissions.%2 exiting..." +msgstr "" + +#: process/processburnudfdata.cpp:151 +msgid "Prepare to burn UDF format data to DVD." +msgstr "" + +#: process/processburnudfdata.cpp:179 +msgid "Prepare to start burn UFD format data." +msgstr "" + +#: process/processburnudfdata.cpp:285 +#, qt-format +msgid "ProcessBurnUDFData %1" +msgstr "" + +#: process/processburnudfdata.cpp:369 +#, qt-format +msgid "m_icountBurn : %3" +msgstr "" + +#: process/processcopydisk.cpp:25 process/processcopydiskdl.cpp:113 +msgid "PROCESS_CD" +msgstr "" + +#: process/processcopydisk.cpp:73 process/processcopydisk.cpp:104 +#: process/processgetiso.cpp:105 +#, qt-format +msgid "Preparer %1" +msgstr "" + +#: process/processcopydisk.cpp:75 process/processcopydisk.cpp:107 +#: process/processgetiso.cpp:109 +#, qt-format +msgid "Publisher %1" +msgstr "" + +#: process/processcopydisk.cpp:77 process/processcopydisk.cpp:110 +#: process/processgetiso.cpp:113 +#, qt-format +msgid "Copyright %1" +msgstr "" + +#: process/processcopydisk.cpp:79 process/processcopydisk.cpp:101 +#: process/processgetiso.cpp:101 +#, qt-format +msgid "Volumn ID %1" +msgstr "" + +#: process/processcopydisk.cpp:100 process/processcopydiskdl.cpp:202 +#: process/processcreateiso.cpp:132 process/processgetiso.cpp:100 +#, qt-format +msgid "Volumn ID : %1" +msgstr "" + +#: process/processcopydisk.cpp:103 process/processcopydiskdl.cpp:203 +#: process/processcreateiso.cpp:135 process/processgetiso.cpp:104 +#, qt-format +msgid "Preparer : %1" +msgstr "" + +#: process/processcopydisk.cpp:106 process/processcopydiskdl.cpp:204 +#: process/processcreateiso.cpp:138 process/processgetiso.cpp:108 +#, qt-format +msgid "Publisher : %1" +msgstr "" + +#: process/processcopydisk.cpp:109 process/processcopydiskdl.cpp:205 +#: process/processcreateiso.cpp:141 process/processgetiso.cpp:112 +#, qt-format +msgid "Copyright : %1" +msgstr "" + +#: process/processcopydiskdl.cpp:199 process/processgetiso.cpp:53 +msgid "Preparing get iso file." +msgstr "" + +#: process/processcopydiskdl.cpp:428 process/processcopydiskdl.cpp:500 +#: process/processgetiso.cpp:26 process/processgetiso.cpp:138 +msgid "Getting ISO" +msgstr "" + +#: process/processcreateiso.cpp:21 +msgid "PROCESS_CI" +msgstr "" + +#: process/processcreateiso.cpp:73 view/execdialog.cpp:51 +#: view/filefilterrules.cpp:162 view/inputchange.cpp:48 view/modaldialog.cpp:58 +#: view/tip_burnresult.cpp:43 view/tipschange.cpp:42 +msgid "OK" +msgstr "" + +#: process/processcreateiso.cpp:74 view/execdialog.cpp:50 +#: view/filefilterrules.cpp:161 view/inputchange.cpp:47 view/modaldialog.cpp:57 +#: view/tipschange.cpp:41 +msgid "Cancel" +msgstr "" + +#: process/processcreateiso.cpp:88 +#, qt-format +msgid "Ready to create %1 file." +msgstr "" + +#: process/processcreateiso.cpp:102 +msgid "Initlized default arguments." +msgstr "" + +#: process/processcreateiso.cpp:105 +#, qt-format +msgid "%1 data size more than 2 GB, need allow-limited-size extension" +msgstr "" + +#: process/processcreateiso.cpp:106 process/processcreateiso.cpp:110 +#: process/processcreateiso.cpp:114 process/processcreateiso.cpp:117 +#: view/mainwindow.cpp:421 view/mainwindow.cpp:477 view/mainwindow.cpp:740 +#: view/mainwindow.cpp:744 +msgid "CreateISO" +msgstr "" + +#: process/processcreateiso.cpp:109 +#, qt-format +msgid "%1 check need allow-limited-size extension or not" +msgstr "" + +#: process/processcreateiso.cpp:113 +#, qt-format +msgid "%1 data size more than 4 GB, need UDF extension" +msgstr "" + +#: process/processcreateiso.cpp:117 +#, qt-format +msgid "%1 check need UDF extension or not" +msgstr "" + +#: process/processcreateiso.cpp:131 +#, qt-format +msgid "Setted volumn ID : %1" +msgstr "" + +#: process/processcreateiso.cpp:134 +#, qt-format +msgid "Setted preparer : %1" +msgstr "" + +#: process/processcreateiso.cpp:137 +#, qt-format +msgid "Setted publisher : %1" +msgstr "" + +#: process/processcreateiso.cpp:140 +#, qt-format +msgid "Setted copyright : %1" +msgstr "" + +#: process/processcreateiso.cpp:145 +msgid "Invalid temporary storage path." +msgstr "" + +#: process/processcreateiso.cpp:150 +msgid "Temporary storage has not enough space for create iso." +msgstr "" + +#: process/processcreateiso.cpp:153 +msgid "Check storage space over." +msgstr "" + +#: process/processcreateiso.cpp:158 +#, qt-format +msgid "Need to copy %1 file(s)" +msgstr "" + +#: process/processcreateiso.cpp:186 +msgid "Started Create ISO" +msgstr "" + +#: process/processcreateiso.cpp:187 +msgid "Create ISO started." +msgstr "" + +#: process/processcreateiso.cpp:213 process/processgetiso.cpp:166 +#, qt-format +msgid "Exit code is %1, status : %2" +msgstr "" + +#: process/processcreateiso.cpp:217 +msgid "Created ISO" +msgstr "" + +#: process/processearse.cpp:27 +msgid "PROCESS_EARSE" +msgstr "" + +#: process/processearse.cpp:29 +msgid "Earsing" +msgstr "" + +#: process/processearse.cpp:114 +msgid "Umount CD, and prepare to blank CD." +msgstr "" + +#: process/processearse.cpp:192 process/processearse.cpp:202 +msgid "earsing...." +msgstr "" + +#: process/processearse.cpp:237 +msgid "Blanking..." +msgstr "" + +#: process/processgetiso.cpp:23 +msgid "PROCESS_GI" +msgstr "" + +#: process/processgetiso.cpp:24 process/processgetiso.cpp:72 +msgid "Get ISO" +msgstr "" + +#: process/processgetiso.cpp:63 +#, qt-format +msgid "Medium in CDROM %1 donot been mounted." +msgstr "" + +#: process/processgetiso.cpp:86 +#, qt-format +msgid "File %1 exists." +msgstr "" + +#: process/processgetiso.cpp:129 +msgid "Bad sector detected, please clean or replace a disc and try again." +msgstr "" + +#: process/processisoinfo.cpp:19 +msgid "ERROR:ISOINFO-PREPARE" +msgstr "" + +#: process/processmd5sum.cpp:19 +msgid "PROCESS_DC" +msgstr "" + +#: process/processmd5sum.cpp:20 +msgid "Checking disk" +msgstr "" + +#: process/processmd5sum.cpp:62 process/processmd5sum.cpp:90 +#: process/processmd5sum.cpp:108 +msgid "Checking..." +msgstr "" + +#: process/processmd5sum.cpp:93 +msgid "Fail" +msgstr "" + +#: process/processmd5sum.cpp:93 +msgid "FAILED" +msgstr "" + +#: process/processmd5sum.cpp:103 +#, qt-format +msgid "Error happened when checking disk,content: %1" +msgstr "" + +#: status-fix/discmonitor.cpp:112 +msgid "CD Drive" +msgstr "" + +#: status-fix/discmonitor.cpp:112 +msgid "CD/DVD Drive" +msgstr "" + +#: view/aboutdialog.cpp:16 view/kybaboutdialog.cpp:32 +#: view/tip_burnresult.cpp:52 view/windowtitle.cpp:25 +msgid "Close" +msgstr "" + +#: view/burndata.cpp:83 view/mainwindow.cpp:456 view/mainwindow.cpp:580 +#: view/mainwindow.cpp:783 view/mainwindow.cpp:1009 +msgid "BurnData" +msgstr "" + +#: view/burndata.cpp:96 +msgid "Go Back" +msgstr "" + +#: view/burndata.cpp:105 +msgid "Go Forward" +msgstr "" + +#: view/burndata.cpp:126 +msgid "Add" +msgstr "" + +#: view/burndata.cpp:139 view/burndata.cpp:565 view/burndata.cpp:1030 +#: view/burndata.cpp:1045 view/tipschange.cpp:87 view/tipschange.cpp:93 +#: view/tipschange.cpp:99 +msgid "Delete" +msgstr "" + +#: view/burndata.cpp:147 view/burndata.cpp:1067 view/burndata.cpp:1099 +msgid "Clean" +msgstr "" + +#: view/burndata.cpp:164 +msgid "Welcome to use KylinBurner." +msgstr "" + +#: view/burndata.cpp:177 +msgid "ProjectSize:" +msgstr "" + +#: view/burndata.cpp:178 +msgid "0.00 MB" +msgstr "" + +#: view/burndata.cpp:189 +msgid "FileType" +msgstr "" + +#: view/burndata.cpp:190 +msgid "FileSize" +msgstr "" + +#: view/burndata.cpp:191 view/viewfilterfiles.cpp:320 +msgid "FilePath" +msgstr "" + +#: view/burndata.cpp:192 view/viewfilterfiles.cpp:321 +msgid "FileTime" +msgstr "" + +#: view/burndata.cpp:363 +#, qt-format +msgid "Selected %1 files of total %2 files" +msgstr "" + +#: view/burndata.cpp:366 +#, qt-format +msgid "Selected %1 file of total %2 file(s)" +msgstr "" + +#: view/burndata.cpp:562 +msgid "Open" +msgstr "" + +#: view/burndata.cpp:563 +msgid "OpenInLocal" +msgstr "" + +#: view/burndata.cpp:567 +msgid "Properties" +msgstr "" + +#: view/burndata.cpp:677 view/burndata.cpp:751 +msgid "All files" +msgstr "" + +#: view/burndata.cpp:859 +msgid "" +"Click the \"+\" icon\n" +"Or drag the files here to add the files" +msgstr "" + +#: view/burndata.cpp:1030 view/burndata.cpp:1045 +msgid "Delete file(s) selected?" +msgstr "" + +#: view/burndata.cpp:1067 view/burndata.cpp:1099 +msgid "Clean all files(s)?" +msgstr "" + +#: view/burndata.cpp:1138 +msgid "Please input new folder name" +msgstr "" + +#: view/burndata.cpp:1145 +msgid "New Folder cannot be named with empty." +msgstr "" + +#: view/burndata.cpp:1151 +msgid "New Folder cannot be named with /." +msgstr "" + +#: view/burndata.cpp:1159 +msgid "Need less than 103 unicode charset for naming new folder." +msgstr "" + +#: view/burndata.cpp:1165 +#, qt-format +msgid "There is a item named by %1" +msgstr "" + +#: view/burnimage.cpp:30 view/mainwindow.cpp:412 view/mainwindow.cpp:1010 +msgid "BurnImage" +msgstr "" + +#: view/burnimage.cpp:35 view/busnesssetting.cpp:329 +#: view/busnesssetting.cpp:405 view/diskcheck.cpp:26 view/mainwindow.cpp:476 +msgid "Browse" +msgstr "" + +#: view/burnimage.cpp:37 +msgid "Please select ISO file which will to be burned" +msgstr "" + +#: view/burnimage.cpp:38 +msgid "Please select burner which will burned to" +msgstr "" + +#: view/busnesssetting.cpp:31 +msgid "Copyright" +msgstr "" + +#: view/busnesssetting.cpp:33 +msgid "Preparer" +msgstr "" + +#: view/busnesssetting.cpp:34 +msgid "Publisher" +msgstr "" + +#: view/busnesssetting.cpp:35 view/busnesssetting.cpp:100 +msgid "VoumnID" +msgstr "" + +#: view/busnesssetting.cpp:36 +msgid "Temporary File" +msgstr "" + +#: view/busnesssetting.cpp:37 +msgid "Burn Speed" +msgstr "" + +#: view/busnesssetting.cpp:38 +msgid "File System" +msgstr "" + +#: view/busnesssetting.cpp:39 +msgid "Close session" +msgstr "" + +#: view/busnesssetting.cpp:41 +msgid "Data Verfication" +msgstr "" + +#: view/busnesssetting.cpp:95 +msgid "Medium Name" +msgstr "" + +#: view/busnesssetting.cpp:99 +msgid "ISO info" +msgstr "" + +#: view/busnesssetting.cpp:208 view/busnesssetting.cpp:209 +msgid "BurnSetting" +msgstr "" + +#: view/busnesssetting.cpp:223 view/busnesssetting.cpp:224 +msgid "ISOSetting" +msgstr "" + +#: view/busnesssetting.cpp:341 +msgid "Invalid path" +msgstr "" + +#: view/busnesssetting.cpp:342 +#, qt-format +msgid "Cannot choose a read only path %1 to temporary path" +msgstr "" + +#: view/busnesssetting.cpp:415 +msgid "Please select a path" +msgstr "" + +#: view/busnesssetting.cpp:456 +msgid "Name is longer than 32 characters" +msgstr "" + +#: view/busnesssetting.cpp:474 +msgid "Content is longer than 37 characters" +msgstr "" + +#: view/copyimage.cpp:31 view/mainwindow.cpp:1011 +msgid "CopyDisk" +msgstr "" + +#: view/copyimage.cpp:33 view/copyimage.cpp:305 +msgid "SelectPath" +msgstr "" + +#: view/copyimage.cpp:34 +msgid "Please select disk which to be copied" +msgstr "" + +#: view/copyimage.cpp:35 +msgid "Please select the image/disk you want to write" +msgstr "" + +#: view/copyimage.cpp:252 +msgid "Browse ISO Path" +msgstr "" + +#: view/copyimage.cpp:252 +#, qt-format +msgid "Path %1 owner have no write permission." +msgstr "" + +#: view/diskcheck.cpp:24 +msgid "Select a disc" +msgstr "" + +#: view/diskcheck.cpp:25 +msgid "Check the disc using the MD5 file" +msgstr "" + +#: view/diskcheck.cpp:79 view/diskcheck.cpp:105 +msgid "Non md5sum.txt in the current Disk;Verification is not supported" +msgstr "" + +#: view/filefilterrules.cpp:51 +msgid "FileFilterRules" +msgstr "" + +#: view/filefilterrules.cpp:53 +msgid "Filter hidden file(s)." +msgstr "" + +#: view/filefilterrules.cpp:54 +msgid "Filter broken symbol links." +msgstr "" + +#: view/filefilterrules.cpp:55 +msgid "Repleace symbol link file(s)." +msgstr "" + +#: view/kybaboutdialog.cpp:30 +msgid "Version:" +msgstr "" + +# qt-format +#: view/kybaboutdialog.cpp:31 +#, qt-format +msgid "Service & Support: %1" +msgstr "" + +#: view/mainwindow.cpp:104 +msgid "MainWindow" +msgstr "" + +#: view/mainwindow.cpp:188 +msgid "BurnerName" +msgstr "" + +#: view/mainwindow.cpp:189 +msgid "DiskName" +msgstr "" + +#: view/mainwindow.cpp:190 +msgid "Loaded over" +msgstr "" + +#: view/mainwindow.cpp:355 +msgid "kylin-burner process already exists" +msgstr "" + +#: view/mainwindow.cpp:359 +msgid "New kylin-burner process exit" +msgstr "" + +#: view/mainwindow.cpp:446 view/mainwindow.cpp:570 view/mainwindow.cpp:773 +msgid "BurnUDFData" +msgstr "" + +#: view/mainwindow.cpp:460 view/mainwindow.cpp:585 view/mainwindow.cpp:787 +msgid "AppendBurn" +msgstr "" + +#: view/mainwindow.cpp:464 view/mainwindow.cpp:592 view/mainwindow.cpp:791 +msgid "DonotBurn" +msgstr "" + +#: view/mainwindow.cpp:471 view/mainwindow.cpp:600 view/mainwindow.cpp:798 +msgid "cdrom->getBurnFormat() == [NULL]" +msgstr "" + +#: view/mainwindow.cpp:496 +msgid "cdrom find beyond bound " +msgstr "" + +#: view/mainwindow.cpp:625 +#, qt-format +msgid "Delete item %1 of total %2" +msgstr "" + +#: view/mainwindow.cpp:635 +msgid "Remove CDROM from burn data." +msgstr "" + +#: view/settingdatas.cpp:16 +msgid "Add Data" +msgstr "" + +#: view/settingdatas.cpp:18 view/settingdatas.cpp:29 view/settingdatas.cpp:40 +msgid "All" +msgstr "" + +#: view/settingdatas.cpp:20 view/settingdatas.cpp:31 view/settingdatas.cpp:42 +msgid "Current" +msgstr "" + +#: view/settingdatas.cpp:27 +msgid "Delete Data" +msgstr "" + +#: view/settingdatas.cpp:38 +msgid "Clean Data" +msgstr "" + +#: view/settingdatas.cpp:50 +msgid "Duplicate Data" +msgstr "" + +#: view/settingdatas.cpp:52 +msgid "Add Suffix" +msgstr "" + +#: view/settingdatas.cpp:53 +msgid "Replace" +msgstr "" + +#: view/tips.cpp:33 view/tips.cpp:43 view/tips.cpp:68 +msgid "Donot show agian." +msgstr "" + +#: view/viewfilterfiles.cpp:220 +msgid "ViewFilterFile(s)" +msgstr "" + +#: view/viewfilterfiles.cpp:223 +msgid "FilterOptionSetting" +msgstr "" + +#: view/viewfilterfiles.cpp:224 +msgid "RecoverAll" +msgstr "" + +#: view/windowtitle.cpp:27 +msgid "Min" +msgstr "" + +#: view/windowtitle.cpp:29 view/windowtitle.cpp:130 +msgid "Max" +msgstr "" + +#: view/windowtitle.cpp:31 +msgid "Options" +msgstr "" + +#: view/windowtitle.cpp:124 +msgid "Restore" +msgstr "" + +#, qt-format +#~ msgid "SIZE IS %1 | %2" +#~ msgstr "大小为%1 | %2" + +#, qt-format +#~ msgid "Capacity: %1 - used(%2) - free(%3)" +#~ msgstr "容量:%1 - 已使用(%2)- 剩余(%3)" + +#~ msgid "No mount point for empty type medium." +#~ msgstr "空白光盘不存在挂载点" + +#, qt-format +#~ msgid "Mouted at %1, Medium name is %2" +#~ msgstr "挂载在%1,光盘名称为%2" + +#, qt-format +#~ msgid "ProcessBurnUDFData::slotsOutput output==[%1]" +#~ msgstr "growisofs输出:%1" + +#, qt-format +#~ msgid "ProcessBurnUDFData::slotsError output==[%1]" +#~ msgstr "growisofs错误:%1" + +#~ msgid "writing lead-out" +#~ msgstr "关闭导出" + +#~ msgid "reloading tray" +#~ msgstr "关闭轨道" + +#~ msgid "The minimized main screen is displayed" +#~ msgstr "将已打开刻录进程的最小化主窗口MainWindow重新显示" + +#~ msgid "The MainWindow is set to the topmost window" +#~ msgstr "将已打开刻录进程的主窗口MainWindow设置为顶层窗口" + +#~ msgid "The MainWindow is topmost windows" +#~ msgstr "已打开刻录进程的主窗口MainWindow已经是顶层窗口" + +#, fuzzy, qt-format +#~ msgid "Cannot choose a read only path %1 to storage path" +#~ msgstr "无法选在只读路径" + +#~ msgid "Cannot find help document." +#~ msgstr "无法找到帮助文档" + +#, qt-format +#~ msgid "Change CDROM, block name is %1" +#~ msgstr "光驱变更,块设备名称为%1" + +#, qt-format +#~ msgid "Change CDROM %1" +#~ msgstr "光驱%1发生变更" + +#, qt-format +#~ msgid "There is no medium in CDROM %1" +#~ msgstr "光驱%1内不存在光盘" + +#, fuzzy +#~ msgid "DVD+R DL medium is burning..." +#~ msgstr "光盘正在刻录..." + +#~ msgid "Burner has started..." +#~ msgstr "刻录已启动" + +#~ msgid "Starting" +#~ msgstr "启动中..." + +#~ msgid "Burner has been started,do not start again." +#~ msgstr "刻录已经启动,不可再次启动" + +#~ msgid "Recovery all" +#~ msgstr "恢复所有" + +#~ msgid "Recovery selected" +#~ msgstr "恢复选中" + +#~ msgid "Geting Menu is NULL , click menu is null" +#~ msgstr "得到了一个空的Menu,点击menu会弹不出菜单栏" + +#~ msgid "User canceled when add file(s)" +#~ msgstr "文件添加过程中,用户取消" + +#, fuzzy +#~ msgid "Burn_UDF_AB" +#~ msgstr "刻录UDF" + +#~ msgid "root" +#~ msgstr "根节点" + +#~ msgid "Please press button [Add] or drag file(s) to here for adding file(s)" +#~ msgstr "点击“添加”按钮或者将文件拖放进此区域,来添加文件。" + +#~ msgid "Rules" +#~ msgstr "规则" + +#~ msgid "Delete(&D)" +#~ msgstr "删除(&D)" + +#~ msgid "Clean(&C)" +#~ msgstr "清空(&C)" + +#~ msgid "NewFolder(&N)" +#~ msgstr "新建文件夹(&N)" + +#~ msgid "BurnerSetting" +#~ msgstr "刻录设置" + +#~ msgid "Effictive range." +#~ msgstr "生效范围" + +#~ msgid "Whole" +#~ msgstr "全部" + +#~ msgid "Current node" +#~ msgstr "当前节点" + +#~ msgid "CopyImage" +#~ msgstr "拷贝镜像" + +#~ msgid "Please browse a valid path or empty disk:" +#~ msgstr "请浏览一个有效路径或选择一个空白光盘:" + +#~ msgid "Get wrong response when load medium information." +#~ msgstr "加载光盘信息时反馈错误响应" + +#~ msgid "CDROM %1 already loaded." +#~ msgstr "光驱%1已经被加载。" + +#~ msgid "Calling MAIN to add new inserted CDROM, block name is /dev/%1" +#~ msgstr "调用主业务逻辑来添加新插入的光驱,块设备名称为:/dev/%1" + +#~ msgid "Calling MAIN to change old CDROM, block name is /dev/%1" +#~ msgstr "调用主业务逻辑变更已存在的光驱,块设备名称为:/dev/%1" + +#~ msgid "Calling MAIN to remove old CDROM, block name is /dev/%1" +#~ msgstr "调用主业务逻辑移除已存在的光驱,块设备名称为:/dev/%1" + +#~ msgid "%1 - %2 (%3) medium, left space : %4" +#~ msgstr "%1 - %2 (%3) 光盘,剩余空间 %4" + +#~ msgid "Cannot added %1 to %2" +#~ msgstr "无法将%1添加至%2" + +#~ msgid "Cannot add %1 to %2" +#~ msgstr "无法将%1添加至%2" + +#~ msgid "Process started" +#~ msgstr "进程开始" + +#~ msgid "Arg.%1 : %2" +#~ msgstr "参数%1 - %2" + +#~ msgid "Clean all item(s) under %1?" +#~ msgstr "是否清空%1下所有项目?" + +#~ msgid "%1 error : %2" +#~ msgstr "%1 错误:%2" + +#~ msgid "" +#~ "Write error. Disc may be damaged, please clean or replace a disc and try " +#~ "again." +#~ msgstr "写错误。光盘可能损坏,请清洁或更换一个光盘再尝试。" + +#~ msgid "Menu" +#~ msgstr "选项" + +#~ msgid "&Add" +#~ msgstr "添加(&A)" + +#~ msgid "&Delete" +#~ msgstr "删除(&D)" + +#~ msgid "&Clean" +#~ msgstr "清空(&C)" + +#~ msgid "&NewFolder" +#~ msgstr "新建文件夹(&N)" + +#~ msgid "TB" +#~ msgstr "TB" + +#~ msgid "PB" +#~ msgstr "PB" + +#~ msgid "Loaded iso path <%1>" +#~ msgstr "ISO文件路径<%1>已加载" + +#~ msgid "Add new name for %1" +#~ msgstr "为%1增加新名称" + +#~ msgid "version:" +#~ msgstr "版本信息" + +#~ msgid "empty DVD+RW mediun." +#~ msgstr "空白的DVD+RW光盘" + +#~ msgid "After ISO:" +#~ msgstr "创建镜像后:" + +#~ msgid "After burned:" +#~ msgstr "刻录后:" + +#~ msgid "Open belong URL" +#~ msgstr "本地打开" + +#~ msgid "Version: %1" +#~ msgstr "版本:%1" + +#~ msgid "" +#~ "Burner is an application developed by Kylinsoft, simple interface " +#~ "beautiful, interactive friendly daily burn software. It includes the " +#~ "creation of mirror image, data burning, data additional burning, mirror " +#~ "burning, image extraction and CD copy and other users daily required " +#~ "scenes, and additional support for the selection of physical optical " +#~ "drive, pop-up and other operations, to avoid the trouble of the user " +#~ "operation of physical entities." +#~ msgstr "" +#~ "刻录为一款由麒麟软件研发的,界面简洁美观,交互性友好的日常刻录软件。其包含" +#~ "创建镜像、数据刻录、数据追加刻录、镜像刻录、镜像提取及光盘复制等用户日常所" +#~ "需场景,同时额外支持对物理光驱的选择、弹出等操作,避免了用户操作物理实体的" +#~ "麻烦。" + +#~ msgid "DoDiskCheck" +#~ msgstr "执行光盘校验" + +#~ msgid "medium load/pop-up" +#~ msgstr "光盘加载/弹出" + +#~ msgid "Set burn speed %1" +#~ msgstr "设置刻录速度为%1" + +#~ msgid "Error when burn image. %1" +#~ msgstr "刻录镜像过程中产生错误。%1" + +#~ msgid "%1 finished : exit code : %2 status : %3" +#~ msgstr "%1完成,退出码:%2,状态:%3" + +#~ msgid "Minimize" +#~ msgstr "最小化" + +#~ msgid "Maximize" +#~ msgstr "最大化" + +#~ msgid "Do SCSI CDB [%1] failed.%2" +#~ msgstr "执行SCSI命令[%1]失败。%2" + +#~ msgid "CDROM have no medium." +#~ msgstr "光驱内没有光盘。" + +#~ msgid "To be supported in KylinBurner %1" +#~ msgstr "刻录有待支持%1" + +#~ msgid "No iso file." +#~ msgstr "没有ISO文件" diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/po/zh_CN.po kylin-burner-3.2.0.1kylin1k32.01/src/po/zh_CN.po --- kylin-burner-3.2.0.1kylin1k32.01/src/po/zh_CN.po 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/po/zh_CN.po 2025-03-11 20:49:32.000000000 +0800 @@ -1214,7 +1214,7 @@ #: process/processburndata.cpp:637 msgid "completed successfully." -msgstr "" +msgstr "刻录成功" #: process/processburndata.cpp:662 #, qt-format diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processbasic.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processbasic.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processbasic.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processbasic.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -20,7 +20,7 @@ m_u32Icon(0), m_oIcon(QIcon::fromTheme("ukui-loading-0-symbolic")) { - connect(MODAL, SIGNAL(rejected()), this, SLOT(slotsCancel())); + connect(MODAL, &ModalDialog::rejected, this, &ProcessBasic::slotsCancel); connect(this, SIGNAL(title(QString)), ModalDialog::instance()->getPageByIndex(ModalDialog::Progress), SIGNAL(title(QString))); connect(this, SIGNAL(setRange(int,int)), ModalDialog::instance()->getPageByIndex(ModalDialog::Progress), SIGNAL(setRange(int, int))); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndata.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndata.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndata.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndata.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -287,6 +287,8 @@ } m_iCopied = 0; + //disable cancel btn before copy + emit cancel(false); connect(m_root, &DataDirectory::copied, this, &ProcessBurnData::slotsCopy); m_root->copy(); if(!DataFile::isCopySuccess) { @@ -529,7 +531,7 @@ QString output = m_oProcess->readAllStandardError(); QList<QString> errorInfoList; - errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-?" << ":-[" + errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-[" << "xorriso : aborting" << "seems to be mounted!" << "target is busy" << "Cannot open busy device"; bool isErrorInfo = false; @@ -544,8 +546,7 @@ } } - if (output.contains("target is busy") || output.contains("Cannot open busy device") - || output.contains("target is busy") || output.contains("Device or resource busy")) { + if (output.contains("target is busy") || output.contains("Cannot open busy device")) { m_umountError = false; } @@ -569,17 +570,6 @@ } } - if (output.contains(":-?")) { - LOGGER->info(QString("[%1] [%2] 发现错误: [%3], m_oKeep = %4").arg(__func__).arg(__LINE__).arg(output).arg(m_oKeep)); - if ((m_iErrorInfoNum == 1) && output.contains("volume descriptor mismatch, did you use same genisoimage options")){ - m_oKeep = true; - LOGGER->info(QString("[%1] [%2] 出现 :-( volume descriptor mismatch, did you use same genisoimage options, 不认为是错误输出 设置m_oKeep = [%3]").arg(__func__).arg(__LINE__).arg(m_oKeep)); - } else { - m_oKeep = false; - LOGGER->info(QString("file:[%1] line:[%2] : m_oKeep = [%3] m_iErrorInfoNum= [%4] ").arg(__FILE__).arg(__LINE__).arg(m_oKeep).arg(m_iErrorInfoNum)); - } - } - if(output.contains("No such device")) { /** CD盘刻录镜像时,光驱拔出后报错,进程需等待10分钟结束,不会立即结束,用户感知刻录镜像 * 失败后不弹框,所以直接杀死进程 diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndatadl.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndatadl.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndatadl.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processburndatadl.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -402,7 +402,7 @@ output = m_oProcess->readAllStandardError(); QList<QString> errorInfoList; - errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-[" << ":-?"; + errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-["; bool isErrorInfo = false; foreach (QString index, errorInfoList) { diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnimage.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnimage.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnimage.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnimage.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -306,7 +306,7 @@ QString output = m_oProcess->readAllStandardError(); QList<QString> errorInfoList; - errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-(" << ":-[" << ":-?" + errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-(" << ":-[" << "xorriso : aborting" << "seems to be mounted!" << "target is busy" << "Cannot open busy device"; bool isErrorInfo = false; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnudfdata.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnudfdata.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnudfdata.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processburnudfdata.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -295,7 +295,7 @@ LOGGER->info(QString("ProcessBurnUDFData %1").arg(output)); QList<QString> errorInfoList; - errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-[" << ":-?" << "target is busy" + errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-[" << "target is busy" << "Cannot open busy device";; bool isErrorInfo = false; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processcopydisk.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processcopydisk.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processcopydisk.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processcopydisk.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -168,7 +168,7 @@ QString output = m_oProcess->readAllStandardError(); QList<QString> errorInfoList; - errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-(" << ":-?" << ":-["; + errorInfoList << "Input/output error" << "OPC failed." << "FATAL:" << ":-(" << ":-["; bool isErrorInfo = false; foreach (QString index, errorInfoList) { diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processisoinfo.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processisoinfo.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processisoinfo.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processisoinfo.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -16,7 +16,10 @@ { DataCDROM *cdrom; cdrom = static_cast<DataCDROM *>(m_oCDROM); - if (!cdrom) LOGGER->error(_("ERROR:ISOINFO-PREPARE")); + if (!cdrom) { + LOGGER->error(_("ERROR:ISOINFO-PREPARE")); + return false; + } m_oProcess->setProgram("isoinfo"); m_oArguments << "-d" << "-i" << cdrom->device(); return true; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processmd5sum.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processmd5sum.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processmd5sum.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processmd5sum.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -68,8 +68,10 @@ bool ProcessMd5sum::worked() { - if (m_bCancel) return false; - if (QProcess::NormalExit != m_oProcess->exitStatus() && 0 != m_numFailedFile) return false; + if (m_bCancel) + return false; + if (QProcess::NormalExit != m_oProcess->exitStatus() && 0 != m_numFailedFile) + return false; return m_oKeep; } @@ -92,8 +94,10 @@ setValue(m_iProgress, m_oIcon, _("Checking...")); - if ( 100 != m_iProgress && !tmpOutput.contains("TRANS.TBL") && !tmpOutput.contains("wps-office") - && (tmpOutput.contains(_("Fail")) || tmpOutput.contains(_("FAILED"))) ) { + if (100 != m_iProgress + && !tmpOutput.contains("TRANS.TBL") + && !tmpOutput.contains("wps-office") + && (tmpOutput.contains(_("Fail")) || tmpOutput.contains(_("FAILED"))) ) { ++m_numFailedFile; } } @@ -101,7 +105,6 @@ void ProcessMd5sum::slotsError() { - m_oKeep = false; QString error = m_oProcess->readAllStandardError(); LOGGER->error(_("Error happened when checking disk,content: %1").arg(error)); } @@ -114,8 +117,10 @@ if (QProcess::NormalExit == status && 0 == errCode) { LOGGER->info( QString("file:[%1] line:[%2] : slotsFinished() Medium md5sum data success.").arg(__FILE__).arg(__LINE__) ); QDir::setCurrent(QDir::homePath()); - } - else if (0 == m_numFailedFile) { + }else if (QProcess::NormalExit == status && 1 == errCode && (m_oKeep == false)) { + LOGGER->error( QString("file:[%1] line:[%2] : slotsFinished() Medium md5sum data failure. [%3]").arg(__FILE__).arg(__LINE__).arg(m_oProcess->errorString()) ); + QDir::setCurrent(QDir::homePath()); + }else if (0 == m_numFailedFile) { m_oKeep = true; LOGGER->info( QString("file:[%1] line:[%2] : slotsFinished() Medium md5sum data success.").arg(__FILE__).arg(__LINE__) ); QDir::setCurrent(QDir::homePath()); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/process/processmediainfo.cpp kylin-burner-3.2.0.1kylin1k32.01/src/process/processmediainfo.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/process/processmediainfo.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/process/processmediainfo.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -16,7 +16,6 @@ bool ProcessMediaInfo::prepare() { - if (!MODAL->isHidden()) MODAL->close(); disconnect(this, SIGNAL(success(QString)), ModalDialog::instance()->getPageByIndex(ModalDialog::Tip), SIGNAL(success(QString))); disconnect(this, SIGNAL(fail(QString)), ModalDialog::instance()->getPageByIndex(ModalDialog::Tip), SIGNAL(fail(QString))); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discmonitor.cpp kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discmonitor.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discmonitor.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discmonitor.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -153,9 +153,8 @@ * g_volume_monitor_get_volumes()会把空光驱也当做有一个volume,因此需要使用scsi修正这个判断 */ QStringList queryAllDiscDevice(GVolumeMonitor* volumeMonitor){ - GDrive* tmpDrive; - GList* drivesList; - GList* p = nullptr; + GDrive* tmpDrive = nullptr; + GList* drivesList = nullptr; QStringList tmpList; bool driveHasMedia = false; char* driveIdentifier = nullptr; //如 /dev/sr0 @@ -173,7 +172,11 @@ tmpVolumeMonitor = nullptr; } //2. 筛选保留光盘设备 - for(p=drivesList; p!=nullptr; p=p->next){ + GList* p = drivesList; + if (!p) { + return tmpList; + } + for(p; p!=nullptr; p=p->next){ tmpDrive = G_DRIVE(p->data); driveHasMedia = g_drive_has_media(tmpDrive); driveIdentifier = g_drive_get_identifier(tmpDrive, G_DRIVE_IDENTIFIER_KIND_UNIX_DEVICE); @@ -181,7 +184,6 @@ if(driveHasMedia) //空光驱不保留 tmpList.append(QString(driveIdentifier)); } - //qDebug()<<__func__<<__LINE__<<driveIdentifier<<driveHasMedia; g_free(driveIdentifier); driveIdentifier = nullptr; } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.cpp kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -1,4 +1,6 @@ #include "discread.h" +#include "src/data/deviceglobals.h" +#include "src/data/mmc.h" #include <QDebug> #include <QDBusReply> #include <QDBusConnection> @@ -125,7 +127,7 @@ DiscScsi scsi(mDevice); scsi[0] = GPCMD_TEST_UNIT_READY;//0x00 scsi[5] = 0; - mIsReady = scsi.transport(); + mIsReady = (scsi.transport() == 0) ? true : false ; qDebug()<<"["<<mDevice<<"]"<<(mIsReady?"is ready!":"is not ready!"); } @@ -180,8 +182,10 @@ } mLabel = mBlockInf->property("IdLabel").toString(); mFilesystemType = mBlockInf->property("IdType").toString(); + mFilesystemVersion = mBlockInf->property("IdVersion").toString(); qDebug() << __func__ << __LINE__ << "Udisk2获取的 mLabel = " << mLabel; qDebug() << __func__ << __LINE__ << "Udisk2获取的 mFilesystemType = " << mFilesystemType; + qDebug() << __func__ << __LINE__ << "Udisk2获取的 mFilesystemVersion = " << mFilesystemVersion; } /* 检测盘盘片可能损坏的逻辑: @@ -232,13 +236,15 @@ if(readDiscInformation(&infoData)){ discInfo = (disc_info_t*)infoData; - mCanErase = discInfo->erasable; // - qDebug()<<"["<<mDevice<<"]"<<(mCanErase?"can erase!":"can not erase!"); - if(1 == discInfo->status) - mCanAppend = true; + if (discInfo) { + mCanErase = discInfo->erasable; + qDebug()<<"["<<mDevice<<"]"<<(mCanErase?"can erase!":"can not erase!"); + if(1 == discInfo->status) + mCanAppend = true; - free(infoData); - infoData = nullptr; + free(infoData); + infoData = nullptr; + } } if(mIsBlank) { @@ -250,8 +256,8 @@ * 需要使用profile修正 */ readDiscProfile(); - if( (mProfile & MEDIA_DVD_ALL) && (mProfile & (MEDIA_DVD_PLUS_RW | MEDIA_DVD_RW_OVWR)) ){ - //if( (mProfile & MEDIA_DVD_ALL) && (mProfile & MEDIA_DVD_PLUS_RW) ){ + if( (mProfile & Device::MEDIA_DVD_ALL) && (mProfile & (Device::MEDIA_DVD_PLUS_RW | Device::MEDIA_DVD_RW_OVWR)) ){ + //if( (mProfile & Device::MEDIA_DVD_ALL) && (mProfile & Device::MEDIA_DVD_PLUS_RW) ){ qDebug()<<"["<<mDevice<<"] fix appendable property with profile for DVD+RW/DVD-RW."; mCanAppend |= true; } @@ -311,9 +317,9 @@ scsi[9] = 0; dataLen = 0; - transferRet = scsi.transport(SCSI_READ, header, 2); - if(transferRet) - dataLen = from2Byte(header) + 2u; + transferRet = scsi.transport(TR_DIR_READ, header, 2); + if(!transferRet) + dataLen = Device::from2Byte(header) + 2u; else qDebug()<<"["<<mDevice<<"] READ DISC INFORMATION length det failed!"; @@ -327,12 +333,12 @@ scsi[7] = dataLen >> 8; scsi[8] = dataLen; - transferRet = scsi.transport(SCSI_READ, data, dataLen); - if(transferRet){ - quint16 tmp = from2Byte((const uchar*)data) + 2; + transferRet = scsi.transport(TR_DIR_READ, data, dataLen); + if(!transferRet){ + quint16 tmp = Device::from2Byte((const uchar*)data) + 2; uchar* newData = (uchar*)realloc(data,qMin<uint>(dataLen,tmp)); if(newData) //防止失败时内存泄露 - data = newData; + *infoData = newData; return true; }else{ qDebug()<<"["<<mDevice<<"] READ DISC INFORMATION with real length "<<dataLen<<" failed!"; @@ -340,12 +346,6 @@ } } -quint16 from2Byte(const uchar *str){ - if(nullptr == str) - return 0; - return (str[0]<<8 & 0xFF00) | (str[1] & 0xFF); -} - /* 具体化DVD盘的类型 */ QString dvdMediaType(const QString& type){ @@ -399,24 +399,24 @@ scsi[8] = 8; scsi[9] = 0; - transferRet = scsi.transport(SCSI_READ, profileBuffer, 8); - if(transferRet){ - short profile = from2Byte((const uchar*)&profileBuffer[6]); + transferRet = scsi.transport(TR_DIR_READ, profileBuffer, 8); + if(!transferRet){ + short profile = Device::from2Byte((const uchar*)&profileBuffer[6]); switch(profile){ - case 0x00: mProfile = MEDIA_NONE; break; - case 0x08: mProfile = MEDIA_CD_ROM; break; - case 0x09: mProfile = MEDIA_CD_R; break; - case 0x0A: mProfile = MEDIA_CD_RW; break; - case 0x10: mProfile = MEDIA_DVD_ROM; break; - case 0x11: mProfile = MEDIA_DVD_R_SEQ; break; - case 0x12: mProfile = MEDIA_DVD_RAM; break; - case 0x13: mProfile = MEDIA_DVD_RW_OVWR; break; - case 0x14: mProfile = MEDIA_DVD_RW_SEQ; break; - case 0x15: mProfile = MEDIA_DVD_R_DL_SEQ; break; - case 0x16: mProfile = MEDIA_DVD_R_DL_JUMP; break; - case 0x1A: mProfile = MEDIA_DVD_PLUS_RW; break; - case 0x1B: mProfile = MEDIA_DVD_PLUS_R; break; - case 0x2B: mProfile = MEDIA_DVD_PLUS_R_DL; break; + case 0x00: mProfile = Device::MEDIA_NONE; break; + case 0x08: mProfile = Device::MEDIA_CD_ROM; break; + case 0x09: mProfile = Device::MEDIA_CD_R; break; + case 0x0A: mProfile = Device::MEDIA_CD_RW; break; + case 0x10: mProfile = Device::MEDIA_DVD_ROM; break; + case 0x11: mProfile = Device::MEDIA_DVD_R_SEQ; break; + case 0x12: mProfile = Device::MEDIA_DVD_RAM; break; + case 0x13: mProfile = Device::MEDIA_DVD_RW_OVWR; break; + case 0x14: mProfile = Device::MEDIA_DVD_RW_SEQ; break; + case 0x15: mProfile = Device::MEDIA_DVD_R_DL_SEQ; break; + case 0x16: mProfile = Device::MEDIA_DVD_R_DL_JUMP; break; + case 0x1A: mProfile = Device::MEDIA_DVD_PLUS_RW; break; + case 0x1B: mProfile = Device::MEDIA_DVD_PLUS_R; break; + case 0x2B: mProfile = Device::MEDIA_DVD_PLUS_R_DL; break; default: break; } }else{ @@ -457,3 +457,7 @@ QString DiscRead::discFilesystemType() const{ return mFilesystemType; } + +QString DiscRead::discFilesystemVersion() const{ + return mFilesystemVersion; +} diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.h kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.h --- kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discread.h 2025-03-11 20:49:32.000000000 +0800 @@ -2,7 +2,6 @@ #define DISCREAD_H #include "discscsi.h" -#include "common.h" #include <QObject> #include <QDBusInterface> #include <QDBusPendingCall> @@ -35,6 +34,7 @@ QString discLabel() const; //光盘卷标,如果光盘未设置卷标,则该函数返回QSting(""); QString discMediaType() const; //光盘介质类型 QString discFilesystemType() const; //光盘内部文件系统类型 + QString discFilesystemVersion() const; //光盘内部UDF文件系统版本 void work(); //读取光盘状态信息的入口 private: void workFromBlock(); //敲定光盘卷标以及文件系统类型信息 @@ -64,6 +64,7 @@ QString mDevice; //eg "/dev/sr0" QString mMediaType; //eg DVD+RW CD-RW DVD-R QString mFilesystemType; //eg udf iso9660 + QString mFilesystemVersion; //eg 1.02 2.01 QDBusInterface* mDriveInf; QDBusInterface* mBlockInf; @@ -71,7 +72,6 @@ QDBusInterface* mFilesystemInf; }; -quint16 from2Byte(const uchar *str); QString dvdMediaType(const QString& type); #endif // DISCREAD_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.cpp kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -2,6 +2,116 @@ #include <QDebug> //#include <ukui-log4qt.h> +QString commandString( const unsigned char& command ) +{ + if( command == MMC_BLANK ) + return "BLANK"; + if( command == MMC_CLOSE_TRACK_SESSION ) + return "CLOSE TRACK/SESSION"; + if( command == MMC_ERASE ) + return "ERASE"; + if( command == MMC_FORMAT_UNIT ) + return "FORMAT UNIT"; + if( command == MMC_GET_CONFIGURATION ) + return "GET CONFIGURATION"; + if( command == MMC_GET_EVENT_STATUS_NOTIFICATION ) + return "GET EVENT STATUS NOTIFICATION"; + if( command == MMC_GET_PERFORMANCE ) + return "GET PERFORMANCE"; + if( command == MMC_INQUIRY ) + return "INQUIRY"; + if( command == MMC_LOAD_UNLOAD_MEDIUM ) + return "LOAD/UNLOAD MEDIUM"; + if( command == MMC_MECHANISM_STATUS ) + return "MECHANISM STATUS"; + if( command == MMC_MODE_SELECT ) + return "MODE SELECT"; + if( command == MMC_MODE_SENSE ) + return "MODE SENSE"; + if( command == MMC_PAUSE_RESUME ) + return "PAUSE/RESUME"; + if( command == MMC_PLAY_AUDIO_10 ) + return "PLAY AUDIO (10)"; + if( command == MMC_PLAY_AUDIO_12 ) + return "PLAY AUDIO (12)"; + if( command == MMC_PLAY_AUDIO_MSF ) + return "PLAY AUDIO (MSF)"; + if( command == MMC_PREVENT_ALLOW_MEDIUM_REMOVAL ) + return "PREVENT ALLOW MEDIUM REMOVAL"; + if( command == MMC_READ_10 ) + return "READ (10)"; + if( command == MMC_READ_12 ) + return "READ (12)"; + if( command == MMC_READ_BUFFER ) + return "READ BUFFER"; + if( command == MMC_READ_BUFFER_CAPACITY ) + return "READ BUFFER CAPACITY"; + if( command == MMC_READ_CAPACITY ) + return "READ CAPACITY"; + if( command == MMC_READ_CD ) + return "READ CD"; + if( command == MMC_READ_CD_MSF ) + return "READ CD MSF"; + if( command == MMC_READ_DISC_INFORMATION ) + return "READ DISC INFORMATION"; + if( command == MMC_READ_DVD_STRUCTURE ) + return "READ DVD STRUCTURE"; + if( command == MMC_READ_FORMAT_CAPACITIES ) + return "READ FORMAT CAPACITIES"; + if( command == MMC_READ_SUB_CHANNEL ) + return "READ SUB-CHANNEL"; + if( command == MMC_READ_TOC_PMA_ATIP ) + return "READ TOC/PMA/ATIP"; + if( command == MMC_READ_TRACK_INFORMATION ) + return "READ TRACK INFORMATION"; + if( command == MMC_REPAIR_TRACK ) + return "REPAIR TRACK"; + if( command == MMC_REPORT_KEY ) + return "REPORT KEY"; + if( command == MMC_REQUEST_SENSE ) + return "REQUEST SENSE"; + if( command == MMC_RESERVE_TRACK ) + return "RESERVE TRACK"; + if( command == MMC_SCAN ) + return "SCAN"; + if( command == MMC_SEEK_10 ) + return "SEEK (10)"; + if( command == MMC_SEND_CUE_SHEET ) + return "SEND CUE SHEET"; + if( command == MMC_SEND_DVD_STRUCTURE ) + return "SEND DVD STRUCTURE"; + if( command == MMC_SEND_KEY ) + return "SEND KEY"; + if( command == MMC_SEND_OPC_INFORMATION ) + return "SEND OPC INFORMATION"; + if( command == MMC_SET_SPEED ) + return "SET SPEED"; + if( command == MMC_SET_READ_AHEAD ) + return "SET READ AHEAD"; + if( command == MMC_SET_STREAMING ) + return "SET STREAMING"; + if( command == MMC_START_STOP_UNIT ) + return "START STOP UNIT"; + if( command == MMC_STOP_PLAY_SCAN ) + return "STOP PLAY/SCAN"; + if( command == MMC_SYNCHRONIZE_CACHE ) + return "SYNCHRONIZE CACHE"; + if( command == MMC_TEST_UNIT_READY ) + return "TEST UNIT READY"; + if( command == MMC_VERIFY_10 ) + return "VERIFY (10)"; + if( command == MMC_WRITE_10 ) + return "WRITE (10)"; + if( command == MMC_WRITE_12 ) + return "WRITE (12)"; + if( command == MMC_WRITE_AND_VERIFY_10 ) + return "WRITE AND VERIFY (10)"; + if( command == MMC_WRITE_BUFFER ) + return "WRITE BUFFER"; + + return "unknown"; +} + DiscScsi::DiscScsi(){ } @@ -39,15 +149,64 @@ mDeviceHandle = ::open(mDevice.toUtf8().constData(), O_NONBLOCK|O_RDONLY); } +QString DiscScsi::senseKeyToString(int key) +{ + switch( key ) { + case 0x0: + return "NO SENSE (2)"; + case 0x1: + return "RECOVERED ERROR (1)"; + case 0x2: + return "NOT READY (2)"; + case 0x3: + return "MEDIUM ERROR (3)"; + case 0x4: + return "HARDWARE ERROR (4)"; + case 0x5: + return "ILLEGAL REQUEST (5)"; + case 0x6: + return "UNIT ATTENTION (6)"; + case 0x7: + return "DATA PROTECT (7)"; + case 0x8: + return "BLANK CHECK (8)"; + case 0x9: + return "VENDOR SPECIFIC (9)"; + case 0xA: + return "COPY ABORTED (A)"; + case 0xB: + return "ABORTED COMMAND (B)"; + case 0xC: + return "0xC is obsolete... ??"; + } + + return "unknown"; +} + +void DiscScsi::debugError(int command, int errorCode, int senseKey, int asc, int ascq) +{ + qDebug() << "(DiscScsi) failed: "; + qDebug() << " command: " << QString("%1 (%2)") + .arg( commandString( command ) ) + .arg( QString::number(command, 16) ); + qDebug() << " errorcode: " << QString::number(errorCode, 16); + qDebug() << " sense key: " << senseKeyToString(senseKey); + qDebug() << " asc: " << QString::number(asc, 16); + qDebug() << " ascq: " << QString::number(ascq, 16); + qDebug(); +} + /* 数据传输接口,用于从/dev/srx设备中读取信息,或者向/dev/srx中写入信息 * @return 成功true,失败false */ -bool DiscScsi::transport(DiscScsiTransferDirection dir, - void *buffer, ulong length){ +int DiscScsi::transport(TransportDirection dir, + void *buffer, ulong length) +{ int ret; + if(-1 == mDeviceHandle){ qDebug()<<"open "<<mDevice<<" failed..."; - return false; + return -1; } mSgIo.interface_id = 'S'; @@ -59,10 +218,10 @@ mSgIo.dxfer_len = length; mSgIo.timeout = 5000; switch(dir){ - case SCSI_READ: + case TR_DIR_READ: mSgIo.dxfer_direction = SG_DXFER_FROM_DEV; break; - case SCSI_WRITE: + case TR_DIR_WRITE: mSgIo.dxfer_direction = SG_DXFER_TO_DEV; break; default: @@ -75,13 +234,19 @@ ret = -1; if(-1 == ret){ + debugError(mCmd.cmd[0], + mSense.error_code, + mSense.sense_key, + mSense.asc, + mSense.ascq ); + int errCode = (mSense.error_code<<24 & 0xF000) | (mSense.sense_key <<16 & 0x0F00) | (mSense.asc <<8 & 0x00F0) | (mSense.ascq & 0x000F); - return errCode!=0? false:true; + return errCode != 0 ? errCode : 1; + } else { + return 0; } - - return true; } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.h kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.h --- kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/status-fix/discscsi.h 2025-03-11 20:49:32.000000000 +0800 @@ -14,9 +14,66 @@ #include <QString> -enum DiscScsiTransferDirection{ - SCSI_READ, //读设备 - SCSI_WRITE +const unsigned char MMC_BLANK = 0xA1; +const unsigned char MMC_CLOSE_TRACK_SESSION = 0x5B; +const unsigned char MMC_ERASE = 0x2C; +const unsigned char MMC_FORMAT_UNIT = 0x04; +const unsigned char MMC_GET_CONFIGURATION = 0x46; +const unsigned char MMC_GET_EVENT_STATUS_NOTIFICATION = 0x4A; +const unsigned char MMC_GET_PERFORMANCE = 0xAC; +const unsigned char MMC_INQUIRY = 0x12; +const unsigned char MMC_LOAD_UNLOAD_MEDIUM = 0xA6; +const unsigned char MMC_MECHANISM_STATUS = 0xBD; +const unsigned char MMC_MODE_SELECT = 0x55; +const unsigned char MMC_MODE_SENSE = 0x5A; +const unsigned char MMC_PAUSE_RESUME = 0x4B; +const unsigned char MMC_PLAY_AUDIO_10 = 0x45; +const unsigned char MMC_PLAY_AUDIO_12 = 0xA5; +const unsigned char MMC_PLAY_AUDIO_MSF = 0x47; +const unsigned char MMC_PREVENT_ALLOW_MEDIUM_REMOVAL = 0x1E; +const unsigned char MMC_READ_10 = 0x28; +const unsigned char MMC_READ_12 = 0xA8; +const unsigned char MMC_READ_BUFFER = 0x3C; +const unsigned char MMC_READ_BUFFER_CAPACITY = 0x5C; +const unsigned char MMC_READ_CAPACITY = 0x25; +const unsigned char MMC_READ_CD = 0xBE; +const unsigned char MMC_READ_CD_MSF = 0xB9; +const unsigned char MMC_READ_DISC_INFORMATION = 0x51; +const unsigned char MMC_READ_DVD_STRUCTURE = 0xAD; +const unsigned char MMC_READ_DISC_STRUCTURE = 0xAD; /**< READ DVD STRUCTURE has been renamed to READ DISC STRUCTURE in MMC5 */ +const unsigned char MMC_READ_FORMAT_CAPACITIES = 0x23; +const unsigned char MMC_READ_SUB_CHANNEL = 0x42; +const unsigned char MMC_READ_TOC_PMA_ATIP = 0x43; +const unsigned char MMC_READ_TRACK_INFORMATION = 0x52; +const unsigned char MMC_REPAIR_TRACK = 0x58; +const unsigned char MMC_REPORT_KEY = 0xA4; +const unsigned char MMC_REQUEST_SENSE = 0x03; +const unsigned char MMC_RESERVE_TRACK = 0x53; +const unsigned char MMC_SCAN = 0xBA; +const unsigned char MMC_SEEK_10 = 0x2B; +const unsigned char MMC_SEND_CUE_SHEET = 0x5D; +const unsigned char MMC_SEND_DVD_STRUCTURE = 0xBF; +const unsigned char MMC_SEND_KEY = 0xA3; +const unsigned char MMC_SEND_OPC_INFORMATION = 0x54; +const unsigned char MMC_SET_SPEED = 0xBB; +const unsigned char MMC_SET_READ_AHEAD = 0xA7; +const unsigned char MMC_SET_STREAMING = 0xB6; +const unsigned char MMC_START_STOP_UNIT = 0x1B; +const unsigned char MMC_STOP_PLAY_SCAN = 0x4E; +const unsigned char MMC_SYNCHRONIZE_CACHE = 0x35; +const unsigned char MMC_TEST_UNIT_READY = 0x00; +const unsigned char MMC_VERIFY_10 = 0x2F; +const unsigned char MMC_WRITE_10 = 0x2A; +const unsigned char MMC_WRITE_12 = 0xAA; +const unsigned char MMC_WRITE_AND_VERIFY_10 = 0x2E; +const unsigned char MMC_WRITE_BUFFER = 0x3B; + +QString commandString( const unsigned char& command ); + +enum TransportDirection { + TR_DIR_NONE, + TR_DIR_READ, + TR_DIR_WRITE }; /* disk(硬盘) disc(光盘)都属于scsi设备 @@ -25,17 +82,17 @@ class DiscScsi { public: - - -public: DiscScsi(); DiscScsi(QString device); ~DiscScsi(); uchar& operator[](ulong i);//重载[],用于修改mCmd - bool transport(DiscScsiTransferDirection dir=SCSI_READ, + int transport(TransportDirection dir=TR_DIR_READ, void* buffer=0, ulong length=0);//提供给外部的数据传输接口 private: void initMembers(); //初始化成员 + static QString senseKeyToString( int key ); + void debugError( int command, int errorCode, int senseKey, int asc, int ascq ); + private: int mDeviceHandle; //句柄,文件描述符 QString mDevice; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -1,6 +1,7 @@ #include "aboutdialog.h" #include "src/common/utils.h" #include "src/po/translation.h" +#include "KF5/KWindowSystem/kwindowsystem.h" AboutDialog *AboutDialog::m_oInstance = nullptr; QMutex AboutDialog::m_oMutex; @@ -11,9 +12,11 @@ setAppIcon(QIcon::fromTheme("burner")); setAppName(_("Burner")); setAppVersion(_("Version") + ": " + Utils::getVersion()); + setAccessibleName("kylin-burner_KAboutDialog_AboutDialog"); this->setFixedSize(450,336); this->setModal(true); this->closeButton()->setToolTip(_("Close")); + KWindowSystem::setState(this->winId(), NET::SkipPager | NET::SkipSwitcher | NET::SkipTaskbar); } AboutDialog *AboutDialog::instance(QWidget *parent) diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.h kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/aboutdialog.h 2025-03-11 20:49:32.000000000 +0800 @@ -12,7 +12,6 @@ public: static AboutDialog *instance(QWidget *parent = nullptr); void init(){} - void destroy() { delete this; } private: explicit AboutDialog(QWidget *parent = nullptr); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -66,7 +66,9 @@ m_oPosition(0 , 0), ui(new Ui::BurnData) { + this->setObjectName("kylin-burner__BurnData"); ui->setupUi(this); + setAccessibleName(); if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") { m_bIsWayland = true; @@ -77,17 +79,22 @@ //this->setWindowFlags(Qt::WindowDoesNotAcceptFocus); title = new QLabel(this); + title->setAccessibleName("kylin-burner_QLabel_BurnData_title"); title->setFocusPolicy(Qt::NoFocus); title->setText(_("BurnData")); title->setGeometry(25,10,this->width()-50,40); title->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop); bottomLine = new kdk::KHLineFrame(); + bottomLine->setAccessibleName("kylin-burner_KHLineFrame_BurnData_bottomLine"); ui->layoutBurnData->addWidget(bottomLine); mDirectoryCrumb = new KBreadCrumb(this); + mDirectoryCrumb->setAccessibleName("kylin-burner_KBreadCrumb_BurnData_mDirectoryCrumb"); m_go_back = new KToolButton(this); + m_go_back->setAccessibleName("kylin-burner_KToolButton_BurnData_goback"); m_go_forward = new KToolButton(this); + m_go_forward->setAccessibleName("kylin-burner_KToolButton_BurnData_goforward"); mDirectoryMap = new QMap<int, QModelIndex>; m_go_back->setEnabled(false); @@ -126,7 +133,7 @@ ui->btnAdd->setIconSize(ICON_SIZE); ui->btnAdd->setCheckable(true); - connect(ui->btnAdd, SIGNAL(toggled(bool)), this, SLOT(slotsAddFiles(bool))); + connect(ui->btnAdd, &QPushButton::clicked, this, &BurnData::slotsAddFiles); connect(g_user_signal, &GlobalUserSignal::secondChangeDiscStatus, this, [&]() { ui->btnAdd->setEnabled(true); @@ -177,6 +184,9 @@ ui->labelProjectName->hide(); //隐藏项目大小 ui->labelProjectSize->hide(); + CustomDelegate *delegate = new CustomDelegate(this); + ui->treeView->setItemDelegate(delegate); + ui->treeView->setModel(m_oModel); ui->treeView->header()->setFixedHeight(40); @@ -334,6 +344,29 @@ return m_oInstance; } +void BurnData::setAccessibleName() +{ + ui->btnAdd->setAccessibleName("kylin-burner_QPushButton_BurnData_btnAdd"); + ui->btnClean->setAccessibleName("kylin-burner_QPushButton_BurnData_btnClean"); + ui->btnDelete->setAccessibleName("kylin-burner_QPushButton_BurnData_btnDelete"); + ui->btnNewFolder->setAccessibleName("kylin-burner_QPushButton_BurnData_btnNewFolder"); + ui->btnTipAddFile->setAccessibleName("kylin-burner_QPushButton_BurnData_btnTipAddFile"); + ui->frame_6->setAccessibleName("kylin-burner_MyFrame_BurnData_frame_6"); + + ui->labelProjectName->setAccessibleName("kylin-burner_QLabel_BurnData_labelProjectName"); + ui->labelProjectSize->setAccessibleName("kylin-burner_QLabel_BurnData_labelProjectSize"); + ui->labelWelcome->setAccessibleName("kylin-burner_QLabel_BurnData_labelWelcome"); + ui->lineEdit->setAccessibleName("kylin-burner_QLineEdit_BurnData_lineEdit"); + ui->linkViewFilterFile->setAccessibleName("kylin-burner_QLabel_BurnData_linkViewFilterFile"); + + ui->tip->setAccessibleName("kylin-burner_QLabel_BurnData_tip"); + ui->tip_widget->setAccessibleName("kylin-burner_QWidget_BurnData_tipWidget"); + ui->treeView->setAccessibleName("kylin-burner_MyTreeView_BurnData_treeView"); + ui->widget->setAccessibleName("kylin-burner_QWidget_BurnData_widget"); + ui->widget_2->setAccessibleName("kylin-burner_QWidget_BurnData_widget2"); + ui->widget_3->setAccessibleName("kylin-burner_QWidget_BurnData_widget3"); +} + void BurnData::refresh() { m_oAddIndex = ui->treeView->rootIndex(); @@ -432,9 +465,10 @@ { url = QUrl::fromPercentEncoding(urls.takeFirst().toString(QUrl::RemoveScheme).toUtf8()); fileInfo.setFile(url); - if (!fileInfo.exists()) + if (!fileInfo.exists()) { event->ignore(); - break; + break; + } } if (!fileInfo.exists()) @@ -486,7 +520,7 @@ qreal basic; //去除文件列表的右侧滚动轮的宽度 - ui->treeView->header()->setFixedWidth(ui->treeView->width()-25); + ui->treeView->header()->setFixedWidth(this->width() - 65); basic = ui->treeView->header()->width() / 10; ui->treeView->header()->setSectionResizeMode(QHeaderView::Fixed); @@ -557,6 +591,7 @@ void BurnData::initAction() { m_oMenu = new MyMenu(ui->treeView); + m_oMenu->setAccessibleName("kylin-burner_MyMenu_BurnData_oMenu"); m_oOpen = new QAction(_("Open"), ui->treeView); m_oOpenLocal = new QAction(_("OpenInLocal"), ui->treeView); m_oRename = new QAction(_("Rename"), ui->treeView); @@ -859,11 +894,8 @@ ui->widget->hide(); ui->widget_2->hide(); ui->tip_widget->show(); - ui->treeView->header()->hide(); - ui->treeView->hideColumn(0); - ui->treeView->hideColumn(1); - ui->treeView->hideColumn(2); - ui->treeView->hideColumn(3); + ui->treeView->header()->setVisible(false); + ui->treeView->setVisible(false); title->show(); bottomLine->show(); @@ -877,13 +909,9 @@ ui->tip_widget->hide(); ui->widget->show(); ui->widget_2->show(); - ui->treeView->header()->show(); + ui->treeView->header()->setVisible(true); + ui->treeView->setVisible(true); title->hide(); - ui->treeView->showColumn(0); - ui->treeView->showColumn(1); - ui->treeView->showColumn(2); - ui->treeView->showColumn(3); - bottomLine->hide(); ui->treeView->setFrameShape(QFrame::StyledPanel); @@ -1002,16 +1030,21 @@ if (b) { - qDebug()<<__func__<<__LINE__; fd.reset(); fd.setExtendedSelection(); - fd.setDirectory(QDir::homePath()); + fd.setDirectory(QDir(last_path)); fd.setWindowTitle(_("Burner") + " - " + _("Add File(s)")); fd.setWindowIcon(QIcon::fromTheme("burner")); fd.setFileMode(QFileDialog::ExistingFiles); fd.setSidebarUrls(list + mntUrlList); - if (fd.exec()) - m_oModel->addDatasToIndex(fd.selectedFiles(), m_oAddIndex); + if (fd.exec()) { + QStringList files = fd.selectedFiles(); + if (files.size() <= 0) { + return; + } + last_path = files.first().left(files.first().lastIndexOf('/') + 1);; + m_oModel->addDatasToIndex(files, m_oAddIndex); + } ui->btnAdd->setChecked(false); ui->btnTipAddFile->setChecked(false); } @@ -1457,3 +1490,39 @@ clearHistory(); delete title; } + +CustomDelegate::CustomDelegate(QObject *parent) : QStyledItemDelegate(parent) +{} + +CustomDelegate::~CustomDelegate(){} + +QWidget *CustomDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + CustomSelectionLineEdit *lineEdit = new CustomSelectionLineEdit(parent); + return lineEdit; +} + +void CustomDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const +{ + CustomSelectionLineEdit* lineEdit = qobject_cast<CustomSelectionLineEdit*>(editor); + if(lineEdit){ + DataFile *file = static_cast<DataFile *>(index.internalPointer()); + if(file){ + lineEdit->setText(file->display()); + QFileInfo fileInfo(file->display()); + QString baseName = fileInfo.baseName(); + if(!baseName.isEmpty()){ + lineEdit->setBasename_pos(baseName.length()); + } + } + } +} + +void CustomDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const +{ + CustomSelectionLineEdit* lineEdit = qobject_cast<CustomSelectionLineEdit*>(editor); + if(lineEdit){ + model->setData(index,lineEdit->text()); + } +} + diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.h kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/burndata.h 2025-03-11 20:49:32.000000000 +0800 @@ -13,6 +13,7 @@ #include <klineframe.h> #include <kbreadcrumb.h> #include <ktoolbutton.h> +#include <QStyledItemDelegate> class MyMenu; class LogicBurnData; @@ -20,6 +21,44 @@ class BurnData; } +class CustomSelectionLineEdit : public QLineEdit{ + Q_OBJECT +public: + CustomSelectionLineEdit(QWidget* parent = nullptr) : QLineEdit(parent){ + m_basename_pos = -1; + } + ~CustomSelectionLineEdit(){} + + void setBasename_pos(int basename_pos){ + m_basename_pos = basename_pos; + } + +private: + int m_basename_pos; +protected: + void focusInEvent(QFocusEvent* event){ + + //set init selection + if(m_basename_pos > 0){ + this->deselect(); + this->setSelection(0,m_basename_pos); + } + + QLineEdit::focusInEvent(event); + } +}; + +class CustomDelegate : public QStyledItemDelegate +{ + Q_OBJECT +public: + CustomDelegate(QObject* parent = nullptr); + ~CustomDelegate(); + virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; + virtual void setEditorData(QWidget *editor, const QModelIndex &index) const override; + virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; +}; + class MyTreeView : public QTreeView { Q_OBJECT @@ -71,6 +110,7 @@ void updateDisplayList(int count); void clearCrumb(); void resetText(QPushButton* item); + void setAccessibleName(); bool m_isAutoReset = false; int m_offsetRemovedTabCount = 0; @@ -134,6 +174,7 @@ QPoint m_oPosition; QModelIndex m_rootIndex; QStringList m_textList; + QString last_path = QDir::homePath(); private: Ui::BurnData *ui; Q_SIGNALS: diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -25,7 +25,10 @@ m_oUpdateTimer(new QTimer), ui(new Ui::BurnImage) { + this->setObjectName("kylin-burner_BurnImage"); ui->setupUi(this); + setAccessibleName(); + ui->title->setFocusPolicy(Qt::NoFocus); ui->title->setText(_("BurnImage")); ui->comboBoxBurner->setModel(m_oListWidgetBurner->model()); @@ -79,20 +82,20 @@ connect(ui->comboBoxBurner, SIGNAL(currentIndexChanged(int)), this, SLOT(slotsBurnerChange(int))); connect(BURNIMAGE, SIGNAL(newISOPath(QString)), this, SLOT(slotsNewISOPath(QString))); - connect(this, SIGNAL(newISOPath(QString)), BURNIMAGE, SLOT(onNewISOPath(QString))); - connect(BURNIMAGE, SIGNAL(enableBurner(bool)), ui->comboBoxBurner, SLOT(setEnabled(bool))); - connect(BURNIMAGE, SIGNAL(enableBurner(bool)), ui->btnBurnerSetting, SLOT(setEnabled(bool))); - connect(BURNIMAGE, SIGNAL(enableBurner(bool)), ui->btnBurnerSetting, SLOT(setEnabled(bool))); - connect(BURNIMAGE, SIGNAL(enableBusness(bool)), this, SIGNAL(busness(bool))); - connect(BURNIMAGE, SIGNAL(isoError(QString)), this, SLOT(slotsISOError(QString))); - connect(BURNIMAGE, SIGNAL(burnerError(QString)), this, SLOT(slotsBurnerError(QString))); - connect(BURNIMAGE, SIGNAL(ready(QString)), this, SLOT(slotsReady(QString))); - connect(BURNIMAGE, SIGNAL(newBurner(QString,QString)), this, SLOT(slotsNewBurner(QString,QString))); - connect(BURNIMAGE, SIGNAL(deleteBurner(int)), this, SLOT(slotsDeleteBurner(int))); - connect(this, SIGNAL(newBurner(int)), BURNIMAGE, SLOT(onNewBurner(int))); + connect(this, SIGNAL(newISOPath(QString)), LogicBurnImage::instance(), SLOT(onNewISOPath(QString))); + connect(LogicBurnImage::instance(), SIGNAL(enableBurner(bool)), ui->comboBoxBurner, SLOT(setEnabled(bool))); + connect(LogicBurnImage::instance(), SIGNAL(enableBurner(bool)), ui->btnBurnerSetting, SLOT(setEnabled(bool))); + connect(LogicBurnImage::instance(), SIGNAL(enableBurner(bool)), ui->btnBurnerSetting, SLOT(setEnabled(bool))); + connect(LogicBurnImage::instance(), SIGNAL(enableBusness(bool)), this, SIGNAL(busness(bool))); + connect(LogicBurnImage::instance(), SIGNAL(isoError(QString)), this, SLOT(slotsISOError(QString))); + connect(LogicBurnImage::instance(), SIGNAL(burnerError(QString)), this, SLOT(slotsBurnerError(QString))); + connect(LogicBurnImage::instance(), SIGNAL(ready(QString)), this, SLOT(slotsReady(QString))); + connect(LogicBurnImage::instance(), SIGNAL(newBurner(QString,QString)), this, SLOT(slotsNewBurner(QString,QString))); + connect(LogicBurnImage::instance(), SIGNAL(deleteBurner(int)), this, SLOT(slotsDeleteBurner(int))); + connect(this, SIGNAL(newBurner(int)), LogicBurnImage::instance(), SLOT(onNewBurner(int))); connect(ui->btnBurnerSetting, SIGNAL(clicked(bool)), MenuFactory::instance(), SIGNAL(burnSetting(bool))); connect(m_oUpdateTimer, SIGNAL(timeout()), this, SLOT(slotsUpdateBurnerInfo())); - BURNIMAGE->init(); + LogicBurnImage::instance()->init(); // hide the icon, add icon to combobox ui->labelLogoBurner->hide(); @@ -117,6 +120,26 @@ return m_oInstance; } +void BurnImage::setAccessibleName() +{ + ui->btnBrowseISO->setAccessibleName("kylin-burner_QPushButton_BurnImage_btnBrowseISO"); + ui->btnBurnerSetting->setAccessibleName("kylin-burner_QPushButton_BurnImage_btnBurnerSetting"); + ui->burnerSelection->setAccessibleName("kylin-burner_QWidget_BurnImage_burnerSelection"); + ui->burnerWidget->setAccessibleName("kylin-burner_QWidget_BurnImage_burnerWidget"); + ui->comboBoxBurner->setAccessibleName("kylin-burner_QComboBox_BurnImage_comboBoxBurner"); + ui->comboBoxISO->setAccessibleName("kylin-burner_QComboBox_BurnImage_comboBoxISO"); + + ui->isoSelection->setAccessibleName("kylin-burner_QWidget_BurnImage_isoSelection"); + ui->isoWidget->setAccessibleName("kylin-burner_QWidget_BurnImage_isoWidget"); + ui->labelBurnerTip->setAccessibleName("kylin-burner_QLabel_BurnImage_labelBurnerTip"); + ui->labelBurnerTitle->setAccessibleName("kylin-burner_QLabel_BurnImage_labelBurnerTitle"); + ui->labelISOTip->setAccessibleName("kylin-burner_QLabel_BurnImage_labelISOTip"); + ui->labelISOTitle->setAccessibleName("kylin-burner_QLabel_BurnImage_labelISOTitle"); + ui->labelLogoBurner->setAccessibleName("kylin-burner_QLabel_BurnImage_labelLogoBurner"); + ui->labelLogoISO->setAccessibleName("kylin-burner_QLabel_BurnImage_labelLogoISO"); + ui->title->setAccessibleName("kylin-burner_QLabel_BurnImage_title"); +} + void BurnImage::update() { BURNIMAGE->init(); @@ -398,5 +421,22 @@ BurnImage::~BurnImage() { delete ui; - BURNIMAGE->destroy(); + + for (int i = 0; i < m_oListWidgetBurner->count(); ++i) + { + QListWidgetItem *listItem = m_oListWidgetBurner->item(i); + BurnImageISOItem *item = qobject_cast<BurnImageISOItem *>(m_oListWidgetBurner->itemWidget(listItem)); + if (item) { + item->deleteLater(); + } + } + + for (int i = 0; i < m_oListWidget->count(); ++i) + { + QListWidgetItem *listItem = m_oListWidget->item(i); + BurnImageISOItem *item = qobject_cast<BurnImageISOItem *>(m_oListWidget->itemWidget(listItem)); + if (item) { + item->deleteLater(); + } + } } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.h kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimage.h 2025-03-11 20:49:32.000000000 +0800 @@ -26,12 +26,12 @@ BurnImage *operator =(const BurnImage*)=delete; public: void update(); - void destroy() { delete this; } protected: void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; private: explicit BurnImage(QWidget *parent = nullptr); ~BurnImage(); + void setAccessibleName(); public slots: void slotsNewISOPath(QString); private slots: diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -5,8 +5,11 @@ QWidget(parent), ui(new Ui::BurnImageISOItem) { + this->setObjectName("kylin-burner_BurnImageISOItem"); QFont f; ui->setupUi(this); + ui->label->setAccessibleName("kylin-burner_QLabel_BurnImageISOItem_label"); + ui->pushButton->setAccessibleName("kylin-burner_QPushButton_BurnImageISOItem_pushButton"); f = ui->label->font(); f.setPixelSize(14); ui->label->setText(path); @@ -22,3 +25,13 @@ { delete ui; } + +void BurnImageISOItem::setText(QString path) +{ + ui->label->setText(path); +} + +QFont BurnImageISOItem::getFont() +{ + return ui->label->font(); +} diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.h kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/burnimageisoitem.h 2025-03-11 20:49:32.000000000 +0800 @@ -15,6 +15,9 @@ explicit BurnImageISOItem(QString, QWidget *parent = nullptr); ~BurnImageISOItem(); + void setText(QString); + QFont getFont(); + private: Ui::BurnImageISOItem *ui; }; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -25,8 +25,10 @@ m_bCreateISO(false), ui(new Ui::BusnessSetting) { + this->setObjectName("kylin-burner_BusnessSetting"); QFont f; ui->setupUi(this); + setAccessibleName(); ui->labelCopyright->setText(_("Copyright")); @@ -40,14 +42,12 @@ ui->checkBoxCreateISO->setText(_("Create ISO")); ui->checkBoxVerfication->setText(_("Data Verfication")); - ui->labelCheckVolumnID->setText(""); ui->labelCheckVolumnID->setStyleSheet("QLabel { color: red; }"); ui->labelCheckVolumnID->hide(); - ui->labelCheckCopyright->setText(""); - ui->labelCheckCopyright->setStyleSheet("QLabel { color: red; }"); + ui->labelCheckCopyright->setStyleSheet("QLabel { color: red;}"); ui->labelCheckCopyright->hide(); m_isVaildVolumID = true; @@ -66,6 +66,52 @@ connect(LogicMain::instance(), &LogicMain::systemFontSizeChanged, this, &BusnessSetting::slotChangeUIFontSize); } +void BusnessSetting::setAccessibleName() +{ + ui->checkBoxCloseSeeion->setAccessibleName("kylin-burner_QCheckBox_BusnessSetting_checkBoxCloseSeeion"); + ui->checkBoxCreateISO->setAccessibleName("kylin-burner_QCheckBox_BusnessSetting_checkBoxCreateISO"); + ui->checkBoxVerfication->setAccessibleName("kylin-burner_QCheckBox_BusnessSetting_checkBoxVerfication"); + ui->comboBoxBurnFormat->setAccessibleName("kylin-burner_QComboBox_BusnessSetting_comboBoxBurnFormat"); + ui->comboBoxBurnSpeed->setAccessibleName("kylin-burner_QComboBox_BusnessSetting_comboBoxBurnSpeed"); + + ui->labelBurnFormat->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelBurnFormat"); + ui->labelBurnSpeed->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelBurnSpeed"); + ui->labelCheckCopyright->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelCheckCopyright"); + ui->labelCheckVolumnID->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelCheckVolumnID"); + ui->labelCopyright->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelCopyright"); + ui->labelISOInfo->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelISOInfo"); + ui->labelPreparer->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelPreparer"); + ui->labelPublisher->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelPublisher"); + ui->labelTempPath->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelTempPath"); + ui->labelVolumnID->setAccessibleName("kylin-burner_QLabel_BusnessSetting_labelVolumnID"); + + ui->layoutWidget->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget"); + ui->layoutWidget1->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget1"); + ui->layoutWidget2->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget2"); + ui->layoutWidget3->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget3"); + ui->layoutWidget4->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget4"); + ui->layoutWidget5->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget5"); + ui->layoutWidget6->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget6"); + ui->layoutWidget7->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget7"); + ui->layoutWidget8->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget8"); + ui->layoutWidget9->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget9"); + ui->layoutWidget10->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget10"); + //ui->layoutWidget11->setAccessibleName("kylin-burner_QWidget_BusnessSetting_layoutWidget11"); + + ui->line->setAccessibleName("kylin-burner_Line_BusnessSetting_line"); + ui->lineEditCopyright->setAccessibleName("kylin-burner_CustomLineEdit_BusnessSetting_lineEditCopyright"); + ui->lineEditPreparer->setAccessibleName("kylin-burner_CustomLineEdit_BusnessSetting_lineEditPreparer"); + ui->lineEditPublisher->setAccessibleName("kylin-burner_CustomLineEdit_BusnessSetting_lineEditPublisher"); + ui->lineEditTempPath->setAccessibleName("kylin-burner_QLineEdit_BusnessSetting_lineEditTempPath"); + ui->lineEditVolumnID->setAccessibleName("kylin-burner_QLineEdit_BusnessSetting_lineEditVolumnID"); + ui->line_2->setAccessibleName("kylin-burner_Line_BusnessSetting_line2"); + ui->line_3->setAccessibleName("kylin-burner_Line_BusnessSetting_line3"); + ui->line_4->setAccessibleName("kylin-burner_Line_BusnessSetting_line4"); + + ui->scrollArea->setAccessibleName("kylin-burner_QScrollArea_BusnessSetting_scrollArea"); + ui->scrollAreaWidgetContents->setAccessibleName("kylin-burner_QWidget_BusnessSetting_scrollAreaWidgetContents"); + ui->title->setAccessibleName("kylin-burner_QLabel_BusnessSetting_title"); +} void BusnessSetting::load(void *d) { @@ -185,14 +231,12 @@ { ui->checkBoxCloseSeeion->setEnabled(false); ui->checkBoxCreateISO->setEnabled(true); - ui->lineEditCopyright->setReadOnly(true); - ui->lineEditPreparer->setReadOnly(true); - ui->lineEditPublisher->setReadOnly(true); } else { ui->checkBoxCloseSeeion->setEnabled(false); } + if (BURNIMAGE == sender() || COPY_IMGAE == sender()) { ui->lineEditVolumnID->setReadOnly(true); @@ -303,7 +347,7 @@ << ui->labelTempPath << ui->labelBurnSpeed << ui->labelBurnFormat << ui->lineEditCopyright << ui->lineEditPreparer << ui->lineEditPublisher << ui->lineEditTempPath << ui->lineEditVolumnID << ui->comboBoxBurnSpeed << ui->checkBoxCloseSeeion << ui->checkBoxCreateISO << ui->checkBoxVerfication - << ui->labelCheckVolumnID << ui->labelCheckCopyright; + << ui->labelCheckVolumnID << ui->labelCheckCopyright << ui->labelISOInfo; foreach (QWidget* index, widgetList) { index->setFont(font); } @@ -401,10 +445,15 @@ QHBoxLayout *searchLayout = new QHBoxLayout(ui->lineEditTempPath); searchLayout->setMargin(5); searchLayout->setSpacing(0); - IConLabel *buttonBrowse = new IConLabel; + buttonBrowse = new IConLabel; + buttonBrowse->setAccessibleName("kylin-burner_IConLabel_BusnessSetting_buttonBrowse"); buttonBrowse->setToolTip(_("Browse")); buttonBrowse->setFixedSize(24, 24); - buttonBrowse->setThemeIconSchema("folder-visiting-symbolic", ":/folder-visiting-symbolic.svg", QSize(19,17)); + if ("ukui-black" == MAIN->theme()) { + buttonBrowse->setThemeIconSchema("", ":/folder-visiting-symbolic-dark.svg", QSize(19,17)); + } else { + buttonBrowse->setThemeIconSchema("", ":/folder-visiting-symbolic.svg", QSize(19,17)); + } searchLayout->addWidget(buttonBrowse); searchLayout->setAlignment(Qt::AlignRight | Qt::AlignVCenter); connect(buttonBrowse, &IConLabel::clicked, this, [=]() { @@ -513,12 +562,14 @@ ui->line_2->setFrameShadow(QFrame::Plain); ui->line_3->setFrameShadow(QFrame::Plain); ui->line_4->setFrameShadow(QFrame::Plain); + buttonBrowse->setThemeIconSchema("", ":/folder-visiting-symbolic-dark.svg", QSize(19,17)); } else { pal.setColor(QPalette::Dark, QColor("#F2F2F2")); ui->line->setFrameShadow(QFrame::Sunken); ui->line_2->setFrameShadow(QFrame::Sunken); ui->line_3->setFrameShadow(QFrame::Sunken); ui->line_4->setFrameShadow(QFrame::Sunken); + buttonBrowse->setThemeIconSchema("folder-visiting-symbolic", ":/folder-visiting-symbolic.svg", QSize(19,17)); } ui->line->setPalette(pal); ui->line_2->setPalette(pal); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.h kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/busnesssetting.h 2025-03-11 20:49:32.000000000 +0800 @@ -6,6 +6,7 @@ #include <QLabel> #include <QLineEdit> #include <QEvent> +#include "src/view/components/iconlabel.h" namespace Ui { class BusnessSetting; @@ -18,11 +19,7 @@ protected: void changeEvent(QEvent* event) override{ if(event->type() == QEvent::EnabledChange || event->type() == QEvent::FocusIn){ - if(isReadOnly()){ - setCursor(Qt::IBeamCursor); - }else{ - setCursor(Qt::IBeamCursor); - } + setCursor(Qt::IBeamCursor); } QLineEdit::changeEvent(event); } @@ -43,6 +40,7 @@ void checkCopyright(); void checkTempPath(); void updateModelDialogEnsureBtnState(); + void setAccessibleName(); public slots: void load(void *); @@ -97,6 +95,7 @@ QList<int> m_oSpeeds; QString m_SBurnFormat; QList<QString> m_oBurnFormat; + IConLabel *buttonBrowse; private: Ui::BusnessSetting *ui; Q_SIGNALS: diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/components/clicklabel.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/components/clicklabel.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/components/clicklabel.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/components/clicklabel.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -1,22 +1,20 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ +/* +* Copyright (C) 2021, KylinSoft Co., Ltd. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 3, or (at your option) +* any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, see <http://www.gnu.org/licenses/>. +* +*/ #include "clicklabel.h" ClickLabel::ClickLabel(QWidget *parent) : diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -25,7 +25,9 @@ QWidget(parent), ui(new Ui::CopyImage) { + this->setObjectName("kylin-burner_CopyImage"); ui->setupUi(this); + setAccessibleName(); ui->title->setFocusPolicy(Qt::NoFocus); ui->title->setText(_("CopyDisk")); @@ -104,6 +106,24 @@ return m_oInstance; } +void CopyImage::setAccessibleName() +{ + ui->btnBurnerSetting->setAccessibleName("kylin-burner_QPushButton_CopyImage_btnBurnerSetting"); + ui->burnerSelection->setAccessibleName("kylin-burner_QWidget_CopyImage_burnerSelection"); + ui->burnerWidget->setAccessibleName("kylin-burner_QWidget_CopyImage_burnerWidget"); + ui->comboBoxBurner->setAccessibleName("kylin-burner_QComboBox_CopyImage_comboBoxBurner"); + ui->comboBoxISO->setAccessibleName("kylin-burner_QComboBox_CopyImage_comboBoxISO"); + ui->isoSelection->setAccessibleName("kylin-burner_QWidget_CopyImage_isoSelection"); + ui->isoWidget->setAccessibleName("kylin-burner_QWidget_CopyImage_isoWidget"); + ui->labelBurnerTip->setAccessibleName("kylin-burner_QLabel_CopyImage_labelBurnerTip"); + ui->labelBurnerTitle->setAccessibleName("kylin-burner_QLabel_CopyImage_labelBurnerTitle"); + ui->labelISOTip->setAccessibleName("kylin-burner_QLabel_CopyImage_labelISOTip"); + ui->labelISOTitle->setAccessibleName("kylin-burner_QLabel_CopyImage_labelISOTitle"); + ui->labelLogoBurner->setAccessibleName("kylin-burner_QLabel_CopyImage_labelLogoBurner"); + ui->labelLogoISO->setAccessibleName("kylin-burner_QLabel_CopyImage_labelLogoISO"); + ui->title->setAccessibleName("kylin-burner_QLabel_CopyImage_title"); +} + void CopyImage::check() { if (ui->comboBoxISO->currentIndex() < 0 || diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.h kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/copyimage.h 2025-03-11 20:49:32.000000000 +0800 @@ -26,6 +26,7 @@ private: explicit CopyImage(QWidget *parent = nullptr); ~CopyImage(); + void setAccessibleName(); private slots: void slotsAddDestination(void *); void slotsDelDestination(int); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -16,10 +16,18 @@ QWidget(parent), ui(new Ui::DiskCheck) { + this->setObjectName("kylin-burner_DiskCheck"); ui->setupUi(this); ui->lineEdit->setReadOnly(true); ui->lineEdit->setCursor(Qt::IBeamCursor); + ui->comboBox->setAccessibleName("kylin-burner_QComboBox_DiskCheck_comboBox"); + ui->diskTitle->setAccessibleName("kylin-burner_QLabel_DiskCheck_diskTitle"); + ui->fileTitle->setAccessibleName("kylin-burner_QLabel_DiskCheck_fileTitle"); + ui->lineEdit->setAccessibleName("kylin-burner_CustomLineEdit_DiskCheck_lineEdit"); + ui->pushButton->setAccessibleName("kylin-burner_QPushButton_DiskCheck_pushButton"); + ui->title->setAccessibleName("kylin-burner_QLabel_DiskCheck_title"); + ui->title->setText(_("Disk Check")); ui->diskTitle->setText(_("Select a disc")); ui->fileTitle->setText(_("Check the disc using the MD5 file")); @@ -35,6 +43,7 @@ connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(slotsBrowseFile())); slotChangeUIFontSize(LogicMain::instance()->GetSystemFontSize()); connect(LogicMain::instance(), &LogicMain::systemFontSizeChanged, this, &DiskCheck::slotChangeUIFontSize); + connect(g_user_signal, &GlobalUserSignal::sigChangeDiscDisplayInfo, this, &DiskCheck::slotChangeDiscDisplayInfo); } void DiskCheck::accept() @@ -74,6 +83,17 @@ } +void DiskCheck::slotChangeDiscDisplayInfo(void *cdrom, QString discInfo) +{ + for(int i = 0; i < m_oCDROMS.size(); i++) { + if (cdrom != m_oCDROMS.at(i)) { + break; + } else { + ui->comboBox->setItemText(i, discInfo); + } + } +} + bool DiskCheck::check() { if (ui->lineEdit->text().isEmpty() || ui->lineEdit->text().contains(_("Non md5sum.txt in the current Disk;Verification is not supported"))) { @@ -108,7 +128,9 @@ ui->comboBox->setCurrentIndex(m_oCDROMS.indexOf(c)); change(check()); } - if (m_oCDROMS.size() > 0) ui->pushButton->setEnabled(true); + if (m_oCDROMS.size() > 0){ + ui->pushButton->setEnabled(true); + } } void DiskCheck::slotsRemoveMedium(void *c) diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.h kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/diskcheck.h 2025-03-11 20:49:32.000000000 +0800 @@ -18,6 +18,7 @@ public slots: void accept(); void slotChangeUIFontSize(int fontSize); + void slotChangeDiscDisplayInfo(void *cdrom, QString discInfo); public: bool check(); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -17,6 +17,7 @@ QDialog(parent), ui(new Ui::ExecDialog) { + this->setObjectName("kylin-burner_ExecDialog"); QFont f; ui->setupUi(this); //判断是否是wayland环境 @@ -31,6 +32,13 @@ XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); } + ui->buttonBox->setAccessibleName("kylin-burner_QDialogButtonBox_ExecDialog_buttonBox"); + ui->inputPage->setAccessibleName("kylin-burner_Input_ExecDialog_inputPage"); + ui->stackedWidget->setAccessibleName("kylin-burner_QStackedWidget_ExecDialog_stackedWidget"); + ui->tip->setAccessibleName("kylin-burner_tips_ExecDialog_tip"); + ui->title->setAccessibleName("kylin-burner_WindowTitle_ExecDialog_title"); + ui->widget->setAccessibleName("kylin-burner_QWidget_ExecDialog_widget"); + ui->title->onlyShowInDialog(); connect(ui->title, SIGNAL(close()), this, SLOT(close())); connect(this, SIGNAL(windowIconChanged(QIcon)), ui->title, SLOT(onWindowIconChange(QIcon))); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.h kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/execdialog.h 2025-03-11 20:49:32.000000000 +0800 @@ -21,7 +21,6 @@ ExecDialog *operator =(const ExecDialog*)=delete; public: void init() {} - void destroy() { delete this; } public: int information(QString, QString, bool next = false); void error(QString, QString, bool next = false); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -24,6 +24,7 @@ QDialog(parent), ui(new Ui::FileFilterRules) { + this->setObjectName("kylin-burner_FileFilterRules"); ui->setupUi(this); //判断是否是wayland环境 @@ -37,6 +38,18 @@ hints.decorations = MWM_DECOR_BORDER; XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); } + + ui->buttonBox->setAccessibleName("kylin-burner_QDialogButtonBox_FileFilterRules_buttonBox"); + ui->checkBoxHidden->setAccessibleName("kylin-burner_QCheckBox_FileFilterRules_checkBoxHidden"); + ui->checkBoxRepleace->setAccessibleName("kylin-burner_QCheckBox_FileFilterRules_checkBoxRepleace"); + ui->checkBoxSymbolLink->setAccessibleName("kylin-burner_QCheckBox_FileFilterRules_checkBoxSymbolLink"); + ui->labelTitle->setAccessibleName("kylin-burner_QLabel_FileFilterRules_labelTitle"); + ui->title->setAccessibleName("kylin-burner_WindowTitle_FileFilterRules_title"); + ui->widget_2->setAccessibleName("kylin-burner_QWidget_FileFilterRules_widget2"); + ui->widget_3->setAccessibleName("kylin-burner_QWidget_FileFilterRules_widget3"); + ui->widget_4->setAccessibleName("kylin-burner_QWidget_FileFilterRules_widget4"); + ui->widget_5->setAccessibleName("kylin-burner_QWidget_FileFilterRules_widget5"); + ui->title->onlyShowInDialog(); connect(ui->title, SIGNAL(close()), this, SLOT(slotclose())); connect(this, SIGNAL(windowIconChanged(QIcon)), ui->title, SLOT(onWindowIconChange(QIcon))); @@ -83,7 +96,6 @@ void FileFilterRules::init(void *data) { - bool isHidden = Configuration::instance()->get("FilterFile","hidden",true).toBool(); DataDirectory::setFilterHidden(isHidden); ui->checkBoxHidden->setChecked(isHidden); @@ -107,6 +119,9 @@ void FileFilterRules::show() { + ui->checkBoxHidden->setChecked(m_ishidden); + ui->checkBoxSymbolLink->setChecked(m_isbroken); + ui->checkBoxRepleace->setChecked(m_isrepleace); KWindowSystem::setState(this->winId(), NET::SkipPager | NET::SkipSwitcher | NET::SkipTaskbar); m_oEnsureBtn->setProperty("isImportant", true); move(m_oPosition); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.h kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/filefilterrules.h 2025-03-11 20:49:32.000000000 +0800 @@ -21,7 +21,6 @@ static FileFilterRules *instance(); public: void init(void *data = nullptr); - void destroy() { delete this; } void show(); void updatePosition(QPoint); bool isWayland() { return m_bIsWayland; } @@ -57,5 +56,4 @@ private: Ui::FileFilterRules *ui; }; -#define FILTERRULES FileFilterRules::instance() #endif // FILEFILTERRULES_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/input.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/input.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/input.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/input.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -6,11 +6,15 @@ QWidget(parent), ui(new Ui::Input) { + this->setObjectName("kylin-burner_Input"); QFont f; ui->setupUi(this); f = ui->labelContent->font(); f.setPixelSize(14); + ui->labelContent->setAccessibleName("kylin-burner_QLabel_Input_labelContent"); + ui->lineEditResult->setAccessibleName("kylin-burner_QLineEdit_Input_labelContent"); + ui->labelContent->setFont(f); //ui->labelContent->setGeometry(0,0,288,22); ui->labelContent->setGeometry(0,0,1,1); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -17,6 +17,7 @@ QDialog(parent), ui(new Ui::InputChange) { + this->setAccessibleName("kylin-burner_InputChange"); ui->setupUi(this); setModal(true); kdk::UkuiStyleHelper::self()->removeHeader(this); @@ -33,6 +34,11 @@ XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); } + ui->buttonBox->setAccessibleName("kylin-burner_QDialogButtonBox_InputChange_buttonBox"); + ui->labelContent->setAccessibleName("kylin-burner_QLabel_InputChange_labelContent"); + ui->lineEditResult->setAccessibleName("kylin-burner_QLineEdit_InputChange_lineEditResult"); + ui->title->setAccessibleName("kylin-burner_WindowTitle_InputChange_title"); + ui->title->onlyShowInDialog(); connect(ui->title, SIGNAL(close()), this, SLOT(slotClose())); connect(this, SIGNAL(windowIconChanged(QIcon)), ui->title, SLOT(onWindowIconChange(QIcon))); @@ -66,10 +72,10 @@ return ui->labelContent->text(); } -bool InputChange::input(QString &inputed, QString title , QString content, QString result) +bool InputChange::input(QString &inputed, QString title , QString content, QString fileName) { inputed.clear(); - if(content==_("File name duplicate, need to rename:")) + if(content == _("File name duplicate, need to rename:")) { qDebug()<<__LINE__<<__func__<<content; m_oEnsureBtn->setEnabled(false); @@ -81,8 +87,8 @@ } ui->labelContent->setText(content); - ui->lineEditResult->setFocus(); - ui->lineEditResult->setText(QString("")); + ui->lineEditResult->setText(QString("%1").arg(fileName)); + this->setLineEditSelect(fileName); ui->lineEditResult->setFocus(); if(m_bIsWayland) kdk::UkuiStyleHelper::self()->removeHeader(this); @@ -94,6 +100,28 @@ return false; } +void InputChange::setLineEditSelect(QString fileName) +{ + if(fileName.isEmpty()) { + return; + } + + if(fileName.contains(".")) { + ui->lineEditResult->setSelection(0, indexSuffix(fileName)); + } else { + ui->lineEditResult->selectAll(); + } +} + +int InputChange::indexSuffix(QString fileName) +{ + int selectRightPos = fileName.lastIndexOf("."); + if (fileName.contains(".tar.") && 4 == (selectRightPos - fileName.lastIndexOf(".tar."))) { + selectRightPos -= 4; + } + return selectRightPos; +} + void InputChange::slotTextChanged(QString text){ if (!text.isEmpty()) { diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.h kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/inputchange.h 2025-03-11 20:49:32.000000000 +0800 @@ -21,7 +21,7 @@ QString result(); QString content(); - bool input(QString&, QString, QString, QString result); + bool input(QString&, QString, QString, QString fileName); public slots: void slotTextChanged(QString); @@ -31,6 +31,8 @@ protected: void keyPressEvent(QKeyEvent *event); + void setLineEditSelect(QString fileName); + int indexSuffix(QString fileName); private: Ui::InputChange *ui; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -44,6 +44,7 @@ using namespace kdk; #define ICON_SIZE QSize(26, 26) + MainWindow *MainWindow::m_mainWindow = nullptr; QMutex MainWindow::m_oMutex; @@ -83,6 +84,7 @@ QFileInfo file; ui->setupUi(this); + setAccessibleName(); uiAdjust(); m_oCDROMS.clear(); @@ -108,8 +110,9 @@ QDBusConnection sessionBus = QDBusConnection::sessionBus(); if(sessionBus.registerService("com.kylin.burner.manager")) { - sessionBus.registerObject("/com/kylin/burner/manager",this, - QDBusConnection::ExportAllContents); + sessionBus.registerObject("/com/kylin/burner/manager","com.kylin.burner.manager",this, + QDBusConnection::ExportAllContents); + qDebug()<<"初始化DBUS成功"; } else @@ -125,6 +128,11 @@ /* 注意:最新创建的窗体被设置为操作窗体,所有接口函数操作的窗口都是该最新创建的窗体 */ if ((quint32)getpid() == WindowManager::getPid(windowId)) { + static bool firstAddFlag = true; + if(firstAddFlag){ + m_mainWindowId = windowId; + firstAddFlag = false; + } m_lastestWindowId = windowId; } }); @@ -189,7 +197,7 @@ ui->labelDisk->setText(_("DiskName")); LOGGER->info(_("Loaded over")); - connect(g_user_signal, &GlobalUserSignal::sigChangeComboDiskIndex, VIEWFILTERFILE, &ViewFilterFiles::slotsChangeComboDiskIndex); + connect(g_user_signal, &GlobalUserSignal::sigChangeComboDiskIndex, ViewFilterFiles::instance(), &ViewFilterFiles::slotsChangeComboDiskIndex); connect(ui->comboBoxBurner, SIGNAL(currentIndexChanged(int)), this, SLOT(slotsChangeCurrentIndex(int))); connect(ui->comboBoxDisk, SIGNAL(currentIndexChanged(int)), this, SLOT(slotsChangeCurrentIndex(int))); connect(ui->comboBoxDisk, SIGNAL(currentIndexChanged(int)), BurnData::instance(), SIGNAL(changeCurrentIndex(int))); @@ -234,6 +242,8 @@ for (; index<m_oCDROMS.size(); index++) { if (cdrom == m_oCDROMS[index]) { ui->comboBoxDisk->setItemText(index, displayInfo); + ui->comboBoxDisk->setToolTip(ui->comboBoxDisk->itemText( + ui->comboBoxDisk->currentIndex())); break; } } @@ -277,14 +287,16 @@ p.setY(pos().y() + height() / 2); move(p); + this->setAttribute(Qt::WA_AlwaysShowToolTips); + this->setObjectName("kylin-burner_MainWindow"); } MainWindow* MainWindow::Instance(QStringList args, QWidget *parent) { - if (NULL == m_mainWindow) + if (!m_mainWindow) { QMutexLocker locker(&m_oMutex); - if (NULL == m_mainWindow) + if (!m_mainWindow) { m_mainWindow = new MainWindow(args, parent); } @@ -348,21 +360,68 @@ QMainWindow::paintEvent(event); } +void MainWindow::setAccessibleName() +{ + ui->btnBusness->setAccessibleName("kylin-burner_QPushButton_MainWindow_btnBusness"); + ui->btnSetting->setAccessibleName("kylin-burner_QPushButton_MainWindow_btnSetting"); + ui->burnData->setAccessibleName("kylin-burner_QWidget_MainWindow_burnData"); + ui->burner->setAccessibleName("kylin-burner_QWidget_MainWindow_burner"); + ui->burnerTitle->setAccessibleName("kylin-burner_WindowTitle_MainWindow_burnerTitle"); + ui->buttom->setAccessibleName("kylin-burner_QWidget_MainWindow_buttom"); + ui->buttons->setAccessibleName("kylin-burner_QWidget_MainWindow_buttons"); + ui->centralwidget->setAccessibleName("kylin-burner_QWidget_MainWindow_centralwidget"); + ui->comboBoxBurner->setAccessibleName("kylin-burner_QComboBox_MainWindow_comboBoxBurner"); + ui->comboBoxDisk->setAccessibleName("kylin-burner_QComboBox_MainWindow_comboBoxDisk"); + ui->labelBurner->setAccessibleName("kylin-burner_QLabel_MainWindow_labelBurner"); + ui->labelDisk->setAccessibleName("kylin-burner_QLabel_MainWindow_labelDisk"); + ui->nav->setAccessibleName("kylin-burner_QWidget_MainWindow_nav"); + ui->navTitle->setAccessibleName("kylin-burner_WindowTitle_MainWindow_navTitle"); + ui->splitter->setAccessibleName("kylin-burner_QSplitter_MainWindow_splitter"); + ui->stackedWidget->setAccessibleName("kylin-burner_QStackedWidget_MainWindow_stackedWidget"); + ui->widget->setAccessibleName("kylin-burner_QWidget_MainWindow_widget"); + ui->widgetCopyRight->setAccessibleName("kylin-burner_QWidget_MainWindow_widgetCopyRight"); + ui->widget_2->setAccessibleName("kylin-burner_QWidget_MainWindow_widget2"); +} + //主界面窗口设置为最顶层窗口,显示在最前面 -int MainWindow::slotsReShowMainWindow() +int MainWindow::slotsReShowMainWindow(QStringList args) { //存在kylin-burner进程 LOGGER->info(_("kylin-burner process already exists")); - qDebug()<<"kylin-burner process already exists"; - - qDebug()<<"New kylin-burner process exit"; LOGGER->info(_("New kylin-burner process exit")); + + qDebug()<<"kylin-burner process already exists, New kylin-burner process exit"; + + QFileInfo file; + QUrl url; + int value = -1; + if (0 == args.size()) { + value = 0; + LOGGER->info("The kylin-burner process is running, 0 argument, active mainwindow"); + } else if (1 == args.size()) { + value = 1; + LOGGER->info("The kylin-burner process is running, 1 argumentactive mainwindow and swith burn image view"); + file.setFile(args.first()); + if (file.suffix() == "iso") + { + url.setUrl(args.first()); + PAGE_BurnImage->slotsNewISOPath(args.first()); + emit busness(LogicMain::BurnImage); + QMetaObject::invokeMethod(this,"slotsBurnImage",Qt::QueuedConnection); + + QListView* mViewOfNavBar = m_NavBar->listview(); + if(mViewOfNavBar){ + mViewOfNavBar->setCurrentIndex(mViewOfNavBar->model()->index(1,0,QModelIndex())); + } + + } + } if (m_isWayland) { - WindowManager::activateWindow(m_lastestWindowId); + WindowManager::activateWindow(m_mainWindowId); } else { KWindowSystem::forceActiveWindow(this->winId()); } - return 0; + return value; } bool MainWindow::isBusyDevice(QString device) @@ -372,7 +431,7 @@ void MainWindow::slotChangeUIFontSize(int fontSize) { - WindowManager::activateWindow(m_lastestWindowId); + WindowManager::activateWindow(m_mainWindowId); int scaleRatio = qAbs(fontSize - 10.0); fontSize = scaleRatio + 14; @@ -1002,6 +1061,7 @@ qInfo()<<"ui->button"<<ui->buttons->size(); m_NavBar = new KNavigationBar(ui->nav); + m_NavBar->setAccessibleName("kylin-burner_KNavigationBar_MainWindow_NavBar"); m_NavBar->setGeometry(ui->buttons->x()+10,55,180,300); QListView* mViewOfNavBar = m_NavBar->listview(); mViewOfNavBar->setFocus(); @@ -1130,6 +1190,7 @@ void MainWindow::slotsCloseApp() { + this->hide(); calculatorTime(m_current_page); LOGGER->info(QString("[%1] [%2] entrace slotsCloseApp").arg(__func__).arg(__LINE__)); QDBusConnection sessionBus = QDBusConnection::sessionBus(); @@ -1147,24 +1208,15 @@ BurnData::instance()->slotStopLoadingData(); - if (VIEWFILTERFILE) { - VIEWFILTERFILE->close(); - VIEWFILTERFILE->destroy(); - } - if (FILTERRULES) { - FILTERRULES->close(); - FILTERRULES->destroy(); - } - MenuFactory::instance()->destroy(); - PAGE_BurnImage->destroy(); - TIP_BURNRESULT->destroy(); - CFG->destroy(); - ABOUT->destroy(); - + if (ViewFilterFiles::instance()) { + ViewFilterFiles::instance()->close(); + } + if (FileFilterRules::instance()) { + FileFilterRules::instance()->close(); + } LogicMain::instance()->destroy(); - LOGGER->info(QString("[%1] [%2] 析构结束").arg(__func__).arg(__LINE__)); - //LOGGER->destroy(); + qApp->exit(); } diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.h kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/mainwindow.h 2025-03-11 20:49:32.000000000 +0800 @@ -51,7 +51,7 @@ void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; public slots: - int slotsReShowMainWindow(); + int slotsReShowMainWindow(QStringList args); bool isBusyDevice(QString device); void slotChangeUIFontSize(int fontSize); @@ -78,6 +78,7 @@ void initTransparent(); void calculatorTime(int current); void resetText(QPushButton* item); + void setAccessibleName(); private: QButtonGroup *m_oGroup; @@ -95,6 +96,7 @@ bool m_isWayland; int m_current_page = 0; WindowId m_lastestWindowId; + WindowId m_mainWindowId; std::map<int, qint64> m_mapStartTime = { {0, 0}, diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -25,6 +25,7 @@ QDialog(parent), ui(new Ui::ModalDialog) { + this->setObjectName("kylin-burner_ModalDialog"); ui->setupUi(this); //判断是否是wayland环境 if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") { @@ -38,6 +39,15 @@ XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); } + ui->btnBox->setAccessibleName("kylin-burner_QDialogButtonBox_ModalDialog_btnBox"); + ui->content->setAccessibleName("kylin-burner_QWidget_ModalDialog_content"); + ui->dataSetting->setAccessibleName("kylin-burner_SettingDatas_ModalDialog_dataSetting"); + ui->diskcheck->setAccessibleName("kylin-burner_DiskCheck_ModalDialog_diskcheck"); + ui->progress->setAccessibleName("kylin-burner_Progress_ModalDialog_progress"); + ui->showPage->setAccessibleName("kylin-burner_QStackedWidget_ModalDialog_showPage"); + ui->tip->setAccessibleName("kylin-burner_tips_ModalDialog_tip"); + ui->title->setAccessibleName("kylin-burner_WindowTitle_ModalDialog_title"); + setAttribute(Qt::WA_ShowModal, true); ui->title->onlyShowInDialog(); connect(ui->title, SIGNAL(close()), this, SLOT(slotsClose())); @@ -56,6 +66,8 @@ ui->btnBox->clear(); m_oCancelBtn = ui->btnBox->addButton(_("Cancel"), QDialogButtonBox::RejectRole); m_oEnsureBtn = ui->btnBox->addButton(_("OK"), QDialogButtonBox::AcceptRole); + m_oCancelBtn->setAccessibleName("kylin-burner_QPushButton_ModalDialog_oCancelBtn"); + m_oEnsureBtn->setAccessibleName("kylin-burner_QPushButton_ModalDialog_oEnsureBtn"); slotChangeUIFontSize(LogicMain::instance()->GetSystemFontSize()); connect(LogicMain::instance(), &LogicMain::systemFontSizeChanged, this, &ModalDialog::slotChangeUIFontSize); @@ -90,6 +102,7 @@ ui->title->onlyVisibleClose(true); connect(g_user_signal, &GlobalUserSignal::sigChangeCloseEnabel, ui->title, &WindowTitle::slotsSetCloseEnabel); m_isprogress = true; + ui->progress->resetProgressBar(); break; case Tip: setFixedSize(450, 230); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.h kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/modaldialog.h 2025-03-11 20:49:32.000000000 +0800 @@ -29,7 +29,6 @@ ModalDialog *operator =(const ModalDialog*)=delete; public: void init(){} - void destroy() { delete this; } bool isWayland() { return m_bIsWayland; } public slots: QWidget *showPage(int); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/multiselectionfiledialog.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/multiselectionfiledialog.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/multiselectionfiledialog.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/multiselectionfiledialog.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -9,7 +9,7 @@ const QString filter) : QFileDialog(parent, caption, directory, filter) { - kdk::UkuiStyleHelper::self()->removeHeader(this); + this->setObjectName("kylin-burner_MultiSelectionFileDialog"); m_oListView = findChild<QListView *>("listView"); m_oTreeView = findChild<QTreeView *>(); QDialogButtonBox *btn = findChild<QDialogButtonBox *>("buttonBox"); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/myframe.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/myframe.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/myframe.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/myframe.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -2,8 +2,10 @@ MyFrame::MyFrame(QWidget *parent) : QFrame(parent) { + this->setObjectName("kylin-burner_MyFrame"); setFrameShape(QFrame::Box); exframe = new kdk::KHLineFrame(); + exframe->setAccessibleName("kylin-burner_KHLineFrame_MyFrame_exframe"); } void MyFrame::paintEvent(QPaintEvent *event) diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/mymenu.h kylin-burner-3.2.0.1kylin1k32.01/src/view/mymenu.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/mymenu.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/mymenu.h 2025-03-11 20:49:32.000000000 +0800 @@ -1,5 +1,6 @@ #ifndef MYMENU_H #define MYMENU_H + #include <QObject> #include <QMenu> @@ -10,7 +11,6 @@ protected: void keyPressEvent(QKeyEvent* event); - }; #endif // MYMENU_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -9,13 +9,22 @@ QWidget(parent), ui(new Ui::Progress) { + this->setObjectName("kylin-burner_Progress"); ui->setupUi(this); + + ui->label->setAccessibleName("kylin-burner_QLabel_Progress_labelProgress"); + ui->labelContent->setAccessibleName("kylin-burner_MyTooltipLabel_Progress_labelContent"); + ui->labelTitle->setAccessibleName("kylin-burner_QLabel_Progress_labelTitle"); + ui->progressBar->setAccessibleName("kylin-burner_QProgressBar_Progress_progressBar"); + ui->widget->setAccessibleName("kylin-burner_QWidget_Progress_widget"); + ui->widget_2->setAccessibleName("kylin-burner_QWidget_Progress_widget2"); + ui->labelTitle->setFocusPolicy(Qt::NoFocus); ui->progressBar->setValue(0); connect(this, SIGNAL(title(QString)), ui->labelTitle, SLOT(setText(QString))); connect(this, SIGNAL(setRange(int,int)), this, SLOT(setsSetRange(int,int))); - connect(this, SIGNAL(setValue(int,QIcon,QString)), this, SLOT(slotsSetValue(int,QIcon,QString))); + connect(this, &Progress::setValue, this, &Progress::slotsSetValue); connect(this, SIGNAL(addValue(int,QIcon,QString)), this, SLOT(slotsAddValue(int,QIcon,QString))); slotChangeUIFontSize(LogicMain::instance()->GetSystemFontSize()); @@ -25,9 +34,9 @@ void Progress::slotsSetValue(int value, QIcon icon, QString str) { if(value > ui->progressBar->maximum()){ - //filter unvalid value return; } + ui->progressBar->setValue(value); ui->progressBar->setFormat(QString()); ui->label->setText(QString("%1%").arg(value)); @@ -41,6 +50,7 @@ ui->labelContent->setToolTip(""); } ui->labelContent->setText(labelContentShowText); + if (ui->progressBar->value() == ui->progressBar->maximum()) { MODAL->accept(); } @@ -54,7 +64,10 @@ ui->progressBar->setFormat(QString()); int rate = (current*1.0) / (m_RangeEnd-m_RangeBegin) * 100 ; - if(rate > 100) rate = 100; + if(rate > 100) { + rate = 100; + } + ui->label->setText(QString("%1%").arg(rate)); @@ -95,6 +108,13 @@ ui->label->setFont(font); } +void Progress::resetProgressBar() +{ + if(ui->progressBar->value() != 0){ + ui->progressBar->setValue(0); + } +} + void Progress::setsSetRange(int begin, int end) { ui->progressBar->setRange(begin, end); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.h kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/progress.h 2025-03-11 20:49:32.000000000 +0800 @@ -42,6 +42,7 @@ public slots: void slotChangeUIFontSize(int fontSize); + void resetProgressBar(); private slots: void setsSetRange(int, int); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -10,9 +10,33 @@ QWidget(parent), ui(new Ui::SettingDatas) { + this->setObjectName("kylin-burner_SettingDatas"); ui->setupUi(this); connect(this, SIGNAL(title(QString)), ui->title, SLOT(setText(QString))); + ui->Addwidget->setAccessibleName("kylin-burner_QWidget_SettingDatas_Addwidget"); + ui->checkBoxAddAll->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxAddAll"); + ui->checkBoxAddCurrent->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxAddCurrent"); + ui->checkBoxAddSuffix->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxAddSuffix"); + ui->checkBoxCleanAll->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxCleanAll"); + ui->checkBoxCleanCurrent->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxCleanCurrent"); + ui->checkBoxDeleteAll->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxDeleteAll"); + ui->checkBoxDeleteCurrent->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxDeleteCurrent"); + ui->checkBoxRename->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxRename"); + ui->checkBoxRepleace->setAccessibleName("kylin-burner_QRadioButton_SettingDatas_checkBoxRepleace"); + ui->Cleanwidget->setAccessibleName("kylin-burner_QWidget_SettingDatas_Cleanwidget"); + ui->Deletewidget->setAccessibleName("kylin-burner_QWidget_SettingDatas_Deletewidget"); + ui->labelReplceData->setAccessibleName("kylin-burner_QLabel_SettingDatas_labelDuplicateData"); + ui->labelAddData->setAccessibleName("kylin-burner_QLabel_SettingDatas_labelAddData"); + ui->labelCleanData->setAccessibleName("kylin-burner_QLabel_SettingDatas_labelCleanData"); + ui->labelDeleteData->setAccessibleName("kylin-burner_QLabel_SettingDatas_labelDeleteData"); + ui->layoutWidget->setAccessibleName("kylin-burner_QWidget_SettingDatas_layoutWidget"); + ui->layoutWidget1->setAccessibleName("kylin-burner_QWidget_SettingDatas_layoutWidget1"); + ui->layoutWidget2->setAccessibleName("kylin-burner_QWidget_SettingDatas_layoutWidget2"); + ui->layoutWidget3->setAccessibleName("kylin-burner_QWidget_SettingDatas_layoutWidget3"); + ui->title->setAccessibleName("kylin-burner_QLabel_SettingDatas_title"); + ui->widget->setAccessibleName("kylin-burner_QWidget_SettingDatas_Duplicatewidget"); + ui->labelAddData->setText(_("Add Data")); ui->checkBoxAddAll->setText(_("All")); @@ -47,7 +71,7 @@ ui->checkBoxCleanCurrent->setAutoExclusive(true); - ui->label->setText(_("Duplicate Data")); + ui->labelReplceData->setText(_("Duplicate Data")); ui->checkBoxRename->setText(_("Rename")); ui->checkBoxAddSuffix->setText(_("Add Suffix")); ui->checkBoxRepleace->setText(_("Replace")); @@ -140,7 +164,7 @@ resetText(ui->labelAddData); resetText(ui->labelDeleteData); resetText(ui->labelCleanData); - resetText(ui->label); + resetText(ui->labelReplceData); } void SettingDatas::slotChangeUIFontSize(int fontSize) @@ -152,20 +176,22 @@ font.setBold(true); ui->title->setFont(font); + updateLabelWidth(font); + font = ui->labelAddData->font(); font.setPixelSize(14 + scaleRatio); font.setWeight(60); ui->labelAddData->setFont(font); ui->labelDeleteData->setFont(font); ui->labelCleanData->setFont(font); - ui->label->setFont(font); + ui->labelReplceData->setFont(font); ui->checkBoxDeleteAll->setFont(font); ui->checkBoxAddCurrent->setFont(font); ui->checkBoxDeleteCurrent->setFont(font); ui->checkBoxCleanAll->setFont(font); ui->checkBoxCleanCurrent->setFont(font); - ui->label->setFont(font); + ui->labelReplceData->setFont(font); ui->checkBoxRename->setFont(font); ui->checkBoxAddSuffix->setFont(font); ui->checkBoxRepleace->setFont(font); @@ -174,6 +200,18 @@ updateLabelText(); } +void SettingDatas::updateLabelWidth(QFont font) +{ + QList<QLabel*> labelList; + labelList << ui->labelAddData << ui->labelDeleteData << ui->labelCleanData << ui->labelReplceData; + for(QLabel* index : labelList){ + QString labelText = index->text(); + QFontMetrics fontMetrics(font); + int textWidth = fontMetrics.width(labelText); + index->setFixedWidth(textWidth); + } +} + void SettingDatas::check() { int duplicate; diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.h kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.h 2025-03-11 20:49:32.000000000 +0800 @@ -24,6 +24,7 @@ void resetText(QLabel* item); void updateLabelText(); void slotChangeUIFontSize(int fontSize); + void updateLabelWidth(QFont font); private slots: void check(); private: diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.ui kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.ui --- kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.ui 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/settingdatas.ui 2025-03-11 20:49:32.000000000 +0800 @@ -108,7 +108,7 @@ <item> <layout class="QHBoxLayout" name="horizontalLayout"> <property name="spacing"> - <number>16</number> + <number>3</number> </property> <property name="sizeConstraint"> <enum>QLayout::SetMinimumSize</enum> @@ -140,7 +140,7 @@ <string>TextLabel</string> </property> <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> </property> <property name="margin"> <number>0</number> @@ -215,7 +215,7 @@ <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <property name="spacing"> - <number>18</number> + <number>5</number> </property> <property name="sizeConstraint"> <enum>QLayout::SetMinimumSize</enum> @@ -244,7 +244,7 @@ <string>TextLabel</string> </property> <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> </property> </widget> </item> @@ -313,7 +313,7 @@ <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <property name="spacing"> - <number>18</number> + <number>5</number> </property> <property name="sizeConstraint"> <enum>QLayout::SetMinimumSize</enum> @@ -342,7 +342,7 @@ <string>TextLabel</string> </property> <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> </property> </widget> </item> @@ -408,13 +408,13 @@ <item> <layout class="QHBoxLayout" name="horizontalLayout_4"> <property name="spacing"> - <number>18</number> + <number>5</number> </property> <property name="sizeConstraint"> <enum>QLayout::SetMinimumSize</enum> </property> <item> - <widget class="QLabel" name="label"> + <widget class="QLabel" name="labelReplceData"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch> @@ -437,7 +437,7 @@ <string>TextLabel</string> </property> <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> </property> </widget> </item> diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -22,8 +22,16 @@ QDialog(parent), ui(new Ui::Tip_BurnResult) { + this->setObjectName("kylin-burner_TipBurnResult"); ui->setupUi(this); + ui->buttonBox->setAccessibleName("kylin-burner_QDialogButtonBox_TipBurnResult_buttonBox"); + ui->close->setAccessibleName("kylin-burner_QPushButton_TipBurnResult_close"); + ui->labelContent->setAccessibleName("kylin-burner_QLabel_TipBurnResult_labelContent"); + ui->labelLogo->setAccessibleName("kylin-burner_QLabel_TipBurnResult_labelLogo"); + ui->logo->setAccessibleName("kylin-burner_QLabel_TipBurnResult_logo"); + ui->title->setAccessibleName("kylin-burner_QLabel_TipBurnResult_title"); + //判断是否是wayland环境 if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") { m_bIsWayland = true; @@ -132,7 +140,6 @@ this->exec();//控件显示 } - void Tip_BurnResult::slotsWarn(QString name) { ui->labelContent->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.h kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/tip_burnresult.h 2025-03-11 20:49:32.000000000 +0800 @@ -17,7 +17,6 @@ explicit Tip_BurnResult(QWidget *parent = nullptr); ~Tip_BurnResult(); void init(){} - void destroy() { delete this; } static Tip_BurnResult *instance(); void updatePosition(QPoint); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/tips.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/tips.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/tips.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/tips.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -12,13 +12,20 @@ QWidget(parent), ui(new Ui::tips) { + this->setObjectName("kylin-burner_tips"); ui->setupUi(this); - ui->labelLogo->setGeometry(25,7,30,30); - ui->labelContent->setGeometry(65,0,210,50); - ui->widgetCheckBox->hide(); - ui->verticalLayout->removeWidget(ui->widgetCheckBox); - ui->checkBox->hide(); + ui->checkBox->setAccessibleName("kylin-burner_QCheckBox_tips_checkBox"); + ui->labelContent->setAccessibleName("kylin-burner_QLabel_tips_labelContent"); + ui->labelLogo->setAccessibleName("kylin-burner_QLabel_tips_labelLogo"); + ui->widget->setAccessibleName("kylin-burner_QWidget_tips_widget"); + ui->widgetCheckBox->setAccessibleName("kylin-burner_QWidget_tips_widgetCheckBox"); + + ui->labelLogo->setGeometry(25,7,30,30); + ui->labelContent->setGeometry(65,0,210,50); + ui->widgetCheckBox->hide(); + ui->verticalLayout->removeWidget(ui->widgetCheckBox); + ui->checkBox->hide(); connect(this, SIGNAL(success(QString)), this, SLOT(slotsSuccess(QString))); connect(this, SIGNAL(fail(QString)), this, SLOT(slotsFailed(QString))); connect(ui->checkBox, SIGNAL(toggled(bool)), this, SIGNAL(checked(bool))); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/tipschange.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/tipschange.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/tipschange.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/tipschange.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -17,6 +17,7 @@ QDialog(parent), ui(new Ui::TipsChange) { + this->setAccessibleName("kylin-burner_TipsChange"); ui->setupUi(this); //判断是否是wayland环境 @@ -30,7 +31,10 @@ hints.decorations = MWM_DECOR_BORDER; XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); } - + + ui->buttonBox->setAccessibleName("kylin-burner_QDialogButtonBox_TipsChange_buttonBox"); + ui->labelContent->setAccessibleName("kylin-burner_QLabel_TipsChange_labelContent"); + ui->labelLogo->setAccessibleName("kylin-burner_QLabel_TipsChange_labelLogo"); ui->title->onlyShowInDialog(); connect(ui->title, SIGNAL(close()), this, SLOT(slotsClose())); connect(this, SIGNAL(windowIconChanged(QIcon)), ui->title, SLOT(onWindowIconChange(QIcon))); @@ -58,6 +62,7 @@ } setFixedSize(424,164); + ui->labelContent->setFocus(); ui->labelContent->setText(content); m_oEnsureBtn->setProperty("isImportant", true); if(m_bIsWayland) @@ -78,6 +83,7 @@ ui->labelContent->setFont(font); } + void TipsChange::keyPressEvent(QKeyEvent *event) { switch (event->key()) @@ -88,7 +94,7 @@ this->reject(); } break; - case Qt::Key_Enter: + case Qt::Key_Enter: this->reject(); if(m_oTipTitle==_("Delete")){ this->accept(); @@ -102,6 +108,7 @@ break; } } + void TipsChange::slotsTipsAgain(bool b) { CFG->set("EXEC", m_oTipTitle, b); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -24,6 +24,7 @@ QDialog(parent), m_oModel(new FileFilterModel(this)) { + this->setObjectName("kylin-burner_ViewFilterFiles"); initDialog(); initMember(); initRootLayout(); @@ -123,7 +124,7 @@ void ViewFilterFiles::updateIndex(int idx) { m_oModel->updateIndex(idx); - if (!(FILTERRULES->isHidden())) + if (!(FileFilterRules::instance()->isHidden())) m_oModel->showRules(); emit g_user_signal->sigChangeComboxBurnerIndex(idx); @@ -215,16 +216,24 @@ mFileTreeLayout = new QHBoxLayout; mComboBoxDisk = new QComboBox; + mComboBoxDisk->setAccessibleName("kylin-burner_QComboBox_ViewFilterFiles_mComboBoxDisk"); mWindowTitle = new WindowTitle(this); + mWindowTitle->setAccessibleName("kylin-burner_WindowTitle_ViewFilterFiles_mWindowTitle"); mMainWdiget = new QWidget(this); + mMainWdiget->setAccessibleName("kylin-burner_QWidget_ViewFilterFiles_mMainWdiget"); mTitleLabel = new QLabel(_("ViewFilterFile(s)")); + mTitleLabel->setAccessibleName("kylin-burner_QLabel_ViewFilterFiles_mTitleLabel"); mFilterOptionBtn = new KPushButton; + mFilterOptionBtn->setAccessibleName("kylin-burner_KPushButton_ViewFilterFiles_mFilterOptionBtn"); mRecoverAllBtn = new KPushButton; + mRecoverAllBtn->setAccessibleName("kylin-burner_KPushButton_ViewFilterFiles_mRecoverAllBtn"); + mFilterOptionBtn->setText(_("FilterOptionSetting")); mRecoverAllBtn->setText(_("RecoverAll")); mButtonSpacer1 = new QSpacerItem(8,1,QSizePolicy::Fixed,QSizePolicy::Fixed); mButtonSpacer2 = new QSpacerItem(0,1,QSizePolicy::Expanding,QSizePolicy::Fixed); mTreeView = new QTreeView; + mTreeView->setAccessibleName("kylin-burner_QTreeView_ViewFilterFiles_mTreeView"); //按照Button中内容长度设置button的长度 QFontMetrics btn1Font(mFilterOptionBtn->font()); diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.h kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.h --- kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.h 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/viewfilterfiles.h 2025-03-11 20:49:32.000000000 +0800 @@ -35,7 +35,6 @@ static ViewFilterFiles *instance(); public: void init() {} - void destroy() { delete this; } void updatePosition(QPoint); public: ViewFilterFiles(const ViewFilterFiles*)=delete; @@ -112,5 +111,4 @@ QList<QTreeWidgetItem*> mTreeWidgetItemList; FileFilterModel *m_oModel; }; -#define VIEWFILTERFILE ViewFilterFiles::instance() #endif // VIEWFILTERFILES_H diff -Nru kylin-burner-3.2.0.1kylin1k32.01/src/view/windowtitle.cpp kylin-burner-3.2.0.1kylin1k32.01/src/view/windowtitle.cpp --- kylin-burner-3.2.0.1kylin1k32.01/src/view/windowtitle.cpp 2024-11-19 18:48:00.000000000 +0800 +++ kylin-burner-3.2.0.1kylin1k32.01/src/view/windowtitle.cpp 2025-03-11 20:49:32.000000000 +0800 @@ -16,11 +16,19 @@ m_bShowTitle(true), m_bAppRunning(true) { + this->setObjectName("kylin-burner_WindowTitle"); ui->setupUi(this); ui->logo->installEventFilter(this); ui->title->installEventFilter(this); + ui->close->setAccessibleName("kylin-burner_QPushButton_WindowTitle_close"); + ui->logo->setAccessibleName("kylin-burner_QLabel_WindowTitle_logo"); + ui->max->setAccessibleName("kylin-burner_QPushButton_WindowTitle_max"); + ui->menu->setAccessibleName("kylin-burner_QToolButton_WindowTitle_menu"); + ui->min->setAccessibleName("kylin-burner_QPushButton_WindowTitle_min"); + ui->title->setAccessibleName("kylin-burner_QLabel_WindowTitle_title"); + ui->close->setProperty("isWindowButton", 0x2); ui->close->setToolTip(_("Close")); ui->min->setProperty("isWindowButton", 0x1); @@ -52,7 +60,7 @@ connect(LogicMain::instance(), &LogicMain::exit, [=](){m_bAppRunning = false;}); connect(LogicMain::instance(), &LogicMain::functionMenuChanged, this, [=](void *d){ QMenu *menu = static_cast<QMenu *>(d); - if(menu != NULL) + if (menu) { this->ui->menu->setMenu(menu); }