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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.000000000 +0800
@@ -1,3 +1,33 @@
+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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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/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-02-27 08:32:36.000000000 +0800
@@ -71,8 +71,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 +111,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 +271,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 +749,6 @@
     destroyMedium();
 
     m_oMediumType.clear();
-    // real cdrom, load information by block name
-    // 0. ready cdrom.
 
     if (isOpen()){
         close();
@@ -858,6 +858,10 @@
 
 bool DataCDROM::eject()
 {
+    if (checkUsingOfOtherApp()) {
+        return false;
+    }
+
 #if 1
     int processExitStatus, processExitCode;
     QString ejectOutput, device;
@@ -940,14 +944,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 +961,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 +1110,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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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/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-02-27 08:32:36.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 == NULL) {
+        qWarning() << "Invalid Byte!";
+        return 0;
+    }
+    return ((d[0] << 8 & 0xFF00) |
+            (d[1]      & 0xFF));
+}
+
+
+quint32 Device::from4Byte(const unsigned char* d)
+{
+    if (d == NULL) {
+        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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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 &sector)
+{
+    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 || 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(&current, 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, &currentMax, &currentMaxFormat)) {
+                    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, &currentMax, &currentMaxFormat)) {
+                    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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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.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-02-27 08:32:36.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/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-02-27 08:32:36.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/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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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;
@@ -569,17 +571,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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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/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-02-27 08:32:36.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;
 }
 
@@ -114,8 +116,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-02-27 08:32:36.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/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-02-27 08:32:36.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;
 }
 
 /* 检测盘盘片可能损坏的逻辑:
@@ -250,8 +254,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 +315,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,9 +331,9 @@
     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;
@@ -340,12 +344,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 +397,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{
@@ -437,8 +435,7 @@
     return mIsGood;
 }
 
-bool DiscRead::isSuccess() const
-{
+bool DiscRead::isSuccess() const{
     return mIsSuccess;
 }
 
@@ -457,3 +454,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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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();
@@ -557,6 +590,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);
@@ -883,7 +917,6 @@
         ui->treeView->showColumn(1);
         ui->treeView->showColumn(2);
         ui->treeView->showColumn(3);
-
         bottomLine->hide();
 
         ui->treeView->setFrameShape(QFrame::StyledPanel);
@@ -1002,16 +1035,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 +1495,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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.000000000 +0800
@@ -6,6 +6,7 @@
 #include <QLabel>
 #include <QLineEdit>
 #include <QEvent>
+#include "src/view/components/iconlabel.h"
 
 namespace Ui {
 class BusnessSetting;
@@ -43,6 +44,7 @@
     void checkCopyright();
     void checkTempPath();
     void updateModelDialogEnsureBtnState();
+    void setAccessibleName();
 
 public slots:
     void load(void *);
@@ -97,6 +99,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-02-27 08:32:36.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/&gt;.
+*
+*/
 #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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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,6 +287,8 @@
     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)
@@ -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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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)));
@@ -78,6 +82,7 @@
      ui->labelContent->setFont(font);
 
 }
+
 void TipsChange::keyPressEvent(QKeyEvent *event)
 {
     switch (event->key())
@@ -88,7 +93,7 @@
             this->reject();
         }
         break;
-    case  Qt::Key_Enter:
+    case Qt::Key_Enter:
         this->reject();
         if(m_oTipTitle==_("Delete")){
             this->accept();
@@ -102,6 +107,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-02-27 08:32:36.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-02-27 08:32:36.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-02-27 08:32:36.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);